eas-cli 3.9.3 → 3.10.1

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.
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const tslib_1 = require("tslib");
5
+ const apple_utils_1 = require("@expo/apple-utils");
6
+ const core_1 = require("@oclif/core");
7
+ const assert_1 = tslib_1.__importDefault(require("assert"));
8
+ const EasCommand_1 = tslib_1.__importDefault(require("../../commandUtils/EasCommand"));
9
+ const flags_1 = require("../../commandUtils/flags");
10
+ const pagination_1 = require("../../commandUtils/pagination");
11
+ const AppleDeviceMutation_1 = require("../../credentials/ios/api/graphql/mutations/AppleDeviceMutation");
12
+ const AppleDeviceQuery_1 = require("../../credentials/ios/api/graphql/queries/AppleDeviceQuery");
13
+ const authenticate_1 = require("../../credentials/ios/appstore/authenticate");
14
+ const queries_1 = require("../../devices/queries");
15
+ const formatDevice_1 = tslib_1.__importDefault(require("../../devices/utils/formatDevice"));
16
+ const log_1 = tslib_1.__importDefault(require("../../log"));
17
+ const ora_1 = require("../../ora");
18
+ const projectUtils_1 = require("../../project/projectUtils");
19
+ const prompts_1 = require("../../prompts");
20
+ const json_1 = require("../../utils/json");
21
+ class DeviceRename extends EasCommand_1.default {
22
+ async runAsync() {
23
+ const { flags } = await this.parse(DeviceRename);
24
+ const paginatedQueryOptions = (0, pagination_1.getPaginatedQueryOptions)(flags);
25
+ let { 'apple-team-id': appleTeamIdentifier, udid, name } = flags;
26
+ const { projectConfig: { projectId }, loggedIn: { graphqlClient }, } = await this.getContextAsync(DeviceRename, {
27
+ nonInteractive: paginatedQueryOptions.nonInteractive,
28
+ });
29
+ const account = await (0, projectUtils_1.getOwnerAccountForProjectIdAsync)(graphqlClient, projectId);
30
+ let appleTeamName;
31
+ if (paginatedQueryOptions.json) {
32
+ (0, json_1.enableJsonOutput)();
33
+ }
34
+ let appleTeam;
35
+ if (!appleTeamIdentifier) {
36
+ appleTeam = await (0, queries_1.selectAppleTeamOnAccountAsync)(graphqlClient, {
37
+ accountName: account.name,
38
+ selectionPromptTitle: `What Apple team would you like to list devices for?`,
39
+ paginatedQueryOptions,
40
+ });
41
+ appleTeamIdentifier = appleTeam.appleTeamIdentifier;
42
+ appleTeamName = appleTeam.appleTeamName;
43
+ }
44
+ (0, assert_1.default)(appleTeamIdentifier, 'No team identifier is specified');
45
+ const chosenDevice = udid
46
+ ? await AppleDeviceQuery_1.AppleDeviceQuery.getByDeviceIdentifierAsync(graphqlClient, account.name, udid)
47
+ : await (0, queries_1.selectAppleDeviceOnAppleTeamAsync)(graphqlClient, {
48
+ accountName: account.name,
49
+ appleTeamIdentifier,
50
+ selectionPromptTitle: `Which device would you like to rename?`,
51
+ paginatedQueryOptions,
52
+ });
53
+ const newDeviceName = name ? name : await this.promptForNewDeviceNameAsync(chosenDevice.name);
54
+ this.logChosenDevice(chosenDevice, appleTeamName, appleTeamIdentifier, paginatedQueryOptions);
55
+ await this.renameDeviceOnExpoAsync(graphqlClient, chosenDevice, newDeviceName);
56
+ await this.renameDeviceOnAppleAsync(chosenDevice, appleTeamIdentifier, newDeviceName);
57
+ }
58
+ async promptForNewDeviceNameAsync(initial) {
59
+ const { name } = await (0, prompts_1.promptAsync)({
60
+ type: 'text',
61
+ name: 'name',
62
+ message: 'New device name:',
63
+ initial: initial !== null && initial !== void 0 ? initial : undefined,
64
+ });
65
+ return name;
66
+ }
67
+ async renameDeviceOnExpoAsync(graphqlClient, chosenDevice, newDeviceName) {
68
+ const removalSpinner = (0, ora_1.ora)(`Renaming Apple device on Expo`).start();
69
+ try {
70
+ await AppleDeviceMutation_1.AppleDeviceMutation.updateAppleDeviceAsync(graphqlClient, chosenDevice.id, {
71
+ name: newDeviceName,
72
+ });
73
+ removalSpinner.succeed('Renamed Apple device on Expo');
74
+ }
75
+ catch (err) {
76
+ removalSpinner.fail();
77
+ throw err;
78
+ }
79
+ }
80
+ async renameDeviceOnAppleAsync(device, appleTeamIdentifier, newDeviceName) {
81
+ const ctx = await (0, authenticate_1.authenticateAsync)({ teamId: appleTeamIdentifier });
82
+ const context = (0, authenticate_1.getRequestContext)(ctx);
83
+ log_1.default.addNewLineIfNone();
84
+ const removeAppleSpinner = (0, ora_1.ora)('Renaming device on Apple').start();
85
+ try {
86
+ const appleValidatedDevices = await apple_utils_1.Device.getAsync(context);
87
+ const appleValidatedDevice = appleValidatedDevices.find(d => d.attributes.udid === device.identifier);
88
+ if (appleValidatedDevice) {
89
+ await appleValidatedDevice.updateAsync({ name: newDeviceName });
90
+ removeAppleSpinner.succeed('Renamed device on Apple');
91
+ }
92
+ else {
93
+ removeAppleSpinner.warn('Device not found on Apple Developer Portal. Expo-registered devices will not appear there until they are chosen for an internal distribution build.');
94
+ }
95
+ }
96
+ catch (err) {
97
+ removeAppleSpinner.fail();
98
+ throw err;
99
+ }
100
+ }
101
+ logChosenDevice(device, appleTeamName, appleTeamIdentifier, { json }) {
102
+ if (json) {
103
+ (0, json_1.printJsonOnlyOutput)(device);
104
+ }
105
+ else {
106
+ log_1.default.addNewLineIfNone();
107
+ log_1.default.log((0, formatDevice_1.default)(device, {
108
+ appleTeamName,
109
+ appleTeamIdentifier: appleTeamIdentifier,
110
+ }));
111
+ log_1.default.newLine();
112
+ }
113
+ }
114
+ }
115
+ exports.default = DeviceRename;
116
+ _a = DeviceRename;
117
+ DeviceRename.description = 'rename a registered device';
118
+ DeviceRename.flags = {
119
+ 'apple-team-id': core_1.Flags.string({ description: 'The Apple team ID on which to find the device' }),
120
+ udid: core_1.Flags.string({ description: 'The Apple device ID to rename' }),
121
+ name: core_1.Flags.string({ description: 'The new name for the device' }),
122
+ ...flags_1.EasNonInteractiveAndJsonFlags,
123
+ };
124
+ DeviceRename.contextDefinition = {
125
+ ..._a.ContextOptions.ProjectConfig,
126
+ ..._a.ContextOptions.LoggedIn,
127
+ };
@@ -1,6 +1,7 @@
1
1
  import { ExpoGraphqlClient } from '../../../../../commandUtils/context/contextUtils/createGraphqlClient';
