eas-cli 0.52.0 → 0.54.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 (119) hide show
  1. package/README.md +132 -44
  2. package/build/analytics/events.d.ts +5 -1
  3. package/build/analytics/events.js +6 -1
  4. package/build/build/android/version.js +1 -1
  5. package/build/build/build.js +38 -27
  6. package/build/build/local.js +1 -1
  7. package/build/build/runBuildAndSubmit.js +4 -2
  8. package/build/build/utils/url.d.ts +1 -0
  9. package/build/build/utils/url.js +5 -1
  10. package/build/commands/branch/create.js +2 -2
  11. package/build/commands/branch/delete.js +2 -2
  12. package/build/commands/branch/list.js +2 -2
  13. package/build/commands/branch/rename.js +2 -2
  14. package/build/commands/branch/view.js +2 -2
  15. package/build/commands/build/cancel.js +3 -3
  16. package/build/commands/build/configure.js +2 -2
  17. package/build/commands/build/index.d.ts +0 -1
  18. package/build/commands/build/index.js +1 -53
  19. package/build/commands/build/inspect.js +1 -1
  20. package/build/commands/build/list.js +2 -2
  21. package/build/commands/build/view.js +2 -2
  22. package/build/commands/channel/create.js +2 -2
  23. package/build/commands/channel/delete.js +2 -2
  24. package/build/commands/channel/edit.js +2 -2
  25. package/build/commands/channel/list.js +2 -2
  26. package/build/commands/channel/rollout.js +2 -2
  27. package/build/commands/channel/view.js +3 -3
  28. package/build/commands/config.js +0 -2
  29. package/build/commands/device/delete.js +2 -2
  30. package/build/commands/device/list.js +2 -2
  31. package/build/commands/device/view.js +2 -2
  32. package/build/commands/metadata/pull.d.ts +8 -0
  33. package/build/commands/metadata/pull.js +59 -0
  34. package/build/commands/metadata/push.d.ts +8 -0
  35. package/build/commands/metadata/push.js +51 -0
  36. package/build/commands/project/info.js +2 -2
  37. package/build/commands/project/init.js +2 -2
  38. package/build/commands/secret/create.js +2 -2
  39. package/build/commands/secret/delete.js +2 -2
  40. package/build/commands/secret/list.js +2 -2
  41. package/build/commands/submit.js +4 -3
  42. package/build/commands/update/configure.js +2 -3
  43. package/build/commands/update/index.d.ts +12 -0
  44. package/build/commands/update/index.js +81 -39
  45. package/build/commands/update/list.js +2 -2
  46. package/build/commands/webhook/create.js +2 -2
  47. package/build/commands/webhook/delete.js +2 -2
  48. package/build/commands/webhook/list.js +2 -2
  49. package/build/credentials/android/utils/googleServiceAccountKey.js +1 -1
  50. package/build/credentials/android/utils/keystore.js +1 -1
  51. package/build/credentials/android/utils/keystoreNew.js +2 -2
  52. package/build/credentials/context.js +2 -3
  53. package/build/credentials/credentialsJson/read.js +1 -1
  54. package/build/credentials/ios/utils/provisioningProfile.js +1 -1
  55. package/build/credentials/ios/validators/validateProvisioningProfile.js +1 -1
  56. package/build/graphql/generated.d.ts +90 -33
  57. package/build/graphql/generated.js +5 -0
  58. package/build/graphql/queries/UpdateQuery.d.ts +4 -1
  59. package/build/graphql/queries/UpdateQuery.js +8 -7
  60. package/build/metadata/apple/config/reader.d.ts +25 -0
  61. package/build/metadata/apple/config/reader.js +95 -0
  62. package/build/metadata/apple/config/writer.d.ts +23 -0
  63. package/build/metadata/apple/config/writer.js +85 -0
  64. package/build/metadata/apple/data.d.ts +20 -0
  65. package/build/metadata/apple/data.js +2 -0
  66. package/build/metadata/apple/task.d.ts +24 -0
  67. package/build/metadata/apple/task.js +6 -0
  68. package/build/metadata/apple/tasks/age-rating.d.ts +13 -0
  69. package/build/metadata/apple/tasks/age-rating.js +39 -0
  70. package/build/metadata/apple/tasks/app-info.d.ts +15 -0
  71. package/build/metadata/apple/tasks/app-info.js +73 -0
  72. package/build/metadata/apple/tasks/app-version.d.ts +27 -0
  73. package/build/metadata/apple/tasks/app-version.js +104 -0
  74. package/build/metadata/apple/tasks/index.d.ts +6 -0
  75. package/build/metadata/apple/tasks/index.js +13 -0
  76. package/build/metadata/apple/types.d.ts +50 -0
  77. package/build/metadata/apple/types.js +2 -0
  78. package/build/metadata/config.d.ts +22 -0
  79. package/build/metadata/config.js +32 -0
  80. package/build/metadata/context.d.ts +46 -0
  81. package/build/metadata/context.js +48 -0
  82. package/build/metadata/download.d.ts +6 -0
  83. package/build/metadata/download.js +65 -0
  84. package/build/metadata/errors.d.ts +37 -0
  85. package/build/metadata/errors.js +69 -0
  86. package/build/metadata/upload.d.ts +6 -0
  87. package/build/metadata/upload.js +57 -0
  88. package/build/metadata/utils/asc.d.ts +4 -0
  89. package/build/metadata/utils/asc.js +2 -0
  90. package/build/metadata/utils/date.d.ts +12 -0
  91. package/build/metadata/utils/date.js +30 -0
  92. package/build/metadata/utils/log.d.ts +16 -0
  93. package/build/metadata/utils/log.js +23 -0
  94. package/build/metadata/utils/retry.d.ts +8 -0
  95. package/build/metadata/utils/retry.js +22 -0
  96. package/build/metadata/utils/telemetry.d.ts +20 -0
  97. package/build/metadata/utils/telemetry.js +87 -0
  98. package/build/project/android/applicationId.js +1 -1
  99. package/build/project/ensureProjectExists.js +4 -1
  100. package/build/project/ios/bundleIdentifier.js +1 -1
  101. package/build/project/publish.d.ts +6 -1
  102. package/build/project/publish.js +16 -3
  103. package/build/submit/ArchiveSource.js +1 -1
  104. package/build/submit/submit.js +1 -1
  105. package/build/submit/utils/errors.js +2 -0
  106. package/build/submit/utils/files.js +1 -1
  107. package/build/submit/utils/logs.js +1 -1
  108. package/build/update/android/UpdatesModule.js +2 -2
  109. package/build/update/ios/UpdatesModule.js +2 -2
  110. package/build/user/actions.js +1 -1
  111. package/build/utils/expodash/uniq.d.ts +1 -0
  112. package/build/utils/expodash/uniq.js +7 -0
  113. package/build/utils/profiles.d.ts +3 -3
  114. package/build/utils/profiles.js +5 -93
  115. package/build/vcs/clients/git.js +5 -5
  116. package/build/vcs/git.js +1 -1
  117. package/build/webhooks/input.js +1 -1
  118. package/oclif.manifest.json +1 -1
  119. package/package.json +43 -38
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- const config_1 = require("@expo/config");
5
4
  const core_1 = require("@oclif/core");
