eas-cli 3.17.0 → 3.18.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.
Files changed (42) hide show
  1. package/README.md +55 -55
  2. package/build/build/android/build.js +1 -2
  3. package/build/build/local.js +1 -1
  4. package/build/build/runBuildAndSubmit.js +2 -0
  5. package/build/channel/actions/SelectChannel.d.ts +17 -0
  6. package/build/channel/actions/SelectChannel.js +49 -0
  7. package/build/channel/branch-mapping.d.ts +4 -0
  8. package/build/channel/branch-mapping.js +30 -1
  9. package/build/channel/queries.d.ts +6 -1
  10. package/build/channel/queries.js +29 -3
  11. package/build/channel/utils.d.ts +2 -1
  12. package/build/channel/utils.js +14 -1
  13. package/build/commands/build/version/get.js +1 -0
  14. package/build/commands/build/version/sync.js +1 -0
  15. package/build/commands/channel/edit.d.ts +2 -2
  16. package/build/commands/channel/edit.js +4 -2
  17. package/build/commands/metadata/lint.js +1 -0
  18. package/build/commands/metadata/pull.js +1 -0
  19. package/build/commands/metadata/push.js +1 -0
  20. package/build/commands/submit.js +1 -0
  21. package/build/eas-update/utils.d.ts +15 -0
  22. package/build/eas-update/utils.js +6 -0
  23. package/build/graphql/generated.d.ts +89 -15
  24. package/build/graphql/generated.js +9 -2
  25. package/build/graphql/queries/ChannelQuery.d.ts +8 -4
  26. package/build/graphql/queries/ChannelQuery.js +43 -4
  27. package/build/graphql/types/UpdateChannelBasicInfo.d.ts +1 -0
  28. package/build/graphql/types/UpdateChannelBasicInfo.js +12 -0
  29. package/build/project/ios/target.d.ts +1 -1
  30. package/build/project/ios/target.js +4 -4
  31. package/build/rollout/actions/SelectRollout.d.ts +8 -0
  32. package/build/rollout/actions/SelectRollout.js +23 -0
  33. package/build/rollout/branch-mapping.d.ts +80 -0
  34. package/build/rollout/branch-mapping.js +211 -0
  35. package/build/rollout/utils.d.ts +3 -53
  36. package/build/rollout/utils.js +39 -100
  37. package/build/utils/profiles.d.ts +2 -1
  38. package/build/utils/profiles.js +35 -3
  39. package/build/utils/relay.d.ts +33 -0
  40. package/build/utils/relay.js +43 -0
  41. package/oclif.manifest.json +1 -1
  42. package/package.json +5 -5
@@ -1,6 +1,6 @@
1
1
  import { ExpoGraphqlClient } from '../commandUtils/context/contextUtils/createGraphqlClient';
2
2
  import { PaginatedQueryOptions } from '../commandUtils/pagination';
3
- import { CreateUpdateChannelOnAppMutation } from '../graphql/generated';
3
+ import { CreateUpdateChannelOnAppMutation, UpdateChannelBasicInfoFragment } from '../graphql/generated';
4
4
  import { UpdateChannelObject } from '../graphql/queries/ChannelQuery';
5
5
  export declare const CHANNELS_LIMIT = 25;
