eas-cli 3.13.3 → 3.14.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 +55 -55
- package/build/api.d.ts +1 -0
- package/build/api.js +14 -1
- package/build/build/configure.d.ts +1 -0
- package/build/build/configure.js +8 -4
- package/build/build/local.js +1 -1
- package/build/build/runBuildAndSubmit.js +29 -0
- package/build/commandUtils/EasCommand.js +3 -1
- package/build/commandUtils/context/contextUtils/getProjectIdAsync.js +3 -3
- package/build/commands/account/login.d.ts +3 -0
- package/build/commands/account/login.js +12 -1
- package/build/commands/build/configure.js +5 -1
- package/build/commands/project/init.js +1 -1
- package/build/commands/update/configure.js +14 -15
- package/build/credentials/android/api/GraphqlClient.d.ts +1 -0
- package/build/credentials/android/api/GraphqlClient.js +5 -7
- package/build/credentials/android/api/graphql/mutations/AndroidAppBuildCredentialsMutation.d.ts +1 -0
- package/build/credentials/android/api/graphql/mutations/AndroidAppBuildCredentialsMutation.js +23 -0
- package/build/credentials/ios/appstore/bundleIdCapabilities.js +43 -0
- package/build/credentials/manager/Actions.d.ts +11 -10
- package/build/credentials/manager/Actions.js +11 -10
- package/build/credentials/manager/AndroidActions.js +5 -0
- package/build/credentials/manager/CreateAndroidBuildCredentials.d.ts +8 -0
- package/build/credentials/manager/CreateAndroidBuildCredentials.js +33 -0
- package/build/credentials/manager/ManageAndroid.js +6 -15
- package/build/credentials/manager/SetDefaultAndroidKeystore.d.ts +8 -0
- package/build/credentials/manager/SetDefaultAndroidKeystore.js +41 -0
- package/build/graphql/generated.d.ts +76 -12
- package/build/graphql/generated.js +13 -2
- package/build/graphql/queries/UserQuery.js +2 -5
- package/build/project/expoConfig.d.ts +5 -1
- package/build/project/expoConfig.js +58 -1
- package/build/project/projectUtils.d.ts +2 -0
- package/build/project/projectUtils.js +14 -3
- package/build/update/configure.js +9 -5
- package/build/user/SessionManager.d.ts +3 -1
- package/build/user/SessionManager.js +16 -2
- package/build/user/User.d.ts +1 -1
- package/build/user/User.js +1 -1
- package/build/user/actions.js +1 -1
- package/build/user/expoSsoLauncher.d.ts +4 -0
- package/build/user/expoSsoLauncher.js +71 -0
- package/build/user/fetchSessionSecretAndSsoUser.d.ts +5 -0
- package/build/user/fetchSessionSecretAndSsoUser.js +20 -0
- package/build/user/fetchSessionSecretAndUser.js +4 -24
- package/build/user/fetchUser.d.ts +6 -0
- package/build/user/fetchUser.js +27 -0
- package/build/utils/expoCli.js +12 -2
- package/build/utils/port.d.ts +2 -0
- package/build/utils/port.js +14 -0
- package/build/vcs/clients/git.js +1 -1
- package/oclif.manifest.json +1 -1
- package/package.json +5 -4
|
@@ -996,6 +996,7 @@ export type AppBuildsPaginatedArgs = {
|
|
|
996
996
|
export type AppChannelsPaginatedArgs = {
|
|
997
997
|
after?: InputMaybe<Scalars['String']>;
|
|
998
998
|
before?: InputMaybe<Scalars['String']>;
|
|
999
|
+
filter?: InputMaybe<ChannelFilterInput>;
|
|
999
1000
|
first?: InputMaybe<Scalars['Int']>;
|
|
1000
1001
|
last?: InputMaybe<Scalars['Int']>;
|
|
1001
1002
|
};
|
|
@@ -1148,6 +1149,7 @@ export type AppInput = {
|
|
|
1148
1149
|
};
|
|
1149
1150
|
export type AppInsights = {
|
|
1150
1151
|
__typename?: 'AppInsights';
|
|
1152
|
+
hasEventsFromExpoInsightsClientModule: Scalars['Boolean'];
|
|
1151
1153
|
totalUniqueUsers?: Maybe<Scalars['Int']>;
|
|
1152
1154
|
uniqueUsersByAppVersionOverTime: UniqueUsersOverTimeData;
|
|
1153
1155
|
uniqueUsersByPlatformOverTime: UniqueUsersOverTimeData;
|
|
@@ -1647,6 +1649,37 @@ export type AssetQueryMetadataArgs = {
|
|
|
1647
1649
|
export declare enum AuthProtocolType {
|
|
1648
1650
|
Oidc = "OIDC"
|
|
1649
1651
|
}
|
|
1652
|
+
export type BackgroundJobReceipt = {
|
|
1653
|
+
__typename?: 'BackgroundJobReceipt';
|
|
1654
|
+
account: Account;
|
|
1655
|
+
createdAt: Scalars['DateTime'];
|
|
1656
|
+
errorCode?: Maybe<Scalars['String']>;
|
|
1657
|
+
errorMessage?: Maybe<Scalars['String']>;
|
|
1658
|
+
id: Scalars['ID'];
|
|
1659
|
+
resultId?: Maybe<Scalars['ID']>;
|
|
1660
|
+
resultType: BackgroundJobResultType;
|
|
1661
|
+
state: BackgroundJobState;
|
|
1662
|
+
tries: Scalars['Int'];
|
|
1663
|
+
updatedAt: Scalars['DateTime'];
|
|
1664
|
+
willRetry: Scalars['Boolean'];
|
|
1665
|
+
};
|
|
1666
|
+
export type BackgroundJobReceiptQuery = {
|
|
1667
|
+
__typename?: 'BackgroundJobReceiptQuery';
|
|
1668
|
+
/** Look up background job receipt by ID */
|
|
1669
|
+
byId: BackgroundJobReceipt;
|
|
1670
|
+
};
|
|
1671
|
+
export type BackgroundJobReceiptQueryByIdArgs = {
|
|
1672
|
+
id: Scalars['ID'];
|
|
1673
|
+
};
|
|
1674
|
+
export declare enum BackgroundJobResultType {
|
|
1675
|
+
GithubBuild = "GITHUB_BUILD"
|
|
1676
|
+
}
|
|
1677
|
+
export declare enum BackgroundJobState {
|
|
1678
|
+
Failure = "FAILURE",
|
|
1679
|
+
InProgress = "IN_PROGRESS",
|
|
1680
|
+
Queued = "QUEUED",
|
|
1681
|
+
Success = "SUCCESS"
|
|
1682
|
+
}
|
|
1650
1683
|
export type Billing = {
|
|
1651
1684
|
__typename?: 'Billing';
|
|
1652
1685
|
/** History of invoices */
|
|
@@ -2077,6 +2110,9 @@ export type Card = {
|
|
|
2077
2110
|
expYear?: Maybe<Scalars['Int']>;
|
|
2078
2111
|
last4?: Maybe<Scalars['String']>;
|
|
2079
2112
|
};
|
|
2113
|
+
export type ChannelFilterInput = {
|
|
2114
|
+
searchTerm?: InputMaybe<Scalars['String']>;
|
|
2115
|
+
};
|
|
2080
2116
|
export type Charge = {
|
|
2081
2117
|
__typename?: 'Charge';
|
|
2082
2118
|
amount: Scalars['Int'];
|
|
@@ -2517,8 +2553,8 @@ export declare enum GitHubAppInstallationStatus {
|
|
|
2517
2553
|
}
|
|
2518
2554
|
export type GitHubAppMutation = {
|
|
2519
2555
|
__typename?: 'GitHubAppMutation';
|
|
2520
|
-
/** Create a GitHub build for an app */
|
|
2521
|
-
createGitHubBuild:
|
|
2556
|
+
/** Create a GitHub build for an app. Returns the ID of the background job receipt. Use BackgroundJobReceiptQuery to get the status of the job. */
|
|
2557
|
+
createGitHubBuild: BackgroundJobReceipt;
|
|
2522
2558
|
};
|
|
2523
2559
|
export type GitHubAppMutationCreateGitHubBuildArgs = {
|
|
2524
2560
|
buildInput: GitHubBuildInput;
|
|
@@ -3439,6 +3475,7 @@ export type RootQuery = {
|
|
|
3439
3475
|
/** Top-level query object for querying Apple Teams. */
|
|
3440
3476
|
appleTeam: AppleTeamQuery;
|
|
3441
3477
|
asset: AssetQuery;
|
|
3478
|
+
backgroundJobReceipt: BackgroundJobReceiptQuery;
|
|
3442
3479
|
buildJobs: BuildJobQuery;
|
|
3443
3480
|
buildOrBuildJob: BuildOrBuildJobQuery;
|
|
3444
3481
|
/** Top-level query object for querying BuildPublicData publicly. */
|
|
@@ -3526,6 +3563,7 @@ export type SsoUser = Actor & UserActor & {
|
|
|
3526
3563
|
/** Coalesced project activity for all apps belonging to all accounts this user belongs to. Only resolves for the viewer. */
|
|
3527
3564
|
activityTimelineProjectActivities: Array<ActivityTimelineProjectActivity>;
|
|
3528
3565
|
appCount: Scalars['Int'];
|
|
3566
|
+
/** @deprecated No longer supported */
|
|
3529
3567
|
appetizeCode?: Maybe<Scalars['String']>;
|
|
3530
3568
|
/** Apps this user has published. If this user is the viewer, this field returns the apps the user has access to. */
|
|
3531
3569
|
apps: Array<App>;
|
|
@@ -3543,11 +3581,14 @@ export type SsoUser = Actor & UserActor & {
|
|
|
3543
3581
|
fullName?: Maybe<Scalars['String']>;
|
|
3544
3582
|
/** GitHub account linked to a user */
|
|
3545
3583
|
githubUser?: Maybe<GitHubUser>;
|
|
3584
|
+
/** @deprecated No longer supported */
|
|
3546
3585
|
githubUsername?: Maybe<Scalars['String']>;
|
|
3547
3586
|
id: Scalars['ID'];
|
|
3587
|
+
/** @deprecated No longer supported */
|
|
3548
3588
|
industry?: Maybe<Scalars['String']>;
|
|
3549
3589
|
isExpoAdmin: Scalars['Boolean'];
|
|
3550
3590
|
lastName?: Maybe<Scalars['String']>;
|
|
3591
|
+
/** @deprecated No longer supported */
|
|
3551
3592
|
location?: Maybe<Scalars['String']>;
|
|
3552
3593
|
notificationSubscriptions: Array<NotificationSubscription>;
|
|
3553
3594
|
/** Associated accounts */
|
|
@@ -3555,6 +3596,7 @@ export type SsoUser = Actor & UserActor & {
|
|
|
3555
3596
|
profilePhoto: Scalars['String'];
|
|
3556
3597
|
/** Snacks associated with this account */
|
|
3557
3598
|
snacks: Array<Snack>;
|
|
3599
|
+
/** @deprecated No longer supported */
|
|
3558
3600
|
twitterUsername?: Maybe<Scalars['String']>;
|
|
3559
3601
|
username: Scalars['String'];
|
|
3560
3602
|
};
|
|
@@ -3585,11 +3627,7 @@ export type SsoUserSnacksArgs = {
|
|
|
3585
3627
|
};
|
|
3586
3628
|
export type SsoUserDataInput = {
|
|
3587
3629
|
firstName?: InputMaybe<Scalars['String']>;
|
|
3588
|
-
githubUsername?: InputMaybe<Scalars['String']>;
|
|
3589
|
-
industry?: InputMaybe<Scalars['String']>;
|
|
3590
3630
|
lastName?: InputMaybe<Scalars['String']>;
|
|
3591
|
-
location?: InputMaybe<Scalars['String']>;
|
|
3592
|
-
twitterUsername?: InputMaybe<Scalars['String']>;
|
|
3593
3631
|
};
|
|
3594
3632
|
export type SsoUserQuery = {
|
|
3595
3633
|
__typename?: 'SSOUserQuery';
|
|
@@ -3975,6 +4013,7 @@ export type Update = ActivityTimelineProjectActivity & {
|
|
|
3975
4013
|
};
|
|
3976
4014
|
export type UpdateBranch = {
|
|
3977
4015
|
__typename?: 'UpdateBranch';
|
|
4016
|
+
app: App;
|
|
3978
4017
|
appId: Scalars['ID'];
|
|
3979
4018
|
createdAt: Scalars['DateTime'];
|
|
3980
4019
|
id: Scalars['ID'];
|
|
@@ -4022,6 +4061,7 @@ export type UpdateBranchMutationPublishUpdateGroupsArgs = {
|
|
|
4022
4061
|
};
|
|
4023
4062
|
export type UpdateChannel = {
|
|
4024
4063
|
__typename?: 'UpdateChannel';
|
|
4064
|
+
app: App;
|
|
4025
4065
|
appId: Scalars['ID'];
|
|
4026
4066
|
branchMapping: Scalars['String'];
|
|
4027
4067
|
createdAt: Scalars['DateTime'];
|
|
@@ -4146,6 +4186,7 @@ export type User = Actor & UserActor & {
|
|
|
4146
4186
|
/** Coalesced project activity for all apps belonging to all accounts this user belongs to. Only resolves for the viewer. */
|
|
4147
4187
|
activityTimelineProjectActivities: Array<ActivityTimelineProjectActivity>;
|
|
4148
4188
|
appCount: Scalars['Int'];
|
|
4189
|
+
/** @deprecated No longer supported */
|
|
4149
4190
|
appetizeCode?: Maybe<Scalars['String']>;
|
|
4150
4191
|
/** Apps this user has published */
|
|
4151
4192
|
apps: Array<App>;
|
|
@@ -4165,16 +4206,19 @@ export type User = Actor & UserActor & {
|
|
|
4165
4206
|
fullName?: Maybe<Scalars['String']>;
|
|
4166
4207
|
/** GitHub account linked to a user */
|
|
4167
4208
|
githubUser?: Maybe<GitHubUser>;
|
|
4209
|
+
/** @deprecated No longer supported */
|
|
4168
4210
|
githubUsername?: Maybe<Scalars['String']>;
|
|
4169
4211
|
/** Whether this user has any pending user invitations. Only resolves for the viewer. */
|
|
4170
4212
|
hasPendingUserInvitations: Scalars['Boolean'];
|
|
4171
4213
|
id: Scalars['ID'];
|
|
4214
|
+
/** @deprecated No longer supported */
|
|
4172
4215
|
industry?: Maybe<Scalars['String']>;
|
|
4173
4216
|
isExpoAdmin: Scalars['Boolean'];
|
|
4174
|
-
/** @deprecated
|
|
4217
|
+
/** @deprecated No longer supported */
|
|
4175
4218
|
isLegacy: Scalars['Boolean'];
|
|
4176
4219
|
isSecondFactorAuthenticationEnabled: Scalars['Boolean'];
|
|
4177
4220
|
lastName?: Maybe<Scalars['String']>;
|
|
4221
|
+
/** @deprecated No longer supported */
|
|
4178
4222
|
location?: Maybe<Scalars['String']>;
|
|
4179
4223
|
notificationSubscriptions: Array<NotificationSubscription>;
|
|
4180
4224
|
/** Pending UserInvitations for this user. Only resolves for the viewer. */
|
|
@@ -4186,6 +4230,7 @@ export type User = Actor & UserActor & {
|
|
|
4186
4230
|
secondFactorDevices: Array<UserSecondFactorDevice>;
|
|
4187
4231
|
/** Snacks associated with this account */
|
|
4188
4232
|
snacks: Array<Snack>;
|
|
4233
|
+
/** @deprecated No longer supported */
|
|
4189
4234
|
twitterUsername?: Maybe<Scalars['String']>;
|
|
4190
4235
|
username: Scalars['String'];
|
|
4191
4236
|
};
|
|
@@ -4225,6 +4270,7 @@ export type UserActor = {
|
|
|
4225
4270
|
*/
|
|
4226
4271
|
activityTimelineProjectActivities: Array<ActivityTimelineProjectActivity>;
|
|
4227
4272
|
appCount: Scalars['Int'];
|
|
4273
|
+
/** @deprecated No longer supported */
|
|
4228
4274
|
appetizeCode?: Maybe<Scalars['String']>;
|
|
4229
4275
|
/** Apps this user has published */
|
|
4230
4276
|
apps: Array<App>;
|
|
@@ -4246,11 +4292,14 @@ export type UserActor = {
|
|
|
4246
4292
|
fullName?: Maybe<Scalars['String']>;
|
|
4247
4293
|
/** GitHub account linked to a user */
|
|
4248
4294
|
githubUser?: Maybe<GitHubUser>;
|
|
4295
|
+
/** @deprecated No longer supported */
|
|
4249
4296
|
githubUsername?: Maybe<Scalars['String']>;
|
|
4250
4297
|
id: Scalars['ID'];
|
|
4298
|
+
/** @deprecated No longer supported */
|
|
4251
4299
|
industry?: Maybe<Scalars['String']>;
|
|
4252
4300
|
isExpoAdmin: Scalars['Boolean'];
|
|
4253
4301
|
lastName?: Maybe<Scalars['String']>;
|
|
4302
|
+
/** @deprecated No longer supported */
|
|
4254
4303
|
location?: Maybe<Scalars['String']>;
|
|
4255
4304
|
notificationSubscriptions: Array<NotificationSubscription>;
|
|
4256
4305
|
/** Associated accounts */
|
|
@@ -4258,6 +4307,7 @@ export type UserActor = {
|
|
|
4258
4307
|
profilePhoto: Scalars['String'];
|
|
4259
4308
|
/** Snacks associated with this user's personal account */
|
|
4260
4309
|
snacks: Array<Snack>;
|
|
4310
|
+
/** @deprecated No longer supported */
|
|
4261
4311
|
twitterUsername?: Maybe<Scalars['String']>;
|
|
4262
4312
|
username: Scalars['String'];
|
|
4263
4313
|
};
|
|
@@ -4300,17 +4350,12 @@ export type UserActorQueryByUsernameArgs = {
|
|
|
4300
4350
|
username: Scalars['String'];
|
|
4301
4351
|
};
|
|
4302
4352
|
export type UserDataInput = {
|
|
4303
|
-
appetizeCode?: InputMaybe<Scalars['String']>;
|
|
4304
4353
|
email?: InputMaybe<Scalars['String']>;
|
|
4305
4354
|
firstName?: InputMaybe<Scalars['String']>;
|
|
4306
4355
|
fullName?: InputMaybe<Scalars['String']>;
|
|
4307
|
-
githubUsername?: InputMaybe<Scalars['String']>;
|
|
4308
4356
|
id?: InputMaybe<Scalars['ID']>;
|
|
4309
|
-
industry?: InputMaybe<Scalars['String']>;
|
|
4310
4357
|
lastName?: InputMaybe<Scalars['String']>;
|
|
4311
|
-
location?: InputMaybe<Scalars['String']>;
|
|
4312
4358
|
profilePhoto?: InputMaybe<Scalars['String']>;
|
|
4313
|
-
twitterUsername?: InputMaybe<Scalars['String']>;
|
|
4314
4359
|
username?: InputMaybe<Scalars['String']>;
|
|
4315
4360
|
};
|
|
4316
4361
|
/** An pending invitation sent to an email granting membership on an Account. */
|
|
@@ -9094,6 +9139,25 @@ export type CurrentUserQuery = {
|
|
|
9094
9139
|
id: string;
|
|
9095
9140
|
featureGates: any;
|
|
9096
9141
|
isExpoAdmin: boolean;
|
|
9142
|
+
primaryAccount: {
|
|
9143
|
+
__typename?: 'Account';
|
|
9144
|
+
id: string;
|
|
9145
|
+
name: string;
|
|
9146
|
+
users: Array<{
|
|
9147
|
+
__typename?: 'UserPermission';
|
|
9148
|
+
role: Role;
|
|
9149
|
+
actor: {
|
|
9150
|
+
__typename?: 'Robot';
|
|
9151
|
+
id: string;
|
|
9152
|
+
} | {
|
|
9153
|
+
__typename?: 'SSOUser';
|
|
9154
|
+
id: string;
|
|
9155
|
+
} | {
|
|
9156
|
+
__typename?: 'User';
|
|
9157
|
+
id: string;
|
|
9158
|
+
};
|
|
9159
|
+
}>;
|
|
9160
|
+
};
|
|
9097
9161
|
accounts: Array<{
|
|
9098
9162
|
__typename?: 'Account';
|
|
9099
9163
|
id: string;
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* For more info and docs, visit https://graphql-code-generator.com/
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.
|
|
10
|
-
exports.WebhookType = exports.UsageMetricsGranularity = exports.UsageMetricType = exports.UploadSessionType = exports.SubmissionStatus = exports.SubmissionArchiveSourceType = exports.SubmissionAndroidTrack = exports.SubmissionAndroidReleaseStatus = exports.SubmissionAndroidArchiveType = exports.StatuspageServiceStatus = exports.StatuspageServiceName = exports.StatuspageIncidentStatus = exports.StatuspageIncidentImpact = void 0;
|
|
9
|
+
exports.Role = exports.ProjectArchiveSourceType = exports.Permission = exports.Order = exports.OfferType = exports.NotificationType = exports.NotificationEvent = exports.MailchimpTag = exports.MailchimpAudience = exports.IosSchemeBuildConfiguration = exports.IosManagedBuildType = exports.IosDistributionType = exports.IosBuildType = exports.InvoiceDiscountType = exports.GitHubAppInstallationStatus = exports.GitHubAppEnvironment = exports.Feature = exports.EnvironmentSecretType = exports.EasTotalPlanEnablementUnit = exports.EasServiceMetric = exports.EasService = exports.EasBuildDeprecationInfoType = exports.EasBuildBillingResourceClass = exports.DistributionType = exports.BuildWorkflow = exports.BuildTrigger = exports.BuildStatus = exports.BuildRetryDisabledReason = exports.BuildResourceClass = exports.BuildPriority = exports.BuildMode = exports.BuildJobStatus = exports.BuildJobLogsFormat = exports.BuildIosEnterpriseProvisioning = exports.BuildCredentialsSource = exports.BackgroundJobState = exports.BackgroundJobResultType = exports.AuthProtocolType = exports.AssetMetadataStatus = exports.AppsFilter = exports.AppleDeviceClass = exports.AppStoreConnectUserRole = exports.AppSort = exports.AppPrivacy = exports.AppPlatform = exports.AndroidKeystoreType = exports.AndroidFcmVersion = exports.AndroidBuildType = exports.ActivityTimelineProjectActivityType = exports.AccountAppsSortByField = void 0;
|
|
10
|
+
exports.WebhookType = exports.UsageMetricsGranularity = exports.UsageMetricType = exports.UploadSessionType = exports.SubmissionStatus = exports.SubmissionArchiveSourceType = exports.SubmissionAndroidTrack = exports.SubmissionAndroidReleaseStatus = exports.SubmissionAndroidArchiveType = exports.StatuspageServiceStatus = exports.StatuspageServiceName = exports.StatuspageIncidentStatus = exports.StatuspageIncidentImpact = exports.StandardOffer = exports.SecondFactorMethod = void 0;
|
|
11
11
|
var AccountAppsSortByField;
|
|
12
12
|
(function (AccountAppsSortByField) {
|
|
13
13
|
AccountAppsSortByField["LatestActivityTime"] = "LATEST_ACTIVITY_TIME";
|
|
@@ -100,6 +100,17 @@ var AuthProtocolType;
|
|
|
100
100
|
(function (AuthProtocolType) {
|
|
101
101
|
AuthProtocolType["Oidc"] = "OIDC";
|
|
102
102
|
})(AuthProtocolType = exports.AuthProtocolType || (exports.AuthProtocolType = {}));
|
|
103
|
+
var BackgroundJobResultType;
|
|
104
|
+
(function (BackgroundJobResultType) {
|
|
105
|
+
BackgroundJobResultType["GithubBuild"] = "GITHUB_BUILD";
|
|
106
|
+
})(BackgroundJobResultType = exports.BackgroundJobResultType || (exports.BackgroundJobResultType = {}));
|
|
107
|
+
var BackgroundJobState;
|
|
108
|
+
(function (BackgroundJobState) {
|
|
109
|
+
BackgroundJobState["Failure"] = "FAILURE";
|
|
110
|
+
BackgroundJobState["InProgress"] = "IN_PROGRESS";
|
|
111
|
+
BackgroundJobState["Queued"] = "QUEUED";
|
|
112
|
+
BackgroundJobState["Success"] = "SUCCESS";
|
|
113
|
+
})(BackgroundJobState = exports.BackgroundJobState || (exports.BackgroundJobState = {}));
|
|
103
114
|
var BuildCredentialsSource;
|
|
104
115
|
(function (BuildCredentialsSource) {
|
|
105
116
|
BuildCredentialsSource["Local"] = "LOCAL";
|
|
@@ -14,7 +14,7 @@ exports.UserQuery = {
|
|
|
14
14
|
meActor {
|
|
15
15
|
__typename
|
|
16
16
|
id
|
|
17
|
-
... on
|
|
17
|
+
... on UserActor {
|
|
18
18
|
username
|
|
19
19
|
primaryAccount {
|
|
20
20
|
id
|
|
@@ -24,9 +24,6 @@ exports.UserQuery = {
|
|
|
24
24
|
... on Robot {
|
|
25
25
|
firstName
|
|
26
26
|
}
|
|
27
|
-
... on SSOUser {
|
|
28
|
-
username
|
|
29
|
-
}
|
|
30
27
|
accounts {
|
|
31
28
|
id
|
|
32
29
|
...AccountFragment
|
|
@@ -37,7 +34,7 @@ exports.UserQuery = {
|
|
|
37
34
|
}
|
|
38
35
|
${(0, graphql_1.print)(Account_1.AccountFragmentNode)}
|
|
39
36
|
`, {}, {
|
|
40
|
-
additionalTypenames: ['User'],
|
|
37
|
+
additionalTypenames: ['User', 'SSOUser'],
|
|
41
38
|
})
|
|
42
39
|
.toPromise());
|
|
43
40
|
return data.meActor;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ExpoConfig } from '@expo/config';
|
|
1
|
+
import { ExpoConfig, modifyConfigAsync } from '@expo/config';
|
|
2
2
|
import { Env } from '@expo/eas-build-job';
|
|
3
3
|
export type PublicExpoConfig = Omit<ExpoConfig, '_internal' | 'hooks' | 'ios' | 'android' | 'updates'> & {
|
|
4
4
|
ios?: Omit<ExpoConfig['ios'], 'config'>;
|
|
@@ -9,5 +9,9 @@ export interface ExpoConfigOptions {
|
|
|
9
9
|
env?: Env;
|
|
10
10
|
skipSDKVersionRequirement?: boolean;
|
|
11
11
|
}
|
|
12
|
+
export declare function createOrModifyExpoConfigAsync(projectDir: string, exp: Partial<ExpoConfig>, readOptions?: {
|
|
13
|
+
skipSDKVersionRequirement?: boolean;
|
|
14
|
+
}): ReturnType<typeof modifyConfigAsync>;
|
|
12
15
|
export declare function getPrivateExpoConfig(projectDir: string, opts?: ExpoConfigOptions): ExpoConfig;
|
|
16
|
+
export declare function ensureExpoConfigExists(projectDir: string): void;
|
|
13
17
|
export declare function getPublicExpoConfig(projectDir: string, opts?: ExpoConfigOptions): PublicExpoConfig;
|
|
@@ -1,7 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getPublicExpoConfig = exports.getPrivateExpoConfig = void 0;
|
|
3
|
+
exports.getPublicExpoConfig = exports.ensureExpoConfigExists = exports.getPrivateExpoConfig = exports.createOrModifyExpoConfigAsync = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
4
5
|
const config_1 = require("@expo/config");
|
|
6
|
+
const json_file_1 = tslib_1.__importDefault(require("@expo/json-file"));
|
|
7
|
+
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
|
|
8
|
+
const joi_1 = tslib_1.__importDefault(require("joi"));
|
|
9
|
+
const path_1 = tslib_1.__importDefault(require("path"));
|
|
10
|
+
async function createOrModifyExpoConfigAsync(projectDir, exp, readOptions) {
|
|
11
|
+
ensureExpoConfigExists(projectDir);
|
|
12
|
+
await ensureStaticExpoConfigIsValidAsync(projectDir);
|
|
13
|
+
if (readOptions) {
|
|
14
|
+
return (0, config_1.modifyConfigAsync)(projectDir, exp, readOptions);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
return (0, config_1.modifyConfigAsync)(projectDir, exp);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.createOrModifyExpoConfigAsync = createOrModifyExpoConfigAsync;
|
|
5
21
|
function getExpoConfigInternal(projectDir, opts = {}) {
|
|
6
22
|
const originalProcessEnv = process.env;
|
|
7
23
|
try {
|
|
@@ -13,17 +29,58 @@ function getExpoConfigInternal(projectDir, opts = {}) {
|
|
|
13
29
|
skipSDKVersionRequirement: true,
|
|
14
30
|
...(opts.isPublicConfig ? { isPublicConfig: true } : {}),
|
|
15
31
|
});
|
|
32
|
+
const { error } = MinimalAppConfigSchema.validate(exp, {
|
|
33
|
+
allowUnknown: true,
|
|
34
|
+
abortEarly: true,
|
|
35
|
+
});
|
|
36
|
+
if (error) {
|
|
37
|
+
throw new Error(`Invalid app config.\n${error.message}`);
|
|
38
|
+
}
|
|
16
39
|
return exp;
|
|
17
40
|
}
|
|
18
41
|
finally {
|
|
19
42
|
process.env = originalProcessEnv;
|
|
20
43
|
}
|
|
21
44
|
}
|
|
45
|
+
const MinimalAppConfigSchema = joi_1.default.object({
|
|
46
|
+
slug: joi_1.default.string().required(),
|
|
47
|
+
name: joi_1.default.string().required(),
|
|
48
|
+
version: joi_1.default.string(),
|
|
49
|
+
android: joi_1.default.object({
|
|
50
|
+
versionCode: joi_1.default.number().integer(),
|
|
51
|
+
}),
|
|
52
|
+
ios: joi_1.default.object({
|
|
53
|
+
buildNumber: joi_1.default.string(),
|
|
54
|
+
}),
|
|
55
|
+
});
|
|
22
56
|
function getPrivateExpoConfig(projectDir, opts = {}) {
|
|
57
|
+
ensureExpoConfigExists(projectDir);
|
|
23
58
|
return getExpoConfigInternal(projectDir, { ...opts, isPublicConfig: false });
|
|
24
59
|
}
|
|
25
60
|
exports.getPrivateExpoConfig = getPrivateExpoConfig;
|
|
61
|
+
function ensureExpoConfigExists(projectDir) {
|
|
62
|
+
const paths = (0, config_1.getConfigFilePaths)(projectDir);
|
|
63
|
+
if (!(paths === null || paths === void 0 ? void 0 : paths.staticConfigPath) && !(paths === null || paths === void 0 ? void 0 : paths.dynamicConfigPath)) {
|
|
64
|
+
// eslint-disable-next-line node/no-sync
|
|
65
|
+
fs_extra_1.default.writeFileSync(path_1.default.join(projectDir, 'app.json'), JSON.stringify({ expo: {} }, null, 2));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.ensureExpoConfigExists = ensureExpoConfigExists;
|
|
69
|
+
async function ensureStaticExpoConfigIsValidAsync(projectDir) {
|
|
70
|
+
var _a;
|
|
71
|
+
const paths = (0, config_1.getConfigFilePaths)(projectDir);
|
|
72
|
+
if (((_a = paths === null || paths === void 0 ? void 0 : paths.staticConfigPath) === null || _a === void 0 ? void 0 : _a.endsWith('app.json')) && !(paths === null || paths === void 0 ? void 0 : paths.dynamicConfigPath)) {
|
|
73
|
+
const staticConfig = await json_file_1.default.readAsync(paths.staticConfigPath);
|
|
74
|
+
// Add the "expo" key if it doesn't exist on app.json yet, such as in
|
|
75
|
+
// projects initialized with RNC CLI
|
|
76
|
+
if (!(staticConfig === null || staticConfig === void 0 ? void 0 : staticConfig.expo)) {
|
|
77
|
+
staticConfig.expo = {};
|
|
78
|
+
await json_file_1.default.writeAsync(paths.staticConfigPath, staticConfig);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
26
82
|
function getPublicExpoConfig(projectDir, opts = {}) {
|
|
83
|
+
ensureExpoConfigExists(projectDir);
|
|
27
84
|
return getExpoConfigInternal(projectDir, { ...opts, isPublicConfig: true });
|
|
28
85
|
}
|
|
29
86
|
exports.getPublicExpoConfig = getPublicExpoConfig;
|
|
@@ -13,7 +13,9 @@ export declare const toAppPrivacy: (privacy: ExpoConfig['privacy']) => AppPrivac
|
|
|
13
13
|
*/
|
|
14
14
|
export declare function getProjectConfigDescription(projectDir: string): string;
|
|
15
15
|
export declare function isExpoUpdatesInstalled(projectDir: string): boolean;
|
|
16
|
+
export declare function isExpoUpdatesInstalledAsDevDependency(projectDir: string): boolean;
|
|
16
17
|
export declare function isExpoUpdatesInstalledOrAvailable(projectDir: string, sdkVersion?: string): boolean;
|
|
18
|
+
export declare function isUsingEASUpdate(exp: ExpoConfig, projectId: string): boolean;
|
|
17
19
|
export declare function validateAppVersionRuntimePolicySupportAsync(projectDir: string, exp: ExpoConfig): Promise<void>;
|
|
18
20
|
export declare function installExpoUpdatesAsync(projectDir: string, options?: {
|
|
19
21
|
silent: boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getDisplayNameForProjectIdAsync = exports.getOwnerAccountForProjectIdAsync = exports.installExpoUpdatesAsync = exports.validateAppVersionRuntimePolicySupportAsync = exports.isExpoUpdatesInstalledOrAvailable = exports.isExpoUpdatesInstalled = exports.getProjectConfigDescription = exports.toAppPrivacy = exports.getUsername = void 0;
|
|
3
|
+
exports.getDisplayNameForProjectIdAsync = exports.getOwnerAccountForProjectIdAsync = exports.installExpoUpdatesAsync = exports.validateAppVersionRuntimePolicySupportAsync = exports.isUsingEASUpdate = exports.isExpoUpdatesInstalledOrAvailable = exports.isExpoUpdatesInstalledAsDevDependency = exports.isExpoUpdatesInstalled = exports.getProjectConfigDescription = exports.toAppPrivacy = exports.getUsername = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const config_1 = require("@expo/config");
|
|
6
6
|
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
@@ -8,6 +8,7 @@ const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
|
|
|
8
8
|
const path_1 = tslib_1.__importDefault(require("path"));
|
|
9
9
|
const resolve_from_1 = tslib_1.__importDefault(require("resolve-from"));
|
|
10
10
|
const semver_1 = tslib_1.__importDefault(require("semver"));
|
|
11
|
+
const api_1 = require("../api");
|
|
11
12
|
const generated_1 = require("../graphql/generated");
|
|
12
13
|
const AppQuery_1 = require("../graphql/queries/AppQuery");
|
|
13
14
|
const log_1 = tslib_1.__importDefault(require("../log"));
|
|
@@ -16,6 +17,8 @@ function getUsername(exp, user) {
|
|
|
16
17
|
switch (user.__typename) {
|
|
17
18
|
case 'User':
|
|
18
19
|
return user.username;
|
|
20
|
+
case 'SSOUser':
|
|
21
|
+
return user.username;
|
|
19
22
|
case 'Robot':
|
|
20
23
|
// owner field is necessary to run `expo prebuild`
|
|
21
24
|
if (!exp.owner) {
|
|
@@ -23,8 +26,6 @@ function getUsername(exp, user) {
|
|
|
23
26
|
}
|
|
24
27
|
// robot users don't have usernames
|
|
25
28
|
return undefined;
|
|
26
|
-
case 'SSOUser':
|
|
27
|
-
throw new Error('SSO users are not supported yet.');
|
|
28
29
|
}
|
|
29
30
|
}
|
|
30
31
|
exports.getUsername = getUsername;
|
|
@@ -67,6 +68,11 @@ function isExpoUpdatesInstalled(projectDir) {
|
|
|
67
68
|
return !!(packageJson.dependencies && 'expo-updates' in packageJson.dependencies);
|
|
68
69
|
}
|
|
69
70
|
exports.isExpoUpdatesInstalled = isExpoUpdatesInstalled;
|
|
71
|
+
function isExpoUpdatesInstalledAsDevDependency(projectDir) {
|
|
72
|
+
const packageJson = (0, config_1.getPackageJson)(projectDir);
|
|
73
|
+
return !!(packageJson.devDependencies && 'expo-updates' in packageJson.devDependencies);
|
|
74
|
+
}
|
|
75
|
+
exports.isExpoUpdatesInstalledAsDevDependency = isExpoUpdatesInstalledAsDevDependency;
|
|
70
76
|
function isExpoUpdatesInstalledOrAvailable(projectDir, sdkVersion) {
|
|
71
77
|
// before sdk 44, expo-updates was included in with the expo module
|
|
72
78
|
if (sdkVersion && semver_1.default.lt(sdkVersion, '44.0.0')) {
|
|
@@ -75,6 +81,11 @@ function isExpoUpdatesInstalledOrAvailable(projectDir, sdkVersion) {
|
|
|
75
81
|
return isExpoUpdatesInstalled(projectDir);
|
|
76
82
|
}
|
|
77
83
|
exports.isExpoUpdatesInstalledOrAvailable = isExpoUpdatesInstalledOrAvailable;
|
|
84
|
+
function isUsingEASUpdate(exp, projectId) {
|
|
85
|
+
var _a;
|
|
86
|
+
return ((_a = exp.updates) === null || _a === void 0 ? void 0 : _a.url) === (0, api_1.getEASUpdateURL)(projectId);
|
|
87
|
+
}
|
|
88
|
+
exports.isUsingEASUpdate = isUsingEASUpdate;
|
|
78
89
|
async function validateAppVersionRuntimePolicySupportAsync(projectDir, exp) {
|
|
79
90
|
var _a;
|
|
80
91
|
if (typeof exp.runtimeVersion !== 'object' || ((_a = exp.runtimeVersion) === null || _a === void 0 ? void 0 : _a.policy) !== 'appVersion') {
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ensureEASUpdateIsConfiguredAsync = exports.ensureEASUpdateIsConfiguredInEasJsonAsync = exports.DEFAULT_BARE_RUNTIME_VERSION = exports.DEFAULT_MANAGED_RUNTIME_VERSION = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
const config_1 = require("@expo/config");
|
|
6
5
|
const eas_build_job_1 = require("@expo/eas-build-job");
|
|
7
6
|
const eas_json_1 = require("@expo/eas-json");
|
|
8
7
|
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
@@ -11,6 +10,7 @@ const api_1 = require("../api");
|
|
|
11
10
|
const generated_1 = require("../graphql/generated");
|
|
12
11
|
const log_1 = tslib_1.__importStar(require("../log"));
|
|
13
12
|
const platform_1 = require("../platform");
|
|
13
|
+
const expoConfig_1 = require("../project/expoConfig");
|
|
14
14
|
const projectUtils_1 = require("../project/projectUtils");
|
|
15
15
|
const workflow_1 = require("../project/workflow");
|
|
16
16
|
const UpdatesModule_1 = require("./android/UpdatesModule");
|
|
@@ -100,7 +100,7 @@ async function ensureEASUpdatesIsConfiguredInExpoConfigAsync({ exp, projectId, p
|
|
|
100
100
|
return { exp, projectChanged: false };
|
|
101
101
|
}
|
|
102
102
|
const mergedExp = mergeExpoConfig(exp, modifyConfig);
|
|
103
|
-
const result = await (0,
|
|
103
|
+
const result = await (0, expoConfig_1.createOrModifyExpoConfigAsync)(projectDir, mergedExp);
|
|
104
104
|
switch (result.type) {
|
|
105
105
|
case 'success':
|
|
106
106
|
logEasUpdatesAutoConfig({ exp, modifyConfig });
|
|
@@ -162,7 +162,7 @@ async function ensureEASUpdateIsConfiguredNativelyAsync(graphqlClient, { exp, pr
|
|
|
162
162
|
async function ensureEASUpdateIsConfiguredInEasJsonAsync(projectDir) {
|
|
163
163
|
const easJsonPath = eas_json_1.EasJsonAccessor.formatEasJsonPath(projectDir);
|
|
164
164
|
if (!(await fs_extra_1.default.pathExists(easJsonPath))) {
|
|
165
|
-
log_1.default.warn(`EAS Build is not configured. If you'd like to use EAS Build with EAS Update, run ${chalk_1.default.bold('eas build:configure')}
|
|
165
|
+
log_1.default.warn(`EAS Build is not configured. If you'd like to use EAS Build with EAS Update, run ${chalk_1.default.bold('eas build:configure')}.`);
|
|
166
166
|
return;
|
|
167
167
|
}
|
|
168
168
|
try {
|
|
@@ -212,9 +212,13 @@ exports.ensureEASUpdateIsConfiguredInEasJsonAsync = ensureEASUpdateIsConfiguredI
|
|
|
212
212
|
*/
|
|
213
213
|
async function ensureEASUpdateIsConfiguredAsync(graphqlClient, { exp: expWithoutUpdates, projectId, projectDir, platform, }) {
|
|
214
214
|
const hasExpoUpdates = (0, projectUtils_1.isExpoUpdatesInstalledOrAvailable)(projectDir, expWithoutUpdates.sdkVersion);
|
|
215
|
-
|
|
215
|
+
const hasExpoUpdatesInDevDependencies = (0, projectUtils_1.isExpoUpdatesInstalledAsDevDependency)(projectDir);
|
|
216
|
+
if (!hasExpoUpdates && !hasExpoUpdatesInDevDependencies) {
|
|
216
217
|
await (0, projectUtils_1.installExpoUpdatesAsync)(projectDir, { silent: false });
|
|
217
|
-
log_1.default.withTick('Installed expo
|
|
218
|
+
log_1.default.withTick('Installed expo-updates');
|
|
219
|
+
}
|
|
220
|
+
else if (hasExpoUpdatesInDevDependencies) {
|
|
221
|
+
log_1.default.warn(`The "expo-updates" package is installed as a dev dependency. This is not recommended. Move "expo-updates" to your main dependencies.`);
|
|
218
222
|
}
|
|
219
223
|
// Bail out if using a platform that doesn't require runtime versions
|
|
220
224
|
// or native setup, i.e. web.
|
|
@@ -39,10 +39,12 @@ export default class SessionManager {
|
|
|
39
39
|
*
|
|
40
40
|
* @deprecated Should not be used outside of context functions, except in the AccountLogin command.
|
|
41
41
|
*/
|
|
42
|
-
showLoginPromptAsync({ nonInteractive, printNewLine, }?: {
|
|
42
|
+
showLoginPromptAsync({ nonInteractive, printNewLine, sso, }?: {
|
|
43
43
|
nonInteractive?: boolean | undefined;
|
|
44
44
|
printNewLine?: boolean | undefined;
|
|
45
|
+
sso?: boolean | undefined;
|
|
45
46
|
}): Promise<void>;
|
|
47
|
+
private ssoLoginAsync;
|
|
46
48
|
private loginAsync;
|
|
47
49
|
/**
|
|
48
50
|
* Prompt for an OTP with the option to cancel the question by answering empty (pressing return key).
|
|
@@ -14,6 +14,7 @@ const UserQuery_1 = require("../graphql/queries/UserQuery");
|
|
|
14
14
|
const log_1 = tslib_1.__importStar(require("../log"));
|
|
15
15
|
const prompts_1 = require("../prompts");
|
|
16
16
|
const paths_1 = require("../utils/paths");
|
|
17
|
+
const fetchSessionSecretAndSsoUser_1 = require("./fetchSessionSecretAndSsoUser");
|
|
17
18
|
const fetchSessionSecretAndUser_1 = require("./fetchSessionSecretAndUser");
|
|
18
19
|
var UserSecondFactorDeviceMethod;
|
|
19
20
|
(function (UserSecondFactorDeviceMethod) {
|
|
@@ -102,14 +103,18 @@ class SessionManager {
|
|
|
102
103
|
*
|
|
103
104
|
* @deprecated Should not be used outside of context functions, except in the AccountLogin command.
|
|
104
105
|
*/
|
|
105
|
-
async showLoginPromptAsync({ nonInteractive = false, printNewLine = false, } = {}) {
|
|
106
|
+
async showLoginPromptAsync({ nonInteractive = false, printNewLine = false, sso = false, } = {}) {
|
|
106
107
|
if (nonInteractive) {
|
|
107
108
|
core_1.Errors.error(`Either log in with ${chalk_1.default.bold('eas login')} or set the ${chalk_1.default.bold('EXPO_TOKEN')} environment variable if you're using EAS CLI on CI (${(0, log_1.learnMore)('https://docs.expo.dev/accounts/programmatic-access/', { dim: false })})`);
|
|
108
109
|
}
|
|
109
110
|
if (printNewLine) {
|
|
110
111
|
log_1.default.newLine();
|
|
111
112
|
}
|
|
112
|
-
|
|
113
|
+
if (sso) {
|
|
114
|
+
await this.ssoLoginAsync();
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
log_1.default.log(`Log in to EAS with email or username (exit and run ${chalk_1.default.bold('eas login')} for other options)`);
|
|
113
118
|
const { username, password } = await (0, prompts_1.promptAsync)([
|
|
114
119
|
{
|
|
115
120
|
type: 'text',
|
|
@@ -137,6 +142,15 @@ class SessionManager {
|
|
|
137
142
|
}
|
|
138
143
|
}
|
|
139
144
|
}
|
|
145
|
+
async ssoLoginAsync() {
|
|
146
|
+
const { sessionSecret, id, username } = await (0, fetchSessionSecretAndSsoUser_1.fetchSessionSecretAndSsoUserAsync)();
|
|
147
|
+
await this.setSessionAsync({
|
|
148
|
+
sessionSecret,
|
|
149
|
+
userId: id,
|
|
150
|
+
username,
|
|
151
|
+
currentConnection: 'Browser-Flow-Authentication',
|
|
152
|
+
});
|
|
153
|
+
}
|
|
140
154
|
async loginAsync(input) {
|
|
141
155
|
const { sessionSecret, id, username } = await (0, fetchSessionSecretAndUser_1.fetchSessionSecretAndUserAsync)(input);
|
|
142
156
|
await this.setSessionAsync({
|
package/build/user/User.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CurrentUserQuery, Robot, SsoUser, User } from '../graphql/generated';
|
|
2
2
|
export type Actor = NonNullable<CurrentUserQuery['meActor']>;
|
|
3
3
|
/**
|
|
4
|
-
* Resolve the name of the actor, either normal user or robot user.
|
|
4
|
+
* Resolve the name of the actor, either normal user, sso 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
|
*/
|
package/build/user/User.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getActorUsername = exports.getActorDisplayName = void 0;
|
|
4
4
|
/**
|
|
5
|
-
* Resolve the name of the actor, either normal user or robot user.
|
|
5
|
+
* Resolve the name of the actor, either normal user, sso user or robot user.
|
|
6
6
|
* This should be used whenever the "current user" needs to be displayed.
|
|
7
7
|
* The display name CANNOT be used as project owner.
|
|
8
8
|
*/
|
package/build/user/actions.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ensureActorHasPrimaryAccount = void 0;
|
|
4
4
|
function ensureActorHasPrimaryAccount(user) {
|
|
5
|
-
if (user.__typename === 'User') {
|
|
5
|
+
if (user.__typename === 'User' || user.__typename === 'SSOUser') {
|
|
6
6
|
return user.primaryAccount;
|
|
7
7
|
}
|
|
8
8
|
throw new Error('This action is not supported for robot users.');
|