eas-cli 0.57.0 → 0.58.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 (61) hide show
  1. package/README.md +44 -44
  2. package/build/build/android/build.js +17 -3
  3. package/build/build/android/graphql.js +2 -0
  4. package/build/build/android/prepareJob.js +5 -0
  5. package/build/build/android/syncProjectConfiguration.d.ts +3 -4
  6. package/build/build/android/syncProjectConfiguration.js +2 -3
  7. package/build/build/android/version.d.ts +11 -0
  8. package/build/build/android/version.js +71 -1
  9. package/build/build/build.js +1 -1
  10. package/build/build/context.d.ts +4 -0
  11. package/build/build/createContext.d.ts +2 -1
  12. package/build/build/createContext.js +7 -1
  13. package/build/build/ios/build.js +17 -1
  14. package/build/build/ios/graphql.js +2 -0
  15. package/build/build/ios/prepareJob.js +5 -0
  16. package/build/build/ios/syncProjectConfiguration.d.ts +3 -4
  17. package/build/build/ios/syncProjectConfiguration.js +2 -3
  18. package/build/build/ios/version.d.ts +13 -0
  19. package/build/build/ios/version.js +72 -1
  20. package/build/build/local.d.ts +2 -2
  21. package/build/build/local.js +7 -7
  22. package/build/build/metadata.js +18 -2
  23. package/build/build/runBuildAndSubmit.js +21 -3
  24. package/build/build/utils/printBuildInfo.d.ts +1 -1
  25. package/build/build/utils/printBuildInfo.js +7 -13
  26. package/build/commands/build/version/set.d.ts +0 -1
  27. package/build/commands/build/version/set.js +2 -3
  28. package/build/commands/build/version/sync.d.ts +0 -1
  29. package/build/commands/build/version/sync.js +2 -3
  30. package/build/commands/submit.js +4 -1
  31. package/build/commands/update/index.js +12 -2
  32. package/build/graphql/generated.d.ts +230 -0
  33. package/build/graphql/generated.js +2 -0
  34. package/build/graphql/mutations/PublishMutation.d.ts +2 -4
  35. package/build/graphql/queries/BuildQuery.d.ts +4 -1
  36. package/build/graphql/queries/BuildQuery.js +19 -0
  37. package/build/graphql/queries/PublishQuery.d.ts +2 -1
  38. package/build/graphql/queries/PublishQuery.js +16 -0
  39. package/build/graphql/types/Build.d.ts +1 -0
  40. package/build/graphql/types/Build.js +16 -1
  41. package/build/metadata/apple/config/reader.d.ts +3 -2
  42. package/build/metadata/apple/config/reader.js +22 -5
  43. package/build/metadata/apple/config/writer.d.ts +3 -2
  44. package/build/metadata/apple/config/writer.js +22 -6
  45. package/build/metadata/apple/tasks/app-version.d.ts +5 -1
  46. package/build/metadata/apple/tasks/app-version.js +109 -8
  47. package/build/metadata/apple/tasks/index.d.ts +6 -1
  48. package/build/metadata/apple/tasks/index.js +7 -2
  49. package/build/metadata/apple/types.d.ts +3 -7
  50. package/build/metadata/upload.js +6 -1
  51. package/build/project/publish.d.ts +3 -1
  52. package/build/project/publish.js +17 -8
  53. package/build/project/remoteVersionSource.d.ts +5 -3
  54. package/build/project/remoteVersionSource.js +18 -9
  55. package/build/submit/submit.d.ts +2 -1
  56. package/build/submit/submit.js +3 -2
  57. package/build/vcs/clients/gitNoCommit.d.ts +1 -0
  58. package/build/vcs/clients/gitNoCommit.js +14 -0
  59. package/oclif.manifest.json +1 -1
  60. package/package.json +4 -4
  61. package/schema/metadata-0.json +38 -233