6
6
  export declare function selectChannelOnAppAsync(graphqlClient: ExpoGraphqlClient, { projectId, selectionPromptTitle, paginatedQueryOptions, }: {
@@ -27,3 +27,8 @@ export declare function ensureChannelExistsAsync(graphqlClient: ExpoGraphqlClien
27
27
  branchId: string;
28
28
  channelName: string;
29
29
  }): Promise<void>;
30
+ export declare function getChannelsDatasetAsync(graphqlClient: ExpoGraphqlClient, { appId, filterPredicate, batchSize, }: {
31
+ appId: string;
32
+ filterPredicate?: (channelInfo: UpdateChannelBasicInfoFragment) => boolean;
33
+ batchSize?: number;
34
+ }): Promise<UpdateChannelBasicInfoFragment[]>;
@@ -1,16 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ensureChannelExistsAsync = exports.createChannelOnAppAsync = exports.listAndRenderBranchesAndUpdatesOnChannelAsync = exports.listAndRenderChannelsOnAppAsync = exports.selectChannelOnAppAsync = exports.CHANNELS_LIMIT = void 0;
3
+ exports.getChannelsDatasetAsync = exports.ensureChannelExistsAsync = exports.createChannelOnAppAsync = exports.listAndRenderBranchesAndUpdatesOnChannelAsync = exports.listAndRenderChannelsOnAppAsync = exports.selectChannelOnAppAsync = exports.CHANNELS_LIMIT = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const chalk_1 = tslib_1.__importDefault(require("chalk"));
6
+ const graphql_1 = require("graphql");
6
7
  const graphql_tag_1 = tslib_1.__importDefault(require("graphql-tag"));
7
8
  const client_1 = require("../graphql/client");
8
9
  const BranchQuery_1 = require("../graphql/queries/BranchQuery");
9
10
  const ChannelQuery_1 = require("../graphql/queries/ChannelQuery");
11
+ const UpdateChannelBasicInfo_1 = require("../graphql/types/UpdateChannelBasicInfo");
10
12
  const log_1 = tslib_1.__importDefault(require("../log"));
13
+ const ora_1 = require("../ora");
11
14
  const formatFields_1 = tslib_1.__importDefault(require("../utils/formatFields"));
12
15
  const json_1 = require("../utils/json");
13
16
  const queries_1 = require("../utils/queries");
17
+ const relay_1 = require("../utils/relay");
14
18
  const utils_1 = require("./utils");
15
19
  exports.CHANNELS_LIMIT = 25;
16
20
  async function selectChannelOnAppAsync(graphqlClient, { projectId, selectionPromptTitle, paginatedQueryOptions, }) {
@@ -146,11 +150,11 @@ async function createChannelOnAppAsync(graphqlClient, { appId, branchId, channel
146
150
  updateChannel {
147
151
  createUpdateChannelForApp(appId: $appId, name: $name, branchMapping: $branchMapping) {
148
152
  id
149
- name
150
- branchMapping
153
+ ...UpdateChannelBasicInfoFragment
151
154
  }
152
155
  }
153
156
  }
157
+ ${(0, graphql_1.print)(UpdateChannelBasicInfo_1.UpdateChannelBasicInfoFragmentNode)}
154
158
  `, {
155
159
  appId,
156
160
  name: channelName,
@@ -177,3 +181,25 @@ async function ensureChannelExistsAsync(graphqlClient, { appId, branchId, channe
177
181
  }
178
182
  }
179
183
  exports.ensureChannelExistsAsync = ensureChannelExistsAsync;
184
+ async function getChannelsDatasetAsync(graphqlClient, { appId, filterPredicate, batchSize = 100, }) {
185
+ const queryAsync = async ({ first, after, }) => await ChannelQuery_1.ChannelQuery.viewUpdateChannelsBasicInfoPaginatedOnAppAsync(graphqlClient, {
186
+ appId,
187
+ first,
188
+ after,
189
+ });
190
+ const assetSpinner = (0, ora_1.ora)().start('Fetching channels...');
191
+ const afterEachQuery = (totalNodesFetched, _dataset, _batch, pageInfo) => {
192
+ if (pageInfo.hasNextPage) {
193
+ assetSpinner.text = `Fetched ${totalNodesFetched} channels`;
194
+ }
195
+ };
196
+ const dataset = await (0, relay_1.getPaginatedDatasetAsync)({
197
+ queryAsync,
198
+ afterEachQuery,
199
+ filterPredicate,
200
+ batchSize,
201
+ });
202
+ assetSpinner.succeed(`Fetched all channels`);
203
+ return dataset;
204
+ }
205
+ exports.getChannelsDatasetAsync = getChannelsDatasetAsync;
@@ -1,4 +1,4 @@
1
- import { UpdateChannelObject } from '../graphql/queries/ChannelQuery';
1
+ import { UpdateBranchObject, UpdateChannelObject } from '../graphql/queries/ChannelQuery';
2
2
  import { BranchMapping } from './branch-mapping';
3
3
  /**
4
4
  * Get the branch mapping and determine whether it is a rollout.
@@ -10,3 +10,4 @@ export declare function getBranchMapping(branchMappingString?: string): {
10
10
  rolloutPercent?: number;
11
11
  };
12
12
  export declare function logChannelDetails(channel: UpdateChannelObject): void;
13
+ export declare function getUpdateBranch(channel: UpdateChannelObject, branchId: string): UpdateBranchObject;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.logChannelDetails = exports.getBranchMapping = void 0;
3
+ exports.getUpdateBranch = exports.logChannelDetails = exports.getBranchMapping = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const assert_1 = tslib_1.__importDefault(require("assert"));
6
6
  const chalk_1 = tslib_1.__importDefault(require("chalk"));
@@ -93,3 +93,16 @@ function logChannelDetails(channel) {
93
93
  }
94
94
  }
95
95
  exports.logChannelDetails = logChannelDetails;
96
+ function getUpdateBranchNullable(channel, branchId) {
97
+ const updateBranches = channel.updateBranches;
98
+ const updateBranch = updateBranches.find(branch => branch.id === branchId);
99
+ return updateBranch !== null && updateBranch !== void 0 ? updateBranch : null;
100
+ }
101
+ function getUpdateBranch(channel, branchId) {
102
+ const updateBranch = getUpdateBranchNullable(channel, branchId);
103
+ if (!updateBranch) {
104
+ throw new Error(`Could not find branch with id "${branchId}" in branch-mapping of channel "${channel.name}"`);
105
+ }
106
+ return updateBranch;
107
+ }
108
+ exports.getUpdateBranch = getUpdateBranch;
@@ -39,6 +39,7 @@ class BuildVersionGetView extends EasCommand_1.default {
39
39
  easJsonAccessor,
40
40
  platforms,
41
41
  profileName: (_b = flags.profile) !== null && _b !== void 0 ? _b : undefined,
42
+ projectDir,
42
43
  });
43
44
  const results = {};
44
45
  for (const { profile, platform } of buildProfiles) {
@@ -38,6 +38,7 @@ class BuildVersionSyncView extends EasCommand_1.default {
38
38
  easJsonAccessor,
39
39
  platforms,
40
40
  profileName: (_b = flags.profile) !== null && _b !== void 0 ? _b : undefined,
41
+ projectDir,
41
42
  });
42
43
  for (const profileInfo of buildProfiles) {
43
44
  const { exp, projectId } = await getDynamicPrivateProjectConfigAsync({
@@ -1,7 +1,7 @@
1
1
  import EasCommand from '../../commandUtils/EasCommand';
2
2
  import { ExpoGraphqlClient } from '../../commandUtils/context/contextUtils/createGraphqlClient';
3
- import { UpdateChannelBranchMappingMutation, UpdateChannelBranchMappingMutationVariables } from '../../graphql/generated';
4
- export declare function updateChannelBranchMappingAsync(graphqlClient: ExpoGraphqlClient, { channelId, branchMapping }: UpdateChannelBranchMappingMutationVariables): Promise<UpdateChannelBranchMappingMutation['updateChannel']['editUpdateChannel']>;
3
+ import { UpdateChannelBasicInfoFragment, UpdateChannelBranchMappingMutationVariables } from '../../graphql/generated';
4
+ export declare function updateChannelBranchMappingAsync(graphqlClient: ExpoGraphqlClient, { channelId, branchMapping }: UpdateChannelBranchMappingMutationVariables): Promise<UpdateChannelBasicInfoFragment>;
5
5
  export default class ChannelEdit extends EasCommand {
6
6
  static description: string;
7
7
  static args: {
@@ -5,6 +5,7 @@ exports.updateChannelBranchMappingAsync = void 0;
5
5
  const tslib_1 = require("tslib");
6
6
  const core_1 = require("@oclif/core");
7
7
  const chalk_1 = tslib_1.__importDefault(require("chalk"));
8
+ const graphql_1 = require("graphql");
8
9
  const graphql_tag_1 = tslib_1.__importDefault(require("graphql-tag"));
9
10
  const queries_1 = require("../../branch/queries");
10
11
  const queries_2 = require("../../channel/queries");
@@ -13,6 +14,7 @@ const flags_1 = require("../../commandUtils/flags");
13
14
  const client_1 = require("../../graphql/client");
14
15
  const BranchQuery_1 = require("../../graphql/queries/BranchQuery");
15
16
  const ChannelQuery_1 = require("../../graphql/queries/ChannelQuery");
17
+ const UpdateChannelBasicInfo_1 = require("../../graphql/types/UpdateChannelBasicInfo");
16
18
  const log_1 = tslib_1.__importDefault(require("../../log"));
17
19
  const json_1 = require("../../utils/json");
18
20
  async function updateChannelBranchMappingAsync(graphqlClient, { channelId, branchMapping }) {
@@ -22,11 +24,11 @@ async function updateChannelBranchMappingAsync(graphqlClient, { channelId, branc
22
24
  updateChannel {
23
25
  editUpdateChannel(channelId: $channelId, branchMapping: $branchMapping) {
24
26
  id
25
- name
26
- branchMapping
27
+ ...UpdateChannelBasicInfoFragment
27
28
  }
28
29
  }
29
30
  }
31
+ ${(0, graphql_1.print)(UpdateChannelBasicInfo_1.UpdateChannelBasicInfoFragmentNode)}
30
32
  `, { channelId, branchMapping })
31
33
  .toPromise());
32
34
  const channel = data.updateChannel.editUpdateChannel;
@@ -28,6 +28,7 @@ class MetadataLint extends EasCommand_1.default {
28
28
  easJsonAccessor: eas_json_1.EasJsonAccessor.fromProjectPath(projectDir),
29
29
  platforms: [eas_build_job_1.Platform.IOS],
30
30
  profileName: flags.profile,
31
+ projectDir,
31
32
  });
