eas-cli 16.26.0 → 16.27.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 +87 -87
- package/build/commands/env/update.js +17 -9
- package/build/commands/update/index.js +3 -0
- package/build/commands/workflow/run.js +3 -1
- package/build/commands/workflow/status.js +1 -1
- package/build/graphql/generated.d.ts +176 -0
- package/build/graphql/generated.js +6 -1
- package/build/graphql/queries/AssetQuery.d.ts +5 -0
- package/build/graphql/queries/AssetQuery.js +27 -0
- package/build/graphql/queries/BranchQuery.d.ts +8 -0
- package/build/graphql/queries/BranchQuery.js +19 -8
- package/build/project/publish.d.ts +2 -4
- package/build/project/publish.js +2 -6
- package/build/update/queries.d.ts +1 -1
- package/build/update/republish.d.ts +1 -1
- package/build/update/roll-back-to-embedded.d.ts +1 -1
- package/build/update/utils.d.ts +6 -1
- package/build/update/utils.js +69 -1
- package/oclif.manifest.json +1 -1
- package/package.json +5 -4
|
@@ -173,15 +173,6 @@ class EnvUpdate extends EasCommand_1.default {
|
|
|
173
173
|
newType = undefined;
|
|
174
174
|
}
|
|
175
175
|
}
|
|
176
|
-
let environmentFilePath;
|
|
177
|
-
if ((newType ?? selectedVariable.type) === generated_1.EnvironmentSecretType.FileBase64 && value) {
|
|
178
|
-
environmentFilePath = path_1.default.resolve(value);
|
|
179
|
-
if (!(await fs_extra_1.default.pathExists(environmentFilePath))) {
|
|
180
|
-
throw new Error(`File "${value}" does not exist`);
|
|
181
|
-
}
|
|
182
|
-
fileName = path_1.default.basename(environmentFilePath);
|
|
183
|
-
}
|
|
184
|
-
value = environmentFilePath ? await fs_extra_1.default.readFile(environmentFilePath, 'base64') : value;
|
|
185
176
|
if (!environments || environments.length === 0) {
|
|
186
177
|
environments = await (0, prompts_2.promptVariableEnvironmentAsync)({
|
|
187
178
|
nonInteractive,
|
|
@@ -204,6 +195,23 @@ class EnvUpdate extends EasCommand_1.default {
|
|
|
204
195
|
}
|
|
205
196
|
}
|
|
206
197
|
}
|
|
198
|
+
// If value is provided but type is not explicitly set, preserve the existing type
|
|
199
|
+
if (value && !newType) {
|
|
200
|
+
newType = selectedVariable.type;
|
|
201
|
+
}
|
|
202
|
+
if (newType === generated_1.EnvironmentSecretType.FileBase64 && value) {
|
|
203
|
+
const environmentFilePath = path_1.default.resolve(value);
|
|
204
|
+
if (!(await fs_extra_1.default.pathExists(environmentFilePath))) {
|
|
205
|
+
if (type === 'file') {
|
|
206
|
+
throw new Error(`File "${value}" does not exist`);
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
throw new Error(`Variable "${selectedVariable.name}" is a file type, but "${value}" does not exist as a file. If you want to convert it to a string, pass --type string.`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
fileName = path_1.default.basename(environmentFilePath);
|
|
213
|
+
value = await fs_extra_1.default.readFile(environmentFilePath, 'base64');
|
|
214
|
+
}
|
|
207
215
|
if (visibility) {
|
|
208
216
|
newVisibility = (0, prompts_2.parseVisibility)(visibility);
|
|
209
217
|
}
|
|
@@ -382,6 +382,9 @@ class UpdatePublish extends EasCommand_1.default {
|
|
|
382
382
|
publishSpinner.fail('Failed to publish updates');
|
|
383
383
|
throw e;
|
|
384
384
|
}
|
|
385
|
+
if ((0, utils_1.isBundleDiffingEnabled)(exp)) {
|
|
386
|
+
await (0, utils_1.prewarmDiffingAsync)(graphqlClient, projectId, newUpdates);
|
|
387
|
+
}
|
|
385
388
|
if (!skipBundler && emitMetadata) {
|
|
386
389
|
log_1.default.log('Generating eas-update-metadata.json');
|
|
387
390
|
await (0, publish_1.generateEasMetadataAsync)(distRoot, (0, utils_1.getUpdateJsonInfosForUpdates)(newUpdates));
|
|
@@ -103,7 +103,9 @@ class WorkflowRun extends EasCommand_1.default {
|
|
|
103
103
|
nonInteractive: flags['non-interactive'],
|
|
104
104
|
withServerSideEnvironment: null,
|
|
105
105
|
});
|
|
106
|
-
const { projectId, exp: { slug: projectName }, } = await getDynamicPrivateProjectConfigAsync(
|
|
106
|
+
const { projectId, exp: { slug: projectName }, } = await getDynamicPrivateProjectConfigAsync({
|
|
107
|
+
skipPlugins: true,
|
|
108
|
+
});
|
|
107
109
|
const account = await (0, projectUtils_1.getOwnerAccountForProjectIdAsync)(graphqlClient, projectId);
|
|
108
110
|
let yamlConfig;
|
|
109
111
|
let workflowRunId;
|
|
@@ -60,7 +60,7 @@ class WorkflowStatus extends EasCommand_1.default {
|
|
|
60
60
|
});
|
|
61
61
|
const { projectId, exp: { slug: projectName }, } = await getDynamicPrivateProjectConfigAsync();
|
|
62
62
|
const account = await (0, projectUtils_1.getOwnerAccountForProjectIdAsync)(graphqlClient, projectId);
|
|
63
|
-
let workflowRunId = args.
|
|
63
|
+
let workflowRunId = args.WORKFLOW_RUN_ID;
|
|
64
64
|
if (!workflowRunId && flags['non-interactive']) {
|
|
65
65
|
throw new Error('Workflow run ID is required in non-interactive mode');
|
|
66
66
|
}
|
|
@@ -201,6 +201,7 @@ export type Account = {
|
|
|
201
201
|
pendingSentryInstallation?: Maybe<PendingSentryInstallation>;
|
|
202
202
|
profileImageUrl: Scalars['String']['output'];
|
|
203
203
|
pushSecurityEnabled: Scalars['Boolean']['output'];
|
|
204
|
+
requireTwoFactor: Scalars['Boolean']['output'];
|
|
204
205
|
/** @deprecated Legacy access tokens are deprecated */
|
|
205
206
|
requiresAccessTokenForPushSecurity: Scalars['Boolean']['output'];
|
|
206
207
|
sentryInstallation?: Maybe<SentryInstallation>;
|
|
@@ -228,8 +229,11 @@ export type Account = {
|
|
|
228
229
|
userActorOwner?: Maybe<UserActor>;
|
|
229
230
|
/** Pending user invitations for this account */
|
|
230
231
|
userInvitations: Array<UserInvitation>;
|
|
232
|
+
userSpecifiedAccountUsage?: Maybe<UserSpecifiedAccountUsage>;
|
|
231
233
|
/** Actors associated with this account and permissions they hold */
|
|
232
234
|
users: Array<UserPermission>;
|
|
235
|
+
/** Vexo account connection for this account */
|
|
236
|
+
vexoAccountConnection?: Maybe<VexoAccountConnection>;
|
|
233
237
|
/** Notification preferences of the viewer for this account */
|
|
234
238
|
viewerNotificationPreferences: Array<NotificationPreferenceItem>;
|
|
235
239
|
/** Permission info for the viewer on this account */
|
|
@@ -522,6 +526,7 @@ export declare enum AccountAppsSortByField {
|
|
|
522
526
|
export type AccountDataInput = {
|
|
523
527
|
displayName?: InputMaybe<Scalars['String']['input']>;
|
|
524
528
|
name: Scalars['String']['input'];
|
|
529
|
+
userSpecifiedAccountUsage?: InputMaybe<UserSpecifiedAccountUsage>;
|
|
525
530
|
};
|
|
526
531
|
export type AccountGoogleServiceAccountKeysConnection = {
|
|
527
532
|
__typename?: 'AccountGoogleServiceAccountKeysConnection';
|
|
@@ -557,6 +562,15 @@ export type AccountMutation = {
|
|
|
557
562
|
setDisplayName: Account;
|
|
558
563
|
/** Require authorization to send push notifications for experiences owned by this account */
|
|
559
564
|
setPushSecurityEnabled: Account;
|
|
565
|
+
/**
|
|
566
|
+
* Set whether two-factor authentication is required for this account. When enabled:
|
|
567
|
+
* - Existing members with 2FA cannot disable it
|
|
568
|
+
* - New members must enable 2FA before joining
|
|
569
|
+
* - Existing members without 2FA are not affected
|
|
570
|
+
*/
|
|
571
|
+
setRequireTwoFactor: Account;
|
|
572
|
+
/** Set the user specified account usage for the account. */
|
|
573
|
+
setUserSpecifiedAccountUsage: Account;
|
|
560
574
|
};
|
|
561
575
|
export type AccountMutationCancelAllSubscriptionsImmediatelyArgs = {
|
|
562
576
|
accountID: Scalars['ID']['input'];
|
|
@@ -604,6 +618,14 @@ export type AccountMutationSetPushSecurityEnabledArgs = {
|
|
|
604
618
|
accountID: Scalars['ID']['input'];
|
|
605
619
|
pushSecurityEnabled: Scalars['Boolean']['input'];
|
|
606
620
|
};
|
|
621
|
+
export type AccountMutationSetRequireTwoFactorArgs = {
|
|
622
|
+
accountID: Scalars['ID']['input'];
|
|
623
|
+
requireTwoFactor: Scalars['Boolean']['input'];
|
|
624
|
+
};
|
|
625
|
+
export type AccountMutationSetUserSpecifiedAccountUsageArgs = {
|
|
626
|
+
accountID: Scalars['ID']['input'];
|
|
627
|
+
userSpecifiedAccountUsage: UserSpecifiedAccountUsage;
|
|
628
|
+
};
|
|
607
629
|
/** Account-level notification preference */
|
|
608
630
|
export type AccountNotificationPreference = NotificationPreference & {
|
|
609
631
|
__typename?: 'AccountNotificationPreference';
|
|
@@ -1286,6 +1308,7 @@ export type App = Project & {
|
|
|
1286
1308
|
username: Scalars['String']['output'];
|
|
1287
1309
|
/** @deprecated No longer supported */
|
|
1288
1310
|
users?: Maybe<Array<Maybe<User>>>;
|
|
1311
|
+
vexoApp?: Maybe<VexoApp>;
|
|
1289
1312
|
/** Notification preferences of the viewer for this app */
|
|
1290
1313
|
viewerNotificationPreferences: Array<NotificationPreferenceItem>;
|
|
1291
1314
|
/** Webhooks for an app */
|
|
@@ -2674,6 +2697,8 @@ export type BuildFilter = {
|
|
|
2674
2697
|
status?: InputMaybe<BuildStatus>;
|
|
2675
2698
|
};
|
|
2676
2699
|
export type BuildFilterInput = {
|
|
2700
|
+
buildModes?: InputMaybe<Array<BuildMode>>;
|
|
2701
|
+
buildProfile?: InputMaybe<Scalars['String']['input']>;
|
|
2677
2702
|
channel?: InputMaybe<Scalars['String']['input']>;
|
|
2678
2703
|
developmentClient?: InputMaybe<Scalars['Boolean']['input']>;
|
|
2679
2704
|
distributions?: InputMaybe<Array<DistributionType>>;
|
|
@@ -3155,6 +3180,19 @@ export type CreateSubmissionResult = {
|
|
|
3155
3180
|
/** Created submission */
|
|
3156
3181
|
submission: Submission;
|
|
3157
3182
|
};
|
|
3183
|
+
export type CreateVexoAccountConnectionInput = {
|
|
3184
|
+
accountId: Scalars['ID']['input'];
|
|
3185
|
+
code: Scalars['String']['input'];
|
|
3186
|
+
};
|
|
3187
|
+
export type CreateVexoAppInput = {
|
|
3188
|
+
appId: Scalars['ID']['input'];
|
|
3189
|
+
domain?: InputMaybe<Scalars['String']['input']>;
|
|
3190
|
+
iconUrl?: InputMaybe<Scalars['String']['input']>;
|
|
3191
|
+
name: Scalars['String']['input'];
|
|
3192
|
+
owner: Scalars['String']['input'];
|
|
3193
|
+
slug: Scalars['String']['input'];
|
|
3194
|
+
vexoIdentifier: Scalars['String']['input'];
|
|
3195
|
+
};
|
|
3158
3196
|
export type CumulativeAverageMetrics = {
|
|
3159
3197
|
__typename?: 'CumulativeAverageMetrics';
|
|
3160
3198
|
averageUpdatePayloadBytes: Scalars['Int']['output'];
|
|
@@ -5323,6 +5361,12 @@ export type RootMutation = {
|
|
|
5323
5361
|
userDashboardViewPins: UserDashboardViewPinMutation;
|
|
5324
5362
|
/** Mutations that create, delete, and accept UserInvitations */
|
|
5325
5363
|
userInvitation: UserInvitationMutation;
|
|
5364
|
+
/** Mutation interface for user preferences */
|
|
5365
|
+
userPreference: UserPreferenceMutation;
|
|
5366
|
+
/** Mutations for Vexo account connections */
|
|
5367
|
+
vexoAccountConnection: VexoAccountConnectionMutation;
|
|
5368
|
+
/** Mutations for Vexo apps */
|
|
5369
|
+
vexoApp: VexoAppMutation;
|
|
5326
5370
|
/** Mutations that create, delete, update Webhooks */
|
|
5327
5371
|
webhook: WebhookMutation;
|
|
5328
5372
|
/** Mutations that modify a websiteNotification */
|
|
@@ -5448,6 +5492,10 @@ export type RootQuery = {
|
|
|
5448
5492
|
userByUsername?: Maybe<User>;
|
|
5449
5493
|
/** Top-level query object for querying UserInvitationPublicData publicly. */
|
|
5450
5494
|
userInvitationPublicData: UserInvitationPublicDataQuery;
|
|
5495
|
+
/** Query interface for user preferences */
|
|
5496
|
+
userPreference: UserPreferenceQuery;
|
|
5497
|
+
/** Top-level query object for querying Vexo Integration information. */
|
|
5498
|
+
vexoIntegration: VexoIntegrationQuery;
|
|
5451
5499
|
/**
|
|
5452
5500
|
* If authenticated as a typical end user, this is the appropriate top-level
|
|
5453
5501
|
* query object
|
|
@@ -6363,6 +6411,13 @@ export type UpdateRolloutInfoGroup = {
|
|
|
6363
6411
|
ios?: InputMaybe<UpdateRolloutInfo>;
|
|
6364
6412
|
web?: InputMaybe<UpdateRolloutInfo>;
|
|
6365
6413
|
};
|
|
6414
|
+
export type UpdateVexoAppInput = {
|
|
6415
|
+
domain?: InputMaybe<Scalars['String']['input']>;
|
|
6416
|
+
iconUrl?: InputMaybe<Scalars['String']['input']>;
|
|
6417
|
+
name?: InputMaybe<Scalars['String']['input']>;
|
|
6418
|
+
owner?: InputMaybe<Scalars['String']['input']>;
|
|
6419
|
+
slug?: InputMaybe<Scalars['String']['input']>;
|
|
6420
|
+
};
|
|
6366
6421
|
export type UpdatesFilter = {
|
|
6367
6422
|
platform?: InputMaybe<AppPlatform>;
|
|
6368
6423
|
runtimeVersions?: InputMaybe<Array<Scalars['String']['input']>>;
|
|
@@ -6823,6 +6878,8 @@ export type UserInvitation = {
|
|
|
6823
6878
|
* @deprecated Use accountProfileImageUrl
|
|
6824
6879
|
*/
|
|
6825
6880
|
accountProfilePhoto?: Maybe<Scalars['String']['output']>;
|
|
6881
|
+
/** Whether the account requires two-factor authentication */
|
|
6882
|
+
accountRequiresTwoFactor: Scalars['Boolean']['output'];
|
|
6826
6883
|
created: Scalars['DateTime']['output'];
|
|
6827
6884
|
/** Email to which this invitation was sent */
|
|
6828
6885
|
email: Scalars['String']['output'];
|
|
@@ -6892,6 +6949,7 @@ export type UserInvitationPublicData = {
|
|
|
6892
6949
|
accountName: Scalars['String']['output'];
|
|
6893
6950
|
accountProfileImageUrl: Scalars['String']['output'];
|
|
6894
6951
|
accountProfilePhoto?: Maybe<Scalars['String']['output']>;
|
|
6952
|
+
accountRequiresTwoFactor: Scalars['Boolean']['output'];
|
|
6895
6953
|
created: Scalars['DateTime']['output'];
|
|
6896
6954
|
email: Scalars['String']['output'];
|
|
6897
6955
|
expires: Scalars['DateTime']['output'];
|
|
@@ -6921,6 +6979,42 @@ export type UserPermission = {
|
|
|
6921
6979
|
user?: Maybe<User>;
|
|
6922
6980
|
userActor?: Maybe<UserActor>;
|
|
6923
6981
|
};
|
|
6982
|
+
/** A single user preference key-value pair */
|
|
6983
|
+
export type UserPreference = {
|
|
6984
|
+
__typename?: 'UserPreference';
|
|
6985
|
+
createdAt: Scalars['DateTime']['output'];
|
|
6986
|
+
id: Scalars['ID']['output'];
|
|
6987
|
+
key: Scalars['String']['output'];
|
|
6988
|
+
updatedAt: Scalars['DateTime']['output'];
|
|
6989
|
+
value: Scalars['JSON']['output'];
|
|
6990
|
+
};
|
|
6991
|
+
/** Mutation interface for user preferences */
|
|
6992
|
+
export type UserPreferenceMutation = {
|
|
6993
|
+
__typename?: 'UserPreferenceMutation';
|
|
6994
|
+
/** Delete a user preference by key */
|
|
6995
|
+
delete?: Maybe<UserPreference>;
|
|
6996
|
+
/** Set a user preference value by key */
|
|
6997
|
+
set: UserPreference;
|
|
6998
|
+
};
|
|
6999
|
+
/** Mutation interface for user preferences */
|
|
7000
|
+
export type UserPreferenceMutationDeleteArgs = {
|
|
7001
|
+
key: Scalars['String']['input'];
|
|
7002
|
+
};
|
|
7003
|
+
/** Mutation interface for user preferences */
|
|
7004
|
+
export type UserPreferenceMutationSetArgs = {
|
|
7005
|
+
key: Scalars['String']['input'];
|
|
7006
|
+
value: Scalars['JSON']['input'];
|
|
7007
|
+
};
|
|
7008
|
+
/** Query interface for user preferences */
|
|
7009
|
+
export type UserPreferenceQuery = {
|
|
7010
|
+
__typename?: 'UserPreferenceQuery';
|
|
7011
|
+
/** Get a user preference by key */
|
|
7012
|
+
get?: Maybe<UserPreference>;
|
|
7013
|
+
};
|
|
7014
|
+
/** Query interface for user preferences */
|
|
7015
|
+
export type UserPreferenceQueryGetArgs = {
|
|
7016
|
+
key: Scalars['String']['input'];
|
|
7017
|
+
};
|
|
6924
7018
|
export type UserPreferences = {
|
|
6925
7019
|
__typename?: 'UserPreferences';
|
|
6926
7020
|
onboarding?: Maybe<UserPreferencesOnboarding>;
|
|
@@ -6991,6 +7085,69 @@ export type UserSecondFactorDevice = {
|
|
|
6991
7085
|
updatedAt: Scalars['DateTime']['output'];
|
|
6992
7086
|
user: User;
|
|
6993
7087
|
};
|
|
7088
|
+
export declare enum UserSpecifiedAccountUsage {
|
|
7089
|
+
Company = "COMPANY",
|
|
7090
|
+
Personal = "PERSONAL"
|
|
7091
|
+
}
|
|
7092
|
+
export type VexoAccountAccessToken = {
|
|
7093
|
+
__typename?: 'VexoAccountAccessToken';
|
|
7094
|
+
access_token: Scalars['String']['output'];
|
|
7095
|
+
expires_at?: Maybe<Scalars['String']['output']>;
|
|
7096
|
+
token_type: Scalars['String']['output'];
|
|
7097
|
+
};
|
|
7098
|
+
export type VexoAccountConnection = {
|
|
7099
|
+
__typename?: 'VexoAccountConnection';
|
|
7100
|
+
accessToken: VexoAccountAccessToken;
|
|
7101
|
+
account: Account;
|
|
7102
|
+
id: Scalars['ID']['output'];
|
|
7103
|
+
};
|
|
7104
|
+
export type VexoAccountConnectionMutation = {
|
|
7105
|
+
__typename?: 'VexoAccountConnectionMutation';
|
|
7106
|
+
/** Create a Vexo account connection for an Account */
|
|
7107
|
+
createVexoAccountConnection: VexoAccountConnection;
|
|
7108
|
+
/** Delete a Vexo account connection by ID and revoke the access token */
|
|
7109
|
+
revokeAndDeleteVexoAccountConnection: VexoAccountConnection;
|
|
7110
|
+
};
|
|
7111
|
+
export type VexoAccountConnectionMutationCreateVexoAccountConnectionArgs = {
|
|
7112
|
+
vexoAccountConnectionData: CreateVexoAccountConnectionInput;
|
|
7113
|
+
};
|
|
7114
|
+
export type VexoAccountConnectionMutationRevokeAndDeleteVexoAccountConnectionArgs = {
|
|
7115
|
+
vexoAccountConnectionId: Scalars['ID']['input'];
|
|
7116
|
+
};
|
|
7117
|
+
export type VexoApp = {
|
|
7118
|
+
__typename?: 'VexoApp';
|
|
7119
|
+
app: App;
|
|
7120
|
+
domain?: Maybe<Scalars['String']['output']>;
|
|
7121
|
+
iconUrl?: Maybe<Scalars['String']['output']>;
|
|
7122
|
+
id: Scalars['ID']['output'];
|
|
7123
|
+
name: Scalars['String']['output'];
|
|
7124
|
+
owner: Scalars['String']['output'];
|
|
7125
|
+
slug: Scalars['String']['output'];
|
|
7126
|
+
vexoIdentifier: Scalars['String']['output'];
|
|
7127
|
+
};
|
|
7128
|
+
export type VexoAppMutation = {
|
|
7129
|
+
__typename?: 'VexoAppMutation';
|
|
7130
|
+
/** Create a Vexo app for an App */
|
|
7131
|
+
createVexoApp: VexoApp;
|
|
7132
|
+
/** Delete a Vexo app by ID */
|
|
7133
|
+
deleteVexoApp: VexoApp;
|
|
7134
|
+
/** Update a Vexo app by ID */
|
|
7135
|
+
updateVexoApp: VexoApp;
|
|
7136
|
+
};
|
|
7137
|
+
export type VexoAppMutationCreateVexoAppArgs = {
|
|
7138
|
+
vexoAppData: CreateVexoAppInput;
|
|
7139
|
+
};
|
|
7140
|
+
export type VexoAppMutationDeleteVexoAppArgs = {
|
|
7141
|
+
vexoAppId: Scalars['ID']['input'];
|
|
7142
|
+
};
|
|
7143
|
+
export type VexoAppMutationUpdateVexoAppArgs = {
|
|
7144
|
+
vexoAppData: UpdateVexoAppInput;
|
|
7145
|
+
vexoAppId: Scalars['ID']['input'];
|
|
7146
|
+
};
|
|
7147
|
+
export type VexoIntegrationQuery = {
|
|
7148
|
+
__typename?: 'VexoIntegrationQuery';
|
|
7149
|
+
clientIdentifier: Scalars['String']['output'];
|
|
7150
|
+
};
|
|
6994
7151
|
export type WebNotificationUpdateReadStateInput = {
|
|
6995
7152
|
id: Scalars['ID']['input'];
|
|
6996
7153
|
isRead: Scalars['Boolean']['input'];
|
|
@@ -7487,6 +7644,7 @@ export type WorkflowJob = {
|
|
|
7487
7644
|
approvals: Array<WorkflowJobApproval>;
|
|
7488
7645
|
createdAt: Scalars['DateTime']['output'];
|
|
7489
7646
|
credentialsAppleDeviceRegistrationRequest?: Maybe<AppleDeviceRegistrationRequest>;
|
|
7647
|
+
environment?: Maybe<Scalars['String']['output']>;
|
|
7490
7648
|
errors: Array<WorkflowJobError>;
|
|
7491
7649
|
id: Scalars['ID']['output'];
|
|
7492
7650
|
key: Scalars['String']['output'];
|
|
@@ -12922,6 +13080,22 @@ export type LatestAppVersionQuery = {
|
|
|
12922
13080
|
};
|
|
12923
13081
|
};
|
|
12924
13082
|
};
|
|
13083
|
+
export type GetAssetSignedUrlsQueryVariables = Exact<{
|
|
13084
|
+
updateId: Scalars['ID']['input'];
|
|
13085
|
+
storageKeys: Array<Scalars['String']['input']> | Scalars['String']['input'];
|
|
13086
|
+
}>;
|
|
13087
|
+
export type GetAssetSignedUrlsQuery = {
|
|
13088
|
+
__typename?: 'RootQuery';
|
|
13089
|
+
asset: {
|
|
13090
|
+
__typename?: 'AssetQuery';
|
|
13091
|
+
signedUrls: Array<{
|
|
13092
|
+
__typename?: 'AssetSignedUrlResult';
|
|
13093
|
+
storageKey: string;
|
|
13094
|
+
url: string;
|
|
13095
|
+
headers?: any | null;
|
|
13096
|
+
}>;
|
|
13097
|
+
};
|
|
13098
|
+
};
|
|
12925
13099
|
export type BackgroundJobReceiptByIdQueryVariables = Exact<{
|
|
12926
13100
|
id: Scalars['ID']['input'];
|
|
12927
13101
|
}>;
|
|
@@ -12969,6 +13143,8 @@ export type ViewLatestUpdateOnBranchQueryVariables = Exact<{
|
|
|
12969
13143
|
branchName: Scalars['String']['input'];
|
|
12970
13144
|
platform: AppPlatform;
|
|
12971
13145
|
runtimeVersion: Scalars['String']['input'];
|
|
13146
|
+
offset: Scalars['Int']['input'];
|
|
13147
|
+
limit: Scalars['Int']['input'];
|
|
12972
13148
|
}>;
|
|
12973
13149
|
export type ViewLatestUpdateOnBranchQuery = {
|
|
12974
13150
|
__typename?: 'RootQuery';
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.EnvironmentVariableVisibility = exports.EnvironmentVariableScope = exports.EnvironmentSecretType = exports.EntityTypeName = exports.EasTotalPlanEnablementUnit = exports.EasServiceMetric = exports.EasService = exports.EasBuildWaiverType = exports.EasBuildDeprecationInfoType = exports.EasBuildBillingResourceClass = exports.DistributionType = exports.DashboardViewPin = exports.CustomDomainStatus = exports.CustomDomainDnsRecordType = exports.CrashSampleFor = exports.ContinentCode = exports.BuildWorkflow = exports.BuildTrigger = exports.BuildStatus = exports.BuildRetryDisabledReason = exports.BuildResourceClass = exports.BuildPriority = exports.BuildPhase = exports.BuildMode = exports.BuildLimitThresholdExceededMetadataType = exports.BuildIosEnterpriseProvisioning = exports.BuildCredentialsSource = exports.BuildAnnotationType = exports.BackgroundJobState = exports.BackgroundJobResultType = exports.AuthProviderIdentifier = exports.AuthProtocolType = exports.AuditLogsExportFormat = exports.AssetMetadataStatus = exports.AssetMapSourceType = exports.AppsFilter = exports.AppleTeamType = exports.AppleDeviceClass = exports.AppUploadSessionType = exports.AppStoreConnectUserRole = exports.AppSort = exports.AppPrivacy = exports.AppPlatform = exports.AppInternalDistributionBuildPrivacy = exports.AndroidKeystoreType = exports.AndroidFcmVersion = exports.AndroidBuildType = exports.ActivityTimelineProjectActivityType = exports.AccountUploadSessionType = exports.AccountAppsSortByField = void 0;
|
|
10
10
|
exports.SubmissionStatus = exports.SubmissionPriority = exports.SubmissionArchiveSourceType = exports.SubmissionAndroidReleaseStatus = exports.SubmissionAndroidArchiveType = exports.StatuspageServiceStatus = exports.StatuspageServiceName = exports.StatuspageIncidentStatus = exports.StatuspageIncidentImpact = exports.StandardOffer = exports.SecondFactorMethod = exports.Role = exports.ResponseType = exports.ResponseStatusType = exports.ResponseCacheStatus = exports.ResourceClassExperiment = exports.RequestsOrderByField = exports.RequestsOrderByDirection = exports.RequestMethod = exports.ProjectArchiveSourceType = exports.Permission = exports.Order = exports.OnboardingEnvironment = exports.OnboardingDeviceType = exports.OfferType = exports.NotificationType = exports.NotificationEvent = exports.MailchimpTag = exports.MailchimpAudience = exports.LocalBuildArchiveSourceType = exports.JobRunStatus = exports.JobRunPriority = exports.IosSchemeBuildConfiguration = exports.IosManagedBuildType = exports.IosDistributionType = exports.IosBuildType = exports.InvoiceDiscountType = exports.InsightsFilterType = exports.GitHubJobRunTriggerType = exports.GitHubJobRunTriggerRunStatus = exports.GitHubJobRunJobType = exports.GitHubBuildTriggerType = exports.GitHubBuildTriggerRunStatus = exports.GitHubBuildTriggerExecutionBehavior = exports.GitHubAppInstallationStatus = exports.GitHubAppInstallationAccountType = exports.GitHubAppEnvironment = exports.FingerprintSourceType = exports.Feature = exports.Experiment = void 0;
|
|
11
|
-
exports.WorkflowRunTriggerEventType = exports.WorkflowRunStatus = exports.WorkflowProjectSourceType = exports.WorkflowJobType = exports.WorkflowJobStatus = exports.WorkflowJobReviewDecision = exports.WorkflowArtifactStorageType = exports.WorkerLoggerLevel = exports.WorkerDeploymentLogLevel = exports.WorkerDeploymentCrashKind = exports.WebhookType = exports.UserEntityTypeName = exports.UserAgentPlatform = exports.UserAgentOs = exports.UserAgentBrowser = exports.UsageMetricsGranularity = exports.UsageMetricType = exports.UploadSessionType = exports.TargetEntityMutationType = void 0;
|
|
11
|
+
exports.WorkflowRunTriggerEventType = exports.WorkflowRunStatus = exports.WorkflowProjectSourceType = exports.WorkflowJobType = exports.WorkflowJobStatus = exports.WorkflowJobReviewDecision = exports.WorkflowArtifactStorageType = exports.WorkerLoggerLevel = exports.WorkerDeploymentLogLevel = exports.WorkerDeploymentCrashKind = exports.WebhookType = exports.UserSpecifiedAccountUsage = exports.UserEntityTypeName = exports.UserAgentPlatform = exports.UserAgentOs = exports.UserAgentBrowser = exports.UsageMetricsGranularity = exports.UsageMetricType = exports.UploadSessionType = exports.TargetEntityMutationType = void 0;
|
|
12
12
|
var AccountAppsSortByField;
|
|
13
13
|
(function (AccountAppsSortByField) {
|
|
14
14
|
AccountAppsSortByField["LatestActivityTime"] = "LATEST_ACTIVITY_TIME";
|
|
@@ -830,6 +830,11 @@ var UserEntityTypeName;
|
|
|
830
830
|
UserEntityTypeName["UserSecondFactorBackupCodesEntity"] = "UserSecondFactorBackupCodesEntity";
|
|
831
831
|
UserEntityTypeName["UserSecondFactorDeviceEntity"] = "UserSecondFactorDeviceEntity";
|
|
832
832
|
})(UserEntityTypeName || (exports.UserEntityTypeName = UserEntityTypeName = {}));
|
|
833
|
+
var UserSpecifiedAccountUsage;
|
|
834
|
+
(function (UserSpecifiedAccountUsage) {
|
|
835
|
+
UserSpecifiedAccountUsage["Company"] = "COMPANY";
|
|
836
|
+
UserSpecifiedAccountUsage["Personal"] = "PERSONAL";
|
|
837
|
+
})(UserSpecifiedAccountUsage || (exports.UserSpecifiedAccountUsage = UserSpecifiedAccountUsage = {}));
|
|
833
838
|
var WebhookType;
|
|
834
839
|
(function (WebhookType) {
|
|
835
840
|
WebhookType["Build"] = "BUILD";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ExpoGraphqlClient } from '../../commandUtils/context/contextUtils/createGraphqlClient';
|
|
2
|
+
import { AssetSignedUrlResult } from '../generated';
|
|
3
|
+
export declare const AssetQuery: {
|
|
4
|
+
getSignedUrlsAsync(graphqlClient: ExpoGraphqlClient, updateId: string, storageKeys: string[]): Promise<AssetSignedUrlResult[]>;
|
|
5
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AssetQuery = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const graphql_tag_1 = tslib_1.__importDefault(require("graphql-tag"));
|
|
6
|
+
const client_1 = require("../client");
|
|
7
|
+
exports.AssetQuery = {
|
|
8
|
+
async getSignedUrlsAsync(graphqlClient, updateId, storageKeys) {
|
|
9
|
+
const data = await (0, client_1.withErrorHandlingAsync)(graphqlClient
|
|
10
|
+
.query((0, graphql_tag_1.default) `
|
|
11
|
+
query GetAssetSignedUrls($updateId: ID!, $storageKeys: [String!]!) {
|
|
12
|
+
asset {
|
|
13
|
+
signedUrls(updateId: $updateId, storageKeys: $storageKeys) {
|
|
14
|
+
storageKey
|
|
15
|
+
url
|
|
16
|
+
headers
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
`, {
|
|
21
|
+
updateId,
|
|
22
|
+
storageKeys,
|
|
23
|
+
}, { additionalTypenames: [] })
|
|
24
|
+
.toPromise());
|
|
25
|
+
return data.asset.signedUrls;
|
|
26
|
+
},
|
|
27
|
+
};
|
|
@@ -3,6 +3,14 @@ import { AppPlatform, BranchesBasicPaginatedOnAppQuery, BranchesBasicPaginatedOn
|
|
|
3
3
|
export type UpdateBranchOnChannelObject = NonNullable<ViewBranchesOnUpdateChannelQuery['app']['byId']['updateChannelByName']>['updateBranches'][number];
|
|
4
4
|
export declare const BranchQuery: {
|
|
5
5
|
getBranchByNameAsync(graphqlClient: ExpoGraphqlClient, { appId, name }: ViewBranchQueryVariables): Promise<UpdateBranchBasicInfoFragment>;
|
|
6
|
+
getUpdateIdsOnBranchAsync(graphqlClient: ExpoGraphqlClient, { appId, branchName, platform, runtimeVersion, offset, limit, }: {
|
|
7
|
+
appId: string;
|
|
8
|
+
branchName: string;
|
|
9
|
+
platform: AppPlatform;
|
|
10
|
+
runtimeVersion: string;
|
|
11
|
+
offset?: number | undefined;
|
|
12
|
+
limit?: number | undefined;
|
|
13
|
+
}): Promise<string[]>;
|
|
6
14
|
getLatestUpdateIdOnBranchAsync(graphqlClient: ExpoGraphqlClient, { appId, branchName, platform, runtimeVersion, }: {
|
|
7
15
|
appId: string;
|
|
8
16
|
branchName: string;
|
|
@@ -36,7 +36,7 @@ exports.BranchQuery = {
|
|
|
36
36
|
}
|
|
37
37
|
return updateBranchByName;
|
|
38
38
|
},
|
|
39
|
-
async
|
|
39
|
+
async getUpdateIdsOnBranchAsync(graphqlClient, { appId, branchName, platform, runtimeVersion, offset = 0, limit = 1, }) {
|
|
40
40
|
const response = await (0, client_1.withErrorHandlingAsync)(graphqlClient
|
|
41
41
|
.query((0, graphql_tag_1.default) `
|
|
42
42
|
query ViewLatestUpdateOnBranch(
|
|
@@ -44,6 +44,8 @@ exports.BranchQuery = {
|
|
|
44
44
|
$branchName: String!
|
|
45
45
|
$platform: AppPlatform!
|
|
46
46
|
$runtimeVersion: String!
|
|
47
|
+
$offset: Int!
|
|
48
|
+
$limit: Int!
|
|
47
49
|
) {
|
|
48
50
|
app {
|
|
49
51
|
byId(appId: $appId) {
|
|
@@ -51,8 +53,8 @@ exports.BranchQuery = {
|
|
|
51
53
|
updateBranchByName(name: $branchName) {
|
|
52
54
|
id
|
|
53
55
|
updates(
|
|
54
|
-
offset:
|
|
55
|
-
limit:
|
|
56
|
+
offset: $offset
|
|
57
|
+
limit: $limit
|
|
56
58
|
filter: { platform: $platform, runtimeVersions: [$runtimeVersion] }
|
|
57
59
|
) {
|
|
58
60
|
id
|
|
@@ -66,17 +68,26 @@ exports.BranchQuery = {
|
|
|
66
68
|
branchName,
|
|
67
69
|
platform,
|
|
68
70
|
runtimeVersion,
|
|
71
|
+
offset,
|
|
72
|
+
limit,
|
|
69
73
|
}, { additionalTypenames: ['UpdateBranch'] })
|
|
70
74
|
.toPromise());
|
|
71
75
|
const { updateBranchByName } = response.app.byId;
|
|
72
76
|
if (!updateBranchByName) {
|
|
73
77
|
throw new utils_1.BranchNotFoundError(`Could not find a branch named "${branchName}".`);
|
|
74
78
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
79
|
+
return updateBranchByName.updates.map(update => update.id);
|
|
80
|
+
},
|
|
81
|
+
async getLatestUpdateIdOnBranchAsync(graphqlClient, { appId, branchName, platform, runtimeVersion, }) {
|
|
82
|
+
const updateIds = await this.getUpdateIdsOnBranchAsync(graphqlClient, {
|
|
83
|
+
appId,
|
|
84
|
+
branchName,
|
|
85
|
+
platform,
|
|
86
|
+
runtimeVersion,
|
|
87
|
+
offset: 0,
|
|
88
|
+
limit: 1,
|
|
89
|
+
});
|
|
90
|
+
return updateIds[0] ?? null;
|
|
80
91
|
},
|
|
81
92
|
async listBranchesOnAppAsync(graphqlClient, { appId, limit, offset }) {
|
|
82
93
|
const data = await (0, client_1.withErrorHandlingAsync)(graphqlClient
|
|
@@ -4,11 +4,10 @@ import { Env, Platform, Workflow } from '@expo/eas-build-job';
|
|
|
4
4
|
import Joi from 'joi';
|
|
5
5
|
import { ExpoGraphqlClient } from '../commandUtils/context/contextUtils/createGraphqlClient';
|
|
6
6
|
import { PaginatedQueryOptions } from '../commandUtils/pagination';
|
|
7
|
-
import {
|
|
7
|
+
import { BuildFragment, FingerprintSourceInput, PartialManifestAsset, UpdateRolloutInfoGroup } from '../graphql/generated';
|
|
8
8
|
import { RequestedPlatform } from '../platform';
|
|
9
|
-
import { UpdateJsonInfo } from '../update/utils';
|
|
9
|
+
import { UpdateJsonInfo, UpdatePublishPlatform } from '../update/utils';
|
|
10
10
|
import { Client } from '../vcs/vcs';
|
|
11
|
-
export type UpdatePublishPlatform = 'ios' | 'android';
|
|
12
11
|
type Metadata = {
|
|
13
12
|
version: number;
|
|
14
13
|
bundler: 'metro';
|
|
@@ -203,7 +202,6 @@ export declare function findCompatibleBuildsAsync(graphqlClient: ExpoGraphqlClie
|
|
|
203
202
|
};
|
|
204
203
|
}>;
|
|
205
204
|
export declare const platformDisplayNames: Record<UpdatePublishPlatform, string>;
|
|
206
|
-
export declare const updatePublishPlatformToAppPlatform: Record<UpdatePublishPlatform, AppPlatform>;
|
|
207
205
|
export declare function getRuntimeToUpdateRolloutInfoGroupMappingAsync(graphqlClient: ExpoGraphqlClient, { appId, branchName, rolloutPercentage, runtimeToPlatformsAndFingerprintInfoMapping, }: {
|
|
208
206
|
appId: string;
|
|
209
207
|
branchName: string;
|
package/build/project/publish.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getUpdateRolloutInfoGroupAsync = exports.getRuntimeToUpdateRolloutInfoGroupMappingAsync = exports.
|
|
3
|
+
exports.getUpdateRolloutInfoGroupAsync = exports.getRuntimeToUpdateRolloutInfoGroupMappingAsync = exports.platformDisplayNames = exports.findCompatibleBuildsAsync = exports.maybeCalculateFingerprintForRuntimeVersionInfoObjectsWithoutExpoUpdatesAsync = exports.getRuntimeToPlatformsAndFingerprintInfoMappingFromRuntimeVersionInfoObjects = exports.getRuntimeVersionInfoObjectsAsync = exports.defaultPublishPlatforms = exports.getUpdateMessageForCommandAsync = exports.getBranchNameForCommandAsync = exports.isUploadedAssetCountAboveWarningThreshold = exports.uploadAssetsAsync = exports.filterOutAssetsThatAlreadyExistAsync = exports.collectAssetsAsync = exports.getOriginalPathFromAssetMap = exports.getAssetHashFromPath = exports.filterCollectedAssetsByRequestedPlatforms = exports.generateEasMetadataAsync = 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
5
|
const config_plugins_1 = require("@expo/config-plugins");
|
|
6
6
|
const eas_build_job_1 = require("@expo/eas-build-job");
|
|
@@ -626,10 +626,6 @@ exports.platformDisplayNames = {
|
|
|
626
626
|
android: 'Android',
|
|
627
627
|
ios: 'iOS',
|
|
628
628
|
};
|
|
629
|
-
exports.updatePublishPlatformToAppPlatform = {
|
|
630
|
-
android: generated_1.AppPlatform.Android,
|
|
631
|
-
ios: generated_1.AppPlatform.Ios,
|
|
632
|
-
};
|
|
633
629
|
async function getRuntimeToUpdateRolloutInfoGroupMappingAsync(graphqlClient, { appId, branchName, rolloutPercentage, runtimeToPlatformsAndFingerprintInfoMapping, }) {
|
|
634
630
|
const runtimeToPlatformsMap = new Map(runtimeToPlatformsAndFingerprintInfoMapping.map(r => [r.runtimeVersion, r.platforms]));
|
|
635
631
|
return await (0, mapMapAsync_1.default)(runtimeToPlatformsMap, async (platforms, runtimeVersion) => {
|
|
@@ -650,7 +646,7 @@ async function getUpdateRolloutInfoGroupAsync(graphqlClient, { appId, branchName
|
|
|
650
646
|
appId,
|
|
651
647
|
branchName,
|
|
652
648
|
runtimeVersion,
|
|
653
|
-
platform:
|
|
649
|
+
platform: utils_2.updatePublishPlatformToAppPlatform[platform],
|
|
654
650
|
});
|
|
655
651
|
return [platform, { rolloutPercentage, rolloutControlUpdateId: updateIdForPlatform }];
|
|
656
652
|
})));
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { UpdatePublishPlatform } from './utils';
|
|
1
2
|
import { ExpoGraphqlClient } from '../commandUtils/context/contextUtils/createGraphqlClient';
|
|
2
3
|
import { PaginatedQueryOptions } from '../commandUtils/pagination';
|
|
3
4
|
import { RuntimeFragment, UpdateFragment } from '../graphql/generated';
|
|
4
|
-
import { UpdatePublishPlatform } from '../project/publish';
|
|
5
5
|
export declare const UPDATES_LIMIT = 50;
|
|
6
6
|
export declare const UPDATE_GROUPS_LIMIT = 25;
|
|
7
7
|
export declare const RUNTIME_VERSIONS_LIMIT = 25;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ExpoConfig } from '@expo/config';
|
|
2
|
+
import { UpdatePublishPlatform } from './utils';
|
|
2
3
|
import { ExpoGraphqlClient } from '../commandUtils/context/contextUtils/createGraphqlClient';
|
|
3
4
|
import { UpdateFragment } from '../graphql/generated';
|
|
4
|
-
import { UpdatePublishPlatform } from '../project/publish';
|
|
5
5
|
import { CodeSigningInfo } from '../utils/code-signing';
|
|
6
6
|
export type UpdateToRepublish = {
|
|
7
7
|
groupId: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ExpoConfig } from '@expo/config';
|
|
2
|
+
import { UpdatePublishPlatform } from './utils';
|
|
2
3
|
import { ExpoGraphqlClient } from '../commandUtils/context/contextUtils/createGraphqlClient';
|
|
3
|
-
import { UpdatePublishPlatform } from '../project/publish';
|
|
4
4
|
import { CodeSigningInfo } from '../utils/code-signing';
|
|
5
5
|
export declare function publishRollBackToEmbeddedUpdateAsync({ graphqlClient, projectId, exp, updateMessage, branch, codeSigningInfo, platforms, runtimeVersion, json, }: {
|
|
6
6
|
graphqlClient: ExpoGraphqlClient;
|
package/build/update/utils.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ExpoConfig } from '@expo/config';
|
|
2
|
-
import {
|
|
2
|
+
import { ExpoGraphqlClient } from '../commandUtils/context/contextUtils/createGraphqlClient';
|
|
3
|
+
import { AppPlatform, Robot, SsoUser, Update, UpdateBranchFragment, UpdateFragment, UpdatePublishMutation, User } from '../graphql/generated';
|
|
3
4
|
import { RequestedPlatform } from '../platform';
|
|
4
5
|
export type FormatUpdateParameter = Pick<Update, 'id' | 'createdAt' | 'message'> & {
|
|
5
6
|
actor?: Pick<Robot, '__typename' | 'firstName'> | Pick<User, '__typename' | 'username'> | Pick<SsoUser, '__typename' | 'username'> | null;
|
|
@@ -53,3 +54,7 @@ export declare function getUpdateJsonInfosForUpdates(updates: UpdateFragment[]):
|
|
|
53
54
|
export declare function getUpdateGroupDescriptions(updateGroups: UpdateFragment[][]): FormattedUpdateGroupDescription[];
|
|
54
55
|
export declare function getUpdateGroupDescriptionsWithBranch(updateGroups: UpdateFragment[][]): FormattedUpdateGroupDescriptionWithBranch[];
|
|
55
56
|
export declare function getBranchDescription(branch: UpdateBranchFragment): FormattedBranchDescription;
|
|
57
|
+
export declare function isBundleDiffingEnabled(exp: ExpoConfig): boolean;
|
|
58
|
+
export declare function prewarmDiffingAsync(graphqlClient: ExpoGraphqlClient, appId: string, newUpdates: UpdatePublishMutation['updateBranch']['publishUpdateGroups']): Promise<void>;
|
|
59
|
+
export type UpdatePublishPlatform = 'ios' | 'android';
|
|
60
|
+
export declare const updatePublishPlatformToAppPlatform: Record<UpdatePublishPlatform, AppPlatform>;
|