eas-cli 3.13.0 → 3.13.2
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 +68 -67
- package/build/build/build.js +9 -1
- package/build/build/createContext.d.ts +2 -2
- package/build/build/createContext.js +2 -2
- package/build/build/errors.d.ts +2 -0
- package/build/build/errors.js +4 -1
- package/build/build/ios/version.js +11 -2
- package/build/build/runBuildAndSubmit.d.ts +1 -1
- package/build/build/runBuildAndSubmit.js +6 -5
- package/build/build/types.d.ts +1 -0
- package/build/build/types.js +1 -0
- package/build/build/utils/formatBuild.js +2 -0
- package/build/build/utils/printBuildInfo.js +1 -1
- package/build/commandUtils/EasCommand.d.ts +7 -6
- package/build/commandUtils/EasCommand.js +7 -5
- package/build/commandUtils/context/DynamicProjectConfigContextField.d.ts +5 -2
- package/build/commandUtils/context/DynamicProjectConfigContextField.js +24 -5
- package/build/commandUtils/context/{OptionalProjectConfigContextField.d.ts → OptionalPrivateProjectConfigContextField.d.ts} +1 -1
- package/build/commandUtils/context/{OptionalProjectConfigContextField.js → OptionalPrivateProjectConfigContextField.js} +5 -5
- package/build/commandUtils/context/{ProjectConfigContextField.d.ts → PrivateProjectConfigContextField.d.ts} +1 -1
- package/build/commandUtils/context/{ProjectConfigContextField.js → PrivateProjectConfigContextField.js} +5 -4
- package/build/commandUtils/context/contextUtils/getProjectIdAsync.js +1 -1
- package/build/commands/branch/create.d.ts +1 -1
- package/build/commands/branch/create.js +1 -1
- package/build/commands/branch/delete.d.ts +1 -1
- package/build/commands/branch/delete.js +1 -1
- package/build/commands/branch/list.d.ts +1 -1
- package/build/commands/branch/list.js +1 -1
- package/build/commands/branch/rename.d.ts +1 -1
- package/build/commands/branch/rename.js +1 -1
- package/build/commands/branch/view.d.ts +1 -1
- package/build/commands/branch/view.js +1 -1
- package/build/commands/build/cancel.d.ts +1 -1
- package/build/commands/build/cancel.js +2 -2
- package/build/commands/build/configure.d.ts +1 -1
- package/build/commands/build/configure.js +1 -1
- package/build/commands/build/index.d.ts +2 -1
- package/build/commands/build/index.js +2 -2
- package/build/commands/build/inspect.d.ts +2 -1
- package/build/commands/build/inspect.js +2 -2
- package/build/commands/build/internal.d.ts +2 -1
- package/build/commands/build/internal.js +2 -2
- package/build/commands/build/list.d.ts +1 -1
- package/build/commands/build/list.js +5 -1
- package/build/commands/build/resign.d.ts +2 -1
- package/build/commands/build/resign.js +2 -2
- package/build/commands/build/run.d.ts +1 -1
- package/build/commands/build/run.js +1 -1
- package/build/commands/build/version/get.d.ts +2 -1
- package/build/commands/build/version/get.js +2 -2
- package/build/commands/build/version/set.d.ts +2 -1
- package/build/commands/build/version/set.js +2 -2
- package/build/commands/build/version/sync.d.ts +2 -1
- package/build/commands/build/version/sync.js +2 -2
- package/build/commands/build/view.d.ts +1 -1
- package/build/commands/build/view.js +1 -1
- package/build/commands/channel/create.d.ts +1 -1
- package/build/commands/channel/create.js +1 -1
- package/build/commands/channel/delete.d.ts +1 -1
- package/build/commands/channel/delete.js +1 -1
- package/build/commands/channel/edit.d.ts +1 -1
- package/build/commands/channel/edit.js +1 -1
- package/build/commands/channel/list.d.ts +1 -1
- package/build/commands/channel/list.js +1 -1
- package/build/commands/channel/rollout.d.ts +1 -1
- package/build/commands/channel/rollout.js +1 -1
- package/build/commands/channel/view.d.ts +1 -1
- package/build/commands/channel/view.js +1 -1
- package/build/commands/config.d.ts +2 -1
- package/build/commands/config.js +2 -3
- package/build/commands/credentials.d.ts +3 -2
- package/build/commands/credentials.js +2 -2
- package/build/commands/device/create.d.ts +1 -1
- package/build/commands/device/create.js +2 -2
- package/build/commands/device/delete.d.ts +1 -1
- package/build/commands/device/delete.js +1 -1
- package/build/commands/device/list.d.ts +1 -1
- package/build/commands/device/list.js +1 -1
- package/build/commands/device/rename.d.ts +1 -1
- package/build/commands/device/rename.js +1 -1
- package/build/commands/device/view.d.ts +1 -1
- package/build/commands/device/view.js +1 -1
- package/build/commands/metadata/pull.d.ts +1 -1
- package/build/commands/metadata/pull.js +1 -1
- package/build/commands/metadata/push.d.ts +1 -1
- package/build/commands/metadata/push.js +1 -1
- package/build/commands/open.d.ts +1 -1
- package/build/commands/open.js +1 -1
- package/build/commands/project/info.d.ts +1 -1
- package/build/commands/project/info.js +1 -1
- package/build/commands/project/init.js +3 -3
- package/build/commands/secret/create.d.ts +1 -1
- package/build/commands/secret/create.js +1 -1
- package/build/commands/secret/delete.d.ts +1 -1
- package/build/commands/secret/delete.js +1 -1
- package/build/commands/secret/list.d.ts +1 -1
- package/build/commands/secret/list.js +1 -1
- package/build/commands/secret/push.d.ts +1 -1
- package/build/commands/secret/push.js +1 -1
- package/build/commands/submit.d.ts +1 -1
- package/build/commands/submit.js +1 -1
- package/build/commands/update/configure.d.ts +1 -1
- package/build/commands/update/configure.js +1 -1
- package/build/commands/update/index.d.ts +2 -1
- package/build/commands/update/index.js +4 -8
- package/build/commands/update/list.d.ts +1 -1
- package/build/commands/update/list.js +1 -1
- package/build/commands/update/republish.d.ts +1 -1
- package/build/commands/update/republish.js +1 -1
- package/build/commands/update/roll-back-to-embedded.d.ts +2 -1
- package/build/commands/update/roll-back-to-embedded.js +4 -8
- package/build/commands/webhook/create.d.ts +1 -1
- package/build/commands/webhook/create.js +1 -1
- package/build/commands/webhook/delete.d.ts +1 -1
- package/build/commands/webhook/delete.js +1 -1
- package/build/commands/webhook/list.d.ts +1 -1
- package/build/commands/webhook/list.js +1 -1
- package/build/credentials/context.d.ts +0 -3
- package/build/credentials/context.js +1 -10
- package/build/credentials/ios/actions/DeviceUtils.js +1 -0
- package/build/credentials/ios/actions/SetUpAscApiKey.js +3 -3
- package/build/credentials/manager/HelperActions.d.ts +1 -1
- package/build/credentials/manager/ManageAndroid.js +1 -1
- package/build/credentials/manager/ManageIos.js +1 -1
- package/build/credentials/manager/SelectPlatform.d.ts +2 -2
- package/build/credentials/manager/SelectPlatform.js +2 -2
- package/build/easMultiselect.d.ts +24 -0
- package/build/easMultiselect.js +46 -0
- package/build/graphql/generated.d.ts +61 -10
- package/build/graphql/generated.js +2 -0
- package/build/graphql/types/Update.js +1 -1
- package/build/project/expoConfig.d.ts +7 -2
- package/build/project/expoConfig.js +10 -3
- package/build/prompts.d.ts +2 -1
- package/build/prompts.js +5 -1
- package/build/submit/ios/AscApiKeySource.d.ts +7 -2
- package/build/submit/ios/AscApiKeySource.js +63 -1
- package/build/submit/ios/IosSubmitCommand.d.ts +0 -1
- package/build/submit/ios/IosSubmitCommand.js +4 -49
- package/build/submit/ios/IosSubmitter.d.ts +0 -2
- package/build/submit/ios/IosSubmitter.js +1 -6
- package/build/update/utils.d.ts +2 -2
- package/build/update/utils.js +4 -2
- package/build/user/User.d.ts +2 -2
- package/build/user/User.js +5 -4
- package/oclif.manifest.json +1 -1
- package/package.json +2 -2
- package/build/credentials/ios/actions/SetUpSubmissionCredentials.d.ts +0 -10
- package/build/credentials/ios/actions/SetUpSubmissionCredentials.js +0 -53
- package/build/submit/ios/CredentialsServiceSource.d.ts +0 -18
- package/build/submit/ios/CredentialsServiceSource.js +0 -62
|
@@ -642,6 +642,8 @@ export type AndroidAppCredentialsMutation = {
|
|
|
642
642
|
__typename?: 'AndroidAppCredentialsMutation';
|
|
643
643
|
/** Create a set of credentials for an Android app */
|
|
644
644
|
createAndroidAppCredentials: AndroidAppCredentials;
|
|
645
|
+
/** Delete a set of credentials for an Android app */
|
|
646
|
+
deleteAndroidAppCredentials: DeleteAndroidAppCredentialsResult;
|
|
645
647
|
/** Set the FCM push key to be used in an Android app */
|
|
646
648
|
setFcm: AndroidAppCredentials;
|
|
647
649
|
/** Set the Google Service Account Key to be used for submitting an Android app */
|
|
@@ -652,6 +654,9 @@ export type AndroidAppCredentialsMutationCreateAndroidAppCredentialsArgs = {
|
|
|
652
654
|
appId: Scalars['ID'];
|
|
653
655
|
applicationIdentifier: Scalars['String'];
|
|
654
656
|
};
|
|
657
|
+
export type AndroidAppCredentialsMutationDeleteAndroidAppCredentialsArgs = {
|
|
658
|
+
id: Scalars['ID'];
|
|
659
|
+
};
|
|
655
660
|
export type AndroidAppCredentialsMutationSetFcmArgs = {
|
|
656
661
|
fcmId: Scalars['ID'];
|
|
657
662
|
id: Scalars['ID'];
|
|
@@ -869,6 +874,8 @@ export type App = Project & {
|
|
|
869
874
|
/** @deprecated No longer supported */
|
|
870
875
|
iconUrl?: Maybe<Scalars['String']>;
|
|
871
876
|
id: Scalars['ID'];
|
|
877
|
+
/** App query field for querying EAS Insights about this app */
|
|
878
|
+
insights: AppInsights;
|
|
872
879
|
/** iOS app credentials for the project */
|
|
873
880
|
iosAppCredentials: Array<IosAppCredentials>;
|
|
874
881
|
/** Whether the latest classic update publish is using a deprecated SDK version */
|
|
@@ -1139,6 +1146,21 @@ export type AppInput = {
|
|
|
1139
1146
|
privacy: AppPrivacy;
|
|
1140
1147
|
projectName: Scalars['String'];
|
|
1141
1148
|
};
|
|
1149
|
+
export type AppInsights = {
|
|
1150
|
+
__typename?: 'AppInsights';
|
|
1151
|
+
totalUniqueUsers?: Maybe<Scalars['Int']>;
|
|
1152
|
+
uniqueUsersByAppVersionOverTime: UniqueUsersOverTimeData;
|
|
1153
|
+
uniqueUsersByPlatformOverTime: UniqueUsersOverTimeData;
|
|
1154
|
+
};
|
|
1155
|
+
export type AppInsightsTotalUniqueUsersArgs = {
|
|
1156
|
+
timespan: InsightsTimespan;
|
|
1157
|
+
};
|
|
1158
|
+
export type AppInsightsUniqueUsersByAppVersionOverTimeArgs = {
|
|
1159
|
+
timespan: InsightsTimespan;
|
|
1160
|
+
};
|
|
1161
|
+
export type AppInsightsUniqueUsersByPlatformOverTimeArgs = {
|
|
1162
|
+
timespan: InsightsTimespan;
|
|
1163
|
+
};
|
|
1142
1164
|
export type AppMutation = {
|
|
1143
1165
|
__typename?: 'AppMutation';
|
|
1144
1166
|
/** Create an unpublished app */
|
|
@@ -1646,6 +1668,7 @@ export type Build = ActivityTimelineProjectActivity & BuildOrBuildJob & {
|
|
|
1646
1668
|
__typename?: 'Build';
|
|
1647
1669
|
activityTimestamp: Scalars['DateTime'];
|
|
1648
1670
|
actor?: Maybe<Actor>;
|
|
1671
|
+
app: App;
|
|
1649
1672
|
appBuildVersion?: Maybe<Scalars['String']>;
|
|
1650
1673
|
appVersion?: Maybe<Scalars['String']>;
|
|
1651
1674
|
artifacts?: Maybe<BuildArtifacts>;
|
|
@@ -2031,7 +2054,8 @@ export declare enum BuildStatus {
|
|
|
2031
2054
|
Finished = "FINISHED",
|
|
2032
2055
|
InProgress = "IN_PROGRESS",
|
|
2033
2056
|
InQueue = "IN_QUEUE",
|
|
2034
|
-
New = "NEW"
|
|
2057
|
+
New = "NEW",
|
|
2058
|
+
PendingCancel = "PENDING_CANCEL"
|
|
2035
2059
|
}
|
|
2036
2060
|
export declare enum BuildTrigger {
|
|
2037
2061
|
EasCli = "EAS_CLI",
|
|
@@ -2155,6 +2179,10 @@ export type DeleteAccountSsoConfigurationResult = {
|
|
|
2155
2179
|
__typename?: 'DeleteAccountSSOConfigurationResult';
|
|
2156
2180
|
id: Scalars['ID'];
|
|
2157
2181
|
};
|
|
2182
|
+
export type DeleteAndroidAppCredentialsResult = {
|
|
2183
|
+
__typename?: 'DeleteAndroidAppCredentialsResult';
|
|
2184
|
+
id: Scalars['ID'];
|
|
2185
|
+
};
|
|
2158
2186
|
export type DeleteAndroidKeystoreResult = {
|
|
2159
2187
|
__typename?: 'DeleteAndroidKeystoreResult';
|
|
2160
2188
|
id: Scalars['ID'];
|
|
@@ -2640,6 +2668,10 @@ export type GoogleServiceAccountKeyMutationCreateGoogleServiceAccountKeyArgs = {
|
|
|
2640
2668
|
export type GoogleServiceAccountKeyMutationDeleteGoogleServiceAccountKeyArgs = {
|
|
2641
2669
|
id: Scalars['ID'];
|
|
2642
2670
|
};
|
|
2671
|
+
export type InsightsTimespan = {
|
|
2672
|
+
end: Scalars['DateTime'];
|
|
2673
|
+
start: Scalars['DateTime'];
|
|
2674
|
+
};
|
|
2643
2675
|
export type Invoice = {
|
|
2644
2676
|
__typename?: 'Invoice';
|
|
2645
2677
|
/** The total amount due for the invoice, in cents */
|
|
@@ -2800,13 +2832,6 @@ export type IosAppCredentialsMutationSetPushKeyArgs = {
|
|
|
2800
2832
|
id: Scalars['ID'];
|
|
2801
2833
|
pushKeyId: Scalars['ID'];
|
|
2802
2834
|
};
|
|
2803
|
-
export type IosAppCredentialsQuery = {
|
|
2804
|
-
__typename?: 'IosAppCredentialsQuery';
|
|
2805
|
-
byId: IosAppCredentials;
|
|
2806
|
-
};
|
|
2807
|
-
export type IosAppCredentialsQueryByIdArgs = {
|
|
2808
|
-
iosAppCredentialsId: Scalars['ID'];
|
|
2809
|
-
};
|
|
2810
2835
|
/** @deprecated Use developmentClient option instead. */
|
|
2811
2836
|
export declare enum IosBuildType {
|
|
2812
2837
|
DevelopmentClient = "DEVELOPMENT_CLIENT",
|
|
@@ -2936,6 +2961,17 @@ export type LeaveAccountResult = {
|
|
|
2936
2961
|
__typename?: 'LeaveAccountResult';
|
|
2937
2962
|
success: Scalars['Boolean'];
|
|
2938
2963
|
};
|
|
2964
|
+
export type LineChartData = {
|
|
2965
|
+
__typename?: 'LineChartData';
|
|
2966
|
+
datasets: Array<LineDataset>;
|
|
2967
|
+
labels: Array<Scalars['String']>;
|
|
2968
|
+
};
|
|
2969
|
+
export type LineDataset = {
|
|
2970
|
+
__typename?: 'LineDataset';
|
|
2971
|
+
data: Array<Maybe<Scalars['Int']>>;
|
|
2972
|
+
id: Scalars['ID'];
|
|
2973
|
+
label: Scalars['String'];
|
|
2974
|
+
};
|
|
2939
2975
|
export declare enum MailchimpAudience {
|
|
2940
2976
|
ExpoDevelopers = "EXPO_DEVELOPERS"
|
|
2941
2977
|
}
|
|
@@ -3049,6 +3085,7 @@ export type MeteredBillingStatus = {
|
|
|
3049
3085
|
};
|
|
3050
3086
|
export declare enum NotificationEvent {
|
|
3051
3087
|
BuildComplete = "BUILD_COMPLETE",
|
|
3088
|
+
BuildPlanCreditThresholdExceeded = "BUILD_PLAN_CREDIT_THRESHOLD_EXCEEDED",
|
|
3052
3089
|
SubmissionComplete = "SUBMISSION_COMPLETE"
|
|
3053
3090
|
}
|
|
3054
3091
|
export type NotificationSubscription = {
|
|
@@ -3413,8 +3450,6 @@ export type RootQuery = {
|
|
|
3413
3450
|
githubApp: GitHubAppQuery;
|
|
3414
3451
|
/** Top-level query object for querying Stripe Invoices. */
|
|
3415
3452
|
invoice: InvoiceQuery;
|
|
3416
|
-
/** Top-level query object for querying IosAppCredentials. */
|
|
3417
|
-
iosAppCredentials: IosAppCredentialsQuery;
|
|
3418
3453
|
/**
|
|
3419
3454
|
* If authenticated as a typical end user, this is the appropriate top-level
|
|
3420
3455
|
* query object
|
|
@@ -3906,6 +3941,10 @@ export type TimelineActivityFilterInput = {
|
|
|
3906
3941
|
releaseChannels?: InputMaybe<Array<Scalars['String']>>;
|
|
3907
3942
|
types?: InputMaybe<Array<ActivityTimelineProjectActivityType>>;
|
|
3908
3943
|
};
|
|
3944
|
+
export type UniqueUsersOverTimeData = {
|
|
3945
|
+
__typename?: 'UniqueUsersOverTimeData';
|
|
3946
|
+
data: LineChartData;
|
|
3947
|
+
};
|
|
3909
3948
|
export type UnsubscribeFromNotificationResult = {
|
|
3910
3949
|
__typename?: 'UnsubscribeFromNotificationResult';
|
|
3911
3950
|
notificationSubscription: NotificationSubscription;
|
|
@@ -3914,6 +3953,7 @@ export type Update = ActivityTimelineProjectActivity & {
|
|
|
3914
3953
|
__typename?: 'Update';
|
|
3915
3954
|
activityTimestamp: Scalars['DateTime'];
|
|
3916
3955
|
actor?: Maybe<Actor>;
|
|
3956
|
+
app: App;
|
|
3917
3957
|
awaitingCodeSigningInfo: Scalars['Boolean'];
|
|
3918
3958
|
branch: UpdateBranch;
|
|
3919
3959
|
branchId: Scalars['ID'];
|
|
@@ -4055,6 +4095,7 @@ export type UpdateRollBackToEmbeddedGroup = {
|
|
|
4055
4095
|
export type UpdatesFilter = {
|
|
4056
4096
|
platform?: InputMaybe<AppPlatform>;
|
|
4057
4097
|
runtimeVersions?: InputMaybe<Array<Scalars['String']>>;
|
|
4098
|
+
sdkVersions?: InputMaybe<Array<Scalars['String']>>;
|
|
4058
4099
|
};
|
|
4059
4100
|
export type UploadSession = {
|
|
4060
4101
|
__typename?: 'UploadSession';
|
|
@@ -7862,6 +7903,7 @@ export type UpdatePublishMutation = {
|
|
|
7862
7903
|
id: string;
|
|
7863
7904
|
} | {
|
|
7864
7905
|
__typename: 'SSOUser';
|
|
7906
|
+
username: string;
|
|
7865
7907
|
id: string;
|
|
7866
7908
|
} | {
|
|
7867
7909
|
__typename: 'User';
|
|
@@ -8203,6 +8245,7 @@ export type BranchesByAppQuery = {
|
|
|
8203
8245
|
id: string;
|
|
8204
8246
|
} | {
|
|
8205
8247
|
__typename: 'SSOUser';
|
|
8248
|
+
username: string;
|
|
8206
8249
|
id: string;
|
|
8207
8250
|
} | {
|
|
8208
8251
|
__typename: 'User';
|
|
@@ -8263,6 +8306,7 @@ export type ViewBranchesOnUpdateChannelQuery = {
|
|
|
8263
8306
|
id: string;
|
|
8264
8307
|
} | {
|
|
8265
8308
|
__typename: 'SSOUser';
|
|
8309
|
+
username: string;
|
|
8266
8310
|
id: string;
|
|
8267
8311
|
} | {
|
|
8268
8312
|
__typename: 'User';
|
|
@@ -8597,6 +8641,7 @@ export type ViewUpdateChannelOnAppQuery = {
|
|
|
8597
8641
|
id: string;
|
|
8598
8642
|
} | {
|
|
8599
8643
|
__typename: 'SSOUser';
|
|
8644
|
+
username: string;
|
|
8600
8645
|
id: string;
|
|
8601
8646
|
} | {
|
|
8602
8647
|
__typename: 'User';
|
|
@@ -8659,6 +8704,7 @@ export type ViewUpdateChannelsOnAppQuery = {
|
|
|
8659
8704
|
id: string;
|
|
8660
8705
|
} | {
|
|
8661
8706
|
__typename: 'SSOUser';
|
|
8707
|
+
username: string;
|
|
8662
8708
|
id: string;
|
|
8663
8709
|
} | {
|
|
8664
8710
|
__typename: 'User';
|
|
@@ -8881,6 +8927,7 @@ export type ViewUpdatesByGroupQuery = {
|
|
|
8881
8927
|
id: string;
|
|
8882
8928
|
} | {
|
|
8883
8929
|
__typename: 'SSOUser';
|
|
8930
|
+
username: string;
|
|
8884
8931
|
id: string;
|
|
8885
8932
|
} | {
|
|
8886
8933
|
__typename: 'User';
|
|
@@ -8935,6 +8982,7 @@ export type ViewUpdateGroupsOnBranchQuery = {
|
|
|
8935
8982
|
id: string;
|
|
8936
8983
|
} | {
|
|
8937
8984
|
__typename: 'SSOUser';
|
|
8985
|
+
username: string;
|
|
8938
8986
|
id: string;
|
|
8939
8987
|
} | {
|
|
8940
8988
|
__typename: 'User';
|
|
@@ -8988,6 +9036,7 @@ export type ViewUpdateGroupsOnAppQuery = {
|
|
|
8988
9036
|
id: string;
|
|
8989
9037
|
} | {
|
|
8990
9038
|
__typename: 'SSOUser';
|
|
9039
|
+
username: string;
|
|
8991
9040
|
id: string;
|
|
8992
9041
|
} | {
|
|
8993
9042
|
__typename: 'User';
|
|
@@ -9436,6 +9485,7 @@ export type UpdateFragment = {
|
|
|
9436
9485
|
id: string;
|
|
9437
9486
|
} | {
|
|
9438
9487
|
__typename: 'SSOUser';
|
|
9488
|
+
username: string;
|
|
9439
9489
|
id: string;
|
|
9440
9490
|
} | {
|
|
9441
9491
|
__typename: 'User';
|
|
@@ -9476,6 +9526,7 @@ export type UpdateBranchFragment = {
|
|
|
9476
9526
|
id: string;
|
|
9477
9527
|
} | {
|
|
9478
9528
|
__typename: 'SSOUser';
|
|
9529
|
+
username: string;
|
|
9479
9530
|
id: string;
|
|
9480
9531
|
} | {
|
|
9481
9532
|
__typename: 'User';
|
|
@@ -170,6 +170,7 @@ var BuildStatus;
|
|
|
170
170
|
BuildStatus["InProgress"] = "IN_PROGRESS";
|
|
171
171
|
BuildStatus["InQueue"] = "IN_QUEUE";
|
|
172
172
|
BuildStatus["New"] = "NEW";
|
|
173
|
+
BuildStatus["PendingCancel"] = "PENDING_CANCEL";
|
|
173
174
|
})(BuildStatus = exports.BuildStatus || (exports.BuildStatus = {}));
|
|
174
175
|
var BuildTrigger;
|
|
175
176
|
(function (BuildTrigger) {
|
|
@@ -290,6 +291,7 @@ var MailchimpTag;
|
|
|
290
291
|
var NotificationEvent;
|
|
291
292
|
(function (NotificationEvent) {
|
|
292
293
|
NotificationEvent["BuildComplete"] = "BUILD_COMPLETE";
|
|
294
|
+
NotificationEvent["BuildPlanCreditThresholdExceeded"] = "BUILD_PLAN_CREDIT_THRESHOLD_EXCEEDED";
|
|
293
295
|
NotificationEvent["SubmissionComplete"] = "SUBMISSION_COMPLETE";
|
|
294
296
|
})(NotificationEvent = exports.NotificationEvent || (exports.NotificationEvent = {}));
|
|
295
297
|
var NotificationType;
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { ExpoConfig } from '@expo/config';
|
|
2
2
|
import { Env } from '@expo/eas-build-job';
|
|
3
|
+
export type PublicExpoConfig = Omit<ExpoConfig, '_internal' | 'hooks' | 'ios' | 'android' | 'updates'> & {
|
|
4
|
+
ios?: Omit<ExpoConfig['ios'], 'config'>;
|
|
5
|
+
android?: Omit<ExpoConfig['android'], 'config'>;
|
|
6
|
+
updates?: Omit<ExpoConfig['updates'], 'codeSigningCertificate' | 'codeSigningMetadata'>;
|
|
7
|
+
};
|
|
3
8
|
export interface ExpoConfigOptions {
|
|
4
9
|
env?: Env;
|
|
5
|
-
isPublicConfig?: boolean;
|
|
6
10
|
skipSDKVersionRequirement?: boolean;
|
|
7
11
|
}
|
|
8
|
-
export declare function
|
|
12
|
+
export declare function getPrivateExpoConfig(projectDir: string, opts?: ExpoConfigOptions): ExpoConfig;
|
|
13
|
+
export declare function getPublicExpoConfig(projectDir: string, opts?: ExpoConfigOptions): PublicExpoConfig;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getPublicExpoConfig = exports.getPrivateExpoConfig = void 0;
|
|
4
4
|
const config_1 = require("@expo/config");
|
|
5
|
-
function
|
|
5
|
+
function getExpoConfigInternal(projectDir, opts = {}) {
|
|
6
6
|
const originalProcessEnv = process.env;
|
|
7
7
|
try {
|
|
8
8
|
process.env = {
|
|
@@ -19,4 +19,11 @@ function getExpoConfig(projectDir, opts = {}) {
|
|
|
19
19
|
process.env = originalProcessEnv;
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
|
|
22
|
+
function getPrivateExpoConfig(projectDir, opts = {}) {
|
|
23
|
+
return getExpoConfigInternal(projectDir, { ...opts, isPublicConfig: false });
|
|
24
|
+
}
|
|
25
|
+
exports.getPrivateExpoConfig = getPrivateExpoConfig;
|
|
26
|
+
function getPublicExpoConfig(projectDir, opts = {}) {
|
|
27
|
+
return getExpoConfigInternal(projectDir, { ...opts, isPublicConfig: true });
|
|
28
|
+
}
|
|
29
|
+
exports.getPublicExpoConfig = getPublicExpoConfig;
|
package/build/prompts.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { Answers, Choice, Options, PromptType
|
|
1
|
+
import { Answers, Choice, Options, PromptType } from 'prompts';
|
|
2
|
+
import { Question } from './easMultiselect';
|
|
2
3
|
export { PromptType, Question, Choice };
|
|
3
4
|
export interface ExpoChoice<T> extends Choice {
|
|
4
5
|
value: T;
|
package/build/prompts.js
CHANGED
|
@@ -3,7 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.pressAnyKeyToContinueAsync = exports.toggleConfirmAsync = exports.selectAsync = exports.confirmAsync = exports.promptAsync = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const os_1 = require("os");
|
|
6
|
-
const prompts_1 = tslib_1.
|
|
6
|
+
const prompts_1 = tslib_1.__importStar(require("prompts"));
|
|
7
|
+
const easMultiselect_1 = require("./easMultiselect");
|
|
8
|
+
if (prompts_1.prompts) {
|
|
9
|
+
prompts_1.prompts.multiselect = easMultiselect_1.easMultiselect;
|
|
10
|
+
}
|
|
7
11
|
async function promptAsync(questions, options = {}) {
|
|
8
12
|
var _a;
|
|
9
13
|
if (!process.stdin.isTTY && !global.test) {
|
|
@@ -3,11 +3,15 @@ import { AscApiKeyPath, MinimalAscApiKey } from '../../credentials/ios/credentia
|
|
|
3
3
|
import { SubmissionContext } from '../context';
|
|
4
4
|
export declare enum AscApiKeySourceType {
|
|
5
5
|
path = 0,
|
|
6
|
-
prompt = 1
|
|
6
|
+
prompt = 1,
|
|
7
|
+
credentialsService = 2
|
|
7
8
|
}
|
|
8
9
|
interface AscApiKeySourceBase {
|
|
9
10
|
sourceType: AscApiKeySourceType;
|
|
10
11
|
}
|
|
12
|
+
interface AscApiKeyCredentialsServiceSource extends AscApiKeySourceBase {
|
|
13
|
+
sourceType: AscApiKeySourceType.credentialsService;
|
|
14
|
+
}
|
|
11
15
|
interface AscApiKeyPromptSource extends AscApiKeySourceBase {
|
|
12
16
|
sourceType: AscApiKeySourceType.prompt;
|
|
13
17
|
}
|
|
@@ -15,7 +19,7 @@ interface AscApiKeyEnvVarSource extends AscApiKeySourceBase {
|
|
|
15
19
|
sourceType: AscApiKeySourceType.path;
|
|
16
20
|
path: AscApiKeyPath;
|
|
17
21
|
}
|
|
18
|
-
export type AscApiKeySource = AscApiKeyEnvVarSource | AscApiKeyPromptSource;
|
|
22
|
+
export type AscApiKeySource = AscApiKeyEnvVarSource | AscApiKeyPromptSource | AscApiKeyCredentialsServiceSource;
|
|
19
23
|
type AscApiKeySummary = {
|
|
20
24
|
source: 'local' | 'EAS servers';
|
|
21
25
|
path?: string;
|
|
@@ -29,6 +33,7 @@ export type AscApiKeyResult = {
|
|
|
29
33
|
result: MinimalAscApiKey | AscApiKeyFromExpoServers;
|
|
30
34
|
summary: AscApiKeySummary;
|
|
31
35
|
};
|
|
36
|
+
export declare function getAscApiKeyResultAsync(ctx: SubmissionContext<Platform.IOS>, source: AscApiKeySource): Promise<AscApiKeyResult>;
|
|
32
37
|
export declare function getAscApiKeyLocallyAsync(ctx: SubmissionContext<Platform.IOS>, source: AscApiKeySource): Promise<AscApiKeyResult>;
|
|
33
38
|
export declare function getAscApiKeyPathAsync(ctx: SubmissionContext<Platform.IOS>, source: AscApiKeySource): Promise<AscApiKeyPath>;
|
|
34
39
|
export {};
|
|
@@ -1,16 +1,76 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getAscApiKeyPathAsync = exports.getAscApiKeyLocallyAsync = exports.AscApiKeySourceType = void 0;
|
|
3
|
+
exports.getAscApiKeyPathAsync = exports.getAscApiKeyLocallyAsync = exports.getAscApiKeyResultAsync = exports.AscApiKeySourceType = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
|
|
6
|
+
const nullthrows_1 = tslib_1.__importDefault(require("nullthrows"));
|
|
6
7
|
const AscApiKeyUtils_1 = require("../../credentials/ios/actions/AscApiKeyUtils");
|
|
8
|
+
const SetUpAscApiKey_1 = require("../../credentials/ios/actions/SetUpAscApiKey");
|
|
7
9
|
const log_1 = tslib_1.__importDefault(require("../../log"));
|
|
10
|
+
const bundleIdentifier_1 = require("../../project/ios/bundleIdentifier");
|
|
11
|
+
const prompts_1 = require("../../prompts");
|
|
8
12
|
const files_1 = require("../utils/files");
|
|
9
13
|
var AscApiKeySourceType;
|
|
10
14
|
(function (AscApiKeySourceType) {
|
|
11
15
|
AscApiKeySourceType[AscApiKeySourceType["path"] = 0] = "path";
|
|
12
16
|
AscApiKeySourceType[AscApiKeySourceType["prompt"] = 1] = "prompt";
|
|
17
|
+
AscApiKeySourceType[AscApiKeySourceType["credentialsService"] = 2] = "credentialsService";
|
|
13
18
|
})(AscApiKeySourceType = exports.AscApiKeySourceType || (exports.AscApiKeySourceType = {}));
|
|
19
|
+
async function getAscApiKeyResultAsync(ctx, source) {
|
|
20
|
+
if (source.sourceType === AscApiKeySourceType.credentialsService) {
|
|
21
|
+
return await getAscApiKeyFromCredentialsServiceAsync(ctx);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
return await getAscApiKeyLocallyAsync(ctx, source);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.getAscApiKeyResultAsync = getAscApiKeyResultAsync;
|
|
28
|
+
async function maybeGetIosBundleIdentifierAsync(ctx) {
|
|
29
|
+
try {
|
|
30
|
+
return await (0, bundleIdentifier_1.getBundleIdentifierAsync)(ctx.projectDir, ctx.exp);
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
if (error instanceof bundleIdentifier_1.AmbiguousBundleIdentifierError) {
|
|
34
|
+
log_1.default.warn('bundleIdentifier in the Xcode project is ambiguous, specify it via "bundleIdentifier" field in the submit profile in the eas.json.');
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
throw new Error(`Failed to resolve bundleIdentifier in the Xcode project: ${error.message}.`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async function promptForBundleIdentifierAsync() {
|
|
41
|
+
const { bundleIdentifier } = await (0, prompts_1.promptAsync)({
|
|
42
|
+
name: 'bundleIdentifier',
|
|
43
|
+
message: 'Bundle identifier:',
|
|
44
|
+
type: 'text',
|
|
45
|
+
validate: value => ((0, bundleIdentifier_1.isBundleIdentifierValid)(value) ? true : bundleIdentifier_1.INVALID_BUNDLE_IDENTIFIER_MESSAGE),
|
|
46
|
+
});
|
|
47
|
+
return bundleIdentifier;
|
|
48
|
+
}
|
|
49
|
+
async function getAscApiKeyFromCredentialsServiceAsync(ctx) {
|
|
50
|
+
var _a, _b, _c;
|
|
51
|
+
const bundleIdentifier = (_c = (_b = (_a = ctx.applicationIdentifierOverride) !== null && _a !== void 0 ? _a : ctx.profile.bundleIdentifier) !== null && _b !== void 0 ? _b : (await maybeGetIosBundleIdentifierAsync(ctx))) !== null && _c !== void 0 ? _c : (await promptForBundleIdentifierAsync());
|
|
52
|
+
log_1.default.log(`Looking up credentials configuration for ${bundleIdentifier}...`);
|
|
53
|
+
const appLookupParams = {
|
|
54
|
+
account: (0, nullthrows_1.default)(ctx.user.accounts.find(a => a.name === ctx.accountName), `You do not have access to account: ${ctx.accountName}`),
|
|
55
|
+
projectName: ctx.projectName,
|
|
56
|
+
bundleIdentifier,
|
|
57
|
+
};
|
|
58
|
+
const setupAscApiKeyAction = new SetUpAscApiKey_1.SetUpAscApiKey(appLookupParams, AscApiKeyUtils_1.AppStoreApiKeyPurpose.SUBMISSION_SERVICE);
|
|
59
|
+
const iosAppCredentials = await setupAscApiKeyAction.runAsync(ctx.credentialsCtx);
|
|
60
|
+
const ascKeyForSubmissions = (0, nullthrows_1.default)(iosAppCredentials.appStoreConnectApiKeyForSubmissions, `An EAS Submit ASC Api Key could not be found for ${iosAppCredentials.appleAppIdentifier.bundleIdentifier}`);
|
|
61
|
+
const { id, keyIdentifier, name } = ascKeyForSubmissions;
|
|
62
|
+
log_1.default.log(`Using Api Key ID: ${keyIdentifier}${name ? ` (${name})` : ''}`);
|
|
63
|
+
return {
|
|
64
|
+
result: {
|
|
65
|
+
ascApiKeyId: id,
|
|
66
|
+
},
|
|
67
|
+
summary: {
|
|
68
|
+
source: 'EAS servers',
|
|
69
|
+
keyId: keyIdentifier,
|
|
70
|
+
name: name !== null && name !== void 0 ? name : undefined,
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
}
|
|
14
74
|
async function getAscApiKeyLocallyAsync(ctx, source) {
|
|
15
75
|
const ascApiKeyPath = await getAscApiKeyPathAsync(ctx, source);
|
|
16
76
|
const { keyP8Path, keyId, issuerId } = ascApiKeyPath;
|
|
@@ -31,6 +91,8 @@ async function getAscApiKeyPathAsync(ctx, source) {
|
|
|
31
91
|
return await handlePathSourceAsync(ctx, source);
|
|
32
92
|
case AscApiKeySourceType.prompt:
|
|
33
93
|
return await handlePromptSourceAsync(ctx, source);
|
|
94
|
+
case AscApiKeySourceType.credentialsService:
|
|
95
|
+
throw new Error(`AscApiKeySourceType ${source} does not return a path.`);
|
|
34
96
|
}
|
|
35
97
|
}
|
|
36
98
|
exports.getAscApiKeyPathAsync = getAscApiKeyPathAsync;
|
|
@@ -6,7 +6,6 @@ export default class IosSubmitCommand {
|
|
|
6
6
|
constructor(ctx: SubmissionContext<Platform.IOS>);
|
|
7
7
|
runAsync(): Promise<SubmissionFragment>;
|
|
8
8
|
private resolveSubmissionOptionsAsync;
|
|
9
|
-
private maybeGetIosBundleIdentifierAsync;
|
|
10
9
|
private resolveCredentialSubmissionOptionsAsync;
|
|
11
10
|
private resolveAppSpecificPasswordSource;
|
|
12
11
|
private resolveAscApiKeySource;
|
|
@@ -7,12 +7,10 @@ const getenv_1 = tslib_1.__importDefault(require("getenv"));
|
|
|
7
7
|
const wrap_ansi_1 = tslib_1.__importDefault(require("wrap-ansi"));
|
|
8
8
|
const errors_1 = require("../../credentials/errors");
|
|
9
9
|
const log_1 = tslib_1.__importStar(require("../../log"));
|
|
10
|
-
const bundleIdentifier_1 = require("../../project/ios/bundleIdentifier");
|
|
11
10
|
const commons_1 = require("../commons");
|
|
12
11
|
const AppProduce_1 = require("./AppProduce");
|
|
13
12
|
const AppSpecificPasswordSource_1 = require("./AppSpecificPasswordSource");
|
|
14
13
|
const AscApiKeySource_1 = require("./AscApiKeySource");
|
|
15
|
-
const CredentialsServiceSource_1 = require("./CredentialsServiceSource");
|
|
16
14
|
const IosSubmitter_1 = tslib_1.__importDefault(require("./IosSubmitter"));
|
|
17
15
|
class IosSubmitCommand {
|
|
18
16
|
constructor(ctx) {
|
|
@@ -31,15 +29,11 @@ class IosSubmitCommand {
|
|
|
31
29
|
? credentialsSource.appSpecificPasswordSource
|
|
32
30
|
: null;
|
|
33
31
|
const maybeAscApiKeySource = 'ascApiKeySource' in credentialsSource ? credentialsSource.ascApiKeySource : null;
|
|
34
|
-
const maybeCredentialsServiceSource = 'credentialsServiceSource' in credentialsSource
|
|
35
|
-
? credentialsSource.credentialsServiceSource
|
|
36
|
-
: null;
|
|
37
32
|
const ascAppIdentifier = await this.resolveAscAppIdentifierAsync();
|
|
38
33
|
const errored = [
|
|
39
34
|
archiveSource,
|
|
40
35
|
...(maybeAppSpecificPasswordSource ? [maybeAppSpecificPasswordSource] : []),
|
|
41
36
|
...(maybeAscApiKeySource ? [maybeAscApiKeySource] : []),
|
|
42
|
-
...(maybeCredentialsServiceSource ? [maybeCredentialsServiceSource] : []),
|
|
43
37
|
ascAppIdentifier,
|
|
44
38
|
].filter(r => !r.ok);
|
|
45
39
|
if (errored.length > 0) {
|
|
@@ -61,57 +55,18 @@ class IosSubmitCommand {
|
|
|
61
55
|
ascApiKeySource: maybeAscApiKeySource.enforceValue(),
|
|
62
56
|
}
|
|
63
57
|
: null),
|
|
64
|
-
...(maybeCredentialsServiceSource
|
|
65
|
-
? {
|
|
66
|
-
credentialsServiceSource: maybeCredentialsServiceSource.enforceValue(),
|
|
67
|
-
}
|
|
68
|
-
: null),
|
|
69
58
|
};
|
|
70
59
|
}
|
|
71
|
-
async maybeGetIosBundleIdentifierAsync() {
|
|
72
|
-
try {
|
|
73
|
-
return (0, results_1.result)(await (0, bundleIdentifier_1.getBundleIdentifierAsync)(this.ctx.projectDir, this.ctx.exp));
|
|
74
|
-
}
|
|
75
|
-
catch (error) {
|
|
76
|
-
if (error instanceof bundleIdentifier_1.AmbiguousBundleIdentifierError) {
|
|
77
|
-
log_1.default.warn('bundleIdentifier in the Xcode project is ambiguous, specify it via "bundleIdentifier" field in the submit profile in the eas.json.');
|
|
78
|
-
return (0, results_1.result)(null);
|
|
79
|
-
}
|
|
80
|
-
return (0, results_1.result)(new Error(`Failed to resolve bundleIdentifier in the Xcode project: ${error.message}.`));
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
60
|
async resolveCredentialSubmissionOptionsAsync() {
|
|
84
|
-
var
|
|
85
|
-
const ascApiKeySource = this.resolveAscApiKeySource();
|
|
86
|
-
const shouldSkipAscApiKeySource = !ascApiKeySource.ok && ascApiKeySource.enforceError() instanceof errors_1.MissingCredentialsError;
|
|
87
|
-
if (!shouldSkipAscApiKeySource) {
|
|
88
|
-
return { ascApiKeySource };
|
|
89
|
-
}
|
|
61
|
+
// if an App Specific Password env var is not specified, use ASC Api Key
|
|
90
62
|
const appSpecificPasswordSource = this.resolveAppSpecificPasswordSource();
|
|
91
63
|
const shouldSkipAppSpecificPasswordSource = !appSpecificPasswordSource.ok &&
|
|
92
64
|
appSpecificPasswordSource.enforceError() instanceof errors_1.MissingCredentialsError;
|
|
93
65
|
if (!shouldSkipAppSpecificPasswordSource) {
|
|
94
66
|
return { appSpecificPasswordSource: this.resolveAppSpecificPasswordSource() };
|
|
95
67
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
const bundleIdentifierResult = await this.maybeGetIosBundleIdentifierAsync();
|
|
99
|
-
if (!bundleIdentifierResult.ok) {
|
|
100
|
-
return {
|
|
101
|
-
credentialsServiceSource: (0, results_1.result)(bundleIdentifierResult.reason),
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
const bundleIdentifierValue = bundleIdentifierResult.enforceValue();
|
|
105
|
-
if (bundleIdentifierValue) {
|
|
106
|
-
bundleIdentifier = bundleIdentifierValue;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
return {
|
|
110
|
-
credentialsServiceSource: (0, results_1.result)({
|
|
111
|
-
sourceType: CredentialsServiceSource_1.CREDENTIALS_SERVICE_SOURCE,
|
|
112
|
-
bundleIdentifier,
|
|
113
|
-
}),
|
|
114
|
-
};
|
|
68
|
+
const ascApiKeySource = this.resolveAscApiKeySource();
|
|
69
|
+
return { ascApiKeySource };
|
|
115
70
|
}
|
|
116
71
|
resolveAppSpecificPasswordSource() {
|
|
117
72
|
const envAppSpecificPassword = getenv_1.default.string('EXPO_APPLE_APP_SPECIFIC_PASSWORD', '');
|
|
@@ -147,7 +102,7 @@ class IosSubmitCommand {
|
|
|
147
102
|
sourceType: AscApiKeySource_1.AscApiKeySourceType.prompt,
|
|
148
103
|
});
|
|
149
104
|
}
|
|
150
|
-
return (0, results_1.result)(
|
|
105
|
+
return (0, results_1.result)({ sourceType: AscApiKeySource_1.AscApiKeySourceType.credentialsService });
|
|
151
106
|
}
|
|
152
107
|
resolveArchiveSource() {
|
|
153
108
|
try {
|
|
@@ -5,13 +5,11 @@ import BaseSubmitter, { SubmissionInput } from '../BaseSubmitter';
|
|
|
5
5
|
import { SubmissionContext } from '../context';
|
|
6
6
|
import { AppSpecificPasswordCredentials, AppSpecificPasswordSource } from './AppSpecificPasswordSource';
|
|
7
7
|
import { AscApiKeyResult, AscApiKeySource } from './AscApiKeySource';
|
|
8
|
-
import { CredentialsServiceSource } from './CredentialsServiceSource';
|
|
9
8
|
export interface IosSubmissionOptions extends Pick<IosSubmissionConfigInput, 'appleIdUsername' | 'ascAppIdentifier'> {
|
|
10
9
|
projectId: string;
|
|
11
10
|
archiveSource: ArchiveSource;
|
|
12
11
|
appSpecificPasswordSource?: AppSpecificPasswordSource;
|
|
13
12
|
ascApiKeySource?: AscApiKeySource;
|
|
14
|
-
credentialsServiceSource?: CredentialsServiceSource;
|
|
15
13
|
}
|
|
16
14
|
interface ResolvedSourceOptions {
|
|
17
15
|
archive: ResolvedArchiveSource;
|
|
@@ -11,7 +11,6 @@ const BaseSubmitter_1 = tslib_1.__importDefault(require("../BaseSubmitter"));
|
|
|
11
11
|
const summary_1 = require("../utils/summary");
|
|
12
12
|
const AppSpecificPasswordSource_1 = require("./AppSpecificPasswordSource");
|
|
13
13
|
const AscApiKeySource_1 = require("./AscApiKeySource");
|
|
14
|
-
const CredentialsServiceSource_1 = require("./CredentialsServiceSource");
|
|
15
14
|
class IosSubmitter extends BaseSubmitter_1.default {
|
|
16
15
|
constructor(ctx, options) {
|
|
17
16
|
const sourceOptionsResolver = {
|
|
@@ -28,15 +27,11 @@ class IosSubmitter extends BaseSubmitter_1.default {
|
|
|
28
27
|
? await (0, AppSpecificPasswordSource_1.getAppSpecificPasswordLocallyAsync)(this.ctx, this.options.appSpecificPasswordSource)
|
|
29
28
|
: null;
|
|
30
29
|
const maybeAppStoreConnectApiKey = this.options.ascApiKeySource
|
|
31
|
-
? await (0, AscApiKeySource_1.
|
|
32
|
-
: null;
|
|
33
|
-
const maybeAscOrAspFromCredentialsService = this.options.credentialsServiceSource
|
|
34
|
-
? await (0, CredentialsServiceSource_1.getFromCredentialsServiceAsync)(this.ctx, this.options.credentialsServiceSource)
|
|
30
|
+
? await (0, AscApiKeySource_1.getAscApiKeyResultAsync)(this.ctx, this.options.ascApiKeySource)
|
|
35
31
|
: null;
|
|
36
32
|
return {
|
|
37
33
|
...(maybeAppSpecificPassword ? { appSpecificPassword: maybeAppSpecificPassword } : null),
|
|
38
34
|
...(maybeAppStoreConnectApiKey ? { ascApiKeyResult: maybeAppStoreConnectApiKey } : null),
|
|
39
|
-
...(maybeAscOrAspFromCredentialsService ? maybeAscOrAspFromCredentialsService : null),
|
|
40
35
|
};
|
|
41
36
|
},
|
|
42
37
|
};
|
package/build/update/utils.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ExpoConfig } from '@expo/config';
|
|
2
|
-
import {
|
|
2
|
+
import { Robot, SsoUser, Update, UpdateBranchFragment, UpdateFragment, User } from '../graphql/generated';
|
|
3
3
|
import { RequestedPlatform } from '../platform';
|
|
4
4
|
import { ProfileData } from '../utils/profiles';
|
|
5
5
|
export type FormatUpdateParameter = Pick<Update, 'id' | 'createdAt' | 'message'> & {
|
|
6
|
-
actor?:
|
|
6
|
+
actor?: Pick<Robot, '__typename' | 'firstName'> | Pick<User, '__typename' | 'username'> | Pick<SsoUser, '__typename' | 'username'> | null;
|
|
7
7
|
};
|
|
8
8
|
export type UpdateJsonInfo = {
|
|
9
9
|
branch: string;
|
package/build/update/utils.js
CHANGED
|
@@ -94,7 +94,8 @@ function formatUpdateTitle(update) {
|
|
|
94
94
|
const { message, createdAt, actor, runtimeVersion } = update;
|
|
95
95
|
let actorName;
|
|
96
96
|
switch (actor === null || actor === void 0 ? void 0 : actor.__typename) {
|
|
97
|
-
case 'User':
|
|
97
|
+
case 'User':
|
|
98
|
+
case 'SSOUser': {
|
|
98
99
|
actorName = actor.username;
|
|
99
100
|
break;
|
|
100
101
|
}
|
|
@@ -103,8 +104,9 @@ function formatUpdateTitle(update) {
|
|
|
103
104
|
actorName = firstName !== null && firstName !== void 0 ? firstName : `robot: ${id.slice(0, 4)}...`;
|
|
104
105
|
break;
|
|
105
106
|
}
|
|
106
|
-
|
|
107
|
+
case undefined: {
|
|
107
108
|
actorName = 'unknown';
|
|
109
|
+
}
|
|
108
110
|
}
|
|
109
111
|
return `[${(0, dateformat_1.default)(createdAt, 'mmm dd HH:MM')} by ${actorName}, runtimeVersion: ${runtimeVersion}] ${message}`;
|
|
110
112
|
}
|
package/build/user/User.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { CurrentUserQuery } from '../graphql/generated';
|
|
1
|
+
import { CurrentUserQuery, Robot, SsoUser, User } from '../graphql/generated';
|
|
2
2
|
export type Actor = NonNullable<CurrentUserQuery['meActor']>;
|
|
3
3
|
/**
|
|
4
4
|
* Resolve the name of the actor, either normal user or robot user.
|
|
5
5
|
* This should be used whenever the "current user" needs to be displayed.
|
|
6
6
|
* The display name CANNOT be used as project owner.
|
|
7
7
|
*/
|
|
8
|
-
export declare function getActorDisplayName(actor?:
|
|
8
|
+
export declare function getActorDisplayName(actor?: Pick<Robot, '__typename' | 'firstName'> | Pick<User, '__typename' | 'username'> | Pick<SsoUser, '__typename' | 'username'> | null): string;
|
|
9
9
|
export declare function getActorUsername(actor?: Actor): string | null;
|