eas-cli 0.54.1 → 0.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/README.md +44 -44
  2. package/build/build/android/build.js +2 -1
  3. package/build/build/android/version.d.ts +5 -0
  4. package/build/build/android/version.js +16 -9
  5. package/build/build/build.d.ts +2 -2
  6. package/build/build/build.js +16 -5
  7. package/build/build/context.d.ts +4 -3
  8. package/build/build/createContext.d.ts +5 -2
  9. package/build/build/createContext.js +3 -1
  10. package/build/build/ios/build.js +3 -17
  11. package/build/build/ios/syncProjectConfiguration.d.ts +3 -3
  12. package/build/build/ios/syncProjectConfiguration.js +2 -2
  13. package/build/build/ios/version.d.ts +10 -3
  14. package/build/build/ios/version.js +57 -28
  15. package/build/build/metadata.js +1 -1
  16. package/build/build/runBuildAndSubmit.d.ts +2 -0
  17. package/build/build/runBuildAndSubmit.js +19 -3
  18. package/build/build/types.d.ts +4 -0
  19. package/build/build/types.js +6 -1
  20. package/build/commands/build/index.d.ts +2 -0
  21. package/build/commands/build/index.js +8 -1
  22. package/build/commands/build/version/set.d.ts +10 -0
  23. package/build/commands/build/version/set.js +82 -0
  24. package/build/commands/build/version/sync.d.ts +12 -0
  25. package/build/commands/build/version/sync.js +124 -0
  26. package/build/commands/update/index.d.ts +1 -0
  27. package/build/commands/update/index.js +15 -4
  28. package/build/credentials/ios/types.d.ts +2 -0
  29. package/build/env.d.ts +11 -0
  30. package/build/env.js +12 -0
  31. package/build/graphql/generated.d.ts +102 -2
  32. package/build/graphql/generated.js +10 -1
  33. package/build/graphql/mutations/AppVersionMutation.d.ts +11 -0
  34. package/build/graphql/mutations/AppVersionMutation.js +28 -0
  35. package/build/graphql/mutations/BuildMutation.d.ts +3 -1
  36. package/build/graphql/mutations/BuildMutation.js +14 -2
  37. package/build/graphql/queries/AppVersionQuery.d.ts +4 -0
  38. package/build/graphql/queries/AppVersionQuery.js +37 -0
  39. package/build/graphql/queries/WebhookQuery.d.ts +1 -1
  40. package/build/metadata/apple/config/reader.d.ts +2 -1
  41. package/build/metadata/apple/config/reader.js +66 -9
  42. package/build/metadata/apple/config/writer.d.ts +3 -2
  43. package/build/metadata/apple/config/writer.js +64 -12
  44. package/build/metadata/apple/data.d.ts +2 -1
  45. package/build/metadata/apple/tasks/app-review-detail.d.ts +14 -0
  46. package/build/metadata/apple/tasks/app-review-detail.js +49 -0
  47. package/build/metadata/apple/tasks/app-version.js +2 -2
  48. package/build/metadata/apple/tasks/index.js +2 -1
  49. package/build/metadata/apple/types.d.ts +9 -11
  50. package/build/metadata/errors.d.ts +5 -0
  51. package/build/metadata/errors.js +18 -9
  52. package/build/metadata/upload.js +13 -3
  53. package/build/platform.d.ts +1 -0
  54. package/build/platform.js +17 -1
  55. package/build/project/android/applicationId.js +6 -2
  56. package/build/project/android/versions.d.ts +3 -0
  57. package/build/project/android/versions.js +23 -0
  58. package/build/project/applicationIdentifier.d.ts +4 -0
  59. package/build/project/applicationIdentifier.js +37 -0
  60. package/build/project/ios/bundleIdentifier.js +2 -2
  61. package/build/project/ios/target.js +14 -1
  62. package/build/project/ios/versions.d.ts +3 -0
  63. package/build/project/ios/versions.js +17 -0
  64. package/build/project/publish.d.ts +1 -2
  65. package/build/project/publish.js +15 -14
  66. package/build/project/remoteVersionSource.d.ts +6 -0
  67. package/build/project/remoteVersionSource.js +52 -0
  68. package/build/project/workflow.js +13 -11
  69. package/build/submit/utils/files.js +1 -1
  70. package/build/uploads.d.ts +9 -2
  71. package/build/uploads.js +21 -7
  72. package/oclif.manifest.json +1 -1
  73. package/package.json +9 -5
  74. package/schema/metadata-0.json +396 -336
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const eas_build_job_1 = require("@expo/eas-build-job");
5
+ const eas_json_1 = require("@expo/eas-json");
6
+ const core_1 = require("@oclif/core");
7
+ const chalk_1 = tslib_1.__importDefault(require("chalk"));
8
+ const version_1 = require("../../../build/android/version");
9
+ const version_2 = require("../../../build/ios/version");
10
+ const EasCommand_1 = tslib_1.__importDefault(require("../../../commandUtils/EasCommand"));
11
+ const AppVersionQuery_1 = require("../../../graphql/queries/AppVersionQuery");
12
+ const AppPlatform_1 = require("../../../graphql/types/AppPlatform");
13
+ const log_1 = tslib_1.__importDefault(require("../../../log"));
14
+ const platform_1 = require("../../../platform");
15
+ const gradleUtils_1 = require("../../../project/android/gradleUtils");
16
+ const versions_1 = require("../../../project/android/versions");
17
+ const applicationIdentifier_1 = require("../../../project/applicationIdentifier");
18
+ const expoConfig_1 = require("../../../project/expoConfig");
19
+ const scheme_1 = require("../../../project/ios/scheme");
20
+ const target_1 = require("../../../project/ios/target");
21
+ const versions_2 = require("../../../project/ios/versions");
22
+ const projectUtils_1 = require("../../../project/projectUtils");
23
+ const remoteVersionSource_1 = require("../../../project/remoteVersionSource");
24
+ const workflow_1 = require("../../../project/workflow");
25
+ const profiles_1 = require("../../../utils/profiles");
26
+ class BuildVersionSyncView extends EasCommand_1.default {
27
+ async runAsync() {
28
+ var _a;
29
+ const { flags } = await this.parse(BuildVersionSyncView);
30
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
31
+ const requestedPlatform = await (0, platform_1.selectRequestedPlatformAsync)(flags.platform);
32
+ const easJsonReader = new eas_json_1.EasJsonReader(projectDir);
33
+ await (0, remoteVersionSource_1.ensureRemoteVersionPolicyAsync)(projectDir, easJsonReader);
34
+ const platforms = (0, platform_1.toPlatforms)(requestedPlatform);
35
+ const buildProfiles = await (0, profiles_1.getProfilesAsync)({
36
+ type: 'build',
37
+ easJsonReader,
38
+ platforms,
39
+ profileName: (_a = flags.profile) !== null && _a !== void 0 ? _a : undefined,
40
+ });
41
+ for (const profileInfo of buildProfiles) {
42
+ const exp = (0, expoConfig_1.getExpoConfig)(projectDir, { env: profileInfo.profile.env });
43
+ const projectId = await (0, projectUtils_1.getProjectIdAsync)(exp);
44
+ await (0, remoteVersionSource_1.validateAppConfigForRemoteVersionPolicyAsync)(exp);
45
+ const platformDisplayName = platform_1.appPlatformDisplayNames[(0, AppPlatform_1.toAppPlatform)(profileInfo.platform)];
46
+ const applicationIdentifier = await (0, applicationIdentifier_1.getApplicationIdentifierAsync)(projectDir, exp, profileInfo.profile, profileInfo.platform);
47
+ const remoteVersions = await AppVersionQuery_1.AppVersionQuery.latestVersionAsync(projectId, (0, AppPlatform_1.toAppPlatform)(profileInfo.platform), applicationIdentifier);
48
+ const workflow = await (0, workflow_1.resolveWorkflowAsync)(projectDir, profileInfo.platform);
49
+ if (!(remoteVersions === null || remoteVersions === void 0 ? void 0 : remoteVersions.buildVersion)) {
50
+ log_1.default.warn(`Skipping versions sync for ${platformDisplayName}. There are no versions configured on Expo servers, use "eas build:version:set" or run a build to initialize it.`);
51
+ continue;
52
+ }
53
+ if (workflow === eas_build_job_1.Workflow.MANAGED) {
54
+ log_1.default.warn(`The remote value for the ${platformDisplayName} ${(0, remoteVersionSource_1.getBuildVersionName)(profileInfo.platform)} is ${chalk_1.default.bold(remoteVersions === null || remoteVersions === void 0 ? void 0 : remoteVersions.buildVersion)}, but it was not synced to the local project. This command has no effect on projects using managed workflow.`);
55
+ continue;
56
+ }
57
+ if (profileInfo.platform === eas_build_job_1.Platform.ANDROID) {
58
+ this.syncAndroidAsync({
59
+ projectDir,
60
+ exp,
61
+ profile: profileInfo.profile,
62
+ workflow,
63
+ buildVersion: remoteVersions.buildVersion,
64
+ });
65
+ }
66
+ else {
67
+ this.syncIosAsync({
68
+ projectDir,
69
+ exp,
70
+ profile: profileInfo.profile,
71
+ workflow,
72
+ buildVersion: remoteVersions.buildVersion,
73
+ });
74
+ }
75
+ log_1.default.withTick(`Successfully updated the ${platformDisplayName} ${(0, remoteVersionSource_1.getBuildVersionName)(profileInfo.platform)} in native code to ${chalk_1.default.bold(remoteVersions === null || remoteVersions === void 0 ? void 0 : remoteVersions.buildVersion)}.`);
76
+ }
77
+ }
78
+ async syncIosAsync({ workflow, projectDir, exp, profile, buildVersion, }) {
79
+ const xcodeBuildContext = await (0, scheme_1.resolveXcodeBuildContextAsync)({ exp, projectDir, nonInteractive: false }, profile);
80
+ const targets = await (0, target_1.resolveTargetsAsync)({
81
+ projectDir,
82
+ exp,
83
+ xcodeBuildContext,
84
+ env: profile.env,
85
+ });
86
+ if (!(0, versions_2.isValidBuildNumber)(buildVersion)) {
87
+ throw new Error(`Invalid buildNumber (${buildVersion}), ${versions_2.BUILD_NUMBER_REQUIREMENTS}.`);
88
+ }
89
+ if (workflow === eas_build_job_1.Workflow.GENERIC) {
90
+ await (0, version_2.updateNativeVersionsAsync)({
91
+ projectDir,
92
+ buildNumber: buildVersion,
93
+ targets,
94
+ });
95
+ }
96
+ }
97
+ async syncAndroidAsync({ projectDir, workflow, buildVersion, }) {
98
+ var _a, _b;
99
+ if (!(0, versions_1.isValidVersionCode)(buildVersion)) {
100
+ throw new Error(`Invalid versionCode (${buildVersion}), ${versions_1.VERSION_CODE_REQUIREMENTS}.`);
101
+ }
102
+ if (workflow === eas_build_job_1.Workflow.GENERIC) {
103
+ const buildGradle = await (0, gradleUtils_1.getAppBuildGradleAsync)(projectDir);
104
+ const isMultiFlavor = ((_a = buildGradle.android) === null || _a === void 0 ? void 0 : _a.productFlavors) || ((_b = buildGradle.android) === null || _b === void 0 ? void 0 : _b.flavorDimensions);
105
+ if (isMultiFlavor) {
106
+ throw new Error("Versions in native code can't be automatically synced in multi-flavor Android projects. If you are using EAS Build with app version source set to remote, the correct values will be injected at the build time.");
107
+ }
108
+ await (0, version_1.updateNativeVersionsAsync)({ projectDir, versionCode: Number(buildVersion) });
109
+ }
110
+ }
111
+ }
112
+ exports.default = BuildVersionSyncView;
113
+ BuildVersionSyncView.description = 'Update a version in native code with a value stored on EAS servers';
114
+ BuildVersionSyncView.hidden = true;
115
+ BuildVersionSyncView.flags = {
116
+ platform: core_1.Flags.enum({
117
+ char: 'p',
118
+ options: ['android', 'ios', 'all'],
119
+ }),
120
+ profile: core_1.Flags.string({
121
+ description: 'Name of the build profile from eas.json. Defaults to "production" if defined in eas.json.',
122
+ helpValue: 'PROFILE_NAME',
123
+ }),
124
+ };
@@ -30,3 +30,4 @@ export default class UpdatePublish extends EasCommand {
30
30
  runAsync(): Promise<void>;
31
31
  }