32
33
  if (submitProfiles.length !== 1) {
33
34
  throw new Error('Metadata only supports iOS and a single submit profile.');
@@ -28,6 +28,7 @@ class MetadataPull extends EasCommand_1.default {
28
28
  easJsonAccessor: eas_json_1.EasJsonAccessor.fromProjectPath(projectDir),
29
29
  platforms: [eas_build_job_1.Platform.IOS],
30
30
  profileName: flags.profile,
31
+ projectDir,
31
32
  });
32
33
  if (submitProfiles.length !== 1) {
33
34
  throw new Error('Metadata only supports iOS and a single submit profile.');
@@ -26,6 +26,7 @@ class MetadataPush extends EasCommand_1.default {
26
26
  easJsonAccessor: eas_json_1.EasJsonAccessor.fromProjectPath(projectDir),
27
27
  platforms: [eas_build_job_1.Platform.IOS],
28
28
  profileName: flags.profile,
29
+ projectDir,
29
30
  });
30
31
  if (submitProfiles.length !== 1) {
31
32
  throw new Error('Metadata only supports iOS and a single submit profile.');
@@ -30,6 +30,7 @@ class Submit extends EasCommand_1.default {
30
30
  easJsonAccessor: eas_json_1.EasJsonAccessor.fromProjectPath(projectDir),
31
31
  platforms,
32
32
  profileName: flagsWithPlatform.profile,
33
+ projectDir,
33
34
  });
