eas-cli 16.1.0 → 16.2.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.
Files changed (41) hide show
  1. package/README.md +117 -81
  2. package/build/build/utils/url.d.ts +1 -0
  3. package/build/build/utils/url.js +5 -1
  4. package/build/commandUtils/EasCommand.js +6 -1
  5. package/build/commandUtils/builds.d.ts +1 -0
  6. package/build/commandUtils/builds.js +3 -0
  7. package/build/commandUtils/context/ServerSideEnvironmentVariablesContextField.d.ts +1 -2
  8. package/build/commands/deploy/index.js +20 -2
  9. package/build/commands/fingerprint/compare.d.ts +3 -0
  10. package/build/commands/fingerprint/compare.js +50 -13
  11. package/build/commands/fingerprint/generate.d.ts +5 -2
  12. package/build/commands/fingerprint/generate.js +44 -7
  13. package/build/commands/update/delete.js +13 -6
  14. package/build/commands/update/index.d.ts +1 -0
  15. package/build/commands/update/index.js +90 -59
  16. package/build/commands/upload.d.ts +18 -0
  17. package/build/commands/upload.js +253 -0
  18. package/build/credentials/ios/appstore/ensureTestFlightGroup.js +4 -3
  19. package/build/graphql/generated.d.ts +170 -5
  20. package/build/graphql/generated.js +6 -2
  21. package/build/graphql/mutations/LocalBuildMutation.d.ts +5 -0
  22. package/build/graphql/mutations/LocalBuildMutation.js +38 -0
  23. package/build/graphql/mutations/UploadSessionMutation.d.ts +1 -1
  24. package/build/graphql/mutations/UploadSessionMutation.js +4 -3
  25. package/build/graphql/queries/BackgroundJobReceiptQuery.d.ts +5 -0
  26. package/build/graphql/queries/BackgroundJobReceiptQuery.js +27 -0
  27. package/build/graphql/types/BackgroundJobReceipt.d.ts +1 -0
  28. package/build/graphql/types/BackgroundJobReceipt.js +20 -0
  29. package/build/metadata/download.js +1 -1
  30. package/build/metadata/upload.js +1 -1
  31. package/build/metadata/utils/telemetry.d.ts +3 -3
  32. package/build/metadata/utils/telemetry.js +9 -9
  33. package/build/project/publish.d.ts +17 -1
  34. package/build/project/publish.js +22 -1
  35. package/build/run/ios/xcode.d.ts +15 -0
  36. package/build/run/ios/xcode.js +24 -1
  37. package/build/uploads.js +2 -1
  38. package/build/utils/pollForBackgroundJobReceiptAsync.d.ts +29 -0
  39. package/build/utils/pollForBackgroundJobReceiptAsync.js +92 -0
  40. package/oclif.manifest.json +80 -5
  41. package/package.json +5 -3