6
5
  const chalk_1 = tslib_1.__importDefault(require("chalk"));
7
6
  const EasCommand_1 = tslib_1.__importDefault(require("../../commandUtils/EasCommand"));
@@ -9,13 +8,14 @@ const generated_1 = require("../../graphql/generated");
9
8
  const WebhookQuery_1 = require("../../graphql/queries/WebhookQuery");
10
9
  const log_1 = tslib_1.__importDefault(require("../../log"));
11
10
  const ora_1 = require("../../ora");
11
+ const expoConfig_1 = require("../../project/expoConfig");
12
12
  const projectUtils_1 = require("../../project/projectUtils");
13
13
  const formatWebhook_1 = require("../../webhooks/formatWebhook");
14
14
  class WebhookList extends EasCommand_1.default {
15
15
  async runAsync() {
16
16
  const { flags: { event }, } = await this.parse(WebhookList);
17
17
  const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
18
- const { exp } = (0, config_1.getConfig)(projectDir, { skipSDKVersionRequirement: true });
18
+ const exp = (0, expoConfig_1.getExpoConfig)(projectDir);
19
19
  const projectId = await (0, projectUtils_1.getProjectIdAsync)(exp);
20
20
  const projectFullName = await (0, projectUtils_1.getProjectFullNameAsync)(exp);
21
21
  const spinner = (0, ora_1.ora)(`Fetching the list of webhook on project ${projectFullName}`).start();
@@ -20,7 +20,7 @@ function fileIsServiceAccountKey(keyJsonPath) {
20
20
  readAndValidateServiceAccountKey(keyJsonPath);
21
21
  return true;
22
22
  }
23
- catch (err) {
23
+ catch {
24
24
  return false;
25
25
  }
26
26
  }
@@ -20,7 +20,7 @@ async function keytoolCommandExistsAsync() {
20
20
  await (0, spawn_async_1.default)('keytool');
21
21
  return true;
22
22
  }
23
- catch (error) {
23
+ catch {
24
24
  return false;
25
25
  }
26
26
  }
@@ -26,7 +26,7 @@ function isPKCSKeystore(keystore) {
26
26
  (0, pkcs12_1.parsePKCS12)(keystore.keystore, keystore.keystorePassword);
27
27
  return true;
28
28
  }
29
- catch (e) {
29
+ catch {
30
30
  return false;
31
31
  }
32
32
  }
@@ -35,7 +35,7 @@ function isJKSKeystore(keystore) {
35
35
  jks_js_1.default.parseJks(Buffer.from(keystore.keystore, 'base64'), keystore.keystorePassword);
36
36
  return true;
37
37
  }
38
- catch (e) {
38
+ catch {
39
39
  return false;
40
40
  }
41
41
  }
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CredentialsContext = void 0;
4
4
  const tslib_1 = require("tslib");
5
- const config_1 = require("@expo/config");
6
5
  const chalk_1 = tslib_1.__importDefault(require("chalk"));
7
6
  const log_1 = tslib_1.__importDefault(require("../log"));
8
7
  const expoConfig_1 = require("../project/expoConfig");
@@ -34,7 +33,7 @@ class CredentialsContext {
34
33
  try {
35
34
  return (0, expoConfig_1.getExpoConfig)(projectDir, { env });
36
35
  }
37
- catch (error) {
36
+ catch {
38
37
  // ignore error, context might be created outside of expo project
39
38
  return null;
40
39
  }
@@ -51,7 +50,7 @@ class CredentialsContext {
51
50
  return;
52
51
  }
53
52
  // trigger getConfig error
54
- (0, config_1.getConfig)(this.options.projectDir, { skipSDKVersionRequirement: true });
53
+ (0, expoConfig_1.getExpoConfig)(this.options.projectDir);
55
54
  }
56
55
  logOwnerAndProject() {
57
56
  var _a;
@@ -81,7 +81,7 @@ async function readRawAsync(projectDir, { throwIfMissing = true } = {}) {
81
81
  const credentialsJSONContents = await fs_extra_1.default.readFile(credentialsJsonFilePath, 'utf8');
82
82
  return JSON.parse(credentialsJSONContents);
83
83
  }
84
- catch (err) {
84
+ catch {
85
85
  throw new Error(`credentials.json must exist in the project root directory and contain a valid JSON`);
86
86
  }
87
87
  }
@@ -31,7 +31,7 @@ function parse(dataBase64) {
31
31
  const profile = buffer.toString('utf8');
32
32
  return plist_1.default.parse(profile);
33
33
  }
34
- catch (error) {
34
+ catch {
35
35
  throw new Error('Provisioning profile is malformed');
36
36
  }
37
37
  }
@@ -53,7 +53,7 @@ function validateProvisioningProfileWithoutApple(app, { provisioningProfile, dis
53
53
  return false;
54
54
  }
55
55
  }
56
- catch (error) {
56
+ catch {
57
57
  log_1.default.warn('Provisioning Profile is malformed.');
58
58
  return false;
59
59
  }
@@ -91,7 +91,7 @@ export declare type Account = {
91
91
  apps: Array<App>;
92
92
  /** @deprecated Build packs are no longer supported */
93
93
  availableBuilds?: Maybe<Scalars['Int']>;
94
- /** Billing information */
94
+ /** Billing information. Only visible to members with the ADMIN or OWNER role. */
95
95
  billing?: Maybe<Billing>;
96
96
  billingPeriod: BillingPeriod;
97
97
  /** Build Jobs associated with this account */
@@ -295,7 +295,9 @@ export declare type AccountMutationRenameArgs = {
295
295
  };
296
296
  export declare type AccountMutationRequestRefundArgs = {
297
297
  accountID: Scalars['ID'];
298
- chargeIdentifier: Scalars['ID'];
298
+ chargeID: Scalars['ID'];
299
+ description?: InputMaybe<Scalars['String']>;
300
+ reason?: InputMaybe<Scalars['String']>;
299
301
  };
300
302
  export declare type AccountMutationRevokeActorPermissionsArgs = {
301
303
  accountID: Scalars['ID'];
@@ -334,18 +336,34 @@ export declare type AccountQueryByNameArgs = {
334
336
  };
335
337
  export declare type AccountUsageMetric = {
336
338
  __typename?: 'AccountUsageMetric';
337
- metric: EasServiceMetric;
339
+ id: Scalars['ID'];
338
340
  metricType: UsageMetricType;
341
+ serviceMetric: EasServiceMetric;
339
342
  timestamp: Scalars['DateTime'];
340
343
  value: Scalars['Float'];
341
344
  };
345
+ export declare type AccountUsageMetricAndCost = {
346
+ __typename?: 'AccountUsageMetricAndCost';
347
+ id: Scalars['ID'];
348
+ /** The limit, in units, allowed by this plan */
349
+ limit: Scalars['Float'];
350
+ metricType: UsageMetricType;
351
+ serviceMetric: EasServiceMetric;
352
+ /** Total cost of this particular metric, in cents */
353
+ totalCost: Scalars['Float'];
354
+ value: Scalars['Float'];
355
+ };
342
356
  export declare type AccountUsageMetrics = {
343
357
  __typename?: 'AccountUsageMetrics';
358
+ byBillingPeriod: UsageMetricTotal;
344
359
  metricsForServiceMetric: Array<AccountUsageMetric>;
345
360
  };
361
+ export declare type AccountUsageMetricsByBillingPeriodArgs = {
362
+ date: Scalars['DateTime'];
363
+ };
346
364
  export declare type AccountUsageMetricsMetricsForServiceMetricArgs = {
347
365
  granularity: UsageMetricsGranularity;
348
- metric: EasServiceMetric;
366
+ serviceMetric: EasServiceMetric;
349
367
  timespan: UsageMetricsTimespan;
350
368
  };
351
369
  export declare type ActivityTimelineProjectActivity = {
@@ -842,14 +860,18 @@ export declare type AppDataInput = {
842
860
  };
843
861
  export declare type AppIcon = {
844
862
  __typename?: 'AppIcon';
845
- /** Nullable color palette of the app icon. If null, color palette couldn't be retrieved from external service (imgix) */
863
+ /** @deprecated No longer supported */
846
864
  colorPalette?: Maybe<Scalars['JSON']>;
847
865
  originalUrl: Scalars['String'];
848
866
  primaryColor?: Maybe<Scalars['String']>;
849
867
  url: Scalars['String'];
850
868
  };
869
+ export declare type AppInfoInput = {
870
+ displayName?: InputMaybe<Scalars['String']>;
871
+ };
851
872
  export declare type AppInput = {
852
873
  accountId: Scalars['ID'];
874
+ appInfo?: InputMaybe<AppInfoInput>;
853
875
  privacy: AppPrivacy;
854
876
  projectName: Scalars['String'];
855
877
  };
@@ -859,6 +881,8 @@ export declare type AppMutation = {
859
881
  createApp: App;
860
882
  /** @deprecated No longer supported */
861
883
  grantAccess?: Maybe<App>;
884
+ /** Set display info for app */
885
+ setAppInfo: App;
862
886
  /** Require api token to send push notifs for experience */
863
887
  setPushSecurityEnabled: App;
864
888
  };
@@ -869,6 +893,10 @@ export declare type AppMutationGrantAccessArgs = {
869
893
  accessLevel?: InputMaybe<Scalars['String']>;
870
894
  toUser: Scalars['ID'];
871
895
  };
896
+ export declare type AppMutationSetAppInfoArgs = {
897
+ appId: Scalars['ID'];
898
+ appInfo: AppInfoInput;
899
+ };
872
900
  export declare type AppMutationSetPushSecurityEnabledArgs = {
873
901
  appId: Scalars['ID'];
874
902
  pushSecurityEnabled: Scalars['Boolean'];
@@ -1273,10 +1301,13 @@ export declare type Build = ActivityTimelineProjectActivity & BuildOrBuildJob &
1273
1301
  appVersion?: Maybe<Scalars['String']>;
1274
1302
  artifacts?: Maybe<BuildArtifacts>;
1275
1303
  buildProfile?: Maybe<Scalars['String']>;
1304
+ canRetry: Scalars['Boolean'];
1276
1305
  cancelingActor?: Maybe<Actor>;
1277
1306
  channel?: Maybe<Scalars['String']>;
1278
- createdAt?: Maybe<Scalars['DateTime']>;
1307
+ completedAt?: Maybe<Scalars['DateTime']>;
1308
+ createdAt: Scalars['DateTime'];
1279
1309
  distribution?: Maybe<DistributionType>;
1310
+ enqueuedAt?: Maybe<Scalars['DateTime']>;
1280
1311
  error?: Maybe<BuildError>;
1281
1312
  estimatedWaitTimeLeftSeconds?: Maybe<Scalars['Int']>;
1282
1313
  expirationDate?: Maybe<Scalars['DateTime']>;
@@ -1291,9 +1322,11 @@ export declare type Build = ActivityTimelineProjectActivity & BuildOrBuildJob &
1291
1322
  isGitWorkingTreeDirty?: Maybe<Scalars['Boolean']>;
1292
1323
  logFiles: Array<Scalars['String']>;
1293
1324
  metrics?: Maybe<BuildMetrics>;
1325
+ parentBuild?: Maybe<Build>;
1294
1326
  platform: AppPlatform;
1295
1327
  priority: BuildPriority;
1296
1328
  project: Project;
1329
+ provisioningStartedAt?: Maybe<Scalars['DateTime']>;
1297
1330
  /** Queue position is 1-indexed */
1298
1331
  queuePosition?: Maybe<Scalars['Int']>;
1299
1332
  reactNativeVersion?: Maybe<Scalars['String']>;
@@ -1302,7 +1335,8 @@ export declare type Build = ActivityTimelineProjectActivity & BuildOrBuildJob &
1302
1335
  sdkVersion?: Maybe<Scalars['String']>;
1303
1336
  status: BuildStatus;
1304
1337
  submissions: Array<Submission>;
1305
- updatedAt?: Maybe<Scalars['DateTime']>;
1338
+ updatedAt: Scalars['DateTime'];
1339
+ workerStartedAt?: Maybe<Scalars['DateTime']>;
1306
1340
  };
1307
1341
  export declare type BuildArtifact = {
1308
1342
  __typename?: 'BuildArtifact';
@@ -1454,6 +1488,8 @@ export declare type BuildMutation = {
1454
1488
  createIosBuild: CreateBuildResult;
1455
1489
  /** Delete an EAS Build build */
1456
1490
  deleteBuild: Build;
1491
+ /** Retry an EAS Build build */
1492
+ retryBuild: Build;
1457
1493
  };
1458
1494
  export declare type BuildMutationCancelBuildArgs = {
1459
1495
  buildId: Scalars['ID'];
@@ -1471,6 +1507,9 @@ export declare type BuildMutationCreateIosBuildArgs = {
1471
1507
  export declare type BuildMutationDeleteBuildArgs = {
1472
1508
  buildId: Scalars['ID'];
1473
1509
  };
1510
+ export declare type BuildMutationRetryBuildArgs = {
1511
+ buildId: Scalars['ID'];
1512
+ };
1474
1513
  export declare type BuildOrBuildJob = {
1475
1514
  id: Scalars['ID'];
1476
1515
  };
@@ -1594,6 +1633,12 @@ export declare type CodeSigningInfoInput = {
1594
1633
  keyid: Scalars['String'];
1595
1634
  sig: Scalars['String'];
1596
1635
  };
1636
+ export declare type Concurrencies = {
1637
+ __typename?: 'Concurrencies';
1638
+ android: Scalars['Int'];
1639
+ ios: Scalars['Int'];
1640
+ total: Scalars['Int'];
1641
+ };
1597
1642
  export declare type CreateAccessTokenInput = {
1598
1643
  actorID: Scalars['ID'];
1599
1644
  note?: InputMaybe<Scalars['String']>;
@@ -1607,6 +1652,7 @@ export declare type CreateAccessTokenResponse = {
1607
1652
  };
1608
1653
  export declare type CreateAndroidSubmissionInput = {
1609
1654
  appId: Scalars['ID'];
1655
+ archiveUrl?: InputMaybe<Scalars['String']>;
1610
1656
  config: AndroidSubmissionConfigInput;
1611
1657
  submittedBuildId?: InputMaybe<Scalars['ID']>;
1612
1658
  };
@@ -1621,15 +1667,10 @@ export declare type CreateEnvironmentSecretInput = {
1621
1667
  };
1622
1668
  export declare type CreateIosSubmissionInput = {
1623
1669
  appId: Scalars['ID'];
1670
+ archiveUrl?: InputMaybe<Scalars['String']>;
1624
1671
  config: IosSubmissionConfigInput;
1625
1672
  submittedBuildId?: InputMaybe<Scalars['ID']>;
1626
1673
  };
1627
- export declare type CreateSubmissionInput = {
1628
- appId: Scalars['ID'];
1629
- config: Scalars['JSONObject'];
1630
- platform: AppPlatform;
1631
- submittedBuildId?: InputMaybe<Scalars['ID']>;
1632
- };
1633
1674
  export declare type CreateSubmissionResult = {
1634
1675
  __typename?: 'CreateSubmissionResult';
1635
1676
  /** Created submission */
@@ -1720,7 +1761,10 @@ export declare enum EasBuildDeprecationInfoType {
1720
1761
  UserFacing = "USER_FACING"
1721
1762
  }
1722
1763
  export declare enum EasServiceMetric {
1723
- ManifestRequests = "MANIFEST_REQUESTS"
1764
+ AssetsRequests = "ASSETS_REQUESTS",
1765
+ BandwidthUsage = "BANDWIDTH_USAGE",
1766
+ ManifestRequests = "MANIFEST_REQUESTS",
1767
+ UniqueUsers = "UNIQUE_USERS"
1724
1768
  }
1725
1769
  export declare type EditUpdateBranchInput = {
1726
1770
  appId?: InputMaybe<Scalars['ID']>;
@@ -2595,6 +2639,8 @@ export declare type Submission = ActivityTimelineProjectActivity & {
2595
2639
  actor?: Maybe<Actor>;
2596
2640
  androidConfig?: Maybe<AndroidSubmissionConfig>;
2597
2641
  app: App;
2642
+ archiveUrl?: Maybe<Scalars['String']>;
2643
+ canRetry: Scalars['Boolean'];
2598
2644
  cancelingActor?: Maybe<Actor>;
2599
2645
  createdAt: Scalars['DateTime'];
2600
2646
  error?: Maybe<SubmissionError>;
@@ -2602,6 +2648,7 @@ export declare type Submission = ActivityTimelineProjectActivity & {
2602
2648
  initiatingActor?: Maybe<Actor>;
2603
2649
  iosConfig?: Maybe<IosSubmissionConfig>;
2604
2650
  logsUrl?: Maybe<Scalars['String']>;
2651
+ parentSubmission?: Maybe<Submission>;
2605
2652
  platform: AppPlatform;
2606
2653
  status: SubmissionStatus;
2607
2654
  submittedBuild?: Maybe<Build>;
@@ -2640,14 +2687,11 @@ export declare type SubmissionMutation = {
2640
2687
  createAndroidSubmission: CreateSubmissionResult;
2641
2688
  /** Create an iOS EAS Submit submission */
2642
2689
  createIosSubmission: CreateSubmissionResult;
2643
- /**
2644
- * Create an EAS Submit submission
2645
- * @deprecated Use createIosSubmission / createAndroidSubmission instead
2646
- */
2647
- createSubmission: CreateSubmissionResult;
2690
+ /** Retry an EAS Submit submission */
2691
+ retrySubmission: CreateSubmissionResult;
2648
2692
  };
2649
2693
  export declare type SubmissionMutationCancelSubmissionArgs = {
2650
- submissionId?: InputMaybe<Scalars['ID']>;
2694
+ submissionId: Scalars['ID'];
2651
2695
  };
2652
2696
  export declare type SubmissionMutationCreateAndroidSubmissionArgs = {
2653
2697
  input: CreateAndroidSubmissionInput;
@@ -2655,8 +2699,8 @@ export declare type SubmissionMutationCreateAndroidSubmissionArgs = {
2655
2699
  export declare type SubmissionMutationCreateIosSubmissionArgs = {
2656
2700
  input: CreateIosSubmissionInput;
2657
2701
  };
2658
- export declare type SubmissionMutationCreateSubmissionArgs = {
2659
- input: CreateSubmissionInput;
2702
+ export declare type SubmissionMutationRetrySubmissionArgs = {
2703
+ parentSubmissionId: Scalars['ID'];
2660
2704
  };
2661
2705
  export declare type SubmissionQuery = {
2662
2706
  __typename?: 'SubmissionQuery';
@@ -2678,6 +2722,7 @@ export declare type SubscriptionDetails = {
2678
2722
  __typename?: 'SubscriptionDetails';
2679
2723
  addons: Array<AddonDetails>;
2680
2724
  cancelledAt?: Maybe<Scalars['DateTime']>;
2725
+ concurrencies?: Maybe<Concurrencies>;
2681
2726
  endedAt?: Maybe<Scalars['DateTime']>;
2682
2727
  id: Scalars['ID'];
2683
2728
  isDowngrading?: Maybe<Scalars['Boolean']>;
@@ -2828,8 +2873,19 @@ export declare enum UploadSessionType {
2828
2873
  EasBuildProjectSources = "EAS_BUILD_PROJECT_SOURCES",
2829
2874
  EasSubmitAppArchive = "EAS_SUBMIT_APP_ARCHIVE"
2830
2875
  }
2876
+ export declare type UsageMetricTotal = {
2877
+ __typename?: 'UsageMetricTotal';
2878
+ billingPeriod: BillingPeriod;
2879
+ id: Scalars['ID'];
2880
+ overageMetrics: Array<AccountUsageMetricAndCost>;
2881
+ planMetrics: Array<AccountUsageMetricAndCost>;
2882
+ /** Total cost of overages, in cents */
2883
+ totalCost: Scalars['Float'];
2884
+ };
2831
2885
  export declare enum UsageMetricType {
2832
- Request = "REQUEST"
2886
+ Bandwidth = "BANDWIDTH",
2887
+ Request = "REQUEST",
2888
+ User = "USER"
2833
2889
  }
2834
2890
  export declare enum UsageMetricsGranularity {
2835
2891
  Day = "DAY",
@@ -5720,8 +5776,8 @@ export declare type CreateAndroidBuildMutation = {
5720
5776
  queuePosition?: number | null;
5721
5777
  estimatedWaitTimeLeftSeconds?: number | null;
5722
5778
  priority: BuildPriority;
5723
- createdAt?: any | null;
5724
- updatedAt?: any | null;
5779
+ createdAt: any;
5780
+ updatedAt: any;
5725
5781
  error?: {
5726
5782
  __typename?: 'BuildError';
5727
5783
  errorCode: string;
@@ -5797,8 +5853,8 @@ export declare type CreateIosBuildMutation = {
5797
5853
  queuePosition?: number | null;
5798
5854
  estimatedWaitTimeLeftSeconds?: number | null;
5799
5855
  priority: BuildPriority;
5800
- createdAt?: any | null;
5801
- updatedAt?: any | null;
5856
+ createdAt: any;
5857
+ updatedAt: any;
5802
5858
  error?: {
5803
5859
  __typename?: 'BuildError';
5804
5860
  errorCode: string;
@@ -6155,8 +6211,8 @@ export declare type BuildsByIdQuery = {
6155
6211
  queuePosition?: number | null;
6156
6212
  estimatedWaitTimeLeftSeconds?: number | null;
6157
6213
  priority: BuildPriority;
6158
- createdAt?: any | null;
6159
- updatedAt?: any | null;
6214
+ createdAt: any;
6215
+ updatedAt: any;
6160
6216
  error?: {
6161
6217
  __typename?: 'BuildError';
6162
6218
  errorCode: string;
@@ -6228,8 +6284,8 @@ export declare type GetAllBuildsForAppQuery = {
6228
6284
  queuePosition?: number | null;
6229
6285
  estimatedWaitTimeLeftSeconds?: number | null;
6230
6286
  priority: BuildPriority;
6231
- createdAt?: any | null;
6232
- updatedAt?: any | null;
6287
+ createdAt: any;
6288
+ updatedAt: any;
6233
6289
  error?: {
6234
6290
  __typename?: 'BuildError';
6235
6291
  errorCode: string;
@@ -6518,6 +6574,7 @@ export declare type ViewBranchUpdatesQueryVariables = Exact<{
6518
6574
  appId: Scalars['String'];
6519
6575
  name: Scalars['String'];
6520
6576
  limit: Scalars['Int'];
6577
+ offset: Scalars['Int'];
6521
6578
  }>;
6522
6579
  export declare type ViewBranchUpdatesQuery = {
6523
6580
  __typename?: 'RootQuery';
@@ -6644,8 +6701,8 @@ export declare type BuildFragment = {
6644
6701
  queuePosition?: number | null;
6645
6702
  estimatedWaitTimeLeftSeconds?: number | null;
6646
6703
  priority: BuildPriority;
6647
- createdAt?: any | null;
6648
- updatedAt?: any | null;
6704
+ createdAt: any;
6705
+ updatedAt: any;
6649
6706
  error?: {
6650
6707
  __typename?: 'BuildError';
6651
6708
  errorCode: string;
@@ -147,7 +147,10 @@ var EasBuildDeprecationInfoType;
147
147
  })(EasBuildDeprecationInfoType = exports.EasBuildDeprecationInfoType || (exports.EasBuildDeprecationInfoType = {}));
148
148
  var EasServiceMetric;
149
149
  (function (EasServiceMetric) {
150
+ EasServiceMetric["AssetsRequests"] = "ASSETS_REQUESTS";
151
+ EasServiceMetric["BandwidthUsage"] = "BANDWIDTH_USAGE";
150
152
  EasServiceMetric["ManifestRequests"] = "MANIFEST_REQUESTS";
153
+ EasServiceMetric["UniqueUsers"] = "UNIQUE_USERS";
151
154
  })(EasServiceMetric = exports.EasServiceMetric || (exports.EasServiceMetric = {}));
152
155
  var Feature;
153
156
  (function (Feature) {
@@ -287,7 +290,9 @@ var UploadSessionType;
287
290
  })(UploadSessionType = exports.UploadSessionType || (exports.UploadSessionType = {}));
288
291
  var UsageMetricType;
289
292
  (function (UsageMetricType) {
293
+ UsageMetricType["Bandwidth"] = "BANDWIDTH";
290
294
  UsageMetricType["Request"] = "REQUEST";
295
+ UsageMetricType["User"] = "USER";
291
296
  })(UsageMetricType = exports.UsageMetricType || (exports.UsageMetricType = {}));
292
297
  var UsageMetricsGranularity;
293
298
  (function (UsageMetricsGranularity) {
@@ -1,7 +1,10 @@
1
1
  import { ViewAllUpdatesQuery, ViewBranchUpdatesQuery, ViewBranchUpdatesQueryVariables } from '../generated';
2
+ export declare const viewBranchUpdatesQueryUpdateLimit = 300;
3
+ declare type ViewBranchUpdatesQueryVariablesWithOptionalLimitAndOffset = Partial<ViewBranchUpdatesQueryVariables> & Pick<ViewBranchUpdatesQueryVariables, 'appId' | 'name'>;
2
4
  export declare const UpdateQuery: {
3
5
  viewAllAsync({ appId }: {
4
6
  appId: string;
5
7
  }): Promise<ViewAllUpdatesQuery>;
6
- viewBranchAsync({ appId, name }: Pick<ViewBranchUpdatesQueryVariables, 'appId' | 'name'>): Promise<ViewBranchUpdatesQuery>;
8
+ viewBranchAsync({ appId, name, limit, offset, }: ViewBranchUpdatesQueryVariablesWithOptionalLimitAndOffset): Promise<ViewBranchUpdatesQuery>;
7
9
  };
10
+ export {};
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UpdateQuery = void 0;
3
+ exports.UpdateQuery = exports.viewBranchUpdatesQueryUpdateLimit = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const graphql_tag_1 = tslib_1.__importDefault(require("graphql-tag"));
6
6
  const client_1 = require("../client");
7
- const PAGE_LIMIT = 10000;
7
+ exports.viewBranchUpdatesQueryUpdateLimit = 300;
8
8
  exports.UpdateQuery = {
9
9
  async viewAllAsync({ appId }) {
10
10
  return (0, client_1.withErrorHandlingAsync)(client_1.graphqlClient
@@ -39,21 +39,21 @@ exports.UpdateQuery = {
39
39
  }
40
40
  `, {
41
41
  appId,
42
- limit: PAGE_LIMIT,
42
+ limit: exports.viewBranchUpdatesQueryUpdateLimit,
43
43
  }, { additionalTypenames: ['UpdateBranch', 'Update'] })
44
44
  .toPromise());
45
45
  },
46
- async viewBranchAsync({ appId, name }) {
46
+ async viewBranchAsync({ appId, name, limit = exports.viewBranchUpdatesQueryUpdateLimit, offset = 0, }) {
47
47
  return (0, client_1.withErrorHandlingAsync)(client_1.graphqlClient
48
48
  .query((0, graphql_tag_1.default) `
49
- query ViewBranchUpdates($appId: String!, $name: String!, $limit: Int!) {
49
+ query ViewBranchUpdates($appId: String!, $name: String!, $limit: Int!, $offset: Int!) {
50
50
  app {
51
51
  byId(appId: $appId) {
52
52
  id
53
53
  updateBranchByName(name: $name) {
54
54
  id
55
55
  name
56
- updates(offset: 0, limit: $limit) {
56
+ updates(offset: $offset, limit: $limit) {
57
57
  id
58
58
  group
59
59
  message
@@ -78,7 +78,8 @@ exports.UpdateQuery = {
78
78
  `, {
79
79
  appId,
80
80
  name,
81
- limit: PAGE_LIMIT,
81
+ limit,
82
+ offset,
82
83
  }, { additionalTypenames: ['UpdateBranch', 'Update'] })
83
84
  .toPromise());
84
85
  },
@@ -0,0 +1,25 @@
1
+ /// <reference types="@expo/apple-utils/ts-declarations/expo__app-store" />
2
+ import { AgeRatingDeclaration, AppInfoLocalization, AppStoreVersion, AppStoreVersionLocalization, CategoryIds } from '@expo/apple-utils';
3
+ import { AttributesOf } from '../../utils/asc';
4
+ import { AppleMetadata } from '../types';
5
+ declare type PartialExcept<T, K extends keyof T> = Pick<T, K> & Partial<Omit<T, K>>;
6
+ export declare const DEFAULT_WHATSNEW = "Bug fixes and improved stability";
7
+ /**
8
+ * Deserializes the metadata config schema into attributes for different models.
9
+ * This uses version 0 of the config schema.
10
+ */
11
+ export declare class AppleConfigReader {
12
+ readonly schema: AppleMetadata;
13
+ constructor(schema: AppleMetadata);
14
+ getAgeRating(): Partial<AttributesOf<AgeRatingDeclaration>> | null;
15
+ getLocales(): string[];
16
+ getInfoLocale(locale: string): PartialExcept<AttributesOf<AppInfoLocalization>, 'locale' | 'name'> | null;
17
+ getCategories(): CategoryIds | null;
18
+ /** Get the `AppStoreVersion` object. */
19
+ getVersion(): Partial<Omit<AttributesOf<AppStoreVersion>, 'releaseType' | 'earliestReleaseDate'>> | null;
20
+ getVersionRelease(): Partial<Pick<AttributesOf<AppStoreVersion>, 'releaseType' | 'earliestReleaseDate'>> | null;
21
+ getVersionLocale(locale: string, context: {
22
+ versionIsFirst: boolean;
23
+ }): Partial<AttributesOf<AppStoreVersionLocalization>> | null;
24
+ }
25
+ export {};
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AppleConfigReader = exports.DEFAULT_WHATSNEW = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const apple_utils_1 = require("@expo/apple-utils");
6
+ const uniq_1 = tslib_1.__importDefault(require("../../../utils/expodash/uniq"));
7
+ const date_1 = require("../../utils/date");
8
+ // TODO: find out if we can move this to default JSON schema normalization
9
+ exports.DEFAULT_WHATSNEW = 'Bug fixes and improved stability';
10
+ /**
11
+ * Deserializes the metadata config schema into attributes for different models.
12
+ * This uses version 0 of the config schema.
13
+ */
14
+ class AppleConfigReader {
15
+ constructor(schema) {
16
+ this.schema = schema;
17
+ }
18
+ getAgeRating() {
19
+ return this.schema.advisory || null;
20
+ }
21
+ getLocales() {
22
+ // TODO: filter "default" locales, add option to add non-localized info to the config
23
+ return (0, uniq_1.default)(Object.keys(this.schema.info || {}));
24
+ }
25
+ getInfoLocale(locale) {
26
+ var _a, _b;
27
+ const info = (_a = this.schema.info) === null || _a === void 0 ? void 0 : _a[locale];
28
+ if (!info) {
29
+ return null;
30
+ }
31
+ return {
32
+ locale,
33
+ name: (_b = info.title) !== null && _b !== void 0 ? _b : 'no name provided',
34
+ subtitle: info.subtitle,
35
+ privacyChoicesUrl: info.privacyChoicesUrl,
36
+ privacyPolicyText: info.privacyPolicyText,
37
+ privacyPolicyUrl: info.privacyPolicyUrl,
38
+ };
39
+ }
40
+ getCategories() {
41
+ if (Array.isArray(this.schema.categories) && this.schema.categories.length > 0) {
42
+ return {
43
+ primaryCategory: this.schema.categories[0],
44
+ secondaryCategory: this.schema.categories[1],
45
+ };
46
+ }
47
+ return null;
48
+ }
49
+ /** Get the `AppStoreVersion` object. */
50
+ getVersion() {
51
+ return this.schema.copyright ? { copyright: this.schema.copyright } : null;
52
+ }
53
+ getVersionRelease() {
54
+ var _a, _b;
55
+ const { release } = this.schema;
56
+ if (release === null || release === void 0 ? void 0 : release.autoReleaseDate) {
57
+ return {
58
+ releaseType: apple_utils_1.ReleaseType.SCHEDULED,
59
+ // Convert time format to 2020-06-17T12:00:00-07:00
60
+ earliestReleaseDate: (_b = (_a = (0, date_1.removeDatePrecision)(release.autoReleaseDate)) === null || _a === void 0 ? void 0 : _a.toISOString()) !== null && _b !== void 0 ? _b : null,
61
+ };
62
+ }
63
+ if ((release === null || release === void 0 ? void 0 : release.automaticRelease) === true) {
64
+ return {
65
+ releaseType: apple_utils_1.ReleaseType.AFTER_APPROVAL,
66
+ earliestReleaseDate: null,
67
+ };
68
+ }
69
+ if ((release === null || release === void 0 ? void 0 : release.automaticRelease) === false) {
70
+ return {
71
+ releaseType: apple_utils_1.ReleaseType.MANUAL,
72
+ earliestReleaseDate: null,
73
+ };
74
+ }
75
+ return null;
76
+ }
77
+ getVersionLocale(locale, context) {
78
+ var _a, _b;
79
+ const info = (_a = this.schema.info) === null || _a === void 0 ? void 0 : _a[locale];
80
+ if (!info) {
81
+ return null;
82
+ }
83
+ return {
84
+ locale,
85
+ description: info.description,
86
+ keywords: (_b = info.keywords) === null || _b === void 0 ? void 0 : _b.join(', '),
87
+ // TODO: maybe move this to task logic, it's more an exception than data handling
88
+ whatsNew: context.versionIsFirst ? undefined : info.releaseNotes || exports.DEFAULT_WHATSNEW,
89
+ marketingUrl: info.marketingUrl,
90
+ promotionalText: info.promoText,
91
+ supportUrl: info.supportUrl,
92
+ };
93
+ }
94
+ }
95
+ exports.AppleConfigReader = AppleConfigReader;