@@ -755,6 +755,7 @@ export declare type App = Project & {
755
755
  androidAppCredentials: Array<AndroidAppCredentials>;
756
756
  /** ios.appStoreUrl field from most recent classic update manifest */
757
757
  appStoreUrl?: Maybe<Scalars['String']>;
758
+ assetLimitPerUpdateGroup: Scalars['Int'];
758
759
  buildJobs: Array<BuildJob>;
759
760
  /**
760
761
  * Coalesced Build (EAS) or BuildJob (Classic) items for this app.
@@ -1466,6 +1467,7 @@ export declare type Build = ActivityTimelineProjectActivity & BuildOrBuildJob &
1466
1467
  reactNativeVersion?: Maybe<Scalars['String']>;
1467
1468
  releaseChannel?: Maybe<Scalars['String']>;
1468
1469
  resourceClass?: Maybe<BuildResourceClass>;
1470
+ runFromCI?: Maybe<Scalars['Boolean']>;
1469
1471
  runtimeVersion?: Maybe<Scalars['String']>;
1470
1472
  sdkVersion?: Maybe<Scalars['String']>;
1471
1473
  status: BuildStatus;
@@ -1598,6 +1600,8 @@ export declare type BuildMetadataInput = {
1598
1600
  message?: InputMaybe<Scalars['String']>;
1599
1601
  reactNativeVersion?: InputMaybe<Scalars['String']>;
1600
1602
  releaseChannel?: InputMaybe<Scalars['String']>;
1603
+ runFromCI?: InputMaybe<Scalars['Boolean']>;
1604
+ runWithNoWaitFlag?: InputMaybe<Scalars['Boolean']>;
1601
1605
  runtimeVersion?: InputMaybe<Scalars['String']>;
1602
1606
  sdkVersion?: InputMaybe<Scalars['String']>;
1603
1607
  trackingContext?: InputMaybe<Scalars['JSONObject']>;
@@ -1821,6 +1825,11 @@ export declare type CreateIosSubmissionInput = {
1821
1825
  config: IosSubmissionConfigInput;
1822
1826
  submittedBuildId?: InputMaybe<Scalars['ID']>;
1823
1827
  };
1828
+ export declare type CreateServerlessFunctionUploadUrlResult = {
1829
+ __typename?: 'CreateServerlessFunctionUploadUrlResult';
1830
+ formDataFields: Scalars['JSONObject'];
1831
+ url: Scalars['String'];
1832
+ };
1824
1833
  export declare type CreateSubmissionResult = {
1825
1834
  __typename?: 'CreateSubmissionResult';
1826
1835
  /** Created submission */
@@ -1919,6 +1928,7 @@ export declare enum EasServiceMetric {
1919
1928
  BandwidthUsage = "BANDWIDTH_USAGE",
1920
1929
  Builds = "BUILDS",
1921
1930
  ManifestRequests = "MANIFEST_REQUESTS",
1931
+ UniqueUpdaters = "UNIQUE_UPDATERS",
1922
1932
  UniqueUsers = "UNIQUE_USERS"
1923
1933
  }
1924
1934
  export declare type EditUpdateBranchInput = {
@@ -2616,6 +2626,7 @@ export declare type RootMutation = {
2616
2626
  me: MeMutation;
2617
2627
  /** Mutations that create, update, and delete Robots */
2618
2628
  robot: RobotMutation;
2629
+ serverlessFunction: ServerlessFunctionMutation;
2619
2630
  /** Mutations that modify an EAS Submit submission */
2620
2631
  submission: SubmissionMutation;
2621
2632
  update: UpdateMutation;
@@ -2757,6 +2768,17 @@ export declare type SecondFactorRegenerateBackupCodesResult = {
2757
2768
  __typename?: 'SecondFactorRegenerateBackupCodesResult';
2758
2769
  plaintextBackupCodes: Array<Scalars['String']>;
2759
2770
  };
2771
+ export declare type ServerlessFunctionIdentifierInput = {
2772
+ gitCommitSHA1: Scalars['String'];
2773
+ };
2774
+ export declare type ServerlessFunctionMutation = {
2775
+ __typename?: 'ServerlessFunctionMutation';
2776
+ createUploadPresignedUrl: CreateServerlessFunctionUploadUrlResult;
2777
+ };
2778
+ export declare type ServerlessFunctionMutationCreateUploadPresignedUrlArgs = {
2779
+ appId: Scalars['ID'];
2780
+ serverlessFunctionIdentifierInput: ServerlessFunctionIdentifierInput;
2781
+ };
2760
2782
  export declare type Snack = Project & {
2761
2783
  __typename?: 'Snack';
2762
2784
  /** Description of the Snack */
@@ -3069,6 +3091,7 @@ export declare enum UsageMetricType {
3069
3091
  Bandwidth = "BANDWIDTH",
3070
3092
  Build = "BUILD",
3071
3093
  Request = "REQUEST",
3094
+ Update = "UPDATE",
3072
3095
  User = "USER"
3073
3096
  }
3074
3097
  export declare enum UsageMetricsGranularity {
@@ -6473,6 +6496,107 @@ export declare type BuildsByIdQuery = {
6473
6496
  };
6474
6497
  };
6475
6498
  };
6499
+ export declare type BuildsWithSubmissionsByIdQueryVariables = Exact<{
6500
+ buildId: Scalars['ID'];
6501
+ }>;
6502
+ export declare type BuildsWithSubmissionsByIdQuery = {
6503
+ __typename?: 'RootQuery';
6504
+ builds: {
6505
+ __typename?: 'BuildQuery';
6506
+ byId: {
6507
+ __typename?: 'Build';
6508
+ id: string;
6509
+ status: BuildStatus;
6510
+ platform: AppPlatform;
6511
+ channel?: string | null;
6512
+ releaseChannel?: string | null;
6513
+ distribution?: DistributionType | null;
6514
+ iosEnterpriseProvisioning?: BuildIosEnterpriseProvisioning | null;
6515
+ buildProfile?: string | null;
6516
+ sdkVersion?: string | null;
6517
+ appVersion?: string | null;
6518
+ appBuildVersion?: string | null;
6519
+ runtimeVersion?: string | null;
6520
+ gitCommitHash?: string | null;
6521
+ initialQueuePosition?: number | null;
6522
+ queuePosition?: number | null;
6523
+ estimatedWaitTimeLeftSeconds?: number | null;
6524
+ priority: BuildPriority;
6525
+ createdAt: any;
6526
+ updatedAt: any;
6527
+ submissions: Array<{
6528
+ __typename?: 'Submission';
6529
+ id: string;
6530
+ status: SubmissionStatus;
6531
+ platform: AppPlatform;
6532
+ logsUrl?: string | null;
6533
+ app: {
6534
+ __typename?: 'App';
6535
+ id: string;
6536
+ name: string;
6537
+ slug: string;
6538
+ ownerAccount: {
6539
+ __typename?: 'Account';
6540
+ id: string;
6541
+ name: string;
6542
+ };
6543
+ };
6544
+ androidConfig?: {
6545
+ __typename?: 'AndroidSubmissionConfig';
6546
+ applicationIdentifier?: string | null;
6547
+ track: SubmissionAndroidTrack;
6548
+ releaseStatus?: SubmissionAndroidReleaseStatus | null;
6549
+ } | null;
6550
+ iosConfig?: {
6551
+ __typename?: 'IosSubmissionConfig';
6552
+ ascAppIdentifier: string;
6553
+ appleIdUsername?: string | null;
6554
+ } | null;
6555
+ error?: {
6556
+ __typename?: 'SubmissionError';
6557
+ errorCode?: string | null;
6558
+ message?: string | null;
6559
+ } | null;
6560
+ }>;
6561
+ error?: {
6562
+ __typename?: 'BuildError';
6563
+ errorCode: string;
6564
+ message: string;
6565
+ docsUrl?: string | null;
6566
+ } | null;
6567
+ artifacts?: {
6568
+ __typename?: 'BuildArtifacts';
6569
+ buildUrl?: string | null;
6570
+ xcodeBuildLogsUrl?: string | null;
6571
+ } | null;
6572
+ initiatingActor?: {
6573
+ __typename: 'Robot';
6574
+ id: string;
6575
+ displayName: string;
6576
+ } | {
6577
+ __typename: 'User';
6578
+ id: string;
6579
+ displayName: string;
6580
+ } | null;
6581
+ project: {
6582
+ __typename: 'App';
6583
+ id: string;
6584
+ name: string;
6585
+ slug: string;
6586
+ ownerAccount: {
6587
+ __typename?: 'Account';
6588
+ id: string;
6589
+ name: string;
6590
+ };
6591
+ } | {
6592
+ __typename: 'Snack';
6593
+ id: string;
6594
+ name: string;
6595
+ slug: string;
6596
+ };
6597
+ };
6598
+ };
6599
+ };
6476
6600
  export declare type GetAllBuildsForAppQueryVariables = Exact<{
6477
6601
  appId: Scalars['String'];
6478
6602
  offset: Scalars['Int'];
@@ -6660,6 +6784,20 @@ export declare type GetAssetMetadataQuery = {
6660
6784
  }>;
6661
6785
  };
6662
6786
  };
6787
+ export declare type GetAssetLimitPerUpdateGroupForAppQueryVariables = Exact<{
6788
+ appId: Scalars['String'];
6789
+ }>;
6790
+ export declare type GetAssetLimitPerUpdateGroupForAppQuery = {
6791
+ __typename?: 'RootQuery';
6792
+ app: {
6793
+ __typename?: 'AppQuery';
6794
+ byId: {
6795
+ __typename?: 'App';
6796
+ id: string;
6797
+ assetLimitPerUpdateGroup: number;
6798
+ };
6799
+ };
6800
+ };
6663
6801
  export declare type SubmissionsByIdQueryVariables = Exact<{
6664
6802
  submissionId: Scalars['ID'];
6665
6803
  }>;
@@ -6967,6 +7105,98 @@ export declare type BuildFragment = {
6967
7105
  slug: string;
6968
7106
  };
6969
7107
  };
7108
+ export declare type BuildWithSubmissionsFragment = {
7109
+ __typename?: 'Build';
7110
+ id: string;
7111
+ status: BuildStatus;
7112
+ platform: AppPlatform;
7113
+ channel?: string | null;
7114
+ releaseChannel?: string | null;
7115
+ distribution?: DistributionType | null;
7116
+ iosEnterpriseProvisioning?: BuildIosEnterpriseProvisioning | null;
7117
+ buildProfile?: string | null;
7118
+ sdkVersion?: string | null;
7119
+ appVersion?: string | null;
7120
+ appBuildVersion?: string | null;
7121
+ runtimeVersion?: string | null;
7122
+ gitCommitHash?: string | null;
7123
+ initialQueuePosition?: number | null;
7124
+ queuePosition?: number | null;
7125
+ estimatedWaitTimeLeftSeconds?: number | null;
7126
+ priority: BuildPriority;
7127
+ createdAt: any;
7128
+ updatedAt: any;
7129
+ submissions: Array<{
7130
+ __typename?: 'Submission';
7131
+ id: string;
7132
+ status: SubmissionStatus;
7133
+ platform: AppPlatform;
7134
+ logsUrl?: string | null;
7135
+ app: {
7136
+ __typename?: 'App';
7137
+ id: string;
7138
+ name: string;
7139
+ slug: string;
7140
+ ownerAccount: {
7141
+ __typename?: 'Account';
7142
+ id: string;
7143
+ name: string;
7144
+ };
7145
+ };
7146
+ androidConfig?: {
7147
+ __typename?: 'AndroidSubmissionConfig';
7148
+ applicationIdentifier?: string | null;
7149
+ track: SubmissionAndroidTrack;
7150
+ releaseStatus?: SubmissionAndroidReleaseStatus | null;
7151
+ } | null;
7152
+ iosConfig?: {
7153
+ __typename?: 'IosSubmissionConfig';
7154
+ ascAppIdentifier: string;
7155
+ appleIdUsername?: string | null;
7156
+ } | null;
7157
+ error?: {
7158
+ __typename?: 'SubmissionError';
7159
+ errorCode?: string | null;
7160
+ message?: string | null;
7161
+ } | null;
7162
+ }>;
7163
+ error?: {
7164
+ __typename?: 'BuildError';
7165
+ errorCode: string;
7166
+ message: string;
7167
+ docsUrl?: string | null;
7168
+ } | null;
7169
+ artifacts?: {
7170
+ __typename?: 'BuildArtifacts';
7171
+ buildUrl?: string | null;
7172
+ xcodeBuildLogsUrl?: string | null;
7173
+ } | null;
7174
+ initiatingActor?: {
7175
+ __typename: 'Robot';
7176
+ id: string;
7177
+ displayName: string;
7178
+ } | {
7179
+ __typename: 'User';
7180
+ id: string;
7181
+ displayName: string;
7182
+ } | null;
7183
+ project: {
7184
+ __typename: 'App';
7185
+ id: string;
7186
+ name: string;
7187
+ slug: string;
7188
+ ownerAccount: {
7189
+ __typename?: 'Account';
7190
+ id: string;
7191
+ name: string;
7192
+ };
7193
+ } | {
7194
+ __typename: 'Snack';
7195
+ id: string;
7196
+ name: string;
7197
+ slug: string;
7198
+ };
7199
+ };
6970
7200
  export declare type EnvironmentSecretFragment = {
6971
7201
  __typename?: 'EnvironmentSecret';
6972
7202
  id: string;
@@ -164,6 +164,7 @@ var EasServiceMetric;
164
164
  EasServiceMetric["BandwidthUsage"] = "BANDWIDTH_USAGE";
165
165
  EasServiceMetric["Builds"] = "BUILDS";
166
166
  EasServiceMetric["ManifestRequests"] = "MANIFEST_REQUESTS";
167
+ EasServiceMetric["UniqueUpdaters"] = "UNIQUE_UPDATERS";
167
168
  EasServiceMetric["UniqueUsers"] = "UNIQUE_USERS";
168
169
  })(EasServiceMetric = exports.EasServiceMetric || (exports.EasServiceMetric = {}));