32
32
  export declare function getUpdatesToRepublishInteractiveAsync(projectId: string, branchName: string, platformFlag: string, pageSize: number, offset?: number, cumulativeUpdates?: Exclude<Exclude<ViewBranchUpdatesQuery['app'], null | undefined>['byId']['updateBranchByName'], null | undefined>['updates']): Promise<Exclude<Exclude<ViewBranchUpdatesQuery['app'], null | undefined>['byId']['updateBranchByName'], null | undefined>['updates']>;
33
+ export declare const truncatePublishUpdateMessage: (originalMessage: string) => string;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getUpdatesToRepublishInteractiveAsync = exports.ensureBranchExistsAsync = exports.defaultPublishPlatforms = void 0;
3
+ exports.truncatePublishUpdateMessage = exports.getUpdatesToRepublishInteractiveAsync = exports.ensureBranchExistsAsync = exports.defaultPublishPlatforms = 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");
@@ -265,7 +265,9 @@ class UpdatePublish extends EasCommand_1.default {
265
265
  try {
266
266
  const platforms = platformFlag === 'all' ? exports.defaultPublishPlatforms : [platformFlag];
267
267
  const assets = await (0, publish_1.collectAssetsAsync)({ inputDir: inputDir, platforms });
268
- const { uniqueUploadedAssetCount } = await (0, publish_1.uploadAssetsAsync)(assets, spinnerText => (assetSpinner.text = `Uploading assets... ${spinnerText}`));
268
+ const { uniqueUploadedAssetCount } = await (0, publish_1.uploadAssetsAsync)(assets, (totalAssets, missingAssets) => {
269
+ assetSpinner.text = `Uploading assets. Finished (${totalAssets - missingAssets}/${totalAssets})`;
270
+ });
269
271
  uploadedAssetCount = uniqueUploadedAssetCount;
270
272
  unsortedUpdateInfoGroups = await (0, publish_1.buildUnsortedUpdateInfoGroupAsync)(assets, exp);
271
273
  const uploadAssetSuccessMessage = uploadedAssetCount
@@ -278,6 +280,7 @@ class UpdatePublish extends EasCommand_1.default {
278
280
  throw e;
279
281
  }
280
282
  }
283
+ const truncatedMessage = (0, exports.truncatePublishUpdateMessage)(message);
281
284
  const runtimeToPlatformMapping = {};
282
285
  for (const runtime of new Set(Object.values(runtimeVersions))) {
283
286
  runtimeToPlatformMapping[runtime] = Object.entries(runtimeVersions)
@@ -302,7 +305,7 @@ class UpdatePublish extends EasCommand_1.default {
302
305
  branchId,
303
306
  updateInfoGroup: localUpdateInfoGroup,
304
307
  runtimeVersion: republish ? oldRuntimeVersion : runtime,
305
- message,
308
+ message: truncatedMessage,
306
309
  awaitingCodeSigningInfo: !!codeSigningInfo,
307
310
  };
308
311
  });
