eas-cli 3.4.1 → 3.5.1
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 +102 -52
- package/build/build/android/graphql.js +1 -0
- package/build/build/build.js +7 -0
- package/build/build/createContext.d.ts +3 -4
- package/build/build/createContext.js +3 -1
- package/build/build/graphql.d.ts +3 -2
- package/build/build/graphql.js +11 -1
- package/build/build/ios/graphql.js +1 -0
- package/build/build/metadata.d.ts +1 -0
- package/build/build/metadata.js +5 -4
- package/build/build/runBuildAndSubmit.js +2 -45
- package/build/build/utils/resourceClass.d.ts +5 -0
- package/build/build/utils/resourceClass.js +67 -0
- package/build/channel/utils.js +2 -1
- package/build/commandUtils/context/DynamicProjectConfigContextField.d.ts +1 -1
- package/build/commands/update/index.js +1 -1
- package/build/credentials/ios/IosCredentialsProvider.js +13 -4
- package/build/credentials/ios/utils/provisioningProfile.d.ts +1 -0
- package/build/credentials/ios/utils/provisioningProfile.js +6 -1
- package/build/graphql/generated.d.ts +175 -14
- package/build/graphql/generated.js +7 -6
- package/build/graphql/mutations/BuildMutation.d.ts +4 -0
- package/build/graphql/mutations/BuildMutation.js +17 -0
- package/oclif.manifest.json +1 -1
- package/package.json +4 -4
package/build/build/metadata.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.truncateGitCommitMessage = exports.collectMetadataAsync = void 0;
|
|
3
|
+
exports.truncateGitCommitMessage = exports.getReactNativeVersionAsync = exports.collectMetadataAsync = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const config_plugins_1 = require("@expo/config-plugins");
|
|
6
6
|
const eas_build_job_1 = require("@expo/eas-build-job");
|
|
@@ -29,7 +29,7 @@ async function collectMetadataAsync(ctx) {
|
|
|
29
29
|
credentialsSource: ctx.buildProfile.credentialsSource,
|
|
30
30
|
sdkVersion: ctx.exp.sdkVersion,
|
|
31
31
|
runtimeVersion: (_b = config_plugins_1.Updates.getRuntimeVersionNullable(ctx.exp, ctx.platform)) !== null && _b !== void 0 ? _b : undefined,
|
|
32
|
-
reactNativeVersion: await getReactNativeVersionAsync(ctx),
|
|
32
|
+
reactNativeVersion: await getReactNativeVersionAsync(ctx.projectDir),
|
|
33
33
|
...channelOrReleaseChannel,
|
|
34
34
|
distribution,
|
|
35
35
|
appName: ctx.exp.name,
|
|
@@ -126,9 +126,9 @@ async function getNativeChannelAsync(ctx) {
|
|
|
126
126
|
}
|
|
127
127
|
return undefined;
|
|
128
128
|
}
|
|
129
|
-
async function getReactNativeVersionAsync(
|
|
129
|
+
async function getReactNativeVersionAsync(projectDir) {
|
|
130
130
|
try {
|
|
131
|
-
const reactNativePackageJsonPath = (0, resolve_from_1.default)(
|
|
131
|
+
const reactNativePackageJsonPath = (0, resolve_from_1.default)(projectDir, 'react-native/package.json');
|
|
132
132
|
return (await fs_extra_1.default.readJson(reactNativePackageJsonPath)).version;
|
|
133
133
|
}
|
|
134
134
|
catch (err) {
|
|
@@ -137,6 +137,7 @@ async function getReactNativeVersionAsync(ctx) {
|
|
|
137
137
|
return undefined;
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
|
+
exports.getReactNativeVersionAsync = getReactNativeVersionAsync;
|
|
140
141
|
function resolveIosEnterpriseProvisioning(ctx) {
|
|
141
142
|
return ctx.buildProfile.enterpriseProvisioning;
|
|
142
143
|
}
|
|
@@ -38,48 +38,6 @@ const printBuildInfo_1 = require("./utils/printBuildInfo");
|
|
|
38
38
|
const repository_1 = require("./utils/repository");
|
|
39
39
|
let metroConfigValidated = false;
|
|
40
40
|
let sdkVersionChecked = false;
|
|
41
|
-
const iosResourceClassToBuildResourceClassMapping = {
|
|
42
|
-
[eas_json_1.ResourceClass.DEFAULT]: generated_1.BuildResourceClass.IosDefault,
|
|
43
|
-
[eas_json_1.ResourceClass.LARGE]: generated_1.BuildResourceClass.IosLarge,
|
|
44
|
-
[eas_json_1.ResourceClass.M1_EXPERIMENTAL]: generated_1.BuildResourceClass.IosM1Large,
|
|
45
|
-
[eas_json_1.ResourceClass.M1_MEDIUM]: generated_1.BuildResourceClass.IosM1Medium,
|
|
46
|
-
[eas_json_1.ResourceClass.M1_LARGE]: generated_1.BuildResourceClass.IosM1Large,
|
|
47
|
-
[eas_json_1.ResourceClass.INTEL_MEDIUM]: generated_1.BuildResourceClass.IosIntelMedium,
|
|
48
|
-
[eas_json_1.ResourceClass.MEDIUM]: generated_1.BuildResourceClass.IosMedium,
|
|
49
|
-
};
|
|
50
|
-
const androidResourceClassToBuildResourceClassMapping = {
|
|
51
|
-
[eas_json_1.ResourceClass.DEFAULT]: generated_1.BuildResourceClass.AndroidDefault,
|
|
52
|
-
[eas_json_1.ResourceClass.LARGE]: generated_1.BuildResourceClass.AndroidLarge,
|
|
53
|
-
[eas_json_1.ResourceClass.MEDIUM]: generated_1.BuildResourceClass.AndroidMedium,
|
|
54
|
-
};
|
|
55
|
-
function resolveBuildResourceClass(profile, resourceClassFlag) {
|
|
56
|
-
var _a;
|
|
57
|
-
if (profile.platform !== eas_build_job_1.Platform.IOS &&
|
|
58
|
-
resourceClassFlag &&
|
|
59
|
-
[
|
|
60
|
-
eas_json_1.ResourceClass.M1_EXPERIMENTAL,
|
|
61
|
-
eas_json_1.ResourceClass.M1_MEDIUM,
|
|
62
|
-
eas_json_1.ResourceClass.M1_LARGE,
|
|
63
|
-
eas_json_1.ResourceClass.INTEL_MEDIUM,
|
|
64
|
-
].includes(resourceClassFlag)) {
|
|
65
|
-
throw new Error(`Resource class ${resourceClassFlag} is only available for iOS builds`);
|
|
66
|
-
}
|
|
67
|
-
const profileResourceClass = profile.profile.resourceClass;
|
|
68
|
-
if (profileResourceClass && resourceClassFlag && resourceClassFlag !== profileResourceClass) {
|
|
69
|
-
log_1.default.warn(`Build profile specifies the "${profileResourceClass}" resource class but you passed "${resourceClassFlag}" to --resource-class.\nUsing the "${resourceClassFlag}" as the override.`);
|
|
70
|
-
}
|
|
71
|
-
const resourceClass = (_a = resourceClassFlag !== null && resourceClassFlag !== void 0 ? resourceClassFlag : profileResourceClass) !== null && _a !== void 0 ? _a : eas_json_1.ResourceClass.DEFAULT;
|
|
72
|
-
if (profile.platform === eas_build_job_1.Platform.IOS && resourceClass === eas_json_1.ResourceClass.M1_EXPERIMENTAL) {
|
|
73
|
-
log_1.default.warn(`Resource class ${chalk_1.default.bold('m1-experimental')} is deprecated.`);
|
|
74
|
-
}
|
|
75
|
-
if (profile.platform === eas_build_job_1.Platform.IOS &&
|
|
76
|
-
[eas_json_1.ResourceClass.LARGE, eas_json_1.ResourceClass.M1_LARGE].includes(resourceClass)) {
|
|
77
|
-
log_1.default.warn(`Large resource classes are not available for iOS builds yet. Your build will use the medium resource class.`);
|
|
78
|
-
}
|
|
79
|
-
return profile.platform === eas_build_job_1.Platform.ANDROID
|
|
80
|
-
? androidResourceClassToBuildResourceClassMapping[resourceClass]
|
|
81
|
-
: iosResourceClassToBuildResourceClassMapping[resourceClass];
|
|
82
|
-
}
|
|
83
41
|
async function runBuildAndSubmitAsync(graphqlClient, analytics, projectDir, flags, actor, getDynamicProjectConfigAsync) {
|
|
84
42
|
var _a, _b;
|
|
85
43
|
await (0, vcs_1.getVcsClient)().ensureRepoExistsAsync();
|
|
@@ -113,7 +71,6 @@ async function runBuildAndSubmitAsync(graphqlClient, analytics, projectDir, flag
|
|
|
113
71
|
flags,
|
|
114
72
|
moreBuilds: platforms.length > 1,
|
|
115
73
|
buildProfile,
|
|
116
|
-
resourceClass: resolveBuildResourceClass(buildProfile, flags.resourceClass),
|
|
117
74
|
easJsonCliConfig,
|
|
118
75
|
actor,
|
|
119
76
|
graphqlClient,
|
|
@@ -192,10 +149,10 @@ async function runBuildAndSubmitAsync(graphqlClient, analytics, projectDir, flag
|
|
|
192
149
|
}
|
|
193
150
|
}
|
|
194
151
|
exports.runBuildAndSubmitAsync = runBuildAndSubmitAsync;
|
|
195
|
-
async function prepareAndStartBuildAsync({ projectDir, flags, moreBuilds, buildProfile,
|
|
152
|
+
async function prepareAndStartBuildAsync({ projectDir, flags, moreBuilds, buildProfile, easJsonCliConfig, actor, graphqlClient, analytics, getDynamicProjectConfigAsync, }) {
|
|
196
153
|
const buildCtx = await (0, createContext_1.createBuildContextAsync)({
|
|
197
154
|
buildProfileName: buildProfile.profileName,
|
|
198
|
-
resourceClass,
|
|
155
|
+
resourceClassFlag: flags.resourceClass,
|
|
199
156
|
clearCache: flags.clearCache,
|
|
200
157
|
buildProfile: buildProfile.profile,
|
|
201
158
|
nonInteractive: flags.nonInteractive,
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ExpoConfig } from '@expo/config-types';
|
|
2
|
+
import { Platform } from '@expo/eas-build-job';
|
|
3
|
+
import { BuildProfile, ResourceClass } from '@expo/eas-json';
|
|
4
|
+
import { BuildResourceClass } from '../../graphql/generated';
|
|
5
|
+
export declare function resolveBuildResourceClassAsync<T extends Platform>(profile: BuildProfile<T>, platform: Platform, projectDir: string, exp: ExpoConfig, resourceClassFlag?: ResourceClass): Promise<BuildResourceClass>;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveBuildResourceClassAsync = void 0;
|
|
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 chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
8
|
+
const semver_1 = tslib_1.__importDefault(require("semver"));
|
|
9
|
+
const generated_1 = require("../../graphql/generated");
|
|
10
|
+
const log_1 = tslib_1.__importDefault(require("../../log"));
|
|
11
|
+
const metadata_1 = require("../metadata");
|
|
12
|
+
const iosResourceClassToBuildResourceClassMapping = {
|
|
13
|
+
[eas_json_1.ResourceClass.DEFAULT]: generated_1.BuildResourceClass.IosDefault,
|
|
14
|
+
[eas_json_1.ResourceClass.LARGE]: generated_1.BuildResourceClass.IosLarge,
|
|
15
|
+
[eas_json_1.ResourceClass.M1_EXPERIMENTAL]: generated_1.BuildResourceClass.IosM1Large,
|
|
16
|
+
[eas_json_1.ResourceClass.M1_MEDIUM]: generated_1.BuildResourceClass.IosM1Medium,
|
|
17
|
+
[eas_json_1.ResourceClass.M1_LARGE]: generated_1.BuildResourceClass.IosM1Large,
|
|
18
|
+
[eas_json_1.ResourceClass.INTEL_MEDIUM]: generated_1.BuildResourceClass.IosIntelMedium,
|
|
19
|
+
[eas_json_1.ResourceClass.MEDIUM]: generated_1.BuildResourceClass.IosMedium,
|
|
20
|
+
};
|
|
21
|
+
const androidResourceClassToBuildResourceClassMapping = {
|
|
22
|
+
[eas_json_1.ResourceClass.DEFAULT]: generated_1.BuildResourceClass.AndroidDefault,
|
|
23
|
+
[eas_json_1.ResourceClass.LARGE]: generated_1.BuildResourceClass.AndroidLarge,
|
|
24
|
+
[eas_json_1.ResourceClass.MEDIUM]: generated_1.BuildResourceClass.AndroidMedium,
|
|
25
|
+
};
|
|
26
|
+
async function resolveBuildResourceClassAsync(profile, platform, projectDir, exp, resourceClassFlag) {
|
|
27
|
+
const profileResourceClass = profile.resourceClass;
|
|
28
|
+
if (profileResourceClass && resourceClassFlag && resourceClassFlag !== profileResourceClass) {
|
|
29
|
+
log_1.default.warn(`Build profile specifies the "${profileResourceClass}" resource class but you passed "${resourceClassFlag}" to --resource-class.\nUsing the "${resourceClassFlag}" as the override.`);
|
|
30
|
+
}
|
|
31
|
+
const selectedResourceClass = resourceClassFlag !== null && resourceClassFlag !== void 0 ? resourceClassFlag : profileResourceClass;
|
|
32
|
+
return platform === eas_build_job_1.Platform.IOS
|
|
33
|
+
? await resolveIosResourceClassAsync(exp, projectDir, resourceClassFlag !== null && resourceClassFlag !== void 0 ? resourceClassFlag : profileResourceClass)
|
|
34
|
+
: resolveAndroidResourceClass(selectedResourceClass);
|
|
35
|
+
}
|
|
36
|
+
exports.resolveBuildResourceClassAsync = resolveBuildResourceClassAsync;
|
|
37
|
+
function resolveAndroidResourceClass(selectedResourceClass) {
|
|
38
|
+
if (selectedResourceClass &&
|
|
39
|
+
[
|
|
40
|
+
eas_json_1.ResourceClass.M1_EXPERIMENTAL,
|
|
41
|
+
eas_json_1.ResourceClass.M1_MEDIUM,
|
|
42
|
+
eas_json_1.ResourceClass.M1_LARGE,
|
|
43
|
+
eas_json_1.ResourceClass.INTEL_MEDIUM,
|
|
44
|
+
].includes(selectedResourceClass)) {
|
|
45
|
+
throw new Error(`Resource class ${selectedResourceClass} is only available for iOS builds`);
|
|
46
|
+
}
|
|
47
|
+
const resourceClass = selectedResourceClass !== null && selectedResourceClass !== void 0 ? selectedResourceClass : eas_json_1.ResourceClass.DEFAULT;
|
|
48
|
+
return androidResourceClassToBuildResourceClassMapping[resourceClass];
|
|
49
|
+
}
|
|
50
|
+
async function resolveIosResourceClassAsync(exp, projectDir, selectedResourceClass) {
|
|
51
|
+
const resourceClass = selectedResourceClass !== null && selectedResourceClass !== void 0 ? selectedResourceClass : (await resolveIosDefaultRequestedResourceClassAsync(exp, projectDir));
|
|
52
|
+
if (resourceClass === eas_json_1.ResourceClass.M1_EXPERIMENTAL) {
|
|
53
|
+
log_1.default.warn(`Resource class ${chalk_1.default.bold('m1-experimental')} is deprecated.`);
|
|
54
|
+
}
|
|
55
|
+
return iosResourceClassToBuildResourceClassMapping[resourceClass];
|
|
56
|
+
}
|
|
57
|
+
async function resolveIosDefaultRequestedResourceClassAsync(exp, projectDir) {
|
|
58
|
+
const { sdkVersion } = exp;
|
|
59
|
+
const reactNativeVersion = await (0, metadata_1.getReactNativeVersionAsync)(projectDir);
|
|
60
|
+
if ((sdkVersion && semver_1.default.satisfies(sdkVersion, '>=48')) ||
|
|
61
|
+
(reactNativeVersion && semver_1.default.satisfies(reactNativeVersion, '>=0.71.0'))) {
|
|
62
|
+
return eas_json_1.ResourceClass.M1_MEDIUM;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
return eas_json_1.ResourceClass.DEFAULT;
|
|
66
|
+
}
|
|
67
|
+
}
|
package/build/channel/utils.js
CHANGED
|
@@ -11,6 +11,7 @@ const utils_1 = require("../update/utils");
|
|
|
11
11
|
* Ensure that the branch mapping is properly formatted.
|
|
12
12
|
*/
|
|
13
13
|
function getBranchMapping(branchMappingString) {
|
|
14
|
+
var _a;
|
|
14
15
|
if (!branchMappingString) {
|
|
15
16
|
throw new Error('Missing branch mapping.');
|
|
16
17
|
}
|
|
@@ -26,7 +27,7 @@ function getBranchMapping(branchMappingString) {
|
|
|
26
27
|
throw new Error('Branch mapping must be version 0.');
|
|
27
28
|
}
|
|
28
29
|
const isRollout = branchMapping.data.length === 2;
|
|
29
|
-
const rolloutPercent = branchMapping.data[0].branchMappingLogic.operand;
|
|
30
|
+
const rolloutPercent = (_a = branchMapping.data[0]) === null || _a === void 0 ? void 0 : _a.branchMappingLogic.operand;
|
|
30
31
|
switch (branchMapping.data.length) {
|
|
31
32
|
case 0:
|
|
32
33
|
break;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ExpoConfig } from '@expo/config-types';
|
|
2
2
|
import { ExpoConfigOptions } from '../../project/expoConfig';
|
|
3
3
|
import ContextField, { ContextOptions } from './ContextField';
|
|
4
|
-
export type DynamicConfigContextFn = (options
|
|
4
|
+
export type DynamicConfigContextFn = (options: ExpoConfigOptions) => Promise<{
|
|
5
5
|
projectId: string;
|
|
6
6
|
exp: ExpoConfig;
|
|
7
7
|
projectDir: string;
|
|
@@ -76,7 +76,7 @@ class UpdatePublish extends EasCommand_1.default {
|
|
|
76
76
|
projectDir,
|
|
77
77
|
projectId,
|
|
78
78
|
});
|
|
79
|
-
const { exp } = await getDynamicProjectConfigAsync();
|
|
79
|
+
const { exp } = await getDynamicProjectConfigAsync({});
|
|
80
80
|
const codeSigningInfo = await (0, code_signing_1.getCodeSigningInfoAsync)(expPrivate, privateKeyPath);
|
|
81
81
|
let realizedPlatforms = [];
|
|
82
82
|
if (channelName && branchName) {
|
|
@@ -106,11 +106,20 @@ class IosCredentialsProvider {
|
|
|
106
106
|
}
|
|
107
107
|
assertProvisioningProfileType(provisioningProfile, targetName) {
|
|
108
108
|
const isAdHoc = (0, provisioningProfile_1.isAdHocProfile)(provisioningProfile);
|
|
109
|
-
|
|
110
|
-
|
|
109
|
+
const isEnterprise = (0, provisioningProfile_1.isEnterpriseUniversalProfile)(provisioningProfile);
|
|
110
|
+
if (this.options.distribution === 'internal') {
|
|
111
|
+
if (this.options.enterpriseProvisioning === 'universal' && !isEnterprise) {
|
|
112
|
+
throw new Error(`You must use a universal provisioning profile${targetName ? ` (target '${targetName})'` : ''} for internal distribution if you specified "enterpriseProvisioning": "universal" in eas.json`);
|
|
113
|
+
}
|
|
114
|
+
else if (this.options.enterpriseProvisioning === 'adhoc' && !isAdHoc) {
|
|
115
|
+
throw new Error(`You must use an adhoc provisioning profile${targetName ? ` (target '${targetName})'` : ''} for internal distribution if you specified "enterpriseProvisioning": "adhoc" in eas.json`);
|
|
116
|
+
}
|
|
117
|
+
else if (!this.options.enterpriseProvisioning && !isEnterprise && !isAdHoc) {
|
|
118
|
+
throw new Error(`You must use an adhoc provisioning profile${targetName ? ` (target '${targetName})'` : ''} for internal distribution.`);
|
|
119
|
+
}
|
|
111
120
|
}
|
|
112
|
-
else if (
|
|
113
|
-
throw new Error(`You can't use an adhoc provisioning profile${targetName ? ` (target '${targetName}')` : ''} for app store distribution
|
|
121
|
+
else if (isAdHoc) {
|
|
122
|
+
throw new Error(`You can't use an adhoc provisioning profile${targetName ? ` (target '${targetName}')` : ''} for app store distribution.`);
|
|
114
123
|
}
|
|
115
124
|
}
|
|
116
125
|
}
|
|
@@ -6,5 +6,6 @@ interface AppleTeam {
|
|
|
6
6
|
export declare function readAppleTeam(dataBase64: string): AppleTeam;
|
|
7
7
|
export declare function readProfileName(dataBase64: string): string;
|
|
8
8
|
export declare function isAdHocProfile(dataBase64: string): boolean;
|
|
9
|
+
export declare function isEnterpriseUniversalProfile(dataBase64: string): boolean;
|
|
9
10
|
export declare function parse(dataBase64: string): PlistObject;
|
|
10
11
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parse = exports.isAdHocProfile = exports.readProfileName = exports.readAppleTeam = void 0;
|
|
3
|
+
exports.parse = exports.isEnterpriseUniversalProfile = exports.isAdHocProfile = exports.readProfileName = exports.readAppleTeam = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const plist_1 = tslib_1.__importDefault(require("@expo/plist"));
|
|
6
6
|
function readAppleTeam(dataBase64) {
|
|
@@ -25,6 +25,11 @@ function isAdHocProfile(dataBase64) {
|
|
|
25
25
|
return Array.isArray(provisionedDevices);
|
|
26
26
|
}
|
|
27
27
|
exports.isAdHocProfile = isAdHocProfile;
|
|
28
|
+
function isEnterpriseUniversalProfile(dataBase64) {
|
|
29
|
+
const profilePlist = parse(dataBase64);
|
|
30
|
+
return !!profilePlist['ProvisionsAllDevices'];
|
|
31
|
+
}
|
|
32
|
+
exports.isEnterpriseUniversalProfile = isEnterpriseUniversalProfile;
|
|
28
33
|
function parse(dataBase64) {
|
|
29
34
|
try {
|
|
30
35
|
const buffer = Buffer.from(dataBase64, 'base64');
|
|
@@ -27,7 +27,6 @@ export type Scalars = {
|
|
|
27
27
|
DateTime: any;
|
|
28
28
|
JSON: any;
|
|
29
29
|
JSONObject: any;
|
|
30
|
-
Upload: any;
|
|
31
30
|
};
|
|
32
31
|
export type AcceptUserInvitationResult = {
|
|
33
32
|
__typename?: 'AcceptUserInvitationResult';
|
|
@@ -452,7 +451,7 @@ export declare enum ActivityTimelineProjectActivityType {
|
|
|
452
451
|
Submission = "SUBMISSION",
|
|
453
452
|
Update = "UPDATE"
|
|
454
453
|
}
|
|
455
|
-
/** A user or robot that can authenticate with Expo services and be a member of accounts. */
|
|
454
|
+
/** A regular user, SSO user, or robot that can authenticate with Expo services and be a member of accounts. */
|
|
456
455
|
export type Actor = {
|
|
457
456
|
/** Access Tokens belonging to this actor */
|
|
458
457
|
accessTokens: Array<AccessToken>;
|
|
@@ -473,7 +472,7 @@ export type Actor = {
|
|
|
473
472
|
id: Scalars['ID'];
|
|
474
473
|
isExpoAdmin: Scalars['Boolean'];
|
|
475
474
|
};
|
|
476
|
-
/** A user or robot that can authenticate with Expo services and be a member of accounts. */
|
|
475
|
+
/** A regular user, SSO user, or robot that can authenticate with Expo services and be a member of accounts. */
|
|
477
476
|
export type ActorFeatureGatesArgs = {
|
|
478
477
|
filter?: InputMaybe<Array<Scalars['String']>>;
|
|
479
478
|
};
|
|
@@ -661,6 +660,7 @@ export type AndroidJobInput = {
|
|
|
661
660
|
/** @deprecated */
|
|
662
661
|
artifactPath?: InputMaybe<Scalars['String']>;
|
|
663
662
|
buildArtifactPaths?: InputMaybe<Array<Scalars['String']>>;
|
|
663
|
+
buildProfile?: InputMaybe<Scalars['String']>;
|
|
664
664
|
buildType?: InputMaybe<AndroidBuildType>;
|
|
665
665
|
builderEnvironment?: InputMaybe<AndroidBuilderEnvironmentInput>;
|
|
666
666
|
cache?: InputMaybe<BuildCacheInput>;
|
|
@@ -672,6 +672,7 @@ export type AndroidJobInput = {
|
|
|
672
672
|
projectRootDirectory: Scalars['String'];
|
|
673
673
|
releaseChannel?: InputMaybe<Scalars['String']>;
|
|
674
674
|
secrets?: InputMaybe<AndroidJobSecretsInput>;
|
|
675
|
+
triggeredBy?: InputMaybe<BuildTrigger>;
|
|
675
676
|
type: BuildWorkflow;
|
|
676
677
|
updates?: InputMaybe<BuildUpdatesInput>;
|
|
677
678
|
username?: InputMaybe<Scalars['String']>;
|
|
@@ -688,6 +689,7 @@ export type AndroidJobOverridesInput = {
|
|
|
688
689
|
/** @deprecated */
|
|
689
690
|
artifactPath?: InputMaybe<Scalars['String']>;
|
|
690
691
|
buildArtifactPaths?: InputMaybe<Array<Scalars['String']>>;
|
|
692
|
+
buildProfile?: InputMaybe<Scalars['String']>;
|
|
691
693
|
buildType?: InputMaybe<AndroidBuildType>;
|
|
692
694
|
builderEnvironment?: InputMaybe<AndroidBuilderEnvironmentInput>;
|
|
693
695
|
cache?: InputMaybe<BuildCacheInput>;
|
|
@@ -703,6 +705,7 @@ export type AndroidJobOverridesInput = {
|
|
|
703
705
|
};
|
|
704
706
|
export type AndroidJobSecretsInput = {
|
|
705
707
|
buildCredentials?: InputMaybe<AndroidJobBuildCredentialsInput>;
|
|
708
|
+
robotAccessToken?: InputMaybe<Scalars['String']>;
|
|
706
709
|
};
|
|
707
710
|
export type AndroidJobVersionInput = {
|
|
708
711
|
versionCode: Scalars['String'];
|
|
@@ -1712,6 +1715,8 @@ export type BuildMutation = {
|
|
|
1712
1715
|
retryBuild: Build;
|
|
1713
1716
|
/** Retry an iOS EAS Build */
|
|
1714
1717
|
retryIosBuild: Build;
|
|
1718
|
+
/** Update metadata for EAS Build build */
|
|
1719
|
+
updateBuildMetadata: Build;
|
|
1715
1720
|
};
|
|
1716
1721
|
export type BuildMutationCancelBuildArgs = {
|
|
1717
1722
|
buildId: Scalars['ID'];
|
|
@@ -1742,6 +1747,10 @@ export type BuildMutationRetryIosBuildArgs = {
|
|
|
1742
1747
|
buildId: Scalars['ID'];
|
|
1743
1748
|
jobOverrides?: InputMaybe<IosJobOverridesInput>;
|
|
1744
1749
|
};
|
|
1750
|
+
export type BuildMutationUpdateBuildMetadataArgs = {
|
|
1751
|
+
buildId: Scalars['ID'];
|
|
1752
|
+
metadata: BuildMetadataInput;
|
|
1753
|
+
};
|
|
1745
1754
|
export type BuildOrBuildJob = {
|
|
1746
1755
|
id: Scalars['ID'];
|
|
1747
1756
|
};
|
|
@@ -1836,6 +1845,10 @@ export declare enum BuildStatus {
|
|
|
1836
1845
|
InQueue = "IN_QUEUE",
|
|
1837
1846
|
New = "NEW"
|
|
1838
1847
|
}
|
|
1848
|
+
export declare enum BuildTrigger {
|
|
1849
|
+
EasCli = "EAS_CLI",
|
|
1850
|
+
GitBasedIntegration = "GIT_BASED_INTEGRATION"
|
|
1851
|
+
}
|
|
1839
1852
|
export type BuildUpdatesInput = {
|
|
1840
1853
|
channel?: InputMaybe<Scalars['String']>;
|
|
1841
1854
|
};
|
|
@@ -1844,10 +1857,6 @@ export declare enum BuildWorkflow {
|
|
|
1844
1857
|
Managed = "MANAGED",
|
|
1845
1858
|
Unknown = "UNKNOWN"
|
|
1846
1859
|
}
|
|
1847
|
-
export declare enum CacheControlScope {
|
|
1848
|
-
Private = "PRIVATE",
|
|
1849
|
-
Public = "PUBLIC"
|
|
1850
|
-
}
|
|
1851
1860
|
export type Card = {
|
|
1852
1861
|
__typename?: 'Card';
|
|
1853
1862
|
brand?: Maybe<Scalars['String']>;
|
|
@@ -1858,13 +1867,13 @@ export type Card = {
|
|
|
1858
1867
|
};
|
|
1859
1868
|
export type Charge = {
|
|
1860
1869
|
__typename?: 'Charge';
|
|
1861
|
-
amount
|
|
1862
|
-
createdAt
|
|
1870
|
+
amount: Scalars['Int'];
|
|
1871
|
+
createdAt: Scalars['DateTime'];
|
|
1863
1872
|
id: Scalars['ID'];
|
|
1864
1873
|
invoiceId?: Maybe<Scalars['String']>;
|
|
1865
|
-
paid
|
|
1874
|
+
paid: Scalars['Boolean'];
|
|
1866
1875
|
receiptUrl?: Maybe<Scalars['String']>;
|
|
1867
|
-
wasRefunded
|
|
1876
|
+
wasRefunded: Scalars['Boolean'];
|
|
1868
1877
|
};
|
|
1869
1878
|
/** Represents a client build request */
|
|
1870
1879
|
export type ClientBuild = {
|
|
@@ -2574,6 +2583,7 @@ export type IosJobInput = {
|
|
|
2574
2583
|
artifactPath?: InputMaybe<Scalars['String']>;
|
|
2575
2584
|
buildArtifactPaths?: InputMaybe<Array<Scalars['String']>>;
|
|
2576
2585
|
buildConfiguration?: InputMaybe<Scalars['String']>;
|
|
2586
|
+
buildProfile?: InputMaybe<Scalars['String']>;
|
|
2577
2587
|
/** @deprecated */
|
|
2578
2588
|
buildType?: InputMaybe<IosBuildType>;
|
|
2579
2589
|
builderEnvironment?: InputMaybe<IosBuilderEnvironmentInput>;
|
|
@@ -2589,6 +2599,7 @@ export type IosJobInput = {
|
|
|
2589
2599
|
scheme?: InputMaybe<Scalars['String']>;
|
|
2590
2600
|
secrets?: InputMaybe<IosJobSecretsInput>;
|
|
2591
2601
|
simulator?: InputMaybe<Scalars['Boolean']>;
|
|
2602
|
+
triggeredBy?: InputMaybe<BuildTrigger>;
|
|
2592
2603
|
type: BuildWorkflow;
|
|
2593
2604
|
updates?: InputMaybe<BuildUpdatesInput>;
|
|
2594
2605
|
username?: InputMaybe<Scalars['String']>;
|
|
@@ -2600,6 +2611,7 @@ export type IosJobOverridesInput = {
|
|
|
2600
2611
|
artifactPath?: InputMaybe<Scalars['String']>;
|
|
2601
2612
|
buildArtifactPaths?: InputMaybe<Array<Scalars['String']>>;
|
|
2602
2613
|
buildConfiguration?: InputMaybe<Scalars['String']>;
|
|
2614
|
+
buildProfile?: InputMaybe<Scalars['String']>;
|
|
2603
2615
|
/** @deprecated */
|
|
2604
2616
|
buildType?: InputMaybe<IosBuildType>;
|
|
2605
2617
|
builderEnvironment?: InputMaybe<IosBuilderEnvironmentInput>;
|
|
@@ -2621,6 +2633,7 @@ export type IosJobOverridesInput = {
|
|
|
2621
2633
|
};
|
|
2622
2634
|
export type IosJobSecretsInput = {
|
|
2623
2635
|
buildCredentials?: InputMaybe<Array<InputMaybe<IosJobTargetCredentialsInput>>>;
|
|
2636
|
+
robotAccessToken?: InputMaybe<Scalars['String']>;
|
|
2624
2637
|
};
|
|
2625
2638
|
export type IosJobTargetCredentialsInput = {
|
|
2626
2639
|
distributionCertificate: IosJobDistributionCertificateInput;
|
|
@@ -2885,11 +2898,14 @@ export type Project = {
|
|
|
2885
2898
|
};
|
|
2886
2899
|
export type ProjectArchiveSourceInput = {
|
|
2887
2900
|
bucketKey?: InputMaybe<Scalars['String']>;
|
|
2901
|
+
gitRef?: InputMaybe<Scalars['String']>;
|
|
2902
|
+
repositoryUrl?: InputMaybe<Scalars['String']>;
|
|
2888
2903
|
type: ProjectArchiveSourceType;
|
|
2889
2904
|
url?: InputMaybe<Scalars['String']>;
|
|
2890
2905
|
};
|
|
2891
2906
|
export declare enum ProjectArchiveSourceType {
|
|
2892
2907
|
Gcs = "GCS",
|
|
2908
|
+
Git = "GIT",
|
|
2893
2909
|
None = "NONE",
|
|
2894
2910
|
S3 = "S3",
|
|
2895
2911
|
Url = "URL"
|
|
@@ -3138,10 +3154,15 @@ export type RootQuery = {
|
|
|
3138
3154
|
*/
|
|
3139
3155
|
me?: Maybe<User>;
|
|
3140
3156
|
/**
|
|
3141
|
-
* If authenticated as
|
|
3157
|
+
* If authenticated as any type of Actor, this is the appropriate top-level
|
|
3142
3158
|
* query object
|
|
3143
3159
|
*/
|
|
3144
3160
|
meActor?: Maybe<Actor>;
|
|
3161
|
+
/**
|
|
3162
|
+
* If authenticated as any type of human end user (Actor types User or SSOUser),
|
|
3163
|
+
* this is the appropriate top-level query object
|
|
3164
|
+
*/
|
|
3165
|
+
meUserActor?: Maybe<UserActor>;
|
|
3145
3166
|
project: ProjectQuery;
|
|
3146
3167
|
snack: SnackQuery;
|
|
3147
3168
|
/** Top-level query object for querying SSO Users. */
|
|
@@ -3193,7 +3214,7 @@ export type Runtime = {
|
|
|
3193
3214
|
version: Scalars['String'];
|
|
3194
3215
|
};
|
|
3195
3216
|
/** Represents a human SSO (not robot) actor. */
|
|
3196
|
-
export type SsoUser = Actor & {
|
|
3217
|
+
export type SsoUser = Actor & UserActor & {
|
|
3197
3218
|
__typename?: 'SSOUser';
|
|
3198
3219
|
/** Access Tokens belonging to this actor, none at present */
|
|
3199
3220
|
accessTokens: Array<AccessToken>;
|
|
@@ -3603,6 +3624,8 @@ export type Update = ActivityTimelineProjectActivity & {
|
|
|
3603
3624
|
manifestPermalink: Scalars['String'];
|
|
3604
3625
|
message?: Maybe<Scalars['String']>;
|
|
3605
3626
|
platform: Scalars['String'];
|
|
3627
|
+
runtime: Runtime;
|
|
3628
|
+
/** @deprecated Use 'runtime' field . */
|
|
3606
3629
|
runtimeVersion: Scalars['String'];
|
|
3607
3630
|
updatedAt: Scalars['DateTime'];
|
|
3608
3631
|
};
|
|
@@ -3765,7 +3788,7 @@ export type UsageMetricsTimespan = {
|
|
|
3765
3788
|
start: Scalars['DateTime'];
|
|
3766
3789
|
};
|
|
3767
3790
|
/** Represents a human (not robot) actor. */
|
|
3768
|
-
export type User = Actor & {
|
|
3791
|
+
export type User = Actor & UserActor & {
|
|
3769
3792
|
__typename?: 'User';
|
|
3770
3793
|
/** Access Tokens belonging to this actor */
|
|
3771
3794
|
accessTokens: Array<AccessToken>;
|
|
@@ -3834,6 +3857,68 @@ export type UserSnacksArgs = {
|
|
|
3834
3857
|
limit: Scalars['Int'];
|
|
3835
3858
|
offset: Scalars['Int'];
|
|
3836
3859
|
};
|
|
3860
|
+
/** A human user (type User or SSOUser) that can login to the Expo website, use Expo services, and be a member of accounts. */
|
|
3861
|
+
export type UserActor = {
|
|
3862
|
+
/** Access Tokens belonging to this user actor */
|
|
3863
|
+
accessTokens: Array<AccessToken>;
|
|
3864
|
+
accounts: Array<Account>;
|
|
3865
|
+
/**
|
|
3866
|
+
* Coalesced project activity for all apps belonging to all accounts this user actor belongs to.
|
|
3867
|
+
* Only resolves for the viewer.
|
|
3868
|
+
*/
|
|
3869
|
+
activityTimelineProjectActivities: Array<ActivityTimelineProjectActivity>;
|
|
3870
|
+
appCount: Scalars['Int'];
|
|
3871
|
+
appetizeCode?: Maybe<Scalars['String']>;
|
|
3872
|
+
/** Apps this user has published */
|
|
3873
|
+
apps: Array<App>;
|
|
3874
|
+
created: Scalars['DateTime'];
|
|
3875
|
+
/**
|
|
3876
|
+
* Best-effort human readable name for this human actor for use in user interfaces during action attribution.
|
|
3877
|
+
* For example, when displaying a sentence indicating that actor X created a build or published an update.
|
|
3878
|
+
*/
|
|
3879
|
+
displayName: Scalars['String'];
|
|
3880
|
+
/**
|
|
3881
|
+
* Server feature gate values for this user actor, optionally filtering by desired gates.
|
|
3882
|
+
* Only resolves for the viewer.
|
|
3883
|
+
*/
|
|
3884
|
+
featureGates: Scalars['JSONObject'];
|
|
3885
|
+
firstName?: Maybe<Scalars['String']>;
|
|
3886
|
+
fullName?: Maybe<Scalars['String']>;
|
|
3887
|
+
githubUsername?: Maybe<Scalars['String']>;
|
|
3888
|
+
id: Scalars['ID'];
|
|
3889
|
+
industry?: Maybe<Scalars['String']>;
|
|
3890
|
+
isExpoAdmin: Scalars['Boolean'];
|
|
3891
|
+
lastName?: Maybe<Scalars['String']>;
|
|
3892
|
+
location?: Maybe<Scalars['String']>;
|
|
3893
|
+
/** Associated accounts */
|
|
3894
|
+
primaryAccount: Account;
|
|
3895
|
+
profilePhoto: Scalars['String'];
|
|
3896
|
+
/** Snacks associated with this user's personal account */
|
|
3897
|
+
snacks: Array<Snack>;
|
|
3898
|
+
twitterUsername?: Maybe<Scalars['String']>;
|
|
3899
|
+
username: Scalars['String'];
|
|
3900
|
+
};
|
|
3901
|
+
/** A human user (type User or SSOUser) that can login to the Expo website, use Expo services, and be a member of accounts. */
|
|
3902
|
+
export type UserActorActivityTimelineProjectActivitiesArgs = {
|
|
3903
|
+
createdBefore?: InputMaybe<Scalars['DateTime']>;
|
|
3904
|
+
filterTypes?: InputMaybe<Array<ActivityTimelineProjectActivityType>>;
|
|
3905
|
+
limit: Scalars['Int'];
|
|
3906
|
+
};
|
|
3907
|
+
/** A human user (type User or SSOUser) that can login to the Expo website, use Expo services, and be a member of accounts. */
|
|
3908
|
+
export type UserActorAppsArgs = {
|
|
3909
|
+
includeUnpublished?: InputMaybe<Scalars['Boolean']>;
|
|
3910
|
+
limit: Scalars['Int'];
|
|
3911
|
+
offset: Scalars['Int'];
|
|
3912
|
+
};
|
|
3913
|
+
/** A human user (type User or SSOUser) that can login to the Expo website, use Expo services, and be a member of accounts. */
|
|
3914
|
+
export type UserActorFeatureGatesArgs = {
|
|
3915
|
+
filter?: InputMaybe<Array<Scalars['String']>>;
|
|
3916
|
+
};
|
|
3917
|
+
/** A human user (type User or SSOUser) that can login to the Expo website, use Expo services, and be a member of accounts. */
|
|
3918
|
+
export type UserActorSnacksArgs = {
|
|
3919
|
+
limit: Scalars['Int'];
|
|
3920
|
+
offset: Scalars['Int'];
|
|
3921
|
+
};
|
|
3837
3922
|
export type UserDataInput = {
|
|
3838
3923
|
appetizeCode?: InputMaybe<Scalars['String']>;
|
|
3839
3924
|
email?: InputMaybe<Scalars['String']>;
|
|
@@ -7160,6 +7245,82 @@ export type CreateIosBuildMutation = {
|
|
|
7160
7245
|
};
|
|
7161
7246
|
};
|
|
7162
7247
|
};
|
|
7248
|
+
export type UpdateBuildMetadataMutationVariables = Exact<{
|
|
7249
|
+
buildId: Scalars['ID'];
|
|
7250
|
+
metadata: BuildMetadataInput;
|
|
7251
|
+
}>;
|
|
7252
|
+
export type UpdateBuildMetadataMutation = {
|
|
7253
|
+
__typename?: 'RootMutation';
|
|
7254
|
+
build: {
|
|
7255
|
+
__typename?: 'BuildMutation';
|
|
7256
|
+
updateBuildMetadata: {
|
|
7257
|
+
__typename?: 'Build';
|
|
7258
|
+
id: string;
|
|
7259
|
+
status: BuildStatus;
|
|
7260
|
+
platform: AppPlatform;
|
|
7261
|
+
channel?: string | null;
|
|
7262
|
+
releaseChannel?: string | null;
|
|
7263
|
+
distribution?: DistributionType | null;
|
|
7264
|
+
iosEnterpriseProvisioning?: BuildIosEnterpriseProvisioning | null;
|
|
7265
|
+
buildProfile?: string | null;
|
|
7266
|
+
sdkVersion?: string | null;
|
|
7267
|
+
appVersion?: string | null;
|
|
7268
|
+
appBuildVersion?: string | null;
|
|
7269
|
+
runtimeVersion?: string | null;
|
|
7270
|
+
gitCommitHash?: string | null;
|
|
7271
|
+
gitCommitMessage?: string | null;
|
|
7272
|
+
initialQueuePosition?: number | null;
|
|
7273
|
+
queuePosition?: number | null;
|
|
7274
|
+
estimatedWaitTimeLeftSeconds?: number | null;
|
|
7275
|
+
priority: BuildPriority;
|
|
7276
|
+
createdAt: any;
|
|
7277
|
+
updatedAt: any;
|
|
7278
|
+
completedAt?: any | null;
|
|
7279
|
+
resourceClass: BuildResourceClass;
|
|
7280
|
+
error?: {
|
|
7281
|
+
__typename?: 'BuildError';
|
|
7282
|
+
errorCode: string;
|
|
7283
|
+
message: string;
|
|
7284
|
+
docsUrl?: string | null;
|
|
7285
|
+
} | null;
|
|
7286
|
+
artifacts?: {
|
|
7287
|
+
__typename?: 'BuildArtifacts';
|
|
7288
|
+
buildUrl?: string | null;
|
|
7289
|
+
xcodeBuildLogsUrl?: string | null;
|
|
7290
|
+
applicationArchiveUrl?: string | null;
|
|
7291
|
+
} | null;
|
|
7292
|
+
initiatingActor?: {
|
|
7293
|
+
__typename: 'Robot';
|
|
7294
|
+
id: string;
|
|
7295
|
+
displayName: string;
|
|
7296
|
+
} | {
|
|
7297
|
+
__typename: 'SSOUser';
|
|
7298
|
+
id: string;
|
|
7299
|
+
displayName: string;
|
|
7300
|
+
} | {
|
|
7301
|
+
__typename: 'User';
|
|
7302
|
+
id: string;
|
|
7303
|
+
displayName: string;
|
|
7304
|
+
} | null;
|
|
7305
|
+
project: {
|
|
7306
|
+
__typename: 'App';
|
|
7307
|
+
id: string;
|
|
7308
|
+
name: string;
|
|
7309
|
+
slug: string;
|
|
7310
|
+
ownerAccount: {
|
|
7311
|
+
__typename?: 'Account';
|
|
7312
|
+
id: string;
|
|
7313
|
+
name: string;
|
|
7314
|
+
};
|
|
7315
|
+
} | {
|
|
7316
|
+
__typename: 'Snack';
|
|
7317
|
+
id: string;
|
|
7318
|
+
name: string;
|
|
7319
|
+
slug: string;
|
|
7320
|
+
};
|
|
7321
|
+
};
|
|
7322
|
+
};
|
|
7323
|
+
};
|
|
7163
7324
|
export type RetryIosBuildMutationVariables = Exact<{
|
|
7164
7325
|
buildId: Scalars['ID'];
|
|
7165
7326
|
jobOverrides: IosJobOverridesInput;
|