169
170
  var Feature;
@@ -307,6 +308,7 @@ var UsageMetricType;
307
308
  UsageMetricType["Bandwidth"] = "BANDWIDTH";
308
309
  UsageMetricType["Build"] = "BUILD";
309
310
  UsageMetricType["Request"] = "REQUEST";
311
+ UsageMetricType["Update"] = "UPDATE";
310
312
  UsageMetricType["User"] = "USER";
311
313
  })(UsageMetricType = exports.UsageMetricType || (exports.UsageMetricType = {}));
312
314
  var UsageMetricsGranularity;
@@ -1,8 +1,6 @@
1
- import { CodeSigningInfoInput, PublishUpdateGroupInput, SetCodeSigningInfoMutation, UpdatePublishMutation } from '../generated';
1
+ import { CodeSigningInfoInput, GetSignedUploadMutation, PublishUpdateGroupInput, SetCodeSigningInfoMutation, UpdatePublishMutation } from '../generated';
2
2
  export declare const PublishMutation: {
3
- getUploadURLsAsync(contentTypes: string[]): Promise<{
4
- specifications: string[];
5
- }>;
3
+ getUploadURLsAsync(contentTypes: string[]): Promise<GetSignedUploadMutation['asset']['getSignedAssetUploadSpecifications']>;
6
4
  publishUpdateGroupAsync(publishUpdateGroupsInput: PublishUpdateGroupInput[]): Promise<UpdatePublishMutation['updateBranch']['publishUpdateGroups']>;
7
5
  setCodeSigningInfoAsync(updateId: string, codeSigningInfo: CodeSigningInfoInput): Promise<SetCodeSigningInfoMutation['update']['setCodeSigningInfo']>;
8
6
  };