34
35
  const submissions = [];
35
36
  for (const submissionProfile of submissionProfiles) {
@@ -0,0 +1,15 @@
1
+ import { ExpoConfig } from '@expo/config-types';
2
+ import { ExpoGraphqlClient } from '../commandUtils/context/contextUtils/createGraphqlClient';
3
+ export type EASUpdateContext = {
4
+ graphqlClient: ExpoGraphqlClient;
5
+ nonInteractive: boolean;
6
+ app: {
7
+ exp: ExpoConfig;
8
+ projectId: string;
9
+ };
10
+ };
11
+ export interface EASUpdateAction<T = any> {
12
+ runAsync(ctx: EASUpdateContext): Promise<T>;
13
+ }
14
+ export declare class NonInteractiveError extends Error {
15
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NonInteractiveError = void 0;
4
+ class NonInteractiveError extends Error {
5
+ }
6
+ exports.NonInteractiveError = NonInteractiveError;
@@ -400,20 +400,14 @@ export type AccountQueryByNameArgs = {
400
400
  /** Auth configuration data for an SSO account. */
401
401
  export type AccountSsoConfiguration = {
402
402
  __typename?: 'AccountSSOConfiguration';
403
- authEndpoint?: Maybe<Scalars['String']>;
404
403
  authProtocol: AuthProtocolType;
405
404
  authProviderIdentifier: Scalars['String'];
406
405
  clientIdentifier: Scalars['String'];
407
406
  clientSecret: Scalars['String'];
408
407
  createdAt: Scalars['DateTime'];
409
- endSessionEndpoint?: Maybe<Scalars['String']>;
410
408
  id: Scalars['ID'];
411
409
  issuer: Scalars['String'];
412
- jwksEndpoint?: Maybe<Scalars['String']>;
413
- revokeEndpoint?: Maybe<Scalars['String']>;
414
- tokenEndpoint?: Maybe<Scalars['String']>;
415
410
  updatedAt: Scalars['DateTime'];
416
- userInfoEndpoint?: Maybe<Scalars['String']>;
417
411
  };
418
412
  export type AccountSsoConfigurationData = {
419
413
  authEndpoint?: InputMaybe<Scalars['String']>;
@@ -451,17 +445,11 @@ export type AccountSsoConfigurationMutationUpdateAccountSsoConfigurationArgs = {
451
445
  /** Public auth configuration data for an SSO account. */
452
446
  export type AccountSsoConfigurationPublicData = {
453
447
  __typename?: 'AccountSSOConfigurationPublicData';
454
- authEndpoint?: Maybe<Scalars['String']>;
455
448
  authProtocol: AuthProtocolType;
456
449
  authProviderIdentifier: Scalars['String'];
457
- clientIdentifier: Scalars['String'];
458
- endSessionEndpoint?: Maybe<Scalars['String']>;
450
+ authorizationUrl: Scalars['String'];
459
451
  id: Scalars['ID'];
460
452
  issuer: Scalars['String'];
461
- jwksEndpoint?: Maybe<Scalars['String']>;
462
- revokeEndpoint?: Maybe<Scalars['String']>;
463
- tokenEndpoint?: Maybe<Scalars['String']>;
464
- userInfoEndpoint?: Maybe<Scalars['String']>;
465
453
  };
466
454
  export type AccountSsoConfigurationPublicDataQuery = {
467
455
  __typename?: 'AccountSSOConfigurationPublicDataQuery';
@@ -1885,6 +1873,15 @@ export declare enum BuildJobStatus {
1885
1873
  SentToQueue = "SENT_TO_QUEUE",
1886
1874
  Started = "STARTED"
1887
1875
  }
1876
+ export type BuildLimitThresholdExceededMetadata = {
1877
+ __typename?: 'BuildLimitThresholdExceededMetadata';
1878
+ account: Account;
1879
+ thresholdsExceeded: Array<NotificationThresholdExceeded>;
1880
+ };
1881
+ export declare enum BuildLimitThresholdExceededMetadataType {
1882
+ Ios = "IOS",
1883
+ Total = "TOTAL"
1884
+ }
1888
1885
  export type BuildLogs = {
1889
1886
  __typename?: 'BuildLogs';
1890
1887
  format?: Maybe<BuildJobLogsFormat>;
@@ -2004,6 +2001,13 @@ export type BuildParamsInput = {
2004
2001
  resourceClass: BuildResourceClass;
2005
2002
  sdkVersion?: InputMaybe<Scalars['String']>;
2006
2003
  };
2004
+ export type BuildPlanCreditThresholdExceededMetadata = {
2005
+ __typename?: 'BuildPlanCreditThresholdExceededMetadata';
2006
+ account: Account;
2007
+ buildCreditUsage: Scalars['Int'];
2008
+ planLimit: Scalars['Int'];
2009
+ threshold: Scalars['Int'];
2010
+ };
2007
2011
  export declare enum BuildPriority {
2008
2012
  High = "HIGH",
2009
2013
  Normal = "NORMAL",
@@ -3133,12 +3137,23 @@ export type MeteredBillingStatus = {
3133
3137
  EAS_BUILD: Scalars['Boolean'];
3134
3138
  EAS_UPDATE: Scalars['Boolean'];
3135
3139
  };
3140
+ export type Notification = {
3141
+ __typename?: 'Notification';
3142
+ createdAt: Scalars['DateTime'];
3143
+ event: NotificationEvent;
3144
+ id: Scalars['ID'];
3145
+ metadata?: Maybe<NotificationMetadata>;
3146
+ type: NotificationType;
3147
+ updatedAt: Scalars['DateTime'];
3148
+ };
3136
3149
  export declare enum NotificationEvent {
3137
3150
  BuildComplete = "BUILD_COMPLETE",
3138
3151
  BuildLimitThresholdExceeded = "BUILD_LIMIT_THRESHOLD_EXCEEDED",
3139
3152
  BuildPlanCreditThresholdExceeded = "BUILD_PLAN_CREDIT_THRESHOLD_EXCEEDED",
3140
- SubmissionComplete = "SUBMISSION_COMPLETE"
3153
+ SubmissionComplete = "SUBMISSION_COMPLETE",
3154
+ Test = "TEST"
3141
3155
  }
3156
+ export type NotificationMetadata = BuildLimitThresholdExceededMetadata | BuildPlanCreditThresholdExceededMetadata | TestNotificationMetadata;
3142
3157
  export type NotificationSubscription = {
3143
3158
  __typename?: 'NotificationSubscription';
3144
3159
  account?: Maybe<Account>;
@@ -3170,8 +3185,16 @@ export type NotificationSubscriptionMutationSubscribeToEventForAppArgs = {
3170
3185
  export type NotificationSubscriptionMutationUnsubscribeArgs = {
3171
3186
  id: Scalars['ID'];
3172
3187
  };
3188
+ export type NotificationThresholdExceeded = {
3189
+ __typename?: 'NotificationThresholdExceeded';
3190
+ count: Scalars['Int'];
3191
+ limit: Scalars['Int'];
3192
+ threshold: Scalars['Int'];
3193
+ type: BuildLimitThresholdExceededMetadataType;
3194
+ };
3173
3195
  export declare enum NotificationType {
3174
- Email = "EMAIL"
3196
+ Email = "EMAIL",
3197
+ Web = "WEB"
3175
3198
  }
3176
3199
  export type Offer = {
3177
3200
  __typename?: 'Offer';
@@ -3616,6 +3639,8 @@ export type SsoUser = Actor & UserActor & {
3616
3639
  /** @deprecated No longer supported */
3617
3640
  twitterUsername?: Maybe<Scalars['String']>;
3618
3641
  username: Scalars['String'];
3642
+ /** Web notifications linked to a user */
3643
+ webNotifications: Array<Notification>;
3619
3644
  };
3620
3645
  /** Represents a human SSO (not robot) actor. */
3621
3646
  export type SsoUserActivityTimelineProjectActivitiesArgs = {
@@ -3980,6 +4005,10 @@ export type SubscriptionDetails = {
3980
4005
  export type SubscriptionDetailsPlanEnablementArgs = {
3981
4006
  serviceMetric: EasServiceMetric;
3982
4007
  };
4008
+ export type TestNotificationMetadata = {
4009
+ __typename?: 'TestNotificationMetadata';
4010
+ message: Scalars['String'];
4011
+ };
3983
4012
  export type TimelineActivityConnection = {
3984
4013
  __typename?: 'TimelineActivityConnection';
3985
4014
  edges: Array<TimelineActivityEdge>;
@@ -4250,6 +4279,7 @@ export type User = Actor & UserActor & {
4250
4279
  /** @deprecated No longer supported */
4251
4280
  twitterUsername?: Maybe<Scalars['String']>;
4252
4281
  username: Scalars['String'];
4282
+ webNotifications: Array<Notification>;
4253
4283
  };
4254
4284
  /** Represents a human (not robot) actor. */
4255
4285
  export type UserActivityTimelineProjectActivitiesArgs = {
@@ -4327,6 +4357,8 @@ export type UserActor = {
4327
4357
  /** @deprecated No longer supported */
4328
4358
  twitterUsername?: Maybe<Scalars['String']>;
4329
4359
  username: Scalars['String'];
4360
+ /** Web notifications linked to a user */
4361
+ webNotifications: Array<Notification>;
4330
4362
  };
4331
4363
  /** A human user (type User or SSOUser) that can login to the Expo website, use Expo services, and be a member of accounts. */
4332
4364
  export type UserActorActivityTimelineProjectActivitiesArgs = {
@@ -8733,6 +8765,7 @@ export type ViewBuildsOnAppQuery = {
8733
8765
  export type ViewUpdateChannelOnAppQueryVariables = Exact<{
8734
8766
  appId: Scalars['String'];
8735
8767
  channelName: Scalars['String'];
8768
+ filter?: InputMaybe<UpdatesFilter>;
8736
8769
  }>;
8737
8770
  export type ViewUpdateChannelOnAppQuery = {
8738
8771
  __typename?: 'RootQuery';
@@ -8809,6 +8842,7 @@ export type ViewUpdateChannelsOnAppQuery = {
8809
8842
  __typename?: 'UpdateChannel';
8810
8843
  id: string;
8811
8844
  name: string;
8845
+ createdAt: any;
8812
8846
  branchMapping: string;
8813
8847
  updateBranches: Array<{
8814
8848
  __typename?: 'UpdateBranch';
@@ -8856,6 +8890,40 @@ export type ViewUpdateChannelsOnAppQuery = {
8856
8890
  };
8857
8891
  };
8858
8892
  };
8893
+ export type ViewUpdateChannelsPaginatedOnAppQueryVariables = Exact<{
8894
+ appId: Scalars['String'];
8895
+ first?: InputMaybe<Scalars['Int']>;
8896
+ after?: InputMaybe<Scalars['String']>;
8897
+ }>;
8898
+ export type ViewUpdateChannelsPaginatedOnAppQuery = {
8899
+ __typename?: 'RootQuery';
8900
+ app: {
8901
+ __typename?: 'AppQuery';
8902
+ byId: {
8903
+ __typename?: 'App';
8904
+ id: string;
8905
+ channelsPaginated: {
8906
+ __typename?: 'AppChannelsConnection';
8907
+ edges: Array<{
8908
+ __typename?: 'AppChannelEdge';
8909
+ node: {
8910
+ __typename?: 'UpdateChannel';
8911
+ id: string;
8912
+ name: string;
8913
+ branchMapping: string;
8914
+ };
8915
+ }>;
8916
+ pageInfo: {
8917
+ __typename?: 'PageInfo';
8918
+ hasNextPage: boolean;
8919
+ hasPreviousPage: boolean;
8920
+ startCursor?: string | null;
8921
+ endCursor?: string | null;
8922
+ };
8923
+ };
8924
+ };
8925
+ };
8926
+ };
8859
8927
  export type EnvironmentSecretsByAppIdQueryVariables = Exact<{
8860
8928
  appId: Scalars['String'];
8861
8929
  }>;
@@ -9697,6 +9765,12 @@ export type UpdateBranchFragment = {
9697
9765
  } | null;
9698
9766
  }>;
9699
9767
  };
9768
+ export type UpdateChannelBasicInfoFragment = {
9769
+ __typename?: 'UpdateChannel';
9770
+ id: string;
9771
+ name: string;
9772
+ branchMapping: string;
9773
+ };
9700
9774
  export type WebhookFragment = {
9701
9775
  __typename?: 'Webhook';
9702
9776
  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.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;
9
+ 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.BuildLimitThresholdExceededMetadataType = 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 = exports.Role = void 0;
11
11
  var AccountAppsSortByField;
12
12
  (function (AccountAppsSortByField) {
13
13
  AccountAppsSortByField["LatestActivityTime"] = "LATEST_ACTIVITY_TIME";
@@ -136,6 +136,11 @@ var BuildJobStatus;
136
136
  BuildJobStatus["SentToQueue"] = "SENT_TO_QUEUE";
137
137
  BuildJobStatus["Started"] = "STARTED";
138
138
  })(BuildJobStatus = exports.BuildJobStatus || (exports.BuildJobStatus = {}));
139
+ var BuildLimitThresholdExceededMetadataType;
140
+ (function (BuildLimitThresholdExceededMetadataType) {
141
+ BuildLimitThresholdExceededMetadataType["Ios"] = "IOS";
142
+ BuildLimitThresholdExceededMetadataType["Total"] = "TOTAL";
143
+ })(BuildLimitThresholdExceededMetadataType = exports.BuildLimitThresholdExceededMetadataType || (exports.BuildLimitThresholdExceededMetadataType = {}));
139
144
  var BuildMode;
140
145
  (function (BuildMode) {
141
146
  BuildMode["Build"] = "BUILD";
@@ -306,10 +311,12 @@ var NotificationEvent;
306
311
  NotificationEvent["BuildLimitThresholdExceeded"] = "BUILD_LIMIT_THRESHOLD_EXCEEDED";
307
312
  NotificationEvent["BuildPlanCreditThresholdExceeded"] = "BUILD_PLAN_CREDIT_THRESHOLD_EXCEEDED";
308
313
  NotificationEvent["SubmissionComplete"] = "SUBMISSION_COMPLETE";
314
+ NotificationEvent["Test"] = "TEST";
309
315
  })(NotificationEvent = exports.NotificationEvent || (exports.NotificationEvent = {}));
310
316
  var NotificationType;
311
317
  (function (NotificationType) {
312
318
  NotificationType["Email"] = "EMAIL";
319
+ NotificationType["Web"] = "WEB";
313
320
  })(NotificationType = exports.NotificationType || (exports.NotificationType = {}));
314
321
  var OfferType;
315
322
  (function (OfferType) {
@@ -1,8 +1,12 @@
1
1
  import { ExpoGraphqlClient } from '../../commandUtils/context/contextUtils/createGraphqlClient';
2
- import { ViewUpdateChannelOnAppQuery, ViewUpdateChannelOnAppQueryVariables, ViewUpdateChannelsOnAppQuery, ViewUpdateChannelsOnAppQueryVariables } from '../generated';
3
- export type UpdateChannelObject = NonNullable<ViewUpdateChannelsOnAppQuery['app']['byId']['updateChannels']>[number];
4
- export type UpdateChannelByNameObject = NonNullable<ViewUpdateChannelOnAppQuery['app']['byId']['updateChannelByName']>;
2
+ import { ViewUpdateChannelOnAppQuery, ViewUpdateChannelOnAppQueryVariables, ViewUpdateChannelsOnAppQuery, ViewUpdateChannelsOnAppQueryVariables, ViewUpdateChannelsPaginatedOnAppQuery, ViewUpdateChannelsPaginatedOnAppQueryVariables } from '../generated';
3
+ type ViewUpdateChannelsOnAppObject = NonNullable<ViewUpdateChannelsOnAppQuery['app']['byId']['updateChannels']>[number];
4
+ type UpdateChannelByNameObject = NonNullable<ViewUpdateChannelOnAppQuery['app']['byId']['updateChannelByName']>;
5
+ export type UpdateChannelObject = ViewUpdateChannelsOnAppObject & UpdateChannelByNameObject;
6
+ export type UpdateBranchObject = UpdateChannelObject['updateBranches'][number];
5
7
  export declare const ChannelQuery: {
6
- viewUpdateChannelAsync(graphqlClient: ExpoGraphqlClient, { appId, channelName }: ViewUpdateChannelOnAppQueryVariables): Promise<UpdateChannelByNameObject>;
8
+ viewUpdateChannelAsync(graphqlClient: ExpoGraphqlClient, { appId, channelName, filter }: ViewUpdateChannelOnAppQueryVariables): Promise<UpdateChannelByNameObject>;
7
9
  viewUpdateChannelsOnAppAsync(graphqlClient: ExpoGraphqlClient, { appId, limit, offset }: ViewUpdateChannelsOnAppQueryVariables): Promise<UpdateChannelObject[]>;
10
+ viewUpdateChannelsBasicInfoPaginatedOnAppAsync(graphqlClient: ExpoGraphqlClient, { appId, first, after }: ViewUpdateChannelsPaginatedOnAppQueryVariables): Promise<ViewUpdateChannelsPaginatedOnAppQuery['app']['byId']['channelsPaginated']>;
8
11
  };
12
+ export {};
@@ -7,11 +7,16 @@ const graphql_tag_1 = tslib_1.__importDefault(require("graphql-tag"));
7
7
  const errors_1 = require("../../channel/errors");
8
8
  const client_1 = require("../client");
9
9
  const Update_1 = require("../types/Update");
10
+ const UpdateChannelBasicInfo_1 = require("../types/UpdateChannelBasicInfo");
10
11
  exports.ChannelQuery = {
11
- async viewUpdateChannelAsync(graphqlClient, { appId, channelName }) {
12
+ async viewUpdateChannelAsync(graphqlClient, { appId, channelName, filter }) {
12
13
  const response = await (0, client_1.withErrorHandlingAsync)(graphqlClient
13
14
  .query((0, graphql_tag_1.default) `
14
- query ViewUpdateChannelOnApp($appId: String!, $channelName: String!) {
15
+ query ViewUpdateChannelOnApp(
16
+ $appId: String!
17
+ $channelName: String!
18
+ $filter: UpdatesFilter
19
+ ) {
15
20
  app {
16
21
  byId(appId: $appId) {
17
22
  id
@@ -23,7 +28,7 @@ exports.ChannelQuery = {
23
28
  updateBranches(offset: 0, limit: 5) {
24
29
  id
25
30
  name
26
- updateGroups(offset: 0, limit: 1) {
31
+ updateGroups(offset: 0, limit: 1, filter: $filter) {
27
32
  id
28
33
  ...UpdateFragment
29
34
  }
@@ -33,7 +38,7 @@ exports.ChannelQuery = {
33
38
  }
34
39
  }
35
40
  ${(0, graphql_1.print)(Update_1.UpdateFragmentNode)}
36
- `, { appId, channelName }, { additionalTypenames: ['UpdateChannel', 'UpdateBranch', 'Update'] })
41
+ `, { appId, channelName, filter }, { additionalTypenames: ['UpdateChannel', 'UpdateBranch', 'Update'] })
37
42
  .toPromise());
38
43
  const { updateChannelByName } = response.app.byId;
39
44
  if (!updateChannelByName) {
@@ -51,6 +56,7 @@ exports.ChannelQuery = {
51
56
  updateChannels(offset: $offset, limit: $limit) {
52
57
  id
53
58
  name
59
+ createdAt
54
60
  branchMapping
55
61
  updateBranches(offset: 0, limit: 5) {
56
62
  id
@@ -73,4 +79,37 @@ exports.ChannelQuery = {
73
79
  }
74
80
  return updateChannels;
75
81
  },
82
+ async viewUpdateChannelsBasicInfoPaginatedOnAppAsync(graphqlClient, { appId, first, after }) {
83
+ const response = await (0, client_1.withErrorHandlingAsync)(graphqlClient
84
+ .query((0, graphql_tag_1.default) `
85
+ query ViewUpdateChannelsPaginatedOnApp($appId: String!, $first: Int, $after: String) {
86
+ app {
87
+ byId(appId: $appId) {
88
+ id
89
+ channelsPaginated(first: $first, after: $after) {
90
+ edges {
91
+ node {
92
+ id
93
+ ...UpdateChannelBasicInfoFragment
94
+ }
95
+ }
96
+ pageInfo {
97
+ hasNextPage
98
+ hasPreviousPage
99
+ startCursor
100
+ endCursor
101
+ }
102
+ }
103
+ }
104
+ }
105
+ }
106
+ ${(0, graphql_1.print)(UpdateChannelBasicInfo_1.UpdateChannelBasicInfoFragmentNode)}
107
+ `, { appId, first, after }, { additionalTypenames: ['UpdateChannel', 'UpdateBranch', 'Update'] })
108
+ .toPromise());
109
+ const { channelsPaginated } = response.app.byId;
110
+ if (!channelsPaginated) {
111
+ throw new Error(`Could not find channels on project with id ${appId}`);
112
+ }
113
+ return channelsPaginated;
114
+ },
76
115
  };
@@ -0,0 +1 @@
1
+ export declare const UpdateChannelBasicInfoFragmentNode: import("graphql").DocumentNode;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UpdateChannelBasicInfoFragmentNode = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const graphql_tag_1 = tslib_1.__importDefault(require("graphql-tag"));
6
+ exports.UpdateChannelBasicInfoFragmentNode = (0, graphql_tag_1.default) `
7
+ fragment UpdateChannelBasicInfoFragment on UpdateChannel {
8
+ id
9
+ name
10
+ branchMapping
11
+ }
12
+ `;
@@ -9,7 +9,7 @@ interface ResolveTargetOptions {
9
9
  env?: Record<string, string>;
10
10
  xcodeBuildContext: XcodeBuildContext;
11
11
  }
12
- export declare function resolveMangedProjectTargetsAsync({ exp, projectDir, xcodeBuildContext, env, }: ResolveTargetOptions): Promise<Target[]>;
12
+ export declare function resolveManagedProjectTargetsAsync({ exp, projectDir, xcodeBuildContext, env, }: ResolveTargetOptions): Promise<Target[]>;
13
13
  export declare function resolveBareProjectTargetsAsync({ exp, projectDir, xcodeBuildContext, }: ResolveTargetOptions): Promise<Target[]>;
14
14
  export declare function resolveTargetsAsync(opts: ResolveTargetOptions): Promise<Target[]>;
15
15
  export declare function findApplicationTarget(targets: Target[]): Target;