eas-cli 0.57.0 → 0.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +84 -44
- package/build/build/android/build.js +17 -3
- package/build/build/android/graphql.js +2 -0
- package/build/build/android/prepareJob.js +5 -0
- package/build/build/android/syncProjectConfiguration.d.ts +3 -4
- package/build/build/android/syncProjectConfiguration.js +2 -3
- package/build/build/android/version.d.ts +11 -0
- package/build/build/android/version.js +71 -1
- package/build/build/build.js +1 -1
- package/build/build/context.d.ts +4 -0
- package/build/build/createContext.d.ts +2 -1
- package/build/build/createContext.js +7 -1
- package/build/build/ios/build.js +17 -1
- package/build/build/ios/graphql.js +2 -0
- package/build/build/ios/prepareJob.js +5 -0
- package/build/build/ios/syncProjectConfiguration.d.ts +3 -4
- package/build/build/ios/syncProjectConfiguration.js +2 -3
- package/build/build/ios/version.d.ts +13 -0
- package/build/build/ios/version.js +72 -1
- package/build/build/local.d.ts +2 -2
- package/build/build/local.js +7 -7
- package/build/build/metadata.js +18 -2
- package/build/build/runBuildAndSubmit.js +25 -3
- package/build/build/utils/printBuildInfo.d.ts +1 -1
- package/build/build/utils/printBuildInfo.js +7 -13
- package/build/commands/build/version/set.d.ts +0 -1
- package/build/commands/build/version/set.js +2 -3
- package/build/commands/build/version/sync.d.ts +0 -1
- package/build/commands/build/version/sync.js +2 -3
- package/build/commands/submit.js +4 -1
- package/build/commands/update/index.js +12 -2
- package/build/graphql/generated.d.ts +240 -4
- package/build/graphql/generated.js +2 -0
- package/build/graphql/mutations/PublishMutation.d.ts +2 -4
- package/build/graphql/queries/BuildQuery.d.ts +4 -1
- package/build/graphql/queries/BuildQuery.js +19 -0
- package/build/graphql/queries/PublishQuery.d.ts +2 -1
- package/build/graphql/queries/PublishQuery.js +16 -0
- package/build/graphql/types/Build.d.ts +1 -0
- package/build/graphql/types/Build.js +16 -1
- package/build/metadata/apple/config/reader.d.ts +3 -2
- package/build/metadata/apple/config/reader.js +22 -5
- package/build/metadata/apple/config/writer.d.ts +3 -2
- package/build/metadata/apple/config/writer.js +22 -6
- package/build/metadata/apple/tasks/app-version.d.ts +5 -1
- package/build/metadata/apple/tasks/app-version.js +109 -8
- package/build/metadata/apple/tasks/index.d.ts +6 -1
- package/build/metadata/apple/tasks/index.js +7 -2
- package/build/metadata/apple/types.d.ts +3 -7
- package/build/metadata/upload.js +6 -1
- package/build/project/projectUtils.d.ts +1 -0
- package/build/project/projectUtils.js +18 -1
- package/build/project/publish.d.ts +3 -1
- package/build/project/publish.js +17 -8
- package/build/project/remoteVersionSource.d.ts +5 -3
- package/build/project/remoteVersionSource.js +18 -9
- package/build/submit/submit.d.ts +2 -1
- package/build/submit/submit.js +3 -2
- package/build/vcs/clients/gitNoCommit.d.ts +1 -0
- package/build/vcs/clients/gitNoCommit.js +14 -0
- package/oclif.manifest.json +1 -1
- package/package.json +26 -25
- package/schema/metadata-0.json +38 -233
|
@@ -172,6 +172,7 @@ class UpdatePublish extends EasCommand_1.default {
|
|
|
172
172
|
let unsortedUpdateInfoGroups = {};
|
|
173
173
|
let oldMessage, oldRuntimeVersion;
|
|
174
174
|
let uploadedAssetCount = 0;
|
|
175
|
+
let assetLimitPerUpdateGroup = 0;
|
|
175
176
|
if (republish) {
|
|
176
177
|
// If we are republishing, we don't need to worry about building the bundle or uploading the assets.
|
|
177
178
|
// Instead we get the `updateInfoGroup` from the update we wish to republish.
|
|
@@ -270,10 +271,11 @@ class UpdatePublish extends EasCommand_1.default {
|
|
|
270
271
|
try {
|
|
271
272
|
const platforms = platformFlag === 'all' ? exports.defaultPublishPlatforms : [platformFlag];
|
|
272
273
|
const assets = await (0, publish_1.collectAssetsAsync)({ inputDir: inputDir, platforms });
|
|
273
|
-
const
|
|
274
|
+
const uploadResults = await (0, publish_1.uploadAssetsAsync)(assets, projectId, (totalAssets, missingAssets) => {
|
|
274
275
|
assetSpinner.text = `Uploading assets. Finished (${totalAssets - missingAssets}/${totalAssets})`;
|
|
275
276
|
});
|
|
276
|
-
uploadedAssetCount = uniqueUploadedAssetCount;
|
|
277
|
+
uploadedAssetCount = uploadResults.uniqueUploadedAssetCount;
|
|
278
|
+
assetLimitPerUpdateGroup = uploadResults.assetLimitPerUpdateGroup;
|
|
277
279
|
unsortedUpdateInfoGroups = await (0, publish_1.buildUnsortedUpdateInfoGroupAsync)(assets, exp);
|
|
278
280
|
const uploadAssetSuccessMessage = uploadedAssetCount
|
|
279
281
|
? `Uploaded ${uploadedAssetCount} ${uploadedAssetCount === 1 ? 'asset' : 'assets'}!`
|
|
@@ -387,6 +389,14 @@ class UpdatePublish extends EasCommand_1.default {
|
|
|
387
389
|
{ label: 'Website link', value: updateGroupLink },
|
|
388
390
|
]));
|
|
389
391
|
log_1.default.addNewLineIfNone();
|
|
392
|
+
if ((0, publish_1.isUploadedAssetCountAboveWarningThreshold)(uploadedAssetCount, assetLimitPerUpdateGroup)) {
|
|
393
|
+
log_1.default.warn(`This update group contains ${uploadedAssetCount} assets and is nearing the server cap of ${assetLimitPerUpdateGroup}.\n` +
|
|
394
|
+
`${(0, log_1.learnMore)('https://docs.expo.dev/eas-update/optimize-assets/', {
|
|
395
|
+
learnMoreMessage: 'Consider optimizing your usage of assets',
|
|
396
|
+
dim: false,
|
|
397
|
+
})}.`);
|
|
398
|
+
log_1.default.addNewLineIfNone();
|
|
399
|
+
}
|
|
390
400
|
}
|
|
391
401
|
}
|
|
392
402
|
}
|
|
@@ -24,13 +24,9 @@ export declare type Scalars = {
|
|
|
24
24
|
Boolean: boolean;
|
|
25
25
|
Int: number;
|
|
26
26
|
Float: number;
|
|
27
|
-
/** Date custom scalar type */
|
|
28
27
|
DateTime: any;
|
|
29
|
-
/** The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). */
|
|
30
28
|
JSON: any;
|
|
31
|
-
/** The `JSONObject` scalar type represents JSON objects as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). */
|
|
32
29
|
JSONObject: any;
|
|
33
|
-
/** The `Upload` scalar type represents a file upload. */
|
|
34
30
|
Upload: any;
|
|
35
31
|
};
|
|
36
32
|
export declare type AcceptUserInvitationResult = {
|
|
@@ -755,6 +751,7 @@ export declare type App = Project & {
|
|
|
755
751
|
androidAppCredentials: Array<AndroidAppCredentials>;
|
|
756
752
|
/** ios.appStoreUrl field from most recent classic update manifest */
|
|
757
753
|
appStoreUrl?: Maybe<Scalars['String']>;
|
|
754
|
+
assetLimitPerUpdateGroup: Scalars['Int'];
|
|
758
755
|
buildJobs: Array<BuildJob>;
|
|
759
756
|
/**
|
|
760
757
|
* Coalesced Build (EAS) or BuildJob (Classic) items for this app.
|
|
@@ -1466,6 +1463,7 @@ export declare type Build = ActivityTimelineProjectActivity & BuildOrBuildJob &
|
|
|
1466
1463
|
reactNativeVersion?: Maybe<Scalars['String']>;
|
|
1467
1464
|
releaseChannel?: Maybe<Scalars['String']>;
|
|
1468
1465
|
resourceClass?: Maybe<BuildResourceClass>;
|
|
1466
|
+
runFromCI?: Maybe<Scalars['Boolean']>;
|
|
1469
1467
|
runtimeVersion?: Maybe<Scalars['String']>;
|
|
1470
1468
|
sdkVersion?: Maybe<Scalars['String']>;
|
|
1471
1469
|
status: BuildStatus;
|
|
@@ -1598,6 +1596,8 @@ export declare type BuildMetadataInput = {
|
|
|
1598
1596
|
message?: InputMaybe<Scalars['String']>;
|
|
1599
1597
|
reactNativeVersion?: InputMaybe<Scalars['String']>;
|
|
1600
1598
|
releaseChannel?: InputMaybe<Scalars['String']>;
|
|
1599
|
+
runFromCI?: InputMaybe<Scalars['Boolean']>;
|
|
1600
|
+
runWithNoWaitFlag?: InputMaybe<Scalars['Boolean']>;
|
|
1601
1601
|
runtimeVersion?: InputMaybe<Scalars['String']>;
|
|
1602
1602
|
sdkVersion?: InputMaybe<Scalars['String']>;
|
|
1603
1603
|
trackingContext?: InputMaybe<Scalars['JSONObject']>;
|
|
@@ -1821,6 +1821,11 @@ export declare type CreateIosSubmissionInput = {
|
|
|
1821
1821
|
config: IosSubmissionConfigInput;
|
|
1822
1822
|
submittedBuildId?: InputMaybe<Scalars['ID']>;
|
|
1823
1823
|
};
|
|
1824
|
+
export declare type CreateServerlessFunctionUploadUrlResult = {
|
|
1825
|
+
__typename?: 'CreateServerlessFunctionUploadUrlResult';
|
|
1826
|
+
formDataFields: Scalars['JSONObject'];
|
|
1827
|
+
url: Scalars['String'];
|
|
1828
|
+
};
|
|
1824
1829
|
export declare type CreateSubmissionResult = {
|
|
1825
1830
|
__typename?: 'CreateSubmissionResult';
|
|
1826
1831
|
/** Created submission */
|
|
@@ -1919,6 +1924,7 @@ export declare enum EasServiceMetric {
|
|
|
1919
1924
|
BandwidthUsage = "BANDWIDTH_USAGE",
|
|
1920
1925
|
Builds = "BUILDS",
|
|
1921
1926
|
ManifestRequests = "MANIFEST_REQUESTS",
|
|
1927
|
+
UniqueUpdaters = "UNIQUE_UPDATERS",
|
|
1922
1928
|
UniqueUsers = "UNIQUE_USERS"
|
|
1923
1929
|
}
|
|
1924
1930
|
export declare type EditUpdateBranchInput = {
|
|
@@ -2616,6 +2622,7 @@ export declare type RootMutation = {
|
|
|
2616
2622
|
me: MeMutation;
|
|
2617
2623
|
/** Mutations that create, update, and delete Robots */
|
|
2618
2624
|
robot: RobotMutation;
|
|
2625
|
+
serverlessFunction: ServerlessFunctionMutation;
|
|
2619
2626
|
/** Mutations that modify an EAS Submit submission */
|
|
2620
2627
|
submission: SubmissionMutation;
|
|
2621
2628
|
update: UpdateMutation;
|
|
@@ -2757,6 +2764,17 @@ export declare type SecondFactorRegenerateBackupCodesResult = {
|
|
|
2757
2764
|
__typename?: 'SecondFactorRegenerateBackupCodesResult';
|
|
2758
2765
|
plaintextBackupCodes: Array<Scalars['String']>;
|
|
2759
2766
|
};
|
|
2767
|
+
export declare type ServerlessFunctionIdentifierInput = {
|
|
2768
|
+
gitCommitSHA1: Scalars['String'];
|
|
2769
|
+
};
|
|
2770
|
+
export declare type ServerlessFunctionMutation = {
|
|
2771
|
+
__typename?: 'ServerlessFunctionMutation';
|
|
2772
|
+
createUploadPresignedUrl: CreateServerlessFunctionUploadUrlResult;
|
|
2773
|
+
};
|
|
2774
|
+
export declare type ServerlessFunctionMutationCreateUploadPresignedUrlArgs = {
|
|
2775
|
+
appId: Scalars['ID'];
|
|
2776
|
+
serverlessFunctionIdentifierInput: ServerlessFunctionIdentifierInput;
|
|
2777
|
+
};
|
|
2760
2778
|
export declare type Snack = Project & {
|
|
2761
2779
|
__typename?: 'Snack';
|
|
2762
2780
|
/** Description of the Snack */
|
|
@@ -2809,6 +2827,15 @@ export declare enum StandardOffer {
|
|
|
2809
2827
|
/** $348 USD per year, 30 day trial */
|
|
2810
2828
|
YearlySub = "YEARLY_SUB"
|
|
2811
2829
|
}
|
|
2830
|
+
export declare type StripeCoupon = {
|
|
2831
|
+
__typename?: 'StripeCoupon';
|
|
2832
|
+
amountOff?: Maybe<Scalars['String']>;
|
|
2833
|
+
appliesTo?: Maybe<Scalars['String']>;
|
|
2834
|
+
id: Scalars['ID'];
|
|
2835
|
+
name: Scalars['String'];
|
|
2836
|
+
percentOff?: Maybe<Scalars['Float']>;
|
|
2837
|
+
valid: Scalars['Boolean'];
|
|
2838
|
+
};
|
|
2812
2839
|
/** Represents an EAS Submission */
|
|
2813
2840
|
export declare type Submission = ActivityTimelineProjectActivity & {
|
|
2814
2841
|
__typename?: 'Submission';
|
|
@@ -2904,6 +2931,7 @@ export declare type SubscriptionDetails = {
|
|
|
2904
2931
|
addons: Array<AddonDetails>;
|
|
2905
2932
|
cancelledAt?: Maybe<Scalars['DateTime']>;
|
|
2906
2933
|
concurrencies?: Maybe<Concurrencies>;
|
|
2934
|
+
coupon?: Maybe<StripeCoupon>;
|
|
2907
2935
|
endedAt?: Maybe<Scalars['DateTime']>;
|
|
2908
2936
|
futureSubscription?: Maybe<FutureSubscription>;
|
|
2909
2937
|
id: Scalars['ID'];
|
|
@@ -3069,6 +3097,7 @@ export declare enum UsageMetricType {
|
|
|
3069
3097
|
Bandwidth = "BANDWIDTH",
|
|
3070
3098
|
Build = "BUILD",
|
|
3071
3099
|
Request = "REQUEST",
|
|
3100
|
+
Update = "UPDATE",
|
|
3072
3101
|
User = "USER"
|
|
3073
3102
|
}
|
|
3074
3103
|
export declare enum UsageMetricsGranularity {
|
|
@@ -6473,6 +6502,107 @@ export declare type BuildsByIdQuery = {
|
|
|
6473
6502
|
};
|
|
6474
6503
|
};
|
|
6475
6504
|
};
|
|
6505
|
+
export declare type BuildsWithSubmissionsByIdQueryVariables = Exact<{
|
|
6506
|
+
buildId: Scalars['ID'];
|
|
6507
|
+
}>;
|
|
6508
|
+
export declare type BuildsWithSubmissionsByIdQuery = {
|
|
6509
|
+
__typename?: 'RootQuery';
|
|
6510
|
+
builds: {
|
|
6511
|
+
__typename?: 'BuildQuery';
|
|
6512
|
+
byId: {
|
|
6513
|
+
__typename?: 'Build';
|
|
6514
|
+
id: string;
|
|
6515
|
+
status: BuildStatus;
|
|
6516
|
+
platform: AppPlatform;
|
|
6517
|
+
channel?: string | null;
|
|
6518
|
+
releaseChannel?: string | null;
|
|
6519
|
+
distribution?: DistributionType | null;
|
|
6520
|
+
iosEnterpriseProvisioning?: BuildIosEnterpriseProvisioning | null;
|
|
6521
|
+
buildProfile?: string | null;
|
|
6522
|
+
sdkVersion?: string | null;
|
|
6523
|
+
appVersion?: string | null;
|
|
6524
|
+
appBuildVersion?: string | null;
|
|
6525
|
+
runtimeVersion?: string | null;
|
|
6526
|
+
gitCommitHash?: string | null;
|
|
6527
|
+
initialQueuePosition?: number | null;
|
|
6528
|
+
queuePosition?: number | null;
|
|
6529
|
+
estimatedWaitTimeLeftSeconds?: number | null;
|
|
6530
|
+
priority: BuildPriority;
|
|
6531
|
+
createdAt: any;
|
|
6532
|
+
updatedAt: any;
|
|
6533
|
+
submissions: Array<{
|
|
6534
|
+
__typename?: 'Submission';
|
|
6535
|
+
id: string;
|
|
6536
|
+
status: SubmissionStatus;
|
|
6537
|
+
platform: AppPlatform;
|
|
6538
|
+
logsUrl?: string | null;
|
|
6539
|
+
app: {
|
|
6540
|
+
__typename?: 'App';
|
|
6541
|
+
id: string;
|
|
6542
|
+
name: string;
|
|
6543
|
+
slug: string;
|
|
6544
|
+
ownerAccount: {
|
|
6545
|
+
__typename?: 'Account';
|
|
6546
|
+
id: string;
|
|
6547
|
+
name: string;
|
|
6548
|
+
};
|
|
6549
|
+
};
|
|
6550
|
+
androidConfig?: {
|
|
6551
|
+
__typename?: 'AndroidSubmissionConfig';
|
|
6552
|
+
applicationIdentifier?: string | null;
|
|
6553
|
+
track: SubmissionAndroidTrack;
|
|
6554
|
+
releaseStatus?: SubmissionAndroidReleaseStatus | null;
|
|
6555
|
+
} | null;
|
|
6556
|
+
iosConfig?: {
|
|
6557
|
+
__typename?: 'IosSubmissionConfig';
|
|
6558
|
+
ascAppIdentifier: string;
|
|
6559
|
+
appleIdUsername?: string | null;
|
|
6560
|
+
} | null;
|
|
6561
|
+
error?: {
|
|
6562
|
+
__typename?: 'SubmissionError';
|
|
6563
|
+
errorCode?: string | null;
|
|
6564
|
+
message?: string | null;
|
|
6565
|
+
} | null;
|
|
6566
|
+
}>;
|
|
6567
|
+
error?: {
|
|
6568
|
+
__typename?: 'BuildError';
|
|
6569
|
+
errorCode: string;
|
|
6570
|
+
message: string;
|
|
6571
|
+
docsUrl?: string | null;
|
|
6572
|
+
} | null;
|
|
6573
|
+
artifacts?: {
|
|
6574
|
+
__typename?: 'BuildArtifacts';
|
|
6575
|
+
buildUrl?: string | null;
|
|
6576
|
+
xcodeBuildLogsUrl?: string | null;
|
|
6577
|
+
} | null;
|
|
6578
|
+
initiatingActor?: {
|
|
6579
|
+
__typename: 'Robot';
|
|
6580
|
+
id: string;
|
|
6581
|
+
displayName: string;
|
|
6582
|
+
} | {
|
|
6583
|
+
__typename: 'User';
|
|
6584
|
+
id: string;
|
|
6585
|
+
displayName: string;
|
|
6586
|
+
} | null;
|
|
6587
|
+
project: {
|
|
6588
|
+
__typename: 'App';
|
|
6589
|
+
id: string;
|
|
6590
|
+
name: string;
|
|
6591
|
+
slug: string;
|
|
6592
|
+
ownerAccount: {
|
|
6593
|
+
__typename?: 'Account';
|
|
6594
|
+
id: string;
|
|
6595
|
+
name: string;
|
|
6596
|
+
};
|
|
6597
|
+
} | {
|
|
6598
|
+
__typename: 'Snack';
|
|
6599
|
+
id: string;
|
|
6600
|
+
name: string;
|
|
6601
|
+
slug: string;
|
|
6602
|
+
};
|
|
6603
|
+
};
|
|
6604
|
+
};
|
|
6605
|
+
};
|
|
6476
6606
|
export declare type GetAllBuildsForAppQueryVariables = Exact<{
|
|
6477
6607
|
appId: Scalars['String'];
|
|
6478
6608
|
offset: Scalars['Int'];
|
|
@@ -6660,6 +6790,20 @@ export declare type GetAssetMetadataQuery = {
|
|
|
6660
6790
|
}>;
|
|
6661
6791
|
};
|
|
6662
6792
|
};
|
|
6793
|
+
export declare type GetAssetLimitPerUpdateGroupForAppQueryVariables = Exact<{
|
|
6794
|
+
appId: Scalars['String'];
|
|
6795
|
+
}>;
|
|
6796
|
+
export declare type GetAssetLimitPerUpdateGroupForAppQuery = {
|
|
6797
|
+
__typename?: 'RootQuery';
|
|
6798
|
+
app: {
|
|
6799
|
+
__typename?: 'AppQuery';
|
|
6800
|
+
byId: {
|
|
6801
|
+
__typename?: 'App';
|
|
6802
|
+
id: string;
|
|
6803
|
+
assetLimitPerUpdateGroup: number;
|
|
6804
|
+
};
|
|
6805
|
+
};
|
|
6806
|
+
};
|
|
6663
6807
|
export declare type SubmissionsByIdQueryVariables = Exact<{
|
|
6664
6808
|
submissionId: Scalars['ID'];
|
|
6665
6809
|
}>;
|
|
@@ -6967,6 +7111,98 @@ export declare type BuildFragment = {
|
|
|
6967
7111
|
slug: string;
|
|
6968
7112
|
};
|
|
6969
7113
|
};
|
|
7114
|
+
export declare type BuildWithSubmissionsFragment = {
|
|
7115
|
+
__typename?: 'Build';
|
|
7116
|
+
id: string;
|
|
7117
|
+
status: BuildStatus;
|
|
7118
|
+
platform: AppPlatform;
|
|
7119
|
+
channel?: string | null;
|
|
7120
|
+
releaseChannel?: string | null;
|
|
7121
|
+
distribution?: DistributionType | null;
|
|
7122
|
+
iosEnterpriseProvisioning?: BuildIosEnterpriseProvisioning | null;
|
|
7123
|
+
buildProfile?: string | null;
|
|
7124
|
+
sdkVersion?: string | null;
|
|
7125
|
+
appVersion?: string | null;
|
|
7126
|
+
appBuildVersion?: string | null;
|
|
7127
|
+
runtimeVersion?: string | null;
|
|
7128
|
+
gitCommitHash?: string | null;
|
|
7129
|
+
initialQueuePosition?: number | null;
|
|
7130
|
+
queuePosition?: number | null;
|
|
7131
|
+
estimatedWaitTimeLeftSeconds?: number | null;
|
|
7132
|
+
priority: BuildPriority;
|
|
7133
|
+
createdAt: any;
|
|
7134
|
+
updatedAt: any;
|
|
7135
|
+
submissions: Array<{
|
|
7136
|
+
__typename?: 'Submission';
|
|
7137
|
+
id: string;
|
|
7138
|
+
status: SubmissionStatus;
|
|
7139
|
+
platform: AppPlatform;
|
|
7140
|
+
logsUrl?: string | null;
|
|
7141
|
+
app: {
|
|
7142
|
+
__typename?: 'App';
|
|
7143
|
+
id: string;
|
|
7144
|
+
name: string;
|
|
7145
|
+
slug: string;
|
|
7146
|
+
ownerAccount: {
|
|
7147
|
+
__typename?: 'Account';
|
|
7148
|
+
id: string;
|
|
7149
|
+
name: string;
|
|
7150
|
+
};
|
|
7151
|
+
};
|
|
7152
|
+
androidConfig?: {
|
|
7153
|
+
__typename?: 'AndroidSubmissionConfig';
|
|
7154
|
+
applicationIdentifier?: string | null;
|
|
7155
|
+
track: SubmissionAndroidTrack;
|
|
7156
|
+
releaseStatus?: SubmissionAndroidReleaseStatus | null;
|
|
7157
|
+
} | null;
|
|
7158
|
+
iosConfig?: {
|
|
7159
|
+
__typename?: 'IosSubmissionConfig';
|
|
7160
|
+
ascAppIdentifier: string;
|
|
7161
|
+
appleIdUsername?: string | null;
|
|
7162
|
+
} | null;
|
|
7163
|
+
error?: {
|
|
7164
|
+
__typename?: 'SubmissionError';
|
|
7165
|
+
errorCode?: string | null;
|
|
7166
|
+
message?: string | null;
|
|
7167
|
+
} | null;
|
|
7168
|
+
}>;
|
|
7169
|
+
error?: {
|
|
7170
|
+
__typename?: 'BuildError';
|
|
7171
|
+
errorCode: string;
|
|
7172
|
+
message: string;
|
|
7173
|
+
docsUrl?: string | null;
|
|
7174
|
+
} | null;
|
|
7175
|
+
artifacts?: {
|
|
7176
|
+
__typename?: 'BuildArtifacts';
|
|
7177
|
+
buildUrl?: string | null;
|
|
7178
|
+
xcodeBuildLogsUrl?: string | null;
|
|
7179
|
+
} | null;
|
|
7180
|
+
initiatingActor?: {
|
|
7181
|
+
__typename: 'Robot';
|
|
7182
|
+
id: string;
|
|
7183
|
+
displayName: string;
|
|
7184
|
+
} | {
|
|
7185
|
+
__typename: 'User';
|
|
7186
|
+
id: string;
|
|
7187
|
+
displayName: string;
|
|
7188
|
+
} | null;
|
|
7189
|
+
project: {
|
|
7190
|
+
__typename: 'App';
|
|
7191
|
+
id: string;
|
|
7192
|
+
name: string;
|
|
7193
|
+
slug: string;
|
|
7194
|
+
ownerAccount: {
|
|
7195
|
+
__typename?: 'Account';
|
|
7196
|
+
id: string;
|
|
7197
|
+
name: string;
|
|
7198
|
+
};
|
|
7199
|
+
} | {
|
|
7200
|
+
__typename: 'Snack';
|
|
7201
|
+
id: string;
|
|
7202
|
+
name: string;
|
|
7203
|
+
slug: string;
|
|
7204
|
+
};
|
|
7205
|
+
};
|
|
6970
7206
|
export declare type EnvironmentSecretFragment = {
|
|
6971
7207
|
__typename?: 'EnvironmentSecret';
|
|
6972
7208
|
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,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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
99
|
+
getVersionReleaseType() {
|
|
94
100
|
var _a, _b;
|
|
95
101
|
const { release } = this.schema;
|
|
96
|
-
if (release === null || release === void 0 ? void 0 : release.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
100
|
-
|
|
101
|
-
|
|
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;
|