@@ -1,4 +1,4 @@
1
- import { AppPlatform, BuildFragment, BuildStatus, DistributionType } from '../generated';
1
+ import { AppPlatform, BuildFragment, BuildStatus, BuildWithSubmissionsFragment, DistributionType } from '../generated';
2
2
  declare type BuildsQuery = {
3
3
  offset?: number;
4
4
  limit?: number;
@@ -20,6 +20,9 @@ export declare const BuildQuery: {
20
20
  byIdAsync(buildId: string, { useCache }?: {
21
21
  useCache?: boolean | undefined;
22
22
  }): Promise<BuildFragment>;
23
+ withSubmissionsByIdAsync(buildId: string, { useCache }?: {
24
+ useCache?: boolean | undefined;
25
+ }): Promise<BuildWithSubmissionsFragment>;
23
26
  allForAppAsync(appId: string, { limit, offset, filter }: BuildsQuery): Promise<BuildFragment[]>;
24
27
  };
25
28
  export {};
@@ -26,6 +26,25 @@ exports.BuildQuery = {
26
26
  .toPromise());
27
27
  return data.builds.byId;
28
28
  },
29
+ async withSubmissionsByIdAsync(buildId, { useCache = true } = {}) {
30
+ const data = await (0, client_1.withErrorHandlingAsync)(client_1.graphqlClient
31
+ .query((0, graphql_tag_1.default) `
32
+ query BuildsWithSubmissionsByIdQuery($buildId: ID!) {
33
+ builds {
34
+ byId(buildId: $buildId) {
35
+ id
36
+ ...BuildWithSubmissionsFragment
37
+ }
38
+ }
39
+ }
40
+ ${(0, graphql_1.print)(Build_1.BuildFragmentWithSubmissionsNode)}
41
+ `, { buildId }, {
42
+ requestPolicy: useCache ? 'cache-first' : 'network-only',
43
+ additionalTypenames: ['Build'],
44
+ })
45
+ .toPromise());
46
+ return data.builds.byId;
47
+ },
29
48
  async allForAppAsync(appId, { limit = 10, offset = 0, filter }) {
30
49
  var _a, _b;
31
50
  const data = await (0, client_1.withErrorHandlingAsync)(client_1.graphqlClient
@@ -1,4 +1,5 @@
1
- import { AssetMetadataResult } from '../generated';
1
+ import { AssetMetadataResult, GetAssetLimitPerUpdateGroupForAppQuery } from '../generated';
2
2
  export declare const PublishQuery: {
3
3
  getAssetMetadataAsync(storageKeys: string[]): Promise<AssetMetadataResult[]>;
4
+ getAssetLimitPerUpdateGroupAsync(appId: string): Promise<GetAssetLimitPerUpdateGroupForAppQuery['app']['byId']['assetLimitPerUpdateGroup']>;
4
5
  };
@@ -26,4 +26,20 @@ exports.PublishQuery = {
26
26
  .toPromise());
27
27
  return data.asset.metadata;
28
28
  },
29
+ async getAssetLimitPerUpdateGroupAsync(appId) {
30
+ const data = await (0, client_1.withErrorHandlingAsync)(client_1.graphqlClient
31
+ .query((0, graphql_tag_1.default) `
32
+ query GetAssetLimitPerUpdateGroupForApp($appId: String!) {
33
+ app {
34
+ byId(appId: $appId) {
35
+ id
36
+ assetLimitPerUpdateGroup
37
+ }
38
+ }
39
+ }
40
+ `, { appId }, { additionalTypenames: [] } // required arg
41
+ )
42
+ .toPromise());
43
+ return data.app.byId.assetLimitPerUpdateGroup;
44
+ },
29
45
  };