@@ -167,6 +167,7 @@ export type Account = {
167
167
  googleServiceAccountKeys: Array<GoogleServiceAccountKey>;
168
168
  /** Android credentials for account */
169
169
  googleServiceAccountKeysPaginated: AccountGoogleServiceAccountKeysConnection;
170
+ hasBuilds: Scalars['Boolean']['output'];
170
171
  id: Scalars['ID']['output'];
171
172
  isCurrent: Scalars['Boolean']['output'];
172
173
  isDisabled: Scalars['Boolean']['output'];
@@ -2595,6 +2596,8 @@ export type BuildMutation = {
2595
2596
  createAndroidBuild: CreateBuildResult;
2596
2597
  /** Create an iOS build */
2597
2598
  createIosBuild: CreateBuildResult;
2599
+ /** Create a local build */
2600
+ createLocalBuild: CreateBuildResult;
2598
2601
  /** Delete an EAS Build build */
2599
2602
  deleteBuild: Build;
2600
2603
  /** Retry an Android EAS Build */
@@ -2624,6 +2627,12 @@ export type BuildMutationCreateIosBuildArgs = {
2624
2627
  job: IosJobInput;
2625
2628
  metadata?: InputMaybe<BuildMetadataInput>;
2626
2629
  };
2630
+ export type BuildMutationCreateLocalBuildArgs = {
2631
+ appId: Scalars['ID']['input'];
2632
+ artifactSource: LocalBuildArchiveSourceInput;
2633
+ job: LocalBuildJobInput;
2634
+ metadata?: InputMaybe<BuildMetadataInput>;
2635
+ };
2627
2636
  export type BuildMutationDeleteBuildArgs = {
2628
2637
  buildId: Scalars['ID']['input'];
2629
2638
  };
@@ -2709,6 +2718,7 @@ export declare enum BuildPriority {
2709
2718
  export type BuildPublicData = {
2710
2719
  __typename?: 'BuildPublicData';
2711
2720
  artifacts: PublicArtifacts;
2721
+ buildMode?: Maybe<BuildMode>;
2712
2722
  distribution?: Maybe<DistributionType>;
2713
2723
  id: Scalars['ID']['output'];
2714
2724
  isForIosSimulator: Scalars['Boolean']['output'];
@@ -4373,6 +4383,7 @@ export type IosSubmissionConfigInput = {
4373
4383
  ascApiKey?: InputMaybe<AscApiKeyInput>;
4374
4384
  ascApiKeyId?: InputMaybe<Scalars['String']['input']>;
4375
4385
  ascAppIdentifier: Scalars['String']['input'];
4386
+ groups?: InputMaybe<Array<Scalars['String']['input']>>;
4376
4387
  isVerboseFastlaneEnabled?: InputMaybe<Scalars['Boolean']['input']>;
4377
4388
  };
4378
4389
  /** Represents a Turtle Job Run */
@@ -4491,6 +4502,18 @@ export type LinkSharedEnvironmentVariableInput = {
4491
4502
  environment?: InputMaybe<EnvironmentVariableEnvironment>;
4492
4503
  environmentVariableId: Scalars['ID']['input'];
4493
4504
  };
4505
+ export type LocalBuildArchiveSourceInput = {
4506
+ bucketKey: Scalars['String']['input'];
4507
+ type: LocalBuildArchiveSourceType;
4508
+ };
4509
+ export declare enum LocalBuildArchiveSourceType {
4510
+ Gcs = "GCS"
4511
+ }
4512
+ export type LocalBuildJobInput = {
4513
+ developmentClient?: InputMaybe<Scalars['Boolean']['input']>;
4514
+ platform: AppPlatform;
4515
+ simulator?: InputMaybe<Scalars['Boolean']['input']>;
4516
+ };
4494
4517
  export type LogNameTypeMapping = {
4495
4518
  __typename?: 'LogNameTypeMapping';
4496
4519
  publicName: Scalars['String']['output'];
@@ -6061,6 +6084,8 @@ export type UpdateMutation = {
6061
6084
  __typename?: 'UpdateMutation';
6062
6085
  /** Delete an EAS update group */
6063
6086
  deleteUpdateGroup: DeleteUpdateGroupResult;
6087
+ /** Delete an EAS update group in the background */
6088
+ scheduleUpdateGroupDeletion: BackgroundJobReceipt;
6064
6089
  /** Set code signing info for an update */
6065
6090
  setCodeSigningInfo: Update;
6066
6091
  /** Set rollout percentage for an update */
@@ -6069,6 +6094,9 @@ export type UpdateMutation = {
6069
6094
  export type UpdateMutationDeleteUpdateGroupArgs = {
6070
6095
  group: Scalars['ID']['input'];
6071
6096
  };
6097
+ export type UpdateMutationScheduleUpdateGroupDeletionArgs = {
6098
+ group: Scalars['ID']['input'];
6099
+ };
6072
6100
  export type UpdateMutationSetCodeSigningInfoArgs = {
6073
6101
  codeSigningInfo: CodeSigningInfoInput;
6074
6102
  updateId: Scalars['ID']['input'];
@@ -7571,16 +7599,26 @@ export type AppInfoQuery = {
7571
7599
  };
7572
7600
  };
7573
7601
  };
7574
- export type DeleteUpdateGroupMutationVariables = Exact<{
7602
+ export type ScheduleUpdateGroupDeletionMutationVariables = Exact<{
7575
7603
  group: Scalars['ID']['input'];
7576
7604
  }>;
7577
- export type DeleteUpdateGroupMutation = {
7605
+ export type ScheduleUpdateGroupDeletionMutation = {
7578
7606
  __typename?: 'RootMutation';
7579
7607
  update: {
7580
7608
  __typename?: 'UpdateMutation';
7581
- deleteUpdateGroup: {
7582
- __typename?: 'DeleteUpdateGroupResult';
7583
- group: string;
7609
+ scheduleUpdateGroupDeletion: {
7610
+ __typename?: 'BackgroundJobReceipt';
7611
+ id: string;
7612
+ state: BackgroundJobState;
7613
+ tries: number;
7614
+ willRetry: boolean;
7615
+ resultId?: string | null;
7616
+ resultType: BackgroundJobResultType;
7617
+ resultData?: any | null;
7618
+ errorCode?: string | null;
7619
+ errorMessage?: string | null;
7620
+ createdAt: any;
7621
+ updatedAt: any;
7584
7622
  };
7585
7623
  };
7586
7624
  };
@@ -11975,6 +12013,95 @@ export type SetRolloutPercentageMutation = {
11975
12013
  };
11976
12014
  };
11977
12015
  };
12016
+ export type CreateLocalBuildMutationVariables = Exact<{
12017
+ appId: Scalars['ID']['input'];
12018
+ jobInput: LocalBuildJobInput;
12019
+ artifactSource: LocalBuildArchiveSourceInput;
12020
+ metadata?: InputMaybe<BuildMetadataInput>;
12021
+ }>;
12022
+ export type CreateLocalBuildMutation = {
12023
+ __typename?: 'RootMutation';
12024
+ build: {
12025
+ __typename?: 'BuildMutation';
12026
+ createLocalBuild: {
12027
+ __typename?: 'CreateBuildResult';
12028
+ build: {
12029
+ __typename?: 'Build';
12030
+ id: string;
12031
+ status: BuildStatus;
12032
+ platform: AppPlatform;
12033
+ channel?: string | null;
12034
+ distribution?: DistributionType | null;
12035
+ iosEnterpriseProvisioning?: BuildIosEnterpriseProvisioning | null;
12036
+ buildProfile?: string | null;
12037
+ sdkVersion?: string | null;
12038
+ appVersion?: string | null;
12039
+ appBuildVersion?: string | null;
12040
+ runtimeVersion?: string | null;
12041
+ gitCommitHash?: string | null;
12042
+ gitCommitMessage?: string | null;
12043
+ initialQueuePosition?: number | null;
12044
+ queuePosition?: number | null;
12045
+ estimatedWaitTimeLeftSeconds?: number | null;
12046
+ priority: BuildPriority;
12047
+ createdAt: any;
12048
+ updatedAt: any;
12049
+ message?: string | null;
12050
+ completedAt?: any | null;
12051
+ expirationDate?: any | null;
12052
+ isForIosSimulator: boolean;
12053
+ error?: {
12054
+ __typename?: 'BuildError';
12055
+ errorCode: string;
12056
+ message: string;
12057
+ docsUrl?: string | null;
12058
+ } | null;
12059
+ artifacts?: {
12060
+ __typename?: 'BuildArtifacts';
12061
+ buildUrl?: string | null;
12062
+ xcodeBuildLogsUrl?: string | null;
12063
+ applicationArchiveUrl?: string | null;
12064
+ buildArtifactsUrl?: string | null;
12065
+ } | null;
12066
+ initiatingActor?: {
12067
+ __typename: 'Robot';
12068
+ id: string;
12069
+ displayName: string;
12070
+ } | {
12071
+ __typename: 'SSOUser';
12072
+ id: string;
12073
+ displayName: string;
12074
+ } | {
12075
+ __typename: 'User';
12076
+ id: string;
12077
+ displayName: string;
12078
+ } | null;
12079
+ project: {
12080
+ __typename: 'App';
12081
+ id: string;
12082
+ name: string;
12083
+ slug: string;
12084
+ ownerAccount: {
12085
+ __typename?: 'Account';
12086
+ id: string;
12087
+ name: string;
12088
+ };
12089
+ } | {
12090
+ __typename: 'Snack';
12091
+ id: string;
12092
+ name: string;
12093
+ slug: string;
12094
+ };
12095
+ metrics?: {
12096
+ __typename?: 'BuildMetrics';
12097
+ buildWaitTime?: number | null;
12098
+ buildQueueTime?: number | null;
12099
+ buildDuration?: number | null;
12100
+ } | null;
12101
+ };
12102
+ };
12103
+ };
12104
+ };
11978
12105
  export type CreateAndroidSubmissionMutationVariables = Exact<{
11979
12106
  appId: Scalars['ID']['input'];
11980
12107
  config: AndroidSubmissionConfigInput;
@@ -12077,6 +12204,7 @@ export type CreateIosSubmissionMutation = {
12077
12204
  };
12078
12205
  export type CreateUploadSessionMutationVariables = Exact<{
12079
12206
  type: UploadSessionType;
12207
+ filename?: InputMaybe<Scalars['String']['input']>;
12080
12208
  }>;
12081
12209
  export type CreateUploadSessionMutation = {
12082
12210
  __typename?: 'RootMutation';
@@ -12331,6 +12459,29 @@ export type LatestAppVersionQuery = {
12331
12459
  };
12332
12460
  };
12333
12461
  };
12462
+ export type BackgroundJobReceiptByIdQueryVariables = Exact<{
12463
+ id: Scalars['ID']['input'];
12464
+ }>;
12465
+ export type BackgroundJobReceiptByIdQuery = {
12466
+ __typename?: 'RootQuery';
12467
+ backgroundJobReceipt: {
12468
+ __typename?: 'BackgroundJobReceiptQuery';
12469
+ byId: {
12470
+ __typename?: 'BackgroundJobReceipt';
12471
+ id: string;
12472
+ state: BackgroundJobState;
12473
+ tries: number;
12474
+ willRetry: boolean;
12475
+ resultId?: string | null;
12476
+ resultType: BackgroundJobResultType;
12477
+ resultData?: any | null;
12478
+ errorCode?: string | null;
12479
+ errorMessage?: string | null;
12480
+ createdAt: any;
12481
+ updatedAt: any;
12482
+ };
12483
+ };
12484
+ };
12334
12485
  export type ViewBranchQueryVariables = Exact<{
12335
12486
  appId: Scalars['String']['input'];
12336
12487
  name: Scalars['String']['input'];
@@ -14175,6 +14326,20 @@ export type AppFragment = {
14175
14326
  };
14176
14327
  } | null;
14177
14328
  };
14329
+ export type BackgroundJobReceiptDataFragment = {
14330
+ __typename?: 'BackgroundJobReceipt';
14331
+ id: string;
14332
+ state: BackgroundJobState;
14333
+ tries: number;
14334
+ willRetry: boolean;
14335
+ resultId?: string | null;
14336
+ resultType: BackgroundJobResultType;
14337
+ resultData?: any | null;
14338
+ errorCode?: string | null;
14339
+ errorMessage?: string | null;
14340
+ createdAt: any;
14341
+ updatedAt: any;
14342
+ };
14178
14343
  export type BuildFragment = {
14179
14344
  __typename?: 'Build';
14180
14345
  id: string;
@@ -7,8 +7,8 @@
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.Feature = exports.Experiment = exports.EnvironmentVariableVisibility = exports.EnvironmentVariableScope = exports.EnvironmentVariableEnvironment = exports.EnvironmentSecretType = exports.EntityTypeName = exports.EasTotalPlanEnablementUnit = exports.EasServiceMetric = exports.EasService = exports.EasBuildWaiverType = exports.EasBuildDeprecationInfoType = exports.EasBuildBillingResourceClass = exports.DistributionType = exports.CustomDomainStatus = exports.CustomDomainDnsRecordType = exports.CrashSampleFor = exports.ContinentCode = exports.BuildWorkflow = exports.BuildTrigger = exports.BuildStatus = exports.BuildRetryDisabledReason = exports.BuildResourceClass = exports.BuildPriority = exports.BuildPhase = exports.BuildMode = exports.BuildLimitThresholdExceededMetadataType = exports.BuildIosEnterpriseProvisioning = exports.BuildCredentialsSource = exports.BackgroundJobState = exports.BackgroundJobResultType = exports.AuthProviderIdentifier = exports.AuthProtocolType = exports.AuditLogsExportFormat = exports.AssetMetadataStatus = exports.AppsFilter = exports.AppleTeamType = exports.AppleDeviceClass = exports.AppUploadSessionType = exports.AppStoreConnectUserRole = exports.AppSort = exports.AppPrivacy = exports.AppPlatform = exports.AppInternalDistributionBuildPrivacy = exports.AndroidKeystoreType = exports.AndroidFcmVersion = exports.AndroidBuildType = exports.ActivityTimelineProjectActivityType = exports.AccountUploadSessionType = exports.AccountAppsSortByField = void 0;
10
- exports.UploadSessionType = exports.TargetEntityMutationType = exports.SubmissionStatus = exports.SubmissionPriority = exports.SubmissionArchiveSourceType = exports.SubmissionAndroidTrack = exports.SubmissionAndroidReleaseStatus = exports.SubmissionAndroidArchiveType = exports.StatuspageServiceStatus = exports.StatuspageServiceName = exports.StatuspageIncidentStatus = exports.StatuspageIncidentImpact = exports.StandardOffer = exports.SecondFactorMethod = exports.Role = exports.ResponseType = exports.ResponseStatusType = exports.ResponseCacheStatus = exports.ResourceClassExperiment = exports.RequestsOrderByField = exports.RequestsOrderByDirection = exports.RequestMethod = exports.ProjectArchiveSourceType = exports.Permission = exports.Order = exports.OnboardingEnvironment = exports.OnboardingDeviceType = exports.OfferType = exports.NotificationType = exports.NotificationEvent = exports.MailchimpTag = exports.MailchimpAudience = exports.JobRunStatus = exports.JobRunPriority = exports.IosSchemeBuildConfiguration = exports.IosManagedBuildType = exports.IosDistributionType = exports.IosBuildType = exports.InvoiceDiscountType = exports.InsightsFilterType = exports.GitHubJobRunTriggerType = exports.GitHubJobRunTriggerRunStatus = exports.GitHubJobRunJobType = exports.GitHubBuildTriggerType = exports.GitHubBuildTriggerRunStatus = exports.GitHubBuildTriggerExecutionBehavior = exports.GitHubAppInstallationStatus = exports.GitHubAppInstallationAccountType = exports.GitHubAppEnvironment = exports.FingerprintSourceType = void 0;
11
- exports.WorkflowRunTriggerEventType = exports.WorkflowRunStatus = exports.WorkflowProjectSourceType = exports.WorkflowJobType = exports.WorkflowJobStatus = exports.WorkerLoggerLevel = exports.WorkerDeploymentLogLevel = exports.WorkerDeploymentCrashKind = exports.WebhookType = exports.UserEntityTypeName = exports.UserAgentPlatform = exports.UserAgentOs = exports.UserAgentBrowser = exports.UsageMetricsGranularity = exports.UsageMetricType = void 0;
10
+ exports.TargetEntityMutationType = exports.SubmissionStatus = exports.SubmissionPriority = exports.SubmissionArchiveSourceType = exports.SubmissionAndroidTrack = exports.SubmissionAndroidReleaseStatus = exports.SubmissionAndroidArchiveType = exports.StatuspageServiceStatus = exports.StatuspageServiceName = exports.StatuspageIncidentStatus = exports.StatuspageIncidentImpact = exports.StandardOffer = exports.SecondFactorMethod = exports.Role = exports.ResponseType = exports.ResponseStatusType = exports.ResponseCacheStatus = exports.ResourceClassExperiment = exports.RequestsOrderByField = exports.RequestsOrderByDirection = exports.RequestMethod = exports.ProjectArchiveSourceType = exports.Permission = exports.Order = exports.OnboardingEnvironment = exports.OnboardingDeviceType = exports.OfferType = exports.NotificationType = exports.NotificationEvent = exports.MailchimpTag = exports.MailchimpAudience = exports.LocalBuildArchiveSourceType = exports.JobRunStatus = exports.JobRunPriority = exports.IosSchemeBuildConfiguration = exports.IosManagedBuildType = exports.IosDistributionType = exports.IosBuildType = exports.InvoiceDiscountType = exports.InsightsFilterType = exports.GitHubJobRunTriggerType = exports.GitHubJobRunTriggerRunStatus = exports.GitHubJobRunJobType = exports.GitHubBuildTriggerType = exports.GitHubBuildTriggerRunStatus = exports.GitHubBuildTriggerExecutionBehavior = exports.GitHubAppInstallationStatus = exports.GitHubAppInstallationAccountType = exports.GitHubAppEnvironment = exports.FingerprintSourceType = void 0;
11
+ exports.WorkflowRunTriggerEventType = exports.WorkflowRunStatus = exports.WorkflowProjectSourceType = exports.WorkflowJobType = exports.WorkflowJobStatus = exports.WorkerLoggerLevel = exports.WorkerDeploymentLogLevel = exports.WorkerDeploymentCrashKind = exports.WebhookType = exports.UserEntityTypeName = exports.UserAgentPlatform = exports.UserAgentOs = exports.UserAgentBrowser = exports.UsageMetricsGranularity = exports.UsageMetricType = exports.UploadSessionType = void 0;
12
12
  var AccountAppsSortByField;
13
13
  (function (AccountAppsSortByField) {
14
14
  AccountAppsSortByField["LatestActivityTime"] = "LATEST_ACTIVITY_TIME";
@@ -514,6 +514,10 @@ var JobRunStatus;
514
514
  JobRunStatus["New"] = "NEW";
515
515
  JobRunStatus["PendingCancel"] = "PENDING_CANCEL";
516
516
  })(JobRunStatus || (exports.JobRunStatus = JobRunStatus = {}));
517
+ var LocalBuildArchiveSourceType;
518
+ (function (LocalBuildArchiveSourceType) {
519
+ LocalBuildArchiveSourceType["Gcs"] = "GCS";
520
+ })(LocalBuildArchiveSourceType || (exports.LocalBuildArchiveSourceType = LocalBuildArchiveSourceType = {}));
517
521
  var MailchimpAudience;
518
522
  (function (MailchimpAudience) {
519
523
  MailchimpAudience["ExpoDevelopers"] = "EXPO_DEVELOPERS";
@@ -0,0 +1,5 @@
1
+ import { ExpoGraphqlClient } from '../../commandUtils/context/contextUtils/createGraphqlClient';
2
+ import { BuildFragment, BuildMetadataInput, LocalBuildArchiveSourceInput, LocalBuildJobInput } from '../generated';
3
+ export declare const LocalBuildMutation: {
4
+ createLocalBuildAsync(graphqlClient: ExpoGraphqlClient, appId: string, job: LocalBuildJobInput, artifactSource: LocalBuildArchiveSourceInput, metadata: BuildMetadataInput): Promise<BuildFragment>;
5
+ };
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LocalBuildMutation = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const graphql_1 = require("graphql");
6
+ const graphql_tag_1 = tslib_1.__importDefault(require("graphql-tag"));
7
+ const client_1 = require("../client");
8
+ const Build_1 = require("../types/Build");
9
+ exports.LocalBuildMutation = {
10
+ async createLocalBuildAsync(graphqlClient, appId, job, artifactSource, metadata) {
11
+ const data = await (0, client_1.withErrorHandlingAsync)(graphqlClient
12
+ .mutation((0, graphql_tag_1.default) `
13
+ mutation createLocalBuildMutation(
14
+ $appId: ID!
15
+ $jobInput: LocalBuildJobInput!
16
+ $artifactSource: LocalBuildArchiveSourceInput!
17
+ $metadata: BuildMetadataInput
18
+ ) {
19
+ build {
20
+ createLocalBuild(
21
+ appId: $appId
22
+ job: $jobInput
23
+ artifactSource: $artifactSource
24
+ metadata: $metadata
25
+ ) {
26
+ build {
27
+ id
28
+ ...BuildFragment
29
+ }
30
+ }
31
+ }
32
+ }
33
+ ${(0, graphql_1.print)(Build_1.BuildFragmentNode)}
34
+ `, { appId, jobInput: job, artifactSource, metadata })
35
+ .toPromise());
36
+ return data.build.createLocalBuild.build;
37
+ },
38
+ };
@@ -6,7 +6,7 @@ export interface SignedUrl {
6
6
  bucketKey: string;
7
7
  }
8
8
  export declare const UploadSessionMutation: {
9
- createUploadSessionAsync(graphqlClient: ExpoGraphqlClient, type: UploadSessionType): Promise<SignedUrl>;
9
+ createUploadSessionAsync(graphqlClient: ExpoGraphqlClient, type: UploadSessionType, filename?: string): Promise<SignedUrl>;
10
10
  createAccountScopedUploadSessionAsync(graphqlClient: ExpoGraphqlClient, { type, accountID, }: {
11
11
  type: AccountUploadSessionType;
12
12
  accountID: string;
@@ -5,16 +5,17 @@ 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
7
  exports.UploadSessionMutation = {
8
- async createUploadSessionAsync(graphqlClient, type) {
8
+ async createUploadSessionAsync(graphqlClient, type, filename) {
9
9
  const data = await (0, client_1.withErrorHandlingAsync)(graphqlClient
10
10
  .mutation((0, graphql_tag_1.default) `
11
- mutation CreateUploadSessionMutation($type: UploadSessionType!) {
11
+ mutation CreateUploadSessionMutation($type: UploadSessionType!, $filename: String) {
12
12
  uploadSession {
13
- createUploadSession(type: $type)
13
+ createUploadSession(type: $type, filename: $filename)
14
14
  }
15
15
  }
16
16
  `, {
17
17
  type,
18
+ filename,
18
19
  })
19
20
  .toPromise());
20
21
  return data.uploadSession.createUploadSession;
@@ -0,0 +1,5 @@
1
+ import { ExpoGraphqlClient } from '../../commandUtils/context/contextUtils/createGraphqlClient';
2
+ import { BackgroundJobReceiptByIdQuery } from '../generated';
3
+ export declare const BackgroundJobReceiptQuery: {
4
+ byIdAsync(graphqlClient: ExpoGraphqlClient, backgroundJobReceiptId: string): Promise<BackgroundJobReceiptByIdQuery['backgroundJobReceipt']['byId'] | null>;
5
+ };
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BackgroundJobReceiptQuery = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const graphql_tag_1 = tslib_1.__importDefault(require("graphql-tag"));
6
+ const client_1 = require("../client");
7
+ const BackgroundJobReceipt_1 = require("../types/BackgroundJobReceipt");
8
+ exports.BackgroundJobReceiptQuery = {
9
+ async byIdAsync(graphqlClient, backgroundJobReceiptId) {
10
+ const data = await (0, client_1.withErrorHandlingAsync)(graphqlClient
11
+ .query((0, graphql_tag_1.default) `
12
+ query BackgroundJobReceiptById($id: ID!) {
13
+ backgroundJobReceipt {
14
+ byId(id: $id) {
15
+ id
16
+ ...BackgroundJobReceiptData
17
+ }
18
+ }
19
+ }
20
+ ${BackgroundJobReceipt_1.BackgroundJobReceiptNode}
21
+ `, { id: backgroundJobReceiptId }, {
22
+ additionalTypenames: ['BackgroundJobReceipt'],
23
+ })
24
+ .toPromise());
25
+ return data.backgroundJobReceipt.byId ?? null;
26
+ },
27
+ };
@@ -0,0 +1 @@
1
+ export declare const BackgroundJobReceiptNode: import("graphql").DocumentNode;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BackgroundJobReceiptNode = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const graphql_tag_1 = tslib_1.__importDefault(require("graphql-tag"));
6
+ exports.BackgroundJobReceiptNode = (0, graphql_tag_1.default) `
7
+ fragment BackgroundJobReceiptData on BackgroundJobReceipt {
8
+ id
9
+ state
10
+ tries
11
+ willRetry
12
+ resultId
13
+ resultType
14
+ resultData
15
+ errorCode
16
+ errorMessage
17
+ createdAt
18
+ updatedAt
19
+ }
20
+ `;
@@ -34,7 +34,7 @@ async function downloadMetadataAsync({ projectDir, profile, exp, analytics, cred
34
34
  projectDir,
35
35
  profile,
36
36
  });
37
- const { unsubscribeTelemetry, executionId } = (0, telemetry_1.subscribeTelemetry)(analytics, AnalyticsManager_1.MetadataEvent.APPLE_METADATA_DOWNLOAD, { app, auth });
37
+ const { unsubscribeTelemetry, executionId } = await (0, telemetry_1.subscribeTelemetryAsync)(analytics, AnalyticsManager_1.MetadataEvent.APPLE_METADATA_DOWNLOAD, { app, auth });
38
38
  log_1.default.addNewLineIfNone();
39
39
  log_1.default.log('Downloading App Store config...');
40
40
  const errors = [];
@@ -22,7 +22,7 @@ async function uploadMetadataAsync({ projectDir, profile, exp, analytics, creden
22
22
  projectDir,
23
23
  profile,
24
24
  });
25
- const { unsubscribeTelemetry, executionId } = (0, telemetry_1.subscribeTelemetry)(analytics, AnalyticsManager_1.MetadataEvent.APPLE_METADATA_UPLOAD, { app, auth });
25
+ const { unsubscribeTelemetry, executionId } = await (0, telemetry_1.subscribeTelemetryAsync)(analytics, AnalyticsManager_1.MetadataEvent.APPLE_METADATA_UPLOAD, { app, auth });
26
26
  log_1.default.addNewLineIfNone();
27
27
  log_1.default.log('Uploading App Store configuration...');
28
28
  const errors = [];
@@ -10,11 +10,11 @@ export type TelemetryContext = {
10
10
  * When providing the app and auth info, we can scrub that data from the telemetry.
11
11
  * Returns an execution ID to group all events of a single run together, and a unsubscribe function.
12
12
  */
13
- export declare function subscribeTelemetry(analytics: Analytics, event: MetadataEvent, options: TelemetryContext): {
13
+ export declare function subscribeTelemetryAsync(analytics: Analytics, event: MetadataEvent, options: TelemetryContext): Promise<{
14
14
  /** Unsubscribe the telemetry from all apple-utils events */
15
15
  unsubscribeTelemetry: () => void;
16
16
  /** The unique id added to all telemetry events from a single execution */
17
17
  executionId: string;
18
- };
18
+ }>;
19
19
  /** Exposed for testing */
20
- export declare function makeDataScrubber({ app, auth }: TelemetryContext): <T>(data: T) => string;
20
+ export declare function makeDataScrubberAsync({ app, auth, }: TelemetryContext): Promise<(<T>(data: T) => string)>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeDataScrubber = exports.subscribeTelemetry = void 0;
3
+ exports.makeDataScrubberAsync = exports.subscribeTelemetryAsync = void 0;
4
4
  const apple_utils_1 = require("@expo/apple-utils");
5
5
  const uuid_1 = require("uuid");
6
6
  /**
@@ -8,9 +8,9 @@ const uuid_1 = require("uuid");
8
8
  * When providing the app and auth info, we can scrub that data from the telemetry.
9
9
  * Returns an execution ID to group all events of a single run together, and a unsubscribe function.
10
10
  */
11
- function subscribeTelemetry(analytics, event, options) {
11
+ async function subscribeTelemetryAsync(analytics, event, options) {
12
12
  const executionId = (0, uuid_1.v4)();
13
- const scrubber = makeDataScrubber(options);
13
+ const scrubber = await makeDataScrubberAsync(options);
14
14
  const { interceptors } = (0, apple_utils_1.getRequestClient)();
15
15
  const responseInterceptorId = interceptors.response.use(response => {
16
16
  analytics.logEvent(event, {
@@ -43,10 +43,10 @@ function subscribeTelemetry(analytics, event, options) {
43
43
  }
44
44
  return { unsubscribeTelemetry, executionId };
45
45
  }
46
- exports.subscribeTelemetry = subscribeTelemetry;
46
+ exports.subscribeTelemetryAsync = subscribeTelemetryAsync;
47
47
  /** Exposed for testing */
48
- function makeDataScrubber({ app, auth }) {
49
- const token = getAuthTokenString(auth);
48
+ async function makeDataScrubberAsync({ app, auth, }) {
49
+ const token = await getAuthTokenStringAsync(auth);
50
50
  const patterns = {
51
51
  APPLE_APP_ID: new RegExp(app.id, 'gi'),
52
52
  APPLE_USERNAME: auth.username ? new RegExp(auth.username, 'gi') : null,
@@ -71,13 +71,13 @@ function makeDataScrubber({ app, auth }) {
71
71
  return value;
72
72
  };
73
73
  }
74
- exports.makeDataScrubber = makeDataScrubber;
75
- function getAuthTokenString(auth) {
74
+ exports.makeDataScrubberAsync = makeDataScrubberAsync;
75
+ async function getAuthTokenStringAsync(auth) {
76
76
  if (!auth.context?.token) {
77
77
  return null;
78
78
  }
79
79
  if (typeof auth.context.token === 'object') {
80
- return auth.context.token.getToken();
80
+ return await auth.context.token.getToken();
81
81
  }
82
82
  return auth.context.token;
83
83
  }
@@ -4,7 +4,7 @@ import { Env, FingerprintSource, Platform, Workflow } from '@expo/eas-build-job'
4
4
  import Joi from 'joi';
5
5
  import { ExpoGraphqlClient } from '../commandUtils/context/contextUtils/createGraphqlClient';
6
6
  import { PaginatedQueryOptions } from '../commandUtils/pagination';
7
- import { AppPlatform, PartialManifestAsset, UpdateRolloutInfoGroup } from '../graphql/generated';
7
+ import { AppPlatform, BuildFragment, PartialManifestAsset, UpdateRolloutInfoGroup } from '../graphql/generated';
8
8
  import { RequestedPlatform } from '../platform';
9
9
  import { UpdateJsonInfo } from '../update/utils';
10
10
  import { Client } from '../vcs/vcs';
@@ -188,6 +188,22 @@ export declare function maybeCalculateFingerprintForRuntimeVersionInfoObjectsWit
188
188
  expoUpdatesRuntimeFingerprintSource: FingerprintSource | null;
189
189
  fingerprintInfoGroup: FingerprintInfoGroup;
190
190
  })[]>;
191
+ export declare function findCompatibleBuildsAsync(graphqlClient: ExpoGraphqlClient, appId: string, runtimeToPlatformsAndFingerprintInfoMapping: {
192
+ runtimeVersion: string;
193
+ platforms: UpdatePublishPlatform[];
194
+ fingerprintInfoGroup: FingerprintInfoGroup;
195
+ }): Promise<{
196
+ runtimeVersion: string;
197
+ platforms: UpdatePublishPlatform[];
198
+ fingerprintInfoGroupWithCompatibleBuilds: {
199
+ android?: (FingerprintInfo & {
200
+ build?: BuildFragment;
201
+ }) | undefined;
202
+ ios?: (FingerprintInfo & {
203
+ build?: BuildFragment;
204
+ }) | undefined;
205
+ };
206
+ }>;
191
207
  export declare const platformDisplayNames: Record<UpdatePublishPlatform, string>;
192
208
  export declare const updatePublishPlatformToAppPlatform: Record<UpdatePublishPlatform, AppPlatform>;
193
209
  export declare function getRuntimeToUpdateRolloutInfoGroupMappingAsync(graphqlClient: ExpoGraphqlClient, { appId, branchName, rolloutPercentage, runtimeToPlatformsAndFingerprintInfoMapping, }: {
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getRuntimeToUpdateRolloutInfoGroupMappingAsync = exports.updatePublishPlatformToAppPlatform = exports.platformDisplayNames = exports.maybeCalculateFingerprintForRuntimeVersionInfoObjectsWithoutExpoUpdatesAsync = exports.getRuntimeToPlatformsAndFingerprintInfoMappingFromRuntimeVersionInfoObjects = exports.getRuntimeVersionInfoObjectsAsync = exports.defaultPublishPlatforms = exports.getUpdateMessageForCommandAsync = exports.getBranchNameForCommandAsync = exports.isUploadedAssetCountAboveWarningThreshold = exports.uploadAssetsAsync = exports.filterOutAssetsThatAlreadyExistAsync = exports.collectAssetsAsync = exports.getOriginalPathFromAssetMap = exports.getAssetHashFromPath = exports.loadAssetMapAsync = exports.filterCollectedAssetsByRequestedPlatforms = exports.generateEasMetadataAsync = exports.loadMetadata = exports.resolveInputDirectoryAsync = exports.buildBundlesAsync = exports.buildUnsortedUpdateInfoGroupAsync = exports.convertAssetToUpdateInfoGroupFormatAsync = exports.getStorageKeyForAssetAsync = exports.getStorageKey = exports.getBase64URLEncoding = exports.guessContentTypeFromExtension = exports.MetadataJoi = void 0;
3
+ exports.getRuntimeToUpdateRolloutInfoGroupMappingAsync = exports.updatePublishPlatformToAppPlatform = exports.platformDisplayNames = exports.findCompatibleBuildsAsync = exports.maybeCalculateFingerprintForRuntimeVersionInfoObjectsWithoutExpoUpdatesAsync = exports.getRuntimeToPlatformsAndFingerprintInfoMappingFromRuntimeVersionInfoObjects = exports.getRuntimeVersionInfoObjectsAsync = exports.defaultPublishPlatforms = exports.getUpdateMessageForCommandAsync = exports.getBranchNameForCommandAsync = exports.isUploadedAssetCountAboveWarningThreshold = exports.uploadAssetsAsync = exports.filterOutAssetsThatAlreadyExistAsync = exports.collectAssetsAsync = exports.getOriginalPathFromAssetMap = exports.getAssetHashFromPath = exports.loadAssetMapAsync = exports.filterCollectedAssetsByRequestedPlatforms = exports.generateEasMetadataAsync = exports.loadMetadata = exports.resolveInputDirectoryAsync = exports.buildBundlesAsync = exports.buildUnsortedUpdateInfoGroupAsync = exports.convertAssetToUpdateInfoGroupFormatAsync = exports.getStorageKeyForAssetAsync = exports.getStorageKey = exports.getBase64URLEncoding = exports.guessContentTypeFromExtension = exports.MetadataJoi = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const config_plugins_1 = require("@expo/config-plugins");
6
6
  const eas_build_job_1 = require("@expo/eas-build-job");
@@ -19,6 +19,7 @@ const projectUtils_1 = require("./projectUtils");
19
19
  const resolveRuntimeVersionAsync_1 = require("./resolveRuntimeVersionAsync");
20
20
  const queries_1 = require("../branch/queries");
21
21
  const utils_1 = require("../branch/utils");
22
+ const builds_1 = require("../commandUtils/builds");
22
23
  const cli_1 = require("../fingerprint/cli");
23
24
  const generated_1 = require("../graphql/generated");
24
25
  const PublishMutation_1 = require("../graphql/mutations/PublishMutation");
@@ -601,6 +602,26 @@ async function maybeCalculateFingerprintForRuntimeVersionInfoObjectsWithoutExpoU
601
602
  return [...runtimesWithComputedFingerprint, ...runtimesWithPreviouslyComputedFingerprints];
602
603
  }
603
604
  exports.maybeCalculateFingerprintForRuntimeVersionInfoObjectsWithoutExpoUpdatesAsync = maybeCalculateFingerprintForRuntimeVersionInfoObjectsWithoutExpoUpdatesAsync;
605
+ async function findCompatibleBuildsAsync(graphqlClient, appId, runtimeToPlatformsAndFingerprintInfoMapping) {
606
+ const { fingerprintInfoGroup } = runtimeToPlatformsAndFingerprintInfoMapping;
607
+ const entriesPromises = Object.entries(fingerprintInfoGroup).map(async ([platform, fingerprintInfo]) => {
608
+ const build = (await (0, builds_1.fetchBuildsAsync)({
609
+ graphqlClient,
610
+ projectId: appId,
611
+ filters: {
612
+ fingerprintHash: fingerprintInfo.fingerprintHash,
613
+ },
614
+ }))[0];
615
+ return [platform, { ...fingerprintInfo, build }];
616
+ });
617
+ const entries = await Promise.all(entriesPromises);
618
+ const fingerprintInfoGroupWithCompatibleBuilds = Object.fromEntries(entries);
619
+ return {
620
+ ...runtimeToPlatformsAndFingerprintInfoMapping,
621
+ fingerprintInfoGroupWithCompatibleBuilds,
622
+ };
623
+ }
624
+ exports.findCompatibleBuildsAsync = findCompatibleBuildsAsync;
604
625
  exports.platformDisplayNames = {
605
626
  android: 'Android',
606
627
  ios: 'iOS',
@@ -1,4 +1,19 @@
1
1
  export declare const MIN_XCODE_VERSION = "9.4.0";
2
2
  export declare const APP_STORE_ID = "497799835";
3
3
  export declare function getXcodeVersionAsync(): Promise<string | undefined>;
4
+ type XcodeBuildSettings = {
5
+ action: string;
6
+ buildSettings: {
7
+ BUILD_DIR: string;
8
+ CONFIGURATION_BUILD_DIR: string;
9
+ EXECUTABLE_FOLDER_PATH: string;
10
+ PRODUCT_BUNDLE_IDENTIFIER: string;
11
+ TARGET_BUILD_DIR: string;
12
+ UNLOCALIZED_RESOURCES_FOLDER_PATH: string;
13
+ };
14
+ target: string;
15
+ };
16
+ export declare function getXcodeBuildSettingsAsync(xcworkspacePath: string, scheme: string): Promise<XcodeBuildSettings[]>;
17
+ export declare function resolveXcodeProjectAsync(projectRoot: string): Promise<string | undefined>;
4
18
  export declare function openAppStoreAsync(appId: string): Promise<void>;
19
+ export {};