@@ -374,7 +377,7 @@ class UpdatePublish extends EasCommand_1.default {
374
377
  ? [{ label: 'Android update ID', value: newAndroidUpdate.id }]
375
378
  : []),
376
379
  ...(newIosUpdate ? [{ label: 'iOS update ID', value: newIosUpdate.id }] : []),
377
- { label: 'Message', value: message },
380
+ { label: 'Message', value: truncatedMessage },
378
381
  { label: 'Website link', value: updateGroupLink },
379
382
  ]));
380
383
  log_1.default.addNewLineIfNone();
@@ -513,3 +516,11 @@ async function checkEASUpdateURLIsSetAsync(exp) {
513
516
  throw new Error(`The update URL is incorrectly configured for EAS Update. Please set updates.url to ${expectedURL} in your app.json.`);
514
517
  }
515
518
  }
519
+ const truncatePublishUpdateMessage = (originalMessage) => {
520
+ if (originalMessage.length > 1024) {
521
+ log_1.default.warn('Update message exceeds the allowed 1024 character limit. Truncating message...');
522
+ return originalMessage.substring(0, 1021) + '...';
523
+ }
524
+ return originalMessage;
525
+ };
526
+ exports.truncatePublishUpdateMessage = truncatePublishUpdateMessage;
@@ -1,4 +1,5 @@
1
1
  import { JSONObject } from '@expo/json-file';