@@ -1 +1,2 @@
1
1
  export declare const BuildFragmentNode: import("graphql").DocumentNode;
2
+ export declare const BuildFragmentWithSubmissionsNode: import("graphql").DocumentNode;
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BuildFragmentNode = void 0;
3
+ exports.BuildFragmentWithSubmissionsNode = exports.BuildFragmentNode = void 0;
4
4
  const tslib_1 = require("tslib");
5
+ const graphql_1 = require("graphql");
5
6
  const graphql_tag_1 = tslib_1.__importDefault(require("graphql-tag"));
7
+ const Submission_1 = require("./Submission");
6
8
  exports.BuildFragmentNode = (0, graphql_tag_1.default) `
7
9
  fragment BuildFragment on Build {
8
10
  id
@@ -52,3 +54,16 @@ exports.BuildFragmentNode = (0, graphql_tag_1.default) `
52
54
  updatedAt
53
55
  }
54
56
  `;
57
+ exports.BuildFragmentWithSubmissionsNode = (0, graphql_tag_1.default) `
58
+ ${(0, graphql_1.print)(Submission_1.SubmissionFragmentNode)}
59
+ ${(0, graphql_1.print)(exports.BuildFragmentNode)}
60
+
61
+ fragment BuildWithSubmissionsFragment on Build {
62
+ id
63
+ ...BuildFragment
64
+ submissions {
65
+ id
66
+ ...SubmissionFragment
67
+ }
68
+ }
69
+ `;
@@ -1,5 +1,5 @@
1
1
  /// <reference types="@expo/apple-utils/ts-declarations/expo__app-store" />
2
- import { AgeRatingDeclaration, AppInfoLocalization, AppStoreReviewDetail, AppStoreVersion, AppStoreVersionLocalization, CategoryIds } from '@expo/apple-utils';
2
+ import { AgeRatingDeclaration, AppInfoLocalization, AppStoreReviewDetail, AppStoreVersion, AppStoreVersionLocalization, AppStoreVersionPhasedRelease, 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>>;
@@ -17,7 +17,8 @@ export declare class AppleConfigReader {
17
17
  getCategories(): CategoryIds | null;
18
18
  /** Get the `AppStoreVersion` object. */
19
19
  getVersion(): Partial<Omit<AttributesOf<AppStoreVersion>, 'releaseType' | 'earliestReleaseDate'>> | null;
20
- getVersionRelease(): Partial<Pick<AttributesOf<AppStoreVersion>, 'releaseType' | 'earliestReleaseDate'>> | null;
20
+ getVersionReleaseType(): Partial<Pick<AttributesOf<AppStoreVersion>, 'releaseType' | 'earliestReleaseDate'>> | null;
21
+ getVersionReleasePhased(): Pick<AttributesOf<AppStoreVersionPhasedRelease>, 'phasedReleaseState'> | null;
21
22
  getVersionLocale(locale: string, context: {
22
23
  versionIsFirst: boolean;
23
24
  }): Partial<AttributesOf<AppStoreVersionLocalization>> | null;
@@ -88,16 +88,22 @@ class AppleConfigReader {
88
88
  }
89
89
  /** Get the `AppStoreVersion` object. */
90
90
  getVersion() {
91
- return this.schema.copyright ? { copyright: this.schema.copyright } : null;
91
+ var _a, _b;
92
+ const attributes = {
93
+ versionString: (_a = this.schema.version) !== null && _a !== void 0 ? _a : '',
94
+ copyright: (_b = this.schema.copyright) !== null && _b !== void 0 ? _b : null,
95
+ };
96
+ const hasValues = Object.values(attributes).some(Boolean);
97
+ return hasValues ? attributes : null;
92
98
  }
93
- getVersionRelease() {
99
+ getVersionReleaseType() {
94
100
  var _a, _b;
95
101
  const { release } = this.schema;
96
- if (release === null || release === void 0 ? void 0 : release.autoReleaseDate) {
102
+ if (typeof (release === null || release === void 0 ? void 0 : release.automaticRelease) === 'string') {
97
103
  return {
98
104
  releaseType: apple_utils_1.ReleaseType.SCHEDULED,
99
- // Convert time format to 2020-06-17T12:00:00-07:00
100
- earliestReleaseDate: (_b = (_a = (0, date_1.removeDatePrecision)(release.autoReleaseDate)) === null || _a === void 0 ? void 0 : _a.toISOString()) !== null && _b !== void 0 ? _b : null,
105
+ // Convert time format to 2020-06-17T12:00:00-07:00, if that fails, try the date anyways.
106
+ earliestReleaseDate: (_b = (_a = (0, date_1.removeDatePrecision)(release.automaticRelease)) === null || _a === void 0 ? void 0 : _a.toISOString()) !== null && _b !== void 0 ? _b : release.automaticRelease,
101
107
  };
102
108
  }
103
109
  if ((release === null || release === void 0 ? void 0 : release.automaticRelease) === true) {
@@ -114,6 +120,17 @@ class AppleConfigReader {
114
120
  }
115
121
  return null;
116
122
  }
123
+ getVersionReleasePhased() {
124
+ var _a;
125
+ if (((_a = this.schema.release) === null || _a === void 0 ? void 0 : _a.phasedRelease) === true) {
126
+ return {
127
+ phasedReleaseState: apple_utils_1.PhasedReleaseState.ACTIVE,
128
+ };
129
+ }
130
+ // When phased release is turned off, we need to delete the phased release request.
131
+ // There is no concept (yet) of pausing the phased release through EAS metadata.
132
+ return null;
133
+ }
117
134
  getVersionLocale(locale, context) {
118
135
  var _a, _b;
119
136
  const info = (_a = this.schema.info) === null || _a === void 0 ? void 0 : _a[locale];
@@ -1,5 +1,5 @@
1
1
  /// <reference types="@expo/apple-utils/ts-declarations/expo__app-store" />
2
- import { AgeRatingDeclaration, AppInfo, AppInfoLocalization, AppStoreReviewDetail, AppStoreVersion, AppStoreVersionLocalization } from '@expo/apple-utils';
2
+ import { AgeRatingDeclaration, AppInfo, AppInfoLocalization, AppStoreReviewDetail, AppStoreVersion, AppStoreVersionLocalization, AppStoreVersionPhasedRelease } from '@expo/apple-utils';
3
3
  import { AttributesOf } from '../../utils/asc';
4
4
  import { AppleMetadata } from '../types';
5
5
  /**
@@ -18,7 +18,8 @@ export declare class AppleConfigWriter {
18
18
  setInfoLocale(attributes: AttributesOf<AppInfoLocalization>): void;
19
19
  setCategories(attributes: Pick<AttributesOf<AppInfo>, 'primaryCategory' | 'primarySubcategoryOne' | 'primarySubcategoryTwo' | 'secondaryCategory' | 'secondarySubcategoryOne' | 'secondarySubcategoryTwo'>): void;
20
20
  setVersion(attributes: Omit<AttributesOf<AppStoreVersion>, 'releaseType' | 'earliestReleaseDate'>): void;
21
- setVersionRelease(attributes: Pick<AttributesOf<AppStoreVersion>, 'releaseType' | 'earliestReleaseDate'>): void;
21
+ setVersionReleaseType(attributes: Pick<AttributesOf<AppStoreVersion>, 'releaseType' | 'earliestReleaseDate'>): void;
22
+ setVersionReleasePhased(attributes?: AttributesOf<AppStoreVersionPhasedRelease>): void;
22
23
  setVersionLocale(attributes: AttributesOf<AppStoreVersionLocalization>): void;
23
24
  setReviewDetails(attributes: AttributesOf<AppStoreReviewDetail>): void;
24
25
  }
@@ -82,23 +82,39 @@ class AppleConfigWriter {
82
82
  }
83
83
  }
84
84
  setVersion(attributes) {
85
+ this.schema.version = optional(attributes.versionString);
85
86
  this.schema.copyright = optional(attributes.copyright);
86
87
  }
87
- setVersionRelease(attributes) {
88
- if (attributes.releaseType === apple_utils_1.ReleaseType.SCHEDULED) {
88
+ setVersionReleaseType(attributes) {
89
+ if (attributes.releaseType === apple_utils_1.ReleaseType.SCHEDULED && attributes.earliestReleaseDate) {
89
90
  this.schema.release = {
90
- autoReleaseDate: optional(attributes.earliestReleaseDate),
91
+ ...this.schema.release,
92
+ automaticRelease: attributes.earliestReleaseDate,
91
93
  };
92
94
  }
93
95
  if (attributes.releaseType === apple_utils_1.ReleaseType.AFTER_APPROVAL) {
94
96
  this.schema.release = {
97
+ ...this.schema.release,
95
98
  automaticRelease: true,
96
99
  };
97
100
  }
98
101
  if (attributes.releaseType === apple_utils_1.ReleaseType.MANUAL) {
99
- // ReleaseType.MANUAL is the default behavior, so we don't need to configure it.
100
- // Setting `"automaticRelease": false` is a bit confusing for people who don't know what automaticRelease does.
101
- this.schema.release = undefined;
102
+ this.schema.release = {
103
+ ...this.schema.release,
104
+ automaticRelease: false,
105
+ };
106
+ }
107
+ }
108
+ setVersionReleasePhased(attributes) {
109
+ var _a;
110
+ if (!attributes) {
111
+ (_a = this.schema.release) === null || _a === void 0 ? true : delete _a.phasedRelease;
112
+ }
113
+ else {
114
+ this.schema.release = {
115
+ ...this.schema.release,
116
+ phasedRelease: true,
117
+ };
102
118
  }
103
119
  }
104
120
  setVersionLocale(attributes) {
@@ -1,11 +1,13 @@
1
1
  /// <reference types="@expo/apple-utils/ts-declarations/expo__app-store" />
2
- import { AppStoreVersion, AppStoreVersionLocalization, Platform } from '@expo/apple-utils';
2
+ import { AppStoreVersion, AppStoreVersionLocalization, AppStoreVersionPhasedRelease, Platform } from '@expo/apple-utils';
3
3
  import { AppleTask, TaskDownloadOptions, TaskPrepareOptions, TaskUploadOptions } from '../task';
4
4
  export declare type AppVersionOptions = {
5
5
  /** If we should use the live version of the app (if available - defaults to false) */
6
6
  editLive: boolean;
7
7
  /** The platform to use (defaults to IOS) */
8
8
  platform: Platform;
9
+ /** A version to create or select, if defined in the store configuration */
10
+ version: string | null;
9
11
  };
10
12
  export declare type AppVersionData = {
11
13
  /** The current selected app store version to update */
@@ -16,6 +18,8 @@ export declare type AppVersionData = {
16
18
  versionIsFirst: boolean;
17
19
  /** All version locales that should be, or are enabled */
18
20
  versionLocales: AppStoreVersionLocalization[];
21
+ /** The (existing) phased release configuration, when set */
22
+ versionPhasedRelease: AppStoreVersionPhasedRelease | null;
19
23
  };
20
24
  export declare class AppVersionTask extends AppleTask {
21
25
  private options;