2
- import { AppleDeviceFragment, AppleDeviceInput } from '../../../../../graphql/generated';
2
+ import { AppleDeviceFragment, AppleDeviceInput, AppleDeviceUpdateInput } from '../../../../../graphql/generated';
3
3
  export declare const AppleDeviceMutation: {
4
4
  createAppleDeviceAsync(graphqlClient: ExpoGraphqlClient, appleDeviceInput: AppleDeviceInput, accountId: string): Promise<AppleDeviceFragment>;
5
5
  deleteAppleDeviceAsync(graphqlClient: ExpoGraphqlClient, deviceId: string): Promise<string>;
6
+ updateAppleDeviceAsync(graphqlClient: ExpoGraphqlClient, id: string, appleDeviceUpdateInput: AppleDeviceUpdateInput): Promise<AppleDeviceFragment>;
6
7
  };
@@ -45,4 +45,26 @@ exports.AppleDeviceMutation = {
45
45
  .toPromise());
46
46
  return data.id;
47
47
  },
48
+ async updateAppleDeviceAsync(graphqlClient, id, appleDeviceUpdateInput) {
49
+ const data = await (0, client_1.withErrorHandlingAsync)(graphqlClient
50
+ .mutation((0, graphql_tag_1.default) `
51
+ mutation UpdateAppleDeviceMutation(
52
+ $id: ID!
53
+ $appleDeviceUpdateInput: AppleDeviceUpdateInput!
54
+ ) {
55
+ appleDevice {
56
+ updateAppleDevice(id: $id, appleDeviceUpdateInput: $appleDeviceUpdateInput) {
57
+ id
58
+ ...AppleDeviceFragment
59
+ }
60
+ }
61
+ }
62
+ ${(0, graphql_1.print)(AppleDevice_1.AppleDeviceFragmentNode)}
63
+ `, {
64
+ id,
65
+ appleDeviceUpdateInput,
66
+ })
67
+ .toPromise());
68
+ return data.appleDevice.updateAppleDevice;
69
+ },
48
70
  };
@@ -52,7 +52,7 @@ async function collectDeviceDataAsync(appleTeam, initialValues = {}) {
52
52
  };
53
53
  log_1.default.newLine();
