eas-cli 3.8.0 → 3.9.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 +79 -54
- package/build/build/build.d.ts +1 -0
- package/build/build/build.js +21 -20
- package/build/build/errors.d.ts +15 -0
- package/build/build/errors.js +25 -0
- package/build/build/runBuildAndSubmit.js +1 -1
- package/build/commandUtils/EasCommand.d.ts +11 -10
- package/build/commandUtils/EasCommand.js +20 -0
- package/build/commandUtils/context/DynamicProjectConfigContextField.js +1 -1
- package/build/commandUtils/context/contextUtils/findProjectDirAndVerifyProjectSetupAsync.js +1 -1
- package/build/commandUtils/errors.d.ts +3 -0
- package/build/commandUtils/errors.js +11 -0
- package/build/commands/build/index.js +1 -1
- package/build/commands/build/internal.js +3 -0
- package/build/commands/build/resign.js +1 -1
- package/build/commands/build/version/set.js +1 -1
- package/build/commands/build/version/sync.js +1 -1
- package/build/commands/channel/rollout.d.ts +0 -2
- package/build/commands/channel/rollout.js +44 -18
- package/build/commands/config.js +1 -1
- package/build/commands/metadata/lint.js +1 -1
- package/build/commands/metadata/pull.js +1 -1
- package/build/commands/metadata/push.js +1 -1
- package/build/commands/submit.js +1 -1
- package/build/commands/update/index.d.ts +0 -2
- package/build/commands/update/index.js +32 -137
- package/build/commands/update/republish.js +1 -1
- package/build/commands/update/roll-back-to-embedded.d.ts +22 -0
- package/build/commands/update/roll-back-to-embedded.js +253 -0
- package/build/credentials/ios/IosCredentialsProvider.js +1 -1
- package/build/credentials/manager/SelectBuildProfileFromEasJson.js +1 -1
- package/build/graphql/generated.d.ts +139 -22
- package/build/graphql/generated.js +0 -2
- package/build/graphql/types/Update.js +1 -0
- package/build/project/customBuildConfig.js +19 -4
- package/build/project/publish.d.ts +31 -0
- package/build/project/publish.js +147 -2
- package/build/update/configure.js +1 -1
- package/build/update/utils.d.ts +2 -0
- package/build/update/utils.js +30 -13
- package/build/utils/code-signing.d.ts +4 -3
- package/build/utils/code-signing.js +23 -5
- package/build/utils/expoCli.js +3 -2
- package/build/utils/expodash/areSetsEqual.d.ts +1 -0
- package/build/utils/expodash/areSetsEqual.js +6 -0
- package/oclif.manifest.json +1 -1
- package/package.json +4 -3
|
@@ -427,6 +427,11 @@ export type AccountSsoConfigurationPublicDataQuery = {
|
|
|
427
427
|
export type AccountSsoConfigurationPublicDataQueryPublicDataByAccountNameArgs = {
|
|
428
428
|
accountName: Scalars['String'];
|
|
429
429
|
};
|
|
430
|
+
export type AccountUsageEasBuildMetadata = {
|
|
431
|
+
__typename?: 'AccountUsageEASBuildMetadata';
|
|
432
|
+
platform: AppPlatform;
|
|
433
|
+
};
|
|
434
|
+
export type AccountUsageMetadata = AccountUsageEasBuildMetadata;
|
|
430
435
|
export type AccountUsageMetric = {
|
|
431
436
|
__typename?: 'AccountUsageMetric';
|
|
432
437
|
id: Scalars['ID'];
|
|
@@ -435,18 +440,6 @@ export type AccountUsageMetric = {
|
|
|
435
440
|
timestamp: Scalars['DateTime'];
|
|
436
441
|
value: Scalars['Float'];
|
|
437
442
|
};
|
|
438
|
-
export type AccountUsageMetricAndCost = {
|
|
439
|
-
__typename?: 'AccountUsageMetricAndCost';
|
|
440
|
-
id: Scalars['ID'];
|
|
441
|
-
/** The limit, in units, allowed by this plan */
|
|
442
|
-
limit: Scalars['Float'];
|
|
443
|
-
metricType: UsageMetricType;
|
|
444
|
-
service: EasService;
|
|
445
|
-
serviceMetric: EasServiceMetric;
|
|
446
|
-
/** Total cost of this particular metric, in cents */
|
|
447
|
-
totalCost: Scalars['Float'];
|
|
448
|
-
value: Scalars['Float'];
|
|
449
|
-
};
|
|
450
443
|
export type AccountUsageMetrics = {
|
|
451
444
|
__typename?: 'AccountUsageMetrics';
|
|
452
445
|
byBillingPeriod: UsageMetricTotal;
|
|
@@ -813,8 +806,10 @@ export type App = Project & {
|
|
|
813
806
|
buildOrBuildJobs: Array<BuildOrBuildJob>;
|
|
814
807
|
/** (EAS Build) Builds associated with this app */
|
|
815
808
|
builds: Array<Build>;
|
|
809
|
+
buildsPaginated: AppBuildsConnection;
|
|
816
810
|
/** Classic update release channel names that have at least one build */
|
|
817
811
|
buildsReleaseChannels: Array<Scalars['String']>;
|
|
812
|
+
channelsPaginated: AppChannelsConnection;
|
|
818
813
|
deployment?: Maybe<Deployment>;
|
|
819
814
|
/** Deployments associated with this app */
|
|
820
815
|
deployments: DeploymentsConnection;
|
|
@@ -870,6 +865,7 @@ export type App = Project & {
|
|
|
870
865
|
slug: Scalars['String'];
|
|
871
866
|
/** EAS Submissions associated with this app */
|
|
872
867
|
submissions: Array<Submission>;
|
|
868
|
+
submissionsPaginated: AppSubmissionsConnection;
|
|
873
869
|
/** Coalesced project activity for an app using pagination */
|
|
874
870
|
timelineActivity: TimelineActivityConnection;
|
|
875
871
|
/** @deprecated 'likes' have been deprecated. */
|
|
@@ -936,6 +932,21 @@ export type AppBuildsArgs = {
|
|
|
936
932
|
status?: InputMaybe<BuildStatus>;
|
|
937
933
|
};
|
|
938
934
|
/** Represents an Exponent App (or Experience in legacy terms) */
|
|
935
|
+
export type AppBuildsPaginatedArgs = {
|
|
936
|
+
after?: InputMaybe<Scalars['String']>;
|
|
937
|
+
before?: InputMaybe<Scalars['String']>;
|
|
938
|
+
filter?: InputMaybe<BuildFilterInput>;
|
|
939
|
+
first?: InputMaybe<Scalars['Int']>;
|
|
940
|
+
last?: InputMaybe<Scalars['Int']>;
|
|
941
|
+
};
|
|
942
|
+
/** Represents an Exponent App (or Experience in legacy terms) */
|
|
943
|
+
export type AppChannelsPaginatedArgs = {
|
|
944
|
+
after?: InputMaybe<Scalars['String']>;
|
|
945
|
+
before?: InputMaybe<Scalars['String']>;
|
|
946
|
+
first?: InputMaybe<Scalars['Int']>;
|
|
947
|
+
last?: InputMaybe<Scalars['Int']>;
|
|
948
|
+
};
|
|
949
|
+
/** Represents an Exponent App (or Experience in legacy terms) */
|
|
939
950
|
export type AppDeploymentArgs = {
|
|
940
951
|
channel: Scalars['String'];
|
|
941
952
|
runtimeVersion: Scalars['String'];
|
|
@@ -977,6 +988,13 @@ export type AppSubmissionsArgs = {
|
|
|
977
988
|
offset: Scalars['Int'];
|
|
978
989
|
};
|
|
979
990
|
/** Represents an Exponent App (or Experience in legacy terms) */
|
|
991
|
+
export type AppSubmissionsPaginatedArgs = {
|
|
992
|
+
after?: InputMaybe<Scalars['String']>;
|
|
993
|
+
before?: InputMaybe<Scalars['String']>;
|
|
994
|
+
first?: InputMaybe<Scalars['Int']>;
|
|
995
|
+
last?: InputMaybe<Scalars['Int']>;
|
|
996
|
+
};
|
|
997
|
+
/** Represents an Exponent App (or Experience in legacy terms) */
|
|
980
998
|
export type AppTimelineActivityArgs = {
|
|
981
999
|
after?: InputMaybe<Scalars['String']>;
|
|
982
1000
|
before?: InputMaybe<Scalars['String']>;
|
|
@@ -1034,6 +1052,26 @@ export type AppBranchesConnection = {
|
|
|
1034
1052
|
edges: Array<AppBranchEdge>;
|
|
1035
1053
|
pageInfo: PageInfo;
|
|
1036
1054
|
};
|
|
1055
|
+
export type AppBuildEdge = {
|
|
1056
|
+
__typename?: 'AppBuildEdge';
|
|
1057
|
+
cursor: Scalars['String'];
|
|
1058
|
+
node: BuildOrBuildJob;
|
|
1059
|
+
};
|
|
1060
|
+
export type AppBuildsConnection = {
|
|
1061
|
+
__typename?: 'AppBuildsConnection';
|
|
1062
|
+
edges: Array<AppBuildEdge>;
|
|
1063
|
+
pageInfo: PageInfo;
|
|
1064
|
+
};
|
|
1065
|
+
export type AppChannelEdge = {
|
|
1066
|
+
__typename?: 'AppChannelEdge';
|
|
1067
|
+
cursor: Scalars['String'];
|
|
1068
|
+
node: UpdateChannel;
|
|
1069
|
+
};
|
|
1070
|
+
export type AppChannelsConnection = {
|
|
1071
|
+
__typename?: 'AppChannelsConnection';
|
|
1072
|
+
edges: Array<AppChannelEdge>;
|
|
1073
|
+
pageInfo: PageInfo;
|
|
1074
|
+
};
|
|
1037
1075
|
export type AppDataInput = {
|
|
1038
1076
|
id: Scalars['ID'];
|
|
1039
1077
|
privacy?: InputMaybe<Scalars['String']>;
|
|
@@ -1190,6 +1228,16 @@ export declare enum AppStoreConnectUserRole {
|
|
|
1190
1228
|
Technical = "TECHNICAL",
|
|
1191
1229
|
Unknown = "UNKNOWN"
|
|
1192
1230
|
}
|
|
1231
|
+
export type AppSubmissionEdge = {
|
|
1232
|
+
__typename?: 'AppSubmissionEdge';
|
|
1233
|
+
cursor: Scalars['String'];
|
|
1234
|
+
node: Submission;
|
|
1235
|
+
};
|
|
1236
|
+
export type AppSubmissionsConnection = {
|
|
1237
|
+
__typename?: 'AppSubmissionsConnection';
|
|
1238
|
+
edges: Array<AppSubmissionEdge>;
|
|
1239
|
+
pageInfo: PageInfo;
|
|
1240
|
+
};
|
|
1193
1241
|
export type AppUpdateEdge = {
|
|
1194
1242
|
__typename?: 'AppUpdateEdge';
|
|
1195
1243
|
cursor: Scalars['String'];
|
|
@@ -1543,11 +1591,6 @@ export type Build = ActivityTimelineProjectActivity & BuildOrBuildJob & {
|
|
|
1543
1591
|
__typename?: 'Build';
|
|
1544
1592
|
activityTimestamp: Scalars['DateTime'];
|
|
1545
1593
|
actor?: Maybe<Actor>;
|
|
1546
|
-
/**
|
|
1547
|
-
* The actual resource class of the builder assigned to the build job
|
|
1548
|
-
* @deprecated Use resourceClassDisplayName instead
|
|
1549
|
-
*/
|
|
1550
|
-
actualResourceClass?: Maybe<BuildResourceClass>;
|
|
1551
1594
|
appBuildVersion?: Maybe<Scalars['String']>;
|
|
1552
1595
|
appVersion?: Maybe<Scalars['String']>;
|
|
1553
1596
|
artifacts?: Maybe<BuildArtifacts>;
|
|
@@ -1650,6 +1693,11 @@ export type BuildFilter = {
|
|
|
1650
1693
|
sdkVersion?: InputMaybe<Scalars['String']>;
|
|
1651
1694
|
status?: InputMaybe<BuildStatus>;
|
|
1652
1695
|
};
|
|
1696
|
+
export type BuildFilterInput = {
|
|
1697
|
+
channel?: InputMaybe<Scalars['String']>;
|
|
1698
|
+
platforms?: InputMaybe<Array<AppPlatform>>;
|
|
1699
|
+
releaseChannel?: InputMaybe<Scalars['String']>;
|
|
1700
|
+
};
|
|
1653
1701
|
export declare enum BuildIosEnterpriseProvisioning {
|
|
1654
1702
|
Adhoc = "ADHOC",
|
|
1655
1703
|
Universal = "UNIVERSAL"
|
|
@@ -1828,7 +1876,9 @@ export type BuildOrBuildJobQueryByIdArgs = {
|
|
|
1828
1876
|
buildOrBuildJobId: Scalars['ID'];
|
|
1829
1877
|
};
|
|
1830
1878
|
export type BuildParamsInput = {
|
|
1879
|
+
reactNativeVersion?: InputMaybe<Scalars['String']>;
|
|
1831
1880
|
resourceClass: BuildResourceClass;
|
|
1881
|
+
sdkVersion?: InputMaybe<Scalars['String']>;
|
|
1832
1882
|
};
|
|
1833
1883
|
export declare enum BuildPriority {
|
|
1834
1884
|
High = "HIGH",
|
|
@@ -1901,8 +1951,6 @@ export declare enum BuildResourceClass {
|
|
|
1901
1951
|
/** @deprecated Use IOS_M_MEDIUM instead */
|
|
1902
1952
|
IosM1Large = "IOS_M1_LARGE",
|
|
1903
1953
|
IosM1Medium = "IOS_M1_MEDIUM",
|
|
1904
|
-
IosM2Medium = "IOS_M2_MEDIUM",
|
|
1905
|
-
IosM2ProMedium = "IOS_M2_PRO_MEDIUM",
|
|
1906
1954
|
IosMedium = "IOS_MEDIUM",
|
|
1907
1955
|
IosMLarge = "IOS_M_LARGE",
|
|
1908
1956
|
IosMMedium = "IOS_M_MEDIUM",
|
|
@@ -2071,6 +2119,10 @@ export type DeleteAppleProvisioningProfileResult = {
|
|
|
2071
2119
|
__typename?: 'DeleteAppleProvisioningProfileResult';
|
|
2072
2120
|
id: Scalars['ID'];
|
|
2073
2121
|
};
|
|
2122
|
+
export type DeleteDiscordUserResult = {
|
|
2123
|
+
__typename?: 'DeleteDiscordUserResult';
|
|
2124
|
+
id: Scalars['ID'];
|
|
2125
|
+
};
|
|
2074
2126
|
export type DeleteEnvironmentSecretResult = {
|
|
2075
2127
|
__typename?: 'DeleteEnvironmentSecretResult';
|
|
2076
2128
|
id: Scalars['ID'];
|
|
@@ -2148,6 +2200,27 @@ export type DeploymentsConnection = {
|
|
|
2148
2200
|
edges: Array<DeploymentEdge>;
|
|
2149
2201
|
pageInfo: PageInfo;
|
|
2150
2202
|
};
|
|
2203
|
+
export type DiscordUser = {
|
|
2204
|
+
__typename?: 'DiscordUser';
|
|
2205
|
+
discordIdentifier: Scalars['String'];
|
|
2206
|
+
id: Scalars['ID'];
|
|
2207
|
+
metadata?: Maybe<DiscordUserMetadata>;
|
|
2208
|
+
userActor: UserActor;
|
|
2209
|
+
};
|
|
2210
|
+
export type DiscordUserMetadata = {
|
|
2211
|
+
__typename?: 'DiscordUserMetadata';
|
|
2212
|
+
discordAvatarUrl: Scalars['String'];
|
|
2213
|
+
discordDiscriminator: Scalars['String'];
|
|
2214
|
+
discordUsername: Scalars['String'];
|
|
2215
|
+
};
|
|
2216
|
+
export type DiscordUserMutation = {
|
|
2217
|
+
__typename?: 'DiscordUserMutation';
|
|
2218
|
+
/** Delete a Discord User by ID */
|
|
2219
|
+
deleteDiscordUser: DeleteDiscordUserResult;
|
|
2220
|
+
};
|
|
2221
|
+
export type DiscordUserMutationDeleteDiscordUserArgs = {
|
|
2222
|
+
id: Scalars['ID'];
|
|
2223
|
+
};
|
|
2151
2224
|
export declare enum DistributionType {
|
|
2152
2225
|
Internal = "INTERNAL",
|
|
2153
2226
|
Simulator = "SIMULATOR",
|
|
@@ -2233,6 +2306,28 @@ export declare enum EnvironmentSecretType {
|
|
|
2233
2306
|
FileBase64 = "FILE_BASE64",
|
|
2234
2307
|
String = "STRING"
|
|
2235
2308
|
}
|
|
2309
|
+
export type EstimatedOverageAndCost = {
|
|
2310
|
+
__typename?: 'EstimatedOverageAndCost';
|
|
2311
|
+
id: Scalars['ID'];
|
|
2312
|
+
/** The limit, in units, allowed by this plan */
|
|
2313
|
+
limit: Scalars['Float'];
|
|
2314
|
+
metadata?: Maybe<AccountUsageMetadata>;
|
|
2315
|
+
metricType: UsageMetricType;
|
|
2316
|
+
service: EasService;
|
|
2317
|
+
serviceMetric: EasServiceMetric;
|
|
2318
|
+
/** Total cost of this particular metric, in cents */
|
|
2319
|
+
totalCost: Scalars['Int'];
|
|
2320
|
+
value: Scalars['Float'];
|
|
2321
|
+
};
|
|
2322
|
+
export type EstimatedUsage = {
|
|
2323
|
+
__typename?: 'EstimatedUsage';
|
|
2324
|
+
id: Scalars['ID'];
|
|
2325
|
+
limit: Scalars['Float'];
|
|
2326
|
+
metricType: UsageMetricType;
|
|
2327
|
+
service: EasService;
|
|
2328
|
+
serviceMetric: EasServiceMetric;
|
|
2329
|
+
value: Scalars['Float'];
|
|
2330
|
+
};
|
|
2236
2331
|
export type ExperimentationQuery = {
|
|
2237
2332
|
__typename?: 'ExperimentationQuery';
|
|
2238
2333
|
/** Get device experimentation config */
|
|
@@ -2351,6 +2446,7 @@ export type GitHubRepository = {
|
|
|
2351
2446
|
app: App;
|
|
2352
2447
|
githubAppInstallation: GitHubAppInstallation;
|
|
2353
2448
|
githubRepositoryIdentifier: Scalars['Int'];
|
|
2449
|
+
githubRepositoryUrl?: Maybe<Scalars['String']>;
|
|
2354
2450
|
id: Scalars['ID'];
|
|
2355
2451
|
metadata?: Maybe<GitHubRepositoryMetadata>;
|
|
2356
2452
|
nodeIdentifier: Scalars['String'];
|
|
@@ -3011,8 +3107,9 @@ export type PublishUpdateGroupInput = {
|
|
|
3011
3107
|
gitCommitHash?: InputMaybe<Scalars['String']>;
|
|
3012
3108
|
isGitWorkingTreeDirty?: InputMaybe<Scalars['Boolean']>;
|
|
3013
3109
|
message?: InputMaybe<Scalars['String']>;
|
|
3110
|
+
rollBackToEmbeddedInfoGroup?: InputMaybe<UpdateRollBackToEmbeddedGroup>;
|
|
3014
3111
|
runtimeVersion: Scalars['String'];
|
|
3015
|
-
updateInfoGroup
|
|
3112
|
+
updateInfoGroup?: InputMaybe<UpdateInfoGroup>;
|
|
3016
3113
|
};
|
|
3017
3114
|
export type RescindUserInvitationResult = {
|
|
3018
3115
|
__typename?: 'RescindUserInvitationResult';
|
|
@@ -3119,6 +3216,8 @@ export type RootMutation = {
|
|
|
3119
3216
|
build: BuildMutation;
|
|
3120
3217
|
/** Mutations that modify an BuildJob */
|
|
3121
3218
|
buildJob: BuildJobMutation;
|
|
3219
|
+
/** Mutations for Discord users */
|
|
3220
|
+
discordUser: DiscordUserMutation;
|
|
3122
3221
|
/** Mutations that modify an EmailSubscription */
|
|
3123
3222
|
emailSubscription: EmailSubscriptionMutation;
|
|
3124
3223
|
/** Mutations that create and delete EnvironmentSecrets */
|
|
@@ -3705,6 +3804,7 @@ export type Update = ActivityTimelineProjectActivity & {
|
|
|
3705
3804
|
group: Scalars['String'];
|
|
3706
3805
|
id: Scalars['ID'];
|
|
3707
3806
|
isGitWorkingTreeDirty: Scalars['Boolean'];
|
|
3807
|
+
isRollBackToEmbedded: Scalars['Boolean'];
|
|
3708
3808
|
manifestFragment: Scalars['String'];
|
|
3709
3809
|
manifestPermalink: Scalars['String'];
|
|
3710
3810
|
message?: Maybe<Scalars['String']>;
|
|
@@ -3828,6 +3928,11 @@ export type UpdateMutationSetCodeSigningInfoArgs = {
|
|
|
3828
3928
|
codeSigningInfo: CodeSigningInfoInput;
|
|
3829
3929
|
updateId: Scalars['ID'];
|
|
3830
3930
|
};
|
|
3931
|
+
export type UpdateRollBackToEmbeddedGroup = {
|
|
3932
|
+
android?: InputMaybe<Scalars['Boolean']>;
|
|
3933
|
+
ios?: InputMaybe<Scalars['Boolean']>;
|
|
3934
|
+
web?: InputMaybe<Scalars['Boolean']>;
|
|
3935
|
+
};
|
|
3831
3936
|
export type UpdatesFilter = {
|
|
3832
3937
|
platform?: InputMaybe<AppPlatform>;
|
|
3833
3938
|
runtimeVersions?: InputMaybe<Array<Scalars['String']>>;
|
|
@@ -3850,8 +3955,8 @@ export type UsageMetricTotal = {
|
|
|
3850
3955
|
__typename?: 'UsageMetricTotal';
|
|
3851
3956
|
billingPeriod: BillingPeriod;
|
|
3852
3957
|
id: Scalars['ID'];
|
|
3853
|
-
overageMetrics: Array<
|
|
3854
|
-
planMetrics: Array<
|
|
3958
|
+
overageMetrics: Array<EstimatedOverageAndCost>;
|
|
3959
|
+
planMetrics: Array<EstimatedUsage>;
|
|
3855
3960
|
/** Total cost of overages, in cents */
|
|
3856
3961
|
totalCost: Scalars['Float'];
|
|
3857
3962
|
};
|
|
@@ -3886,6 +3991,8 @@ export type User = Actor & UserActor & {
|
|
|
3886
3991
|
apps: Array<App>;
|
|
3887
3992
|
bestContactEmail?: Maybe<Scalars['String']>;
|
|
3888
3993
|
created: Scalars['DateTime'];
|
|
3994
|
+
/** Discord account linked to a user */
|
|
3995
|
+
discordUser?: Maybe<DiscordUser>;
|
|
3889
3996
|
displayName: Scalars['String'];
|
|
3890
3997
|
email?: Maybe<Scalars['String']>;
|
|
3891
3998
|
emailVerified: Scalars['Boolean'];
|
|
@@ -7599,6 +7706,7 @@ export type UpdatePublishMutation = {
|
|
|
7599
7706
|
runtimeVersion: string;
|
|
7600
7707
|
platform: string;
|
|
7601
7708
|
manifestFragment: string;
|
|
7709
|
+
isRollBackToEmbedded: boolean;
|
|
7602
7710
|
manifestPermalink: string;
|
|
7603
7711
|
gitCommitHash?: string | null;
|
|
7604
7712
|
actor?: {
|
|
@@ -7939,6 +8047,7 @@ export type BranchesByAppQuery = {
|
|
|
7939
8047
|
runtimeVersion: string;
|
|
7940
8048
|
platform: string;
|
|
7941
8049
|
manifestFragment: string;
|
|
8050
|
+
isRollBackToEmbedded: boolean;
|
|
7942
8051
|
manifestPermalink: string;
|
|
7943
8052
|
gitCommitHash?: string | null;
|
|
7944
8053
|
actor?: {
|
|
@@ -7998,6 +8107,7 @@ export type ViewBranchesOnUpdateChannelQuery = {
|
|
|
7998
8107
|
runtimeVersion: string;
|
|
7999
8108
|
platform: string;
|
|
8000
8109
|
manifestFragment: string;
|
|
8110
|
+
isRollBackToEmbedded: boolean;
|
|
8001
8111
|
manifestPermalink: string;
|
|
8002
8112
|
gitCommitHash?: string | null;
|
|
8003
8113
|
actor?: {
|
|
@@ -8328,6 +8438,7 @@ export type ViewUpdateChannelOnAppQuery = {
|
|
|
8328
8438
|
runtimeVersion: string;
|
|
8329
8439
|
platform: string;
|
|
8330
8440
|
manifestFragment: string;
|
|
8441
|
+
isRollBackToEmbedded: boolean;
|
|
8331
8442
|
manifestPermalink: string;
|
|
8332
8443
|
gitCommitHash?: string | null;
|
|
8333
8444
|
actor?: {
|
|
@@ -8389,6 +8500,7 @@ export type ViewUpdateChannelsOnAppQuery = {
|
|
|
8389
8500
|
runtimeVersion: string;
|
|
8390
8501
|
platform: string;
|
|
8391
8502
|
manifestFragment: string;
|
|
8503
|
+
isRollBackToEmbedded: boolean;
|
|
8392
8504
|
manifestPermalink: string;
|
|
8393
8505
|
gitCommitHash?: string | null;
|
|
8394
8506
|
actor?: {
|
|
@@ -8610,6 +8722,7 @@ export type ViewUpdatesByGroupQuery = {
|
|
|
8610
8722
|
runtimeVersion: string;
|
|
8611
8723
|
platform: string;
|
|
8612
8724
|
manifestFragment: string;
|
|
8725
|
+
isRollBackToEmbedded: boolean;
|
|
8613
8726
|
manifestPermalink: string;
|
|
8614
8727
|
gitCommitHash?: string | null;
|
|
8615
8728
|
actor?: {
|
|
@@ -8663,6 +8776,7 @@ export type ViewUpdateGroupsOnBranchQuery = {
|
|
|
8663
8776
|
runtimeVersion: string;
|
|
8664
8777
|
platform: string;
|
|
8665
8778
|
manifestFragment: string;
|
|
8779
|
+
isRollBackToEmbedded: boolean;
|
|
8666
8780
|
manifestPermalink: string;
|
|
8667
8781
|
gitCommitHash?: string | null;
|
|
8668
8782
|
actor?: {
|
|
@@ -8715,6 +8829,7 @@ export type ViewUpdateGroupsOnAppQuery = {
|
|
|
8715
8829
|
runtimeVersion: string;
|
|
8716
8830
|
platform: string;
|
|
8717
8831
|
manifestFragment: string;
|
|
8832
|
+
isRollBackToEmbedded: boolean;
|
|
8718
8833
|
manifestPermalink: string;
|
|
8719
8834
|
gitCommitHash?: string | null;
|
|
8720
8835
|
actor?: {
|
|
@@ -9160,6 +9275,7 @@ export type UpdateFragment = {
|
|
|
9160
9275
|
runtimeVersion: string;
|
|
9161
9276
|
platform: string;
|
|
9162
9277
|
manifestFragment: string;
|
|
9278
|
+
isRollBackToEmbedded: boolean;
|
|
9163
9279
|
manifestPermalink: string;
|
|
9164
9280
|
gitCommitHash?: string | null;
|
|
9165
9281
|
actor?: {
|
|
@@ -9199,6 +9315,7 @@ export type UpdateBranchFragment = {
|
|
|
9199
9315
|
runtimeVersion: string;
|
|
9200
9316
|
platform: string;
|
|
9201
9317
|
manifestFragment: string;
|
|
9318
|
+
isRollBackToEmbedded: boolean;
|
|
9202
9319
|
manifestPermalink: string;
|
|
9203
9320
|
gitCommitHash?: string | null;
|
|
9204
9321
|
actor?: {
|
|
@@ -140,8 +140,6 @@ var BuildResourceClass;
|
|
|
140
140
|
/** @deprecated Use IOS_M_MEDIUM instead */
|
|
141
141
|
BuildResourceClass["IosM1Large"] = "IOS_M1_LARGE";
|
|
142
142
|
BuildResourceClass["IosM1Medium"] = "IOS_M1_MEDIUM";
|
|
143
|
-
BuildResourceClass["IosM2Medium"] = "IOS_M2_MEDIUM";
|
|
144
|
-
BuildResourceClass["IosM2ProMedium"] = "IOS_M2_PRO_MEDIUM";
|
|
145
143
|
BuildResourceClass["IosMedium"] = "IOS_MEDIUM";
|
|
146
144
|
BuildResourceClass["IosMLarge"] = "IOS_M_LARGE";
|
|
147
145
|
BuildResourceClass["IosMMedium"] = "IOS_M_MEDIUM";
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getCustomBuildConfigPath = exports.validateCustomBuildConfigAsync = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
+
const steps_1 = require("@expo/steps");
|
|
5
6
|
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
6
7
|
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
|
|
7
8
|
const path_1 = tslib_1.__importDefault(require("path"));
|
|
@@ -9,10 +10,24 @@ async function validateCustomBuildConfigAsync(projectDir, profile) {
|
|
|
9
10
|
if (!profile.config) {
|
|
10
11
|
return;
|
|
11
12
|
}
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
if (!(await fs_extra_1.default.pathExists(
|
|
15
|
-
throw new Error(`Custom build configuration file ${chalk_1.default.bold(
|
|
13
|
+
const relativeConfigPath = getCustomBuildConfigPath(profile.config);
|
|
14
|
+
const configPath = path_1.default.join(projectDir, relativeConfigPath);
|
|
15
|
+
if (!(await fs_extra_1.default.pathExists(configPath))) {
|
|
16
|
+
throw new Error(`Custom build configuration file ${chalk_1.default.bold(relativeConfigPath)} does not exist.`);
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
await (0, steps_1.readAndValidateBuildConfigAsync)(configPath, { skipNamespacedFunctionsCheck: true });
|
|
20
|
+
}
|
|
21
|
+
catch (err) {
|
|
22
|
+
if (err instanceof steps_1.errors.BuildConfigYAMLError) {
|
|
23
|
+
throw new Error(`Custom build configuration file ${chalk_1.default.bold(relativeConfigPath)} contains invalid YAML.\n\n${err.message}`);
|
|
24
|
+
}
|
|
25
|
+
else if (err instanceof steps_1.errors.BuildConfigError) {
|
|
26
|
+
throw new Error(`Custom build configuration file ${chalk_1.default.bold(relativeConfigPath)} contains invalid configuration. Please check the docs!\n${err.message}`);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
throw err;
|
|
30
|
+
}
|
|
16
31
|
}
|
|
17
32
|
}
|
|
18
33
|
exports.validateCustomBuildConfigAsync = validateCustomBuildConfigAsync;
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
import { ExpoConfig, Platform } from '@expo/config';
|
|
3
3
|
import Joi from 'joi';
|
|
4
4
|
import { ExpoGraphqlClient } from '../commandUtils/context/contextUtils/createGraphqlClient';
|
|
5
|
+
import { PaginatedQueryOptions } from '../commandUtils/pagination';
|
|
5
6
|
import { PartialManifestAsset } from '../graphql/generated';
|
|
7
|
+
import { RequestedPlatform } from '../platform';
|
|
6
8
|
export type ExpoCLIExportPlatformFlag = Platform | 'all';
|
|
7
9
|
type Metadata = {
|
|
8
10
|
version: number;
|
|
@@ -106,4 +108,33 @@ type AssetUploadResult = {
|
|
|
106
108
|
};
|
|
107
109
|
export declare function uploadAssetsAsync(graphqlClient: ExpoGraphqlClient, assetsForUpdateInfoGroup: CollectedAssets, projectId: string, updateSpinnerText?: (totalAssets: number, missingAssets: number) => void): Promise<AssetUploadResult>;
|
|
108
110
|
export declare function isUploadedAssetCountAboveWarningThreshold(uploadedAssetCount: number, assetLimitPerUpdateGroup: number): boolean;
|
|
111
|
+
export declare function getBranchNameForCommandAsync({ graphqlClient, projectId, channelNameArg, branchNameArg, autoFlag, nonInteractive, paginatedQueryOptions, }: {
|
|
112
|
+
graphqlClient: ExpoGraphqlClient;
|
|
113
|
+
projectId: string;
|
|
114
|
+
channelNameArg: string | undefined;
|
|
115
|
+
branchNameArg: string | undefined;
|
|
116
|
+
autoFlag: boolean;
|
|
117
|
+
nonInteractive: boolean;
|
|
118
|
+
paginatedQueryOptions: PaginatedQueryOptions;
|
|
119
|
+
}): Promise<string>;
|
|
120
|
+
export declare function getUpdateMessageForCommandAsync({ updateMessageArg, autoFlag, nonInteractive, jsonFlag, }: {
|
|
121
|
+
updateMessageArg: string | undefined;
|
|
122
|
+
autoFlag: boolean;
|
|
123
|
+
nonInteractive: boolean;
|
|
124
|
+
jsonFlag: boolean;
|
|
125
|
+
}): Promise<string>;
|
|
126
|
+
export declare const defaultPublishPlatforms: Platform[];
|
|
127
|
+
export declare function getRequestedPlatform(platform: ExpoCLIExportPlatformFlag): RequestedPlatform | null;
|
|
128
|
+
/** Get runtime versions grouped by platform. Runtime version is always `null` on web where the platform is always backwards compatible. */
|
|
129
|
+
export declare function getRuntimeVersionObjectAsync(exp: ExpoConfig, platforms: Platform[], projectDir: string): Promise<{
|
|
130
|
+
platform: string;
|
|
131
|
+
runtimeVersion: string;
|
|
132
|
+
}[]>;
|
|
133
|
+
export declare function getRuntimeToPlatformMappingFromRuntimeVersions(runtimeVersions: {
|
|
134
|
+
platform: string;
|
|
135
|
+
runtimeVersion: string;
|
|
136
|
+
}[]): {
|
|
137
|
+
runtimeVersion: string;
|
|
138
|
+
platforms: string[];
|
|
139
|
+
}[];
|
|
109
140
|
export {};
|
package/build/project/publish.js
CHANGED
|
@@ -1,23 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isUploadedAssetCountAboveWarningThreshold = exports.uploadAssetsAsync = exports.filterOutAssetsThatAlreadyExistAsync = exports.collectAssetsAsync = exports.getOriginalPathFromAssetMap = exports.getAssetHashFromPath = exports.loadAssetMapAsync = exports.filterExportedPlatformsByFlag = exports.loadMetadata = exports.resolveInputDirectoryAsync = exports.buildBundlesAsync = exports.buildUnsortedUpdateInfoGroupAsync = exports.convertAssetToUpdateInfoGroupFormatAsync = exports.getStorageKeyForAssetAsync = exports.getStorageKey = exports.getBase64URLEncoding = exports.guessContentTypeFromExtension = exports.MetadataJoi = void 0;
|
|
3
|
+
exports.getRuntimeToPlatformMappingFromRuntimeVersions = exports.getRuntimeVersionObjectAsync = exports.getRequestedPlatform = exports.defaultPublishPlatforms = exports.getUpdateMessageForCommandAsync = exports.getBranchNameForCommandAsync = exports.isUploadedAssetCountAboveWarningThreshold = exports.uploadAssetsAsync = exports.filterOutAssetsThatAlreadyExistAsync = exports.collectAssetsAsync = exports.getOriginalPathFromAssetMap = exports.getAssetHashFromPath = exports.loadAssetMapAsync = exports.filterExportedPlatformsByFlag = exports.loadMetadata = exports.resolveInputDirectoryAsync = exports.buildBundlesAsync = exports.buildUnsortedUpdateInfoGroupAsync = exports.convertAssetToUpdateInfoGroupFormatAsync = exports.getStorageKeyForAssetAsync = exports.getStorageKey = exports.getBase64URLEncoding = exports.guessContentTypeFromExtension = exports.MetadataJoi = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
+
const config_plugins_1 = require("@expo/config-plugins");
|
|
6
|
+
const eas_build_job_1 = require("@expo/eas-build-job");
|
|
5
7
|
const json_file_1 = tslib_1.__importDefault(require("@expo/json-file"));
|
|
8
|
+
const assert_1 = tslib_1.__importDefault(require("assert"));
|
|
9
|
+
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
6
10
|
const crypto_1 = tslib_1.__importDefault(require("crypto"));
|
|
7
11
|
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
|
|
8
12
|
const joi_1 = tslib_1.__importDefault(require("joi"));
|
|
9
13
|
const mime_1 = tslib_1.__importDefault(require("mime"));
|
|
14
|
+
const nullthrows_1 = tslib_1.__importDefault(require("nullthrows"));
|
|
10
15
|
const path_1 = tslib_1.__importDefault(require("path"));
|
|
11
16
|
const promise_limit_1 = tslib_1.__importDefault(require("promise-limit"));
|
|
17
|
+
const queries_1 = require("../branch/queries");
|
|
18
|
+
const utils_1 = require("../branch/utils");
|
|
12
19
|
const generated_1 = require("../graphql/generated");
|
|
13
20
|
const PublishMutation_1 = require("../graphql/mutations/PublishMutation");
|
|
14
21
|
const PublishQuery_1 = require("../graphql/queries/PublishQuery");
|
|
15
|
-
const log_1 = tslib_1.
|
|
22
|
+
const log_1 = tslib_1.__importStar(require("../log"));
|
|
23
|
+
const platform_1 = require("../platform");
|
|
24
|
+
const prompts_1 = require("../prompts");
|
|
25
|
+
const getBranchNameFromChannelNameAsync_1 = require("../update/getBranchNameFromChannelNameAsync");
|
|
26
|
+
const utils_2 = require("../update/utils");
|
|
16
27
|
const uploads_1 = require("../uploads");
|
|
17
28
|
const expoCli_1 = require("../utils/expoCli");
|
|
18
29
|
const chunk_1 = tslib_1.__importDefault(require("../utils/expodash/chunk"));
|
|
19
30
|
const filter_1 = require("../utils/expodash/filter");
|
|
20
31
|
const uniqBy_1 = tslib_1.__importDefault(require("../utils/expodash/uniqBy"));
|
|
32
|
+
const vcs_1 = require("../vcs");
|
|
33
|
+
const workflow_1 = require("./workflow");
|
|
21
34
|
const fileMetadataJoi = joi_1.default.object({
|
|
22
35
|
assets: joi_1.default.array()
|
|
23
36
|
.required()
|
|
@@ -319,3 +332,135 @@ function isUploadedAssetCountAboveWarningThreshold(uploadedAssetCount, assetLimi
|
|
|
319
332
|
return uploadedAssetCount > warningThreshold;
|
|
320
333
|
}
|
|
321
334
|
exports.isUploadedAssetCountAboveWarningThreshold = isUploadedAssetCountAboveWarningThreshold;
|
|
335
|
+
async function getBranchNameForCommandAsync({ graphqlClient, projectId, channelNameArg, branchNameArg, autoFlag, nonInteractive, paginatedQueryOptions, }) {
|
|
336
|
+
if (channelNameArg && branchNameArg) {
|
|
337
|
+
throw new Error('Cannot specify both --channel and --branch. Specify either --channel, --branch, or --auto.');
|
|
338
|
+
}
|
|
339
|
+
if (channelNameArg) {
|
|
340
|
+
return await (0, getBranchNameFromChannelNameAsync_1.getBranchNameFromChannelNameAsync)(graphqlClient, projectId, channelNameArg);
|
|
341
|
+
}
|
|
342
|
+
if (branchNameArg) {
|
|
343
|
+
return branchNameArg;
|
|
344
|
+
}
|
|
345
|
+
if (autoFlag) {
|
|
346
|
+
return await (0, utils_1.getDefaultBranchNameAsync)();
|
|
347
|
+
}
|
|
348
|
+
else if (nonInteractive) {
|
|
349
|
+
throw new Error('Must supply --channel, --branch or --auto when in non-interactive mode.');
|
|
350
|
+
}
|
|
351
|
+
else {
|
|
352
|
+
let branchName;
|
|
353
|
+
try {
|
|
354
|
+
const branch = await (0, queries_1.selectBranchOnAppAsync)(graphqlClient, {
|
|
355
|
+
projectId,
|
|
356
|
+
promptTitle: `Which branch would you like to roll back to embedded on?`,
|
|
357
|
+
displayTextForListItem: updateBranch => ({
|
|
358
|
+
title: `${updateBranch.name} ${chalk_1.default.grey(`- current update: ${(0, utils_2.formatUpdateMessage)(updateBranch.updates[0])}`)}`,
|
|
359
|
+
}),
|
|
360
|
+
paginatedQueryOptions,
|
|
361
|
+
});
|
|
362
|
+
branchName = branch.name;
|
|
363
|
+
}
|
|
364
|
+
catch {
|
|
365
|
+
// unable to select a branch (network error or no branches for project)
|
|
366
|
+
const { name } = await (0, prompts_1.promptAsync)({
|
|
367
|
+
type: 'text',
|
|
368
|
+
name: 'name',
|
|
369
|
+
message: 'No branches found. Provide a branch name:',
|
|
370
|
+
initial: await (0, utils_1.getDefaultBranchNameAsync)(),
|
|
371
|
+
validate: value => (value ? true : 'Branch name may not be empty.'),
|
|
372
|
+
});
|
|
373
|
+
branchName = name;
|
|
374
|
+
}
|
|
375
|
+
(0, assert_1.default)(branchName, 'Branch name must be specified.');
|
|
376
|
+
return branchName;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
exports.getBranchNameForCommandAsync = getBranchNameForCommandAsync;
|
|
380
|
+
async function getUpdateMessageForCommandAsync({ updateMessageArg, autoFlag, nonInteractive, jsonFlag, }) {
|
|
381
|
+
var _a, _b;
|
|
382
|
+
let updateMessage = updateMessageArg;
|
|
383
|
+
if (!updateMessageArg && autoFlag) {
|
|
384
|
+
updateMessage = (_a = (await (0, vcs_1.getVcsClient)().getLastCommitMessageAsync())) === null || _a === void 0 ? void 0 : _a.trim();
|
|
385
|
+
}
|
|
386
|
+
if (!updateMessage) {
|
|
387
|
+
if (nonInteractive) {
|
|
388
|
+
throw new Error('Must supply --message or use --auto when in non-interactive mode');
|
|
389
|
+
}
|
|
390
|
+
const validationMessage = 'publish message may not be empty.';
|
|
391
|
+
if (jsonFlag) {
|
|
392
|
+
throw new Error(validationMessage);
|
|
393
|
+
}
|
|
394
|
+
const { updateMessageLocal } = await (0, prompts_1.promptAsync)({
|
|
395
|
+
type: 'text',
|
|
396
|
+
name: 'updateMessageLocal',
|
|
397
|
+
message: `Provide an roll back message:`,
|
|
398
|
+
initial: (_b = (await (0, vcs_1.getVcsClient)().getLastCommitMessageAsync())) === null || _b === void 0 ? void 0 : _b.trim(),
|
|
399
|
+
validate: (value) => (value ? true : validationMessage),
|
|
400
|
+
});
|
|
401
|
+
updateMessage = updateMessageLocal;
|
|
402
|
+
}
|
|
403
|
+
(0, assert_1.default)(updateMessage, 'Update message must be specified.');
|
|
404
|
+
const truncatedMessage = (0, utils_2.truncateString)(updateMessage, 1024);
|
|
405
|
+
if (truncatedMessage !== updateMessage) {
|
|
406
|
+
log_1.default.warn('Update message exceeds the allowed 1024 character limit. Truncating message...');
|
|
407
|
+
}
|
|
408
|
+
return updateMessage;
|
|
409
|
+
}
|
|
410
|
+
exports.getUpdateMessageForCommandAsync = getUpdateMessageForCommandAsync;
|
|
411
|
+
exports.defaultPublishPlatforms = ['android', 'ios'];
|
|
412
|
+
function getRequestedPlatform(platform) {
|
|
413
|
+
switch (platform) {
|
|
414
|
+
case 'android':
|
|
415
|
+
return platform_1.RequestedPlatform.Android;
|
|
416
|
+
case 'ios':
|
|
417
|
+
return platform_1.RequestedPlatform.Ios;
|
|
418
|
+
case 'web':
|
|
419
|
+
return null;
|
|
420
|
+
case 'all':
|
|
421
|
+
return platform_1.RequestedPlatform.All;
|
|
422
|
+
default:
|
|
423
|
+
throw new Error(`Unsupported platform: ${platform}`);
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
exports.getRequestedPlatform = getRequestedPlatform;
|
|
427
|
+
/** Get runtime versions grouped by platform. Runtime version is always `null` on web where the platform is always backwards compatible. */
|
|
428
|
+
async function getRuntimeVersionObjectAsync(exp, platforms, projectDir) {
|
|
429
|
+
var _a, _b;
|
|
430
|
+
for (const platform of platforms) {
|
|
431
|
+
if (platform === 'web') {
|
|
432
|
+
continue;
|
|
433
|
+
}
|
|
434
|
+
const isPolicy = typeof ((_b = (_a = exp[platform]) === null || _a === void 0 ? void 0 : _a.runtimeVersion) !== null && _b !== void 0 ? _b : exp.runtimeVersion) === 'object';
|
|
435
|
+
if (isPolicy) {
|
|
436
|
+
const isManaged = (await (0, workflow_1.resolveWorkflowAsync)(projectDir, platform)) ===
|
|
437
|
+
eas_build_job_1.Workflow.MANAGED;
|
|
438
|
+
if (!isManaged) {
|
|
439
|
+
throw new Error('Runtime version policies are only supported in the managed workflow. In the bare workflow, runtime version needs to be set manually.');
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
return [...new Set(platforms)].map(platform => {
|
|
444
|
+
if (platform === 'web') {
|
|
445
|
+
return { platform: 'web', runtimeVersion: 'UNVERSIONED' };
|
|
446
|
+
}
|
|
447
|
+
return {
|
|
448
|
+
platform,
|
|
449
|
+
runtimeVersion: (0, nullthrows_1.default)(config_plugins_1.Updates.getRuntimeVersion(exp, platform), `Unable to determine runtime version for ${platform_1.requestedPlatformDisplayNames[platform]}. ${(0, log_1.learnMore)('https://docs.expo.dev/eas-update/runtime-versions/')}`),
|
|
450
|
+
};
|
|
451
|
+
});
|
|
452
|
+
}
|
|
453
|
+
exports.getRuntimeVersionObjectAsync = getRuntimeVersionObjectAsync;
|
|
454
|
+
function getRuntimeToPlatformMappingFromRuntimeVersions(runtimeVersions) {
|
|
455
|
+
const runtimeToPlatformMapping = [];
|
|
456
|
+
for (const runtime of runtimeVersions) {
|
|
457
|
+
const platforms = runtimeVersions
|
|
458
|
+
.filter(({ runtimeVersion }) => runtimeVersion === runtime.runtimeVersion)
|
|
459
|
+
.map(({ platform }) => platform);
|
|
460
|
+
if (!runtimeToPlatformMapping.find(item => item.runtimeVersion === runtime.runtimeVersion)) {
|
|
461
|
+
runtimeToPlatformMapping.push({ runtimeVersion: runtime.runtimeVersion, platforms });
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
return runtimeToPlatformMapping;
|
|
465
|
+
}
|
|
466
|
+
exports.getRuntimeToPlatformMappingFromRuntimeVersions = getRuntimeToPlatformMappingFromRuntimeVersions;
|
|
@@ -166,7 +166,7 @@ async function ensureEASUpdateIsConfiguredInEasJsonAsync(projectDir) {
|
|
|
166
166
|
return;
|
|
167
167
|
}
|
|
168
168
|
try {
|
|
169
|
-
const easJsonAccessor =
|
|
169
|
+
const easJsonAccessor = eas_json_1.EasJsonAccessor.fromProjectPath(projectDir);
|
|
170
170
|
await easJsonAccessor.readRawJsonAsync();
|
|
171
171
|
easJsonAccessor.patch(easJsonRawObject => {
|
|
172
172
|
const easBuildProfilesWithChannels = Object.keys(easJsonRawObject.build).reduce((acc, profileNameKey) => {
|
package/build/update/utils.d.ts
CHANGED