2
+ import type { XCBuildConfiguration } from 'xcode';
2
3
  import { CommonIosAppCredentialsFragment, IosAppBuildCredentialsFragment } from '../../graphql/generated';
3
4
  import { Account } from '../../user/Account';
4
5
  export interface App {
@@ -11,6 +12,7 @@ export interface Target {
11
12
  bundleIdentifier: string;
12
13
  parentBundleIdentifier?: string;
13
14
  entitlements: JSONObject;
15
+ buildSettings?: XCBuildConfiguration['buildSettings'];
14
16
  }
15
17
  export interface TargetCredentials {
16
18
  distributionCertificate: {
package/build/env.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ declare const _default: {
2
+ /**
3
+ * Dangerous overrides, use only if you know what you are doing
4
+ */
5
+ /**
6
+ * Overrides applicationId from Android project, setting this option will also
7
+ * ignore failures when parsing build.gradle.
8
+ */
9
+ overrideAndroidApplicationId: string | undefined;
10
+ };
11
+ export default _default;
package/build/env.js ADDED
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = {
4
+ /**
5
+ * Dangerous overrides, use only if you know what you are doing
6
+ */
7
+ /**
8
+ * Overrides applicationId from Android project, setting this option will also
9
+ * ignore failures when parsing build.gradle.
10
+ */
11
+ overrideAndroidApplicationId: process.env.EAS_DANGEROUS_OVERRIDE_ANDROID_APPLICATION_ID,
12
+ };
@@ -709,6 +709,7 @@ export declare type App = Project & {
709
709
  isLikedByMe: Scalars['Boolean'];
710
710
  /** @deprecated No longer supported */
711
711
  lastPublishedTime: Scalars['DateTime'];
712
+ latestAppVersionByPlatformAndApplicationIdentifier?: Maybe<AppVersion>;
712
713
  latestReleaseForReleaseChannel?: Maybe<AppRelease>;
713
714
  /** ID of latest classic update release */
714
715
  latestReleaseId: Scalars['ID'];
@@ -812,6 +813,11 @@ export declare type AppIosAppCredentialsArgs = {
812
813
  filter?: InputMaybe<IosAppCredentialsFilter>;
813
814
  };
814
815
  /** Represents an Exponent App (or Experience in legacy terms) */
816
+ export declare type AppLatestAppVersionByPlatformAndApplicationIdentifierArgs = {
817
+ applicationIdentifier: Scalars['String'];
818
+ platform: AppPlatform;
819
+ };
820
+ /** Represents an Exponent App (or Experience in legacy terms) */
815
821
  export declare type AppLatestReleaseForReleaseChannelArgs = {
816
822
  platform: AppPlatform;
817
823
  releaseChannel: Scalars['String'];
@@ -1004,6 +1010,47 @@ export declare enum AppStoreConnectUserRole {
1004
1010
  Technical = "TECHNICAL",
1005
1011
  Unknown = "UNKNOWN"
1006
1012
  }
1013
+ /** Represents Play Store/App Store version of an application */
1014
+ export declare type AppVersion = {
1015
+ __typename?: 'AppVersion';
1016
+ /**
1017
+ * Store identifier for an application
1018
+ * - Android - applicationId
1019
+ * - iOS - bundle identifier
1020
+ */
1021
+ applicationIdentifier: Scalars['String'];
1022
+ /**
1023
+ * Value that identifies build in a store (it's visible to developers, but not to end users)
1024
+ * - Android - versionCode in build.gradle ("android.versionCode" field in app.json)
1025
+ * - iOS - CFBundleVersion in Info.plist ("ios.buildNumber" field in app.json)
1026
+ */
1027
+ buildVersion: Scalars['String'];
1028
+ id: Scalars['ID'];
1029
+ platform: AppPlatform;
1030
+ runtimeVersion?: Maybe<Scalars['String']>;
1031
+ /**
1032
+ * User-facing version in a store
1033
+ * - Android - versionName in build.gradle ("version" field in app.json)
1034
+ * - iOS - CFBundleShortVersionString in Info.plist ("version" field in app.json)
1035
+ */
1036
+ storeVersion: Scalars['String'];
1037
+ };
1038
+ export declare type AppVersionInput = {
1039
+ appId: Scalars['ID'];
1040
+ applicationIdentifier: Scalars['String'];
1041
+ buildVersion: Scalars['String'];
1042
+ platform: AppPlatform;
1043
+ runtimeVersion?: InputMaybe<Scalars['String']>;
1044
+ storeVersion: Scalars['String'];
1045
+ };
1046
+ export declare type AppVersionMutation = {
1047
+ __typename?: 'AppVersionMutation';
1048
+ /** Create an app version */
1049
+ createAppVersion: AppVersion;
1050
+ };
1051
+ export declare type AppVersionMutationCreateAppVersionArgs = {
1052
+ appVersionInput: AppVersionInput;
1053
+ };
1007
1054
  export declare type AppleAppIdentifier = {
1008
1055
  __typename?: 'AppleAppIdentifier';
1009
1056
  account: Account;
@@ -1181,7 +1228,7 @@ export declare type ApplePushKey = {
1181
1228
  updatedAt: Scalars['DateTime'];
1182
1229
  };
1183
1230
  export declare type ApplePushKeyInput = {
1184
- appleTeamId?: InputMaybe<Scalars['ID']>;
1231
+ appleTeamId: Scalars['ID'];
1185
1232
  keyIdentifier: Scalars['String'];
1186
1233
  keyP8: Scalars['String'];
1187
1234
  };
@@ -1321,6 +1368,7 @@ export declare type Build = ActivityTimelineProjectActivity & BuildOrBuildJob &
1321
1368
  iosEnterpriseProvisioning?: Maybe<BuildIosEnterpriseProvisioning>;
1322
1369
  isGitWorkingTreeDirty?: Maybe<Scalars['Boolean']>;
1323
1370
  logFiles: Array<Scalars['String']>;
1371
+ maxBuildTimeSeconds: Scalars['Int'];
1324
1372
  metrics?: Maybe<BuildMetrics>;
1325
1373
  parentBuild?: Maybe<Build>;
1326
1374
  platform: AppPlatform;
@@ -1331,6 +1379,7 @@ export declare type Build = ActivityTimelineProjectActivity & BuildOrBuildJob &
1331
1379
  queuePosition?: Maybe<Scalars['Int']>;
1332
1380
  reactNativeVersion?: Maybe<Scalars['String']>;
1333
1381
  releaseChannel?: Maybe<Scalars['String']>;
1382
+ resourceClass?: Maybe<BuildResourceClass>;
1334
1383
  runtimeVersion?: Maybe<Scalars['String']>;
1335
1384
  sdkVersion?: Maybe<Scalars['String']>;
1336
1385
  status: BuildStatus;
@@ -1496,11 +1545,13 @@ export declare type BuildMutationCancelBuildArgs = {
1496
1545
  };
1497
1546
  export declare type BuildMutationCreateAndroidBuildArgs = {
1498
1547
  appId: Scalars['ID'];
1548
+ buildParams?: InputMaybe<BuildParamsInput>;
1499
1549
  job: AndroidJobInput;
1500
1550
  metadata?: InputMaybe<BuildMetadataInput>;
1501
1551
  };
1502
1552
  export declare type BuildMutationCreateIosBuildArgs = {
1503
1553
  appId: Scalars['ID'];
1554
+ buildParams?: InputMaybe<BuildParamsInput>;
1504
1555
  job: IosJobInput;
1505
1556
  metadata?: InputMaybe<BuildMetadataInput>;
1506
1557
  };
@@ -1513,9 +1564,13 @@ export declare type BuildMutationRetryBuildArgs = {
1513
1564
  export declare type BuildOrBuildJob = {
1514
1565
  id: Scalars['ID'];
1515
1566
  };
1567
+ export declare type BuildParamsInput = {
1568
+ resourceClass: BuildResourceClass;
1569
+ };
1516
1570
  export declare enum BuildPriority {
1517
1571
  High = "HIGH",
1518
- Normal = "NORMAL"
1572
+ Normal = "NORMAL",
1573
+ NormalPlus = "NORMAL_PLUS"
1519
1574
  }
1520
1575
  /** Publicly visible data for a Build. */
1521
1576
  export declare type BuildPublicData = {
@@ -1568,6 +1623,13 @@ export declare type BuildQueryAllForAppArgs = {
1568
1623
  export declare type BuildQueryByIdArgs = {
1569
1624
  buildId: Scalars['ID'];
1570
1625
  };
1626
+ export declare enum BuildResourceClass {
1627
+ AndroidDefault = "ANDROID_DEFAULT",
1628
+ AndroidLarge = "ANDROID_LARGE",
1629
+ IosDefault = "IOS_DEFAULT",
1630
+ IosLarge = "IOS_LARGE",
1631
+ Legacy = "LEGACY"
1632
+ }
1571
1633
  export declare enum BuildStatus {
1572
1634
  Canceled = "CANCELED",
1573
1635
  Errored = "ERRORED",
@@ -2407,6 +2469,8 @@ export declare type RootMutation = {
2407
2469
  app?: Maybe<AppMutation>;
2408
2470
  /** Mutations that modify an App Store Connect Api Key */
2409
2471
  appStoreConnectApiKey: AppStoreConnectApiKeyMutation;
2472
+ /** Mutations that modify an AppVersion */
2473
+ appVersion: AppVersionMutation;
2410
2474
  /** Mutations that modify an Identifier for an iOS App */
2411
2475
  appleAppIdentifier: AppleAppIdentifierMutation;
2412
2476
  /** Mutations that modify an Apple Device */
@@ -5746,10 +5810,24 @@ export declare type CreateAppMutation = {
5746
5810
  };
5747
5811
  } | null;
5748
5812
  };
5813
+ export declare type CreateAppVersionMutationVariables = Exact<{
5814
+ appVersionInput: AppVersionInput;
5815
+ }>;
5816
+ export declare type CreateAppVersionMutation = {
5817
+ __typename?: 'RootMutation';
5818
+ appVersion: {
5819
+ __typename?: 'AppVersionMutation';
5820
+ createAppVersion: {
5821
+ __typename?: 'AppVersion';
5822
+ id: string;
5823
+ };
5824
+ };
5825
+ };
5749
5826
  export declare type CreateAndroidBuildMutationVariables = Exact<{
5750
5827
  appId: Scalars['ID'];
5751
5828
  job: AndroidJobInput;
5752
5829
  metadata?: InputMaybe<BuildMetadataInput>;
5830
+ buildParams?: InputMaybe<BuildParamsInput>;
5753
5831
  }>;
5754
5832
  export declare type CreateAndroidBuildMutation = {
5755
5833
  __typename?: 'RootMutation';
@@ -5827,6 +5905,7 @@ export declare type CreateIosBuildMutationVariables = Exact<{
5827
5905
  appId: Scalars['ID'];
5828
5906
  job: IosJobInput;
5829
5907
  metadata?: InputMaybe<BuildMetadataInput>;
5908
+ buildParams?: InputMaybe<BuildParamsInput>;
5830
5909
  }>;
5831
5910
  export declare type CreateIosBuildMutation = {
5832
5911
  __typename?: 'RootMutation';
@@ -6166,6 +6245,27 @@ export declare type DeleteWebhookMutation = {
6166
6245
  };
6167
6246
  };
6168
6247
  };
6248
+ export declare type LatestAppVersionQueryVariables = Exact<{
6249
+ appId: Scalars['String'];
6250
+ platform: AppPlatform;
6251
+ applicationIdentifier: Scalars['String'];
6252
+ }>;
6253
+ export declare type LatestAppVersionQuery = {
6254
+ __typename?: 'RootQuery';
6255
+ app: {
6256
+ __typename?: 'AppQuery';
6257
+ byId: {
6258
+ __typename?: 'App';
6259
+ id: string;
6260
+ latestAppVersionByPlatformAndApplicationIdentifier?: {
6261
+ __typename?: 'AppVersion';
6262
+ id: string;
6263
+ storeVersion: string;
6264
+ buildVersion: string;
6265
+ } | null;
6266
+ };
6267
+ };
6268
+ };
6169
6269
  export declare type ViewBranchQueryVariables = Exact<{
6170
6270
  appId: Scalars['String'];
6171
6271
  name: Scalars['String'];
@@ -6,7 +6,7 @@
6
6
  * For more info and docs, visit https://graphql-code-generator.com/
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.WebhookType = exports.UsageMetricsGranularity = exports.UsageMetricType = exports.UploadSessionType = exports.SubmissionStatus = exports.SubmissionAndroidTrack = exports.SubmissionAndroidReleaseStatus = exports.SubmissionAndroidArchiveType = exports.StandardOffer = exports.SecondFactorMethod = exports.Role = exports.ProjectArchiveSourceType = exports.Permission = exports.Order = exports.OfferType = exports.MailchimpTag = exports.MailchimpAudience = exports.IosSchemeBuildConfiguration = exports.IosManagedBuildType = exports.IosDistributionType = exports.IosBuildType = exports.InvoiceDiscountType = exports.Feature = exports.EasServiceMetric = exports.EasBuildDeprecationInfoType = exports.DistributionType = exports.CacheControlScope = exports.BuildWorkflow = exports.BuildStatus = exports.BuildPriority = exports.BuildJobStatus = exports.BuildJobLogsFormat = exports.BuildIosEnterpriseProvisioning = exports.BuildCredentialsSource = exports.AssetMetadataStatus = exports.AppsFilter = exports.AppleDeviceClass = exports.AppStoreConnectUserRole = exports.AppSort = exports.AppPrivacy = exports.AppPlatform = exports.AndroidKeystoreType = exports.AndroidFcmVersion = exports.AndroidBuildType = exports.ActivityTimelineProjectActivityType = void 0;
9
+ exports.WebhookType = exports.UsageMetricsGranularity = exports.UsageMetricType = exports.UploadSessionType = exports.SubmissionStatus = exports.SubmissionAndroidTrack = exports.SubmissionAndroidReleaseStatus = exports.SubmissionAndroidArchiveType = exports.StandardOffer = exports.SecondFactorMethod = exports.Role = exports.ProjectArchiveSourceType = exports.Permission = exports.Order = exports.OfferType = exports.MailchimpTag = exports.MailchimpAudience = exports.IosSchemeBuildConfiguration = exports.IosManagedBuildType = exports.IosDistributionType = exports.IosBuildType = exports.InvoiceDiscountType = exports.Feature = exports.EasServiceMetric = exports.EasBuildDeprecationInfoType = exports.DistributionType = exports.CacheControlScope = exports.BuildWorkflow = exports.BuildStatus = exports.BuildResourceClass = exports.BuildPriority = exports.BuildJobStatus = exports.BuildJobLogsFormat = exports.BuildIosEnterpriseProvisioning = exports.BuildCredentialsSource = exports.AssetMetadataStatus = exports.AppsFilter = exports.AppleDeviceClass = exports.AppStoreConnectUserRole = exports.AppSort = exports.AppPrivacy = exports.AppPlatform = exports.AndroidKeystoreType = exports.AndroidFcmVersion = exports.AndroidBuildType = exports.ActivityTimelineProjectActivityType = void 0;
10
10
  var ActivityTimelineProjectActivityType;
11
11
  (function (ActivityTimelineProjectActivityType) {
12
12
  ActivityTimelineProjectActivityType["Build"] = "BUILD";
@@ -114,7 +114,16 @@ var BuildPriority;
114
114
  (function (BuildPriority) {
115
115
  BuildPriority["High"] = "HIGH";
116
116
  BuildPriority["Normal"] = "NORMAL";
117
+ BuildPriority["NormalPlus"] = "NORMAL_PLUS";
117
118
  })(BuildPriority = exports.BuildPriority || (exports.BuildPriority = {}));
119
+ var BuildResourceClass;
120
+ (function (BuildResourceClass) {
121
+ BuildResourceClass["AndroidDefault"] = "ANDROID_DEFAULT";
122
+ BuildResourceClass["AndroidLarge"] = "ANDROID_LARGE";
123
+ BuildResourceClass["IosDefault"] = "IOS_DEFAULT";
124
+ BuildResourceClass["IosLarge"] = "IOS_LARGE";
125
+ BuildResourceClass["Legacy"] = "LEGACY";
126
+ })(BuildResourceClass = exports.BuildResourceClass || (exports.BuildResourceClass = {}));
118
127
  var BuildStatus;
119
128
  (function (BuildStatus) {
120
129
  BuildStatus["Canceled"] = "CANCELED";
@@ -0,0 +1,11 @@
1
+ import { AppPlatform } from '../generated';
2
+ export declare const AppVersionMutation: {
3
+ createAppVersionAsync(appVersionInput: {
4
+ appId: string;
5
+ platform: AppPlatform;
6
+ applicationIdentifier: string;
7
+ storeVersion: string;
8
+ buildVersion: string;
9
+ runtimeVersion?: string;
10
+ }): Promise<string>;
11
+ };
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AppVersionMutation = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const assert_1 = tslib_1.__importDefault(require("assert"));
6
+ const graphql_tag_1 = tslib_1.__importDefault(require("graphql-tag"));
7
+ const client_1 = require("../client");
8
+ exports.AppVersionMutation = {
9
+ async createAppVersionAsync(appVersionInput) {
10
+ var _a;
11
+ const data = await (0, client_1.withErrorHandlingAsync)(client_1.graphqlClient
12
+ .mutation((0, graphql_tag_1.default) `
13
+ mutation CreateAppVersionMutation($appVersionInput: AppVersionInput!) {
14
+ appVersion {
15
+ createAppVersion(appVersionInput: $appVersionInput) {
16
+ id
17
+ }
18
+ }
19
+ }
20
+ `, {
21
+ appVersionInput,
22
+ })
23
+ .toPromise());
24
+ const appVersionId = (_a = data.appVersion) === null || _a === void 0 ? void 0 : _a.createAppVersion.id;
25
+ (0, assert_1.default)(appVersionId, 'AppVersion ID must be defined');
26
+ return appVersionId;
27
+ },
28
+ };
@@ -1,4 +1,4 @@
1
- import { AndroidJobInput, BuildFragment, BuildMetadataInput, EasBuildDeprecationInfo, IosJobInput } from '../generated';
1
+ import { AndroidJobInput, BuildFragment, BuildMetadataInput, BuildParamsInput, EasBuildDeprecationInfo, IosJobInput } from '../generated';
2
2
  export interface BuildResult {
3
3
  build: BuildFragment;
4
4
  deprecationInfo?: EasBuildDeprecationInfo | null;
@@ -8,10 +8,12 @@ export declare const BuildMutation: {
8
8
  appId: string;
9
9
  job: AndroidJobInput;
10
10
  metadata: BuildMetadataInput;
11
+ buildParams: BuildParamsInput;
11
12
  }): Promise<BuildResult>;
12
13
  createIosBuildAsync(input: {
13
14
  appId: string;
14
15
  job: IosJobInput;
15
16
  metadata: BuildMetadataInput;
17
+ buildParams: BuildParamsInput;
16
18
  }): Promise<BuildResult>;
17
19
  };
@@ -16,9 +16,15 @@ exports.BuildMutation = {
16
16
  $appId: ID!
17
17
  $job: AndroidJobInput!
18
18
  $metadata: BuildMetadataInput
19
+ $buildParams: BuildParamsInput
19
20
  ) {
20
21
  build {
21
- createAndroidBuild(appId: $appId, job: $job, metadata: $metadata) {
22
+ createAndroidBuild(
23
+ appId: $appId
24
+ job: $job
25
+ metadata: $metadata
26
+ buildParams: $buildParams
27
+ ) {
22
28
  build {
23
29
  id
24
30
  ...BuildFragment
@@ -43,9 +49,15 @@ exports.BuildMutation = {
43
49
  $appId: ID!
44
50
  $job: IosJobInput!
45
51
  $metadata: BuildMetadataInput
52
+ $buildParams: BuildParamsInput
46
53
  ) {
47
54
  build {
48
- createIosBuild(appId: $appId, job: $job, metadata: $metadata) {
55
+ createIosBuild(
56
+ appId: $appId
57
+ job: $job
58
+ metadata: $metadata
59
+ buildParams: $buildParams
60
+ ) {
49
61
  build {
50
62
  id
51
63
  ...BuildFragment
@@ -0,0 +1,4 @@
1
+ import { AppPlatform, AppVersion } from '../generated';
2
+ export declare const AppVersionQuery: {
3
+ latestVersionAsync(appId: string, platform: AppPlatform, applicationIdentifier: string): Promise<Pick<AppVersion, 'storeVersion' | 'buildVersion'> | null>;
4
+ };
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AppVersionQuery = 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.AppVersionQuery = {
8
+ async latestVersionAsync(appId, platform, applicationIdentifier) {
9
+ var _a;
10
+ const data = await (0, client_1.withErrorHandlingAsync)(client_1.graphqlClient
11
+ .query((0, graphql_tag_1.default) `
12
+ query LatestAppVersion(
13
+ $appId: String!
14
+ $platform: AppPlatform!
15
+ $applicationIdentifier: String!
16
+ ) {
17
+ app {
18
+ byId(appId: $appId) {
19
+ id
20
+ latestAppVersionByPlatformAndApplicationIdentifier(
21
+ platform: $platform
22
+ applicationIdentifier: $applicationIdentifier
23
+ ) {
24
+ id
25
+ storeVersion
26
+ buildVersion
27
+ }
28
+ }
29
+ }
30
+ }
31
+ `, { appId, applicationIdentifier, platform }, {
32
+ additionalTypenames: ['App', 'AppVersion'],
33
+ })
34
+ .toPromise());
35
+ return (_a = data.app.byId.latestAppVersionByPlatformAndApplicationIdentifier) !== null && _a !== void 0 ? _a : null;
36
+ },
37
+ };
@@ -1,5 +1,5 @@
1
1
  import { WebhookFilter, WebhookFragment } from '../generated';
2
2
  export declare const WebhookQuery: {
3
- byAppIdAsync(appId: string, webhookFilter?: WebhookFilter | undefined): Promise<WebhookFragment[]>;
3
+ byAppIdAsync(appId: string, webhookFilter?: WebhookFilter): Promise<WebhookFragment[]>;
4
4
  byIdAsync(webhookId: string): Promise<WebhookFragment>;
5
5
  };
@@ -1,5 +1,5 @@
1
1
  /// <reference types="@expo/apple-utils/ts-declarations/expo__app-store" />
2
- import { AgeRatingDeclaration, AppInfoLocalization, AppStoreVersion, AppStoreVersionLocalization, CategoryIds } from '@expo/apple-utils';
2
+ import { AgeRatingDeclaration, AppInfoLocalization, AppStoreReviewDetail, AppStoreVersion, AppStoreVersionLocalization, CategoryIds } from '@expo/apple-utils';
3
3
  import { AttributesOf } from '../../utils/asc';
4
4
  import { AppleMetadata } from '../types';
5
5
  declare type PartialExcept<T, K extends keyof T> = Pick<T, K> & Partial<Omit<T, K>>;
@@ -21,5 +21,6 @@ export declare class AppleConfigReader {
21
21
  getVersionLocale(locale: string, context: {
22
22
  versionIsFirst: boolean;
23
23
  }): Partial<AttributesOf<AppStoreVersionLocalization>> | null;
24
+ getReviewDetails(): Partial<AttributesOf<AppStoreReviewDetail>> | null;
24
25
  }
25
26
  export {};