54
54
  log_1.default.log(`We are going to register the following device in our database.
55
- This will ${chalk_1.default.bold('not')} register the device on the Apple Developer Portal yet.`);
55
+ This device will ${chalk_1.default.bold('not')} be registered on the Apple Developer Portal until it is chosen for an internal distribution build.`);
56
56
  log_1.default.newLine();
57
57
  log_1.default.log((0, formatDevice_1.formatNewDevice)({ ...deviceData, identifier: deviceData.udid }, appleTeam));
58
58
  log_1.default.newLine();
@@ -84,6 +84,7 @@ export type Account = {
84
84
  appleTeams: Array<AppleTeam>;
85
85
  /** Apps associated with this account */
86
86
  apps: Array<App>;
87
+ appsPaginated: AccountAppsConnection;
87
88
  /** @deprecated Build packs are no longer supported */
88
89
  availableBuilds?: Maybe<Scalars['Int']>;
89
90
  /** Billing information. Only visible to members with the ADMIN or OWNER role. */
@@ -194,6 +195,16 @@ export type AccountAppsArgs = {
194
195
  limit: Scalars['Int'];
195
196
  offset: Scalars['Int'];
196
197
  };
198
+ /**
199
+ * An account is a container owning projects, credentials, billing and other organization
200
+ * data and settings. Actors may own and be members of accounts.
201
+ */
202
+ export type AccountAppsPaginatedArgs = {
203
+ after?: InputMaybe<Scalars['String']>;
204
+ before?: InputMaybe<Scalars['String']>;
205
+ first?: InputMaybe<Scalars['Int']>;
206
+ last?: InputMaybe<Scalars['Int']>;
207
+ };
197
208
  /**
198
209
  * An account is a container owning projects, credentials, billing and other organization
199
210
  * data and settings. Actors may own and be members of accounts.
@@ -254,6 +265,16 @@ export type AccountTimelineActivityArgs = {
254
265
  first?: InputMaybe<Scalars['Int']>;
255
266
  last?: InputMaybe<Scalars['Int']>;
256
267
  };
268
+ export type AccountAppsConnection = {
269
+ __typename?: 'AccountAppsConnection';
270
+ edges: Array<AccountAppsEdge>;
271
+ pageInfo: PageInfo;
272
+ };
273
+ export type AccountAppsEdge = {
274
+ __typename?: 'AccountAppsEdge';
275
+ cursor: Scalars['String'];
276
+ node: App;
277
+ };
257
278
  export type AccountDataInput = {
258
279
  name: Scalars['String'];
259
280
  };
@@ -264,6 +285,8 @@ export type AccountMutation = {
264
285
  * @deprecated Build packs are no longer supported
265
286
  */
266
287
  buyProduct?: Maybe<Account>;
288
+ /** Cancels all subscriptions immediately */
289
+ cancelAllSubscriptionsImmediately: Account;
267
290
  /** Cancel scheduled subscription change */
268
291
  cancelScheduledSubscriptionChange: Account;
269
292
  /** Cancels the active subscription */
@@ -294,6 +317,9 @@ export type AccountMutationBuyProductArgs = {
294
317
  paymentSource?: InputMaybe<Scalars['ID']>;
295
318
  productId: Scalars['ID'];
296
319
  };
320
+ export type AccountMutationCancelAllSubscriptionsImmediatelyArgs = {
321
+ accountID: Scalars['ID'];
322
+ };
297
323
  export type AccountMutationCancelScheduledSubscriptionChangeArgs = {
298
324
  accountID: Scalars['ID'];
299
325
  };
@@ -429,6 +455,7 @@ export type AccountSsoConfigurationPublicDataQueryPublicDataByAccountNameArgs =
429
455
  };
430
456
  export type AccountUsageEasBuildMetadata = {
431
457
  __typename?: 'AccountUsageEASBuildMetadata';
458
+ billingResourceClass: EasBuildBillingResourceClass;
432
459
  platform: AppPlatform;
433
460
  };
434
461
  export type AccountUsageMetadata = AccountUsageEasBuildMetadata;
@@ -834,6 +861,8 @@ export type App = Project & {
834
861
  isLikedByMe: Scalars['Boolean'];
835
862
  /** @deprecated No longer supported */
836
863
  lastPublishedTime: Scalars['DateTime'];
864
+ /** Time of the last user activity (update, branch, submission). */
865
+ latestActivity: Scalars['DateTime'];
837
866
  latestAppVersionByPlatformAndApplicationIdentifier?: Maybe<AppVersion>;
838
867
  latestReleaseForReleaseChannel?: Maybe<AppRelease>;
839
868
  /** ID of latest classic update release */
@@ -860,6 +889,7 @@ export type App = Project & {
860
889
  releaseChannels: Array<Scalars['String']>;
861
890
  /** @deprecated Legacy access tokens are deprecated */
862
891
  requiresAccessTokenForPushSecurity: Scalars['Boolean'];
892
+ scopeKey: Scalars['String'];
863
893
  /** SDK version of the latest classic update publish, 0.0.0 otherwise */
864
894
  sdkVersion: Scalars['String'];
865
895
  slug: Scalars['String'];
@@ -1342,6 +1372,8 @@ export type AppleDeviceMutation = {
1342
1372
  createAppleDevice: AppleDevice;
1343
1373
  /** Delete an Apple Device */
1344
1374
  deleteAppleDevice: DeleteAppleDeviceResult;
1375
+ /** Update an Apple Device */
1376
+ updateAppleDevice: AppleDevice;
1345
1377
  };
1346
1378
  export type AppleDeviceMutationCreateAppleDeviceArgs = {
1347
1379
  accountId: Scalars['ID'];
@@ -1350,6 +1382,10 @@ export type AppleDeviceMutationCreateAppleDeviceArgs = {
1350
1382
  export type AppleDeviceMutationDeleteAppleDeviceArgs = {
1351
1383
  id: Scalars['ID'];
1352
1384
  };
1385
+ export type AppleDeviceMutationUpdateAppleDeviceArgs = {
1386
+ appleDeviceUpdateInput: AppleDeviceUpdateInput;
1387
+ id: Scalars['ID'];
1388
+ };
1353
1389
  export type AppleDeviceRegistrationRequest = {
1354
1390
  __typename?: 'AppleDeviceRegistrationRequest';
1355
1391
  account: Account;
@@ -1372,6 +1408,9 @@ export type AppleDeviceRegistrationRequestQuery = {
1372
1408
  export type AppleDeviceRegistrationRequestQueryByIdArgs = {
1373
1409
  id: Scalars['ID'];
1374
1410
  };
1411
+ export type AppleDeviceUpdateInput = {
1412
+ name?: InputMaybe<Scalars['String']>;
1413
+ };
1375
1414
  export type AppleDistributionCertificate = {
1376
1415
  __typename?: 'AppleDistributionCertificate';
1377
1416
  account: Account;
@@ -1609,6 +1648,8 @@ export type Build = ActivityTimelineProjectActivity & BuildOrBuildJob & {
1609
1648
  expirationDate?: Maybe<Scalars['DateTime']>;
1610
1649
  gitCommitHash?: Maybe<Scalars['String']>;
1611
1650
  gitCommitMessage?: Maybe<Scalars['String']>;
1651
+ gitRef?: Maybe<Scalars['String']>;
1652
+ githubRepositoryOwnerAndName?: Maybe<Scalars['String']>;
1612
1653
  id: Scalars['ID'];
1613
1654
  /** Queue position is 1-indexed */
1614
1655
  initialQueuePosition?: Maybe<Scalars['Int']>;
@@ -1627,6 +1668,7 @@ export type Build = ActivityTimelineProjectActivity & BuildOrBuildJob & {
1627
1668
  platform: AppPlatform;
1628
1669
  priority: BuildPriority;
1629
1670
  project: Project;
1671
+ projectRootDirectory?: Maybe<Scalars['String']>;
1630
1672
  provisioningStartedAt?: Maybe<Scalars['DateTime']>;
1631
1673
  /** Queue position is 1-indexed */
1632
1674
  queuePosition?: Maybe<Scalars['Int']>;
@@ -1664,7 +1706,6 @@ export type BuildArtifacts = {
1664
1706
  xcodeBuildLogsUrl?: Maybe<Scalars['String']>;
1665
1707
  };
1666
1708
  export type BuildCacheInput = {
1667
- cacheDefaultPaths?: InputMaybe<Scalars['Boolean']>;
1668
1709
  clear?: InputMaybe<Scalars['Boolean']>;
1669
1710
  customPaths?: InputMaybe<Array<InputMaybe<Scalars['String']>>>;
1670
1711
  disabled?: InputMaybe<Scalars['Boolean']>;
@@ -1730,9 +1771,7 @@ export declare enum BuildJobLogsFormat {
1730
1771
  }
1731
1772
  export type BuildJobMutation = {
1732
1773
  __typename?: 'BuildJobMutation';
1733
- cancel: BuildJob;
1734
1774
  del?: Maybe<BuildJob>;
1735
- restart: BuildJob;
1736
1775
  };
1737
1776
  export type BuildJobQuery = {
1738
1777
  __typename?: 'BuildJobQuery';
@@ -1994,23 +2033,6 @@ export type Charge = {
1994
2033
  receiptUrl?: Maybe<Scalars['String']>;
1995
2034
  wasRefunded: Scalars['Boolean'];
1996
2035
  };
1997
- /** Represents a client build request */
1998
- export type ClientBuild = {
1999
- __typename?: 'ClientBuild';
2000
- buildJobId?: Maybe<Scalars['String']>;
2001
- id: Scalars['ID'];
2002
- manifestPlistUrl?: Maybe<Scalars['String']>;
2003
- status?: Maybe<Scalars['String']>;
2004
- userFacingErrorMessage?: Maybe<Scalars['String']>;
2005
- userId?: Maybe<Scalars['String']>;
2006
- };
2007
- export type ClientBuildQuery = {
2008
- __typename?: 'ClientBuildQuery';
2009
- byId: ClientBuild;
2010
- };
2011
- export type ClientBuildQueryByIdArgs = {
2012
- requestId: Scalars['ID'];
2013
- };
2014
2036
  export type CodeSigningInfo = {
2015
2037
  __typename?: 'CodeSigningInfo';
2016
2038
  alg: Scalars['String'];
@@ -2127,6 +2149,10 @@ export type DeleteEnvironmentSecretResult = {
2127
2149
  __typename?: 'DeleteEnvironmentSecretResult';
2128
2150
  id: Scalars['ID'];
2129
2151
  };
2152
+ export type DeleteGitHubUserResult = {
2153
+ __typename?: 'DeleteGitHubUserResult';
2154
+ id: Scalars['ID'];
2155
+ };
2130
2156
  export type DeleteGoogleServiceAccountKeyResult = {
2131
2157
  __typename?: 'DeleteGoogleServiceAccountKeyResult';
2132
2158
  id: Scalars['ID'];
@@ -2226,6 +2252,10 @@ export declare enum DistributionType {
2226
2252
  Simulator = "SIMULATOR",
2227
2253
  Store = "STORE"
2228
2254
  }
2255
+ export declare enum EasBuildBillingResourceClass {
2256
+ Large = "LARGE",
2257
+ Medium = "MEDIUM"
2258
+ }
2229
2259
  export type EasBuildDeprecationInfo = {
2230
2260
  __typename?: 'EASBuildDeprecationInfo';
2231
2261
  message: Scalars['String'];
@@ -2425,6 +2455,14 @@ export declare enum GitHubAppInstallationStatus {
2425
2455
  NotInstalled = "NOT_INSTALLED",
2426
2456
  Suspended = "SUSPENDED"
2427
2457
  }
2458
+ export type GitHubAppMutation = {
2459
+ __typename?: 'GitHubAppMutation';
2460
+ /** Create a GitHub build for an app */
2461
+ createGitHubBuild: Scalars['Boolean'];
2462
+ };
2463
+ export type GitHubAppMutationCreateGitHubBuildArgs = {
2464
+ buildInput: GitHubBuildInput;
2465
+ };
2428
2466
  export type GitHubAppQuery = {
2429
2467
  __typename?: 'GitHubAppQuery';
2430
2468
  appIdentifier: Scalars['String'];
@@ -2441,6 +2479,13 @@ export type GitHubAppQuerySearchRepositoriesArgs = {
2441
2479
  githubAppInstallationId: Scalars['ID'];
2442
2480
  query: Scalars['String'];
2443
2481
  };
2482
+ export type GitHubBuildInput = {
2483
+ appId: Scalars['ID'];
2484
+ baseDirectory?: InputMaybe<Scalars['String']>;
2485
+ buildProfile: Scalars['String'];
2486
+ gitRef: Scalars['String'];
2487
+ platform: AppPlatform;
2488
+ };
2444
2489
  export type GitHubRepository = {
2445
2490
  __typename?: 'GitHubRepository';
2446
2491
  app: App;
@@ -2513,6 +2558,28 @@ export type GitHubRepositorySettingsMutationUpdateGitHubRepositorySettingsArgs =
2513
2558
  githubRepositorySettingsData: UpdateGitHubRepositorySettingsInput;
2514
2559
  githubRepositorySettingsId: Scalars['ID'];
2515
2560
  };
2561
+ export type GitHubUser = {
2562
+ __typename?: 'GitHubUser';
2563
+ githubUserIdentifier: Scalars['String'];
2564
+ id: Scalars['ID'];
2565
+ metadata?: Maybe<GitHubUserMetadata>;
2566
+ userActor: UserActor;
2567
+ };
2568
+ export type GitHubUserMetadata = {
2569
+ __typename?: 'GitHubUserMetadata';
2570
+ avatarUrl: Scalars['String'];
2571
+ login: Scalars['String'];
2572
+ name?: Maybe<Scalars['String']>;
2573
+ url: Scalars['String'];
2574
+ };
2575
+ export type GitHubUserMutation = {
2576
+ __typename?: 'GitHubUserMutation';
2577
+ /** Delete a GitHub User by ID */
2578
+ deleteGitHubUser: DeleteGitHubUserResult;
2579
+ };
2580
+ export type GitHubUserMutationDeleteGitHubUserArgs = {
2581
+ id: Scalars['ID'];
2582
+ };
2516
2583
  export type GoogleServiceAccountKey = {
2517
2584
  __typename?: 'GoogleServiceAccountKey';
2518
2585
  account: Account;
@@ -2883,8 +2950,10 @@ export type MeMutation = {
2883
2950
  unpublishApp: App;
2884
2951
  /** Update an App that the current user owns */
2885
2952
  updateApp: App;
2886
- /** Update the current user's data */
2953
+ /** Update the current regular user's data */
2887
2954
  updateProfile: User;
2955
+ /** Update the current SSO user's data */
2956
+ updateSSOProfile: SsoUser;
2888
2957
  };
2889
2958
  export type MeMutationAddSecondFactorDeviceArgs = {
2890
2959
  deviceConfiguration: SecondFactorDeviceConfiguration;
@@ -2938,6 +3007,9 @@ export type MeMutationUpdateAppArgs = {
2938
3007
  export type MeMutationUpdateProfileArgs = {
2939
3008
  userData: UserDataInput;
2940
3009
  };
3010
+ export type MeMutationUpdateSsoProfileArgs = {
3011
+ userData: SsoUserDataInput;
3012
+ };
2941
3013
  export type MeteredBillingStatus = {
2942
3014
  __typename?: 'MeteredBillingStatus';
2943
3015
  EAS_BUILD: Scalars['Boolean'];
@@ -3222,12 +3294,16 @@ export type RootMutation = {
3222
3294
  emailSubscription: EmailSubscriptionMutation;
3223
3295
  /** Mutations that create and delete EnvironmentSecrets */
3224
3296
  environmentSecret: EnvironmentSecretMutation;
3297
+ /** Mutations that utilize services facilitated by the GitHub App */
3298
+ githubApp: GitHubAppMutation;
3225
3299
  /** Mutations for GitHub App installations */
3226
3300
  githubAppInstallation: GitHubAppInstallationMutation;
3227
3301
  /** Mutations for GitHub repositories */
3228
3302
  githubRepository: GitHubRepositoryMutation;
3229
3303
  /** Mutations for GitHub repository settings */
3230
3304
  githubRepositorySettings: GitHubRepositorySettingsMutation;
3305
+ /** Mutations for GitHub users */
3306
+ githubUser: GitHubUserMutation;
3231
3307
  /** Mutations that modify a Google Service Account Key */
3232
3308
  googleServiceAccountKey: GoogleServiceAccountKeyMutation;
3233
3309
  /** Mutations that modify the build credentials for an iOS app */
@@ -3299,7 +3375,6 @@ export type RootQuery = {
3299
3375
  /** Top-level query object for querying BuildPublicData publicly. */
3300
3376
  buildPublicData: BuildPublicDataQuery;
3301
3377
  builds: BuildQuery;
3302
- clientBuilds: ClientBuildQuery;
3303
3378
  /** Top-level query object for querying Experimentation configuration. */
3304
3379
  experimentation: ExperimentationQuery;
3305
3380
  /** Top-level query object for querying GitHub App information and resources it has access to. */
@@ -3389,6 +3464,8 @@ export type SsoUser = Actor & UserActor & {
3389
3464
  apps: Array<App>;
3390
3465
  bestContactEmail?: Maybe<Scalars['String']>;
3391
3466
  created: Scalars['DateTime'];
3467
+ /** Discord account linked to a user */
3468
+ discordUser?: Maybe<DiscordUser>;
3392
3469
  displayName: Scalars['String'];
3393
3470
  /**
3394
3471
  * Server feature gate values for this actor, optionally filtering by desired gates.
@@ -3397,6 +3474,8 @@ export type SsoUser = Actor & UserActor & {
3397
3474
  featureGates: Scalars['JSONObject'];
3398
3475
  firstName?: Maybe<Scalars['String']>;
3399
3476
  fullName?: Maybe<Scalars['String']>;
3477
+ /** GitHub account linked to a user */
3478
+ githubUser?: Maybe<GitHubUser>;
3400
3479
  githubUsername?: Maybe<Scalars['String']>;
3401
3480
  id: Scalars['ID'];
3402
3481
  industry?: Maybe<Scalars['String']>;
@@ -3437,6 +3516,14 @@ export type SsoUserSnacksArgs = {
3437
3516
  limit: Scalars['Int'];
3438
3517
  offset: Scalars['Int'];
3439
3518
  };
3519
+ export type SsoUserDataInput = {
3520
+ firstName?: InputMaybe<Scalars['String']>;
3521
+ githubUsername?: InputMaybe<Scalars['String']>;
3522
+ industry?: InputMaybe<Scalars['String']>;
3523
+ lastName?: InputMaybe<Scalars['String']>;
3524
+ location?: InputMaybe<Scalars['String']>;
3525
+ twitterUsername?: InputMaybe<Scalars['String']>;
3526
+ };
3440
3527
  export type SsoUserQuery = {
3441
3528
  __typename?: 'SSOUserQuery';
3442
3529
  /** Query an SSOUser by ID */
@@ -4003,6 +4090,8 @@ export type User = Actor & UserActor & {
4003
4090
  featureGates: Scalars['JSONObject'];
4004
4091
  firstName?: Maybe<Scalars['String']>;
4005
4092
  fullName?: Maybe<Scalars['String']>;
4093
+ /** GitHub account linked to a user */
4094
+ githubUser?: Maybe<GitHubUser>;
4006
4095
  githubUsername?: Maybe<Scalars['String']>;
4007
4096
  /** Whether this user has any pending user invitations. Only resolves for the viewer. */
4008
4097
  hasPendingUserInvitations: Scalars['Boolean'];
@@ -4068,6 +4157,8 @@ export type UserActor = {
4068
4157
  apps: Array<App>;
4069
4158
  bestContactEmail?: Maybe<Scalars['String']>;
4070
4159
  created: Scalars['DateTime'];
4160
+ /** Discord account linked to a user */
4161
+ discordUser?: Maybe<DiscordUser>;
4071
4162
  /**
4072
4163
  * Best-effort human readable name for this human actor for use in user interfaces during action attribution.
4073
4164
  * For example, when displaying a sentence indicating that actor X created a build or published an update.
@@ -4080,6 +4171,8 @@ export type UserActor = {
4080
4171
  featureGates: Scalars['JSONObject'];
4081
4172
  firstName?: Maybe<Scalars['String']>;
4082
4173
  fullName?: Maybe<Scalars['String']>;
4174
+ /** GitHub account linked to a user */
4175
+ githubUser?: Maybe<GitHubUser>;
4083
4176
  githubUsername?: Maybe<Scalars['String']>;
4084
4177
  id: Scalars['ID'];
4085
4178
  industry?: Maybe<Scalars['String']>;
@@ -5129,6 +5222,24 @@ export type DeleteAppleDeviceMutation = {
5129
5222
  };
5130
5223
  };
5131
5224
  };
5225
+ export type UpdateAppleDeviceMutationVariables = Exact<{
5226
+ id: Scalars['ID'];
5227
+ appleDeviceUpdateInput: AppleDeviceUpdateInput;
5228
+ }>;
5229
+ export type UpdateAppleDeviceMutation = {
5230
+ __typename?: 'RootMutation';
5231
+ appleDevice: {
5232
+ __typename?: 'AppleDeviceMutation';
5233
+ updateAppleDevice: {
5234
+ __typename?: 'AppleDevice';
5235
+ id: string;
5236
+ identifier: string;
5237
+ name?: string | null;
5238
+ model?: string | null;
5239
+ deviceClass?: AppleDeviceClass | null;
5240
+ };
5241
+ };
5242
+ };
5132
5243
  export type CreateAppleDeviceRegistrationRequestMutationVariables = Exact<{
5133
5244
  appleTeamId: Scalars['ID'];
5134
5245
  accountId: Scalars['ID'];
@@ -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.StatuspageServiceName = exports.StatuspageIncidentStatus = exports.StatuspageIncidentImpact = exports.StandardOffer = exports.SecondFactorMethod = 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.DistributionType = exports.BuildWorkflow = exports.BuildTrigger = exports.BuildStatus = exports.BuildResourceClass = exports.BuildPriority = exports.BuildMode = exports.BuildJobStatus = exports.BuildJobLogsFormat = exports.BuildIosEnterpriseProvisioning = exports.BuildCredentialsSource = exports.AuthProtocolType = exports.AssetMetadataStatus = exports.AppsFilter = exports.AppleDeviceClass = exports.AppStoreConnectUserRole = exports.AppSort = exports.AppPrivacy = exports.AppPlatform = exports.AndroidKeystoreType = exports.AndroidFcmVersion = exports.AndroidBuildType = exports.ActivityTimelineProjectActivityType = void 0;
10
- exports.WebhookType = exports.UsageMetricsGranularity = exports.UsageMetricType = exports.UploadSessionType = exports.SubmissionStatus = exports.SubmissionArchiveSourceType = exports.SubmissionAndroidTrack = exports.SubmissionAndroidReleaseStatus = exports.SubmissionAndroidArchiveType = exports.StatuspageServiceStatus = void 0;
9
+ exports.StatuspageIncidentStatus = exports.StatuspageIncidentImpact = exports.StandardOffer = exports.SecondFactorMethod = 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.BuildResourceClass = exports.BuildPriority = exports.BuildMode = exports.BuildJobStatus = exports.BuildJobLogsFormat = exports.BuildIosEnterpriseProvisioning = exports.BuildCredentialsSource = exports.AuthProtocolType = exports.AssetMetadataStatus = exports.AppsFilter = exports.AppleDeviceClass = exports.AppStoreConnectUserRole = exports.AppSort = exports.AppPrivacy = exports.AppPlatform = exports.AndroidKeystoreType = exports.AndroidFcmVersion = exports.AndroidBuildType = exports.ActivityTimelineProjectActivityType = 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 = void 0;
11
11
  var ActivityTimelineProjectActivityType;
12
12
  (function (ActivityTimelineProjectActivityType) {
13
13
  ActivityTimelineProjectActivityType["Build"] = "BUILD";
@@ -171,6 +171,11 @@ var DistributionType;
171
171
  DistributionType["Simulator"] = "SIMULATOR";
172
172
  DistributionType["Store"] = "STORE";
173
173
  })(DistributionType = exports.DistributionType || (exports.DistributionType = {}));
174
+ var EasBuildBillingResourceClass;
175
+ (function (EasBuildBillingResourceClass) {
176
+ EasBuildBillingResourceClass["Large"] = "LARGE";
177
+ EasBuildBillingResourceClass["Medium"] = "MEDIUM";
178
+ })(EasBuildBillingResourceClass = exports.EasBuildBillingResourceClass || (exports.EasBuildBillingResourceClass = {}));
174
179
  var EasBuildDeprecationInfoType;
175
180
  (function (EasBuildDeprecationInfoType) {
176
181
  EasBuildDeprecationInfoType["Internal"] = "INTERNAL";
package/build/ora.js CHANGED
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ora = void 0;
4
4
  const tslib_1 = require("tslib");
5
+ const getenv_1 = require("getenv");
5
6
  // eslint-disable-next-line
6
7
  const ora_1 = tslib_1.__importDefault(require("ora"));
7
8
  const log_1 = tslib_1.__importDefault(require("./log"));
@@ -13,6 +14,7 @@ const infoReal = console.info;
13
14
  const warnReal = console.warn;
14
15
  // eslint-disable-next-line no-console
15
16
  const errorReal = console.error;
17
+ const isCi = (0, getenv_1.boolish)('CI', false);
16
18
  /**
17
19
  * A custom ora spinner that sends the stream to stdout in CI, or non-TTY, instead of stderr (the default).
18
20
  *
@@ -21,7 +23,7 @@ const errorReal = console.error;
21
23
  */
22
24
  function ora(options) {
23
25
  const inputOptions = typeof options === 'string' ? { text: options } : options !== null && options !== void 0 ? options : {};
24
- const disabled = log_1.default.isDebug || !process.stdin.isTTY;
26
+ const disabled = log_1.default.isDebug || !process.stdin.isTTY || isCi;
25
27
  const spinner = (0, ora_1.default)({
26
28
  // Ensure our non-interactive mode emulates CI mode.
27
29
  isEnabled: !disabled,
@@ -405,7 +405,7 @@ async function getUpdateMessageForCommandAsync({ updateMessageArg, autoFlag, non
405
405
  if (truncatedMessage !== updateMessage) {
406
406
  log_1.default.warn('Update message exceeds the allowed 1024 character limit. Truncating message...');
407
407
  }
408
- return updateMessage;
408
+ return truncatedMessage;
409
409
  }
410
410
  exports.getUpdateMessageForCommandAsync = getUpdateMessageForCommandAsync;
411
411
  exports.defaultPublishPlatforms = ['android', 'ios'];
@@ -12,4 +12,9 @@ export declare function getProfilesAsync<T extends ProfileType>({ easJsonAccesso
12
12
  profileName?: string;
13
13
  type: T;
14
14
  }): Promise<ProfileData<T>[]>;
15
+ /**
16
+ * Only for testing purposes
17
+ */
18
+ export declare function clearHasPrintedDeprecationWarnings(): void;
19
+ export declare function maybePrintBuildProfileDeprecationWarningsAsync(easJsonAccessor: EasJsonAccessor, platform: Platform, profileName?: string): Promise<void>;
15
20
  export {};
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getProfilesAsync = void 0;
3
+ exports.maybePrintBuildProfileDeprecationWarningsAsync = exports.clearHasPrintedDeprecationWarnings = exports.getProfilesAsync = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const eas_json_1 = require("@expo/eas-json");
6
6
  const log_1 = tslib_1.__importStar(require("../log"));
@@ -24,7 +24,7 @@ exports.getProfilesAsync = getProfilesAsync;
24
24
  async function readProfileAsync({ easJsonAccessor, platform, type, profileName, }) {
25
25
  if (type === 'build') {
26
26
  const buildProfile = await eas_json_1.EasJsonUtils.getBuildProfileAsync(easJsonAccessor, platform, profileName);
27
- maybePrintBuildProfileDeprecationWarnings(buildProfile, profileName);
27
+ await maybePrintBuildProfileDeprecationWarningsAsync(easJsonAccessor, platform, profileName);
28
28
  return buildProfile;
29
29
  }
30
30
  else {
@@ -32,11 +32,18 @@ async function readProfileAsync({ easJsonAccessor, platform, type, profileName,
32
32
  }
33
33
  }
34
34
  let hasPrintedDeprecationWarnings = false;
35
- function maybePrintBuildProfileDeprecationWarnings(buildProfile, profileName) {
35
+ /**
36
+ * Only for testing purposes
37
+ */
38
+ function clearHasPrintedDeprecationWarnings() {
39
+ hasPrintedDeprecationWarnings = false;
40
+ }
41
+ exports.clearHasPrintedDeprecationWarnings = clearHasPrintedDeprecationWarnings;
42
+ async function maybePrintBuildProfileDeprecationWarningsAsync(easJsonAccessor, platform, profileName) {
36
43
  if (hasPrintedDeprecationWarnings) {
37
44
  return;
38
45
  }
39
- const deprecationWarnings = eas_json_1.EasJsonUtils.getBuildProfileDeprecationWarnings(buildProfile, profileName);
46
+ const deprecationWarnings = await eas_json_1.EasJsonUtils.getBuildProfileDeprecationWarningsAsync(easJsonAccessor, platform, profileName !== null && profileName !== void 0 ? profileName : 'production');
40
47
  if (deprecationWarnings.length === 0) {
41
48
  return;
42
49
  }
@@ -52,3 +59,4 @@ function maybePrintBuildProfileDeprecationWarnings(buildProfile, profileName) {
52
59
  }
53
60
  hasPrintedDeprecationWarnings = true;
54
61
  }
62
+ exports.maybePrintBuildProfileDeprecationWarningsAsync = maybePrintBuildProfileDeprecationWarningsAsync;