eas-cli 18.4.0 → 18.6.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 (89) hide show
  1. package/README.md +92 -90
  2. package/build/build/android/prepareJob.js +2 -2
  3. package/build/build/ios/prepareJob.js +2 -2
  4. package/build/build/metadata.js +2 -1
  5. package/build/commandUtils/EasCommand.js +23 -2
  6. package/build/commandUtils/context/contextUtils/getProjectIdAsync.js +2 -0
  7. package/build/commandUtils/pagination.d.ts +2 -1
  8. package/build/commandUtils/pagination.js +3 -2
  9. package/build/commandUtils/workflow/fetchLogs.js +11 -2
  10. package/build/commandUtils/workflow/types.d.ts +5 -1
  11. package/build/commandUtils/workflow/utils.js +22 -16
  12. package/build/commands/deploy/index.js +18 -2
  13. package/build/commands/metadata/pull.d.ts +1 -0
  14. package/build/commands/metadata/pull.js +9 -4
  15. package/build/commands/metadata/push.d.ts +1 -0
  16. package/build/commands/metadata/push.js +9 -4
  17. package/build/commands/observe/events.d.ts +27 -0
  18. package/build/commands/observe/events.js +140 -0
  19. package/build/commands/observe/metrics.d.ts +21 -0
  20. package/build/commands/observe/metrics.js +111 -0
  21. package/build/commands/observe/versions.d.ts +19 -0
  22. package/build/commands/observe/versions.js +69 -0
  23. package/build/commands/project/onboarding.js +3 -0
  24. package/build/commands/workflow/logs.js +12 -12
  25. package/build/credentials/ios/IosCredentialsProvider.js +8 -4
  26. package/build/credentials/ios/utils/provisioningProfile.d.ts +1 -0
  27. package/build/credentials/ios/utils/provisioningProfile.js +15 -1
  28. package/build/graphql/generated.d.ts +1273 -73
  29. package/build/graphql/generated.js +59 -19
  30. package/build/graphql/queries/ObserveQuery.d.ts +35 -0
  31. package/build/graphql/queries/ObserveQuery.js +109 -0
  32. package/build/graphql/queries/UserQuery.js +3 -0
  33. package/build/graphql/types/Observe.d.ts +3 -0
  34. package/build/graphql/types/Observe.js +84 -0
  35. package/build/graphql/types/Update.js +3 -0
  36. package/build/metadata/apple/config/reader.d.ts +13 -1
  37. package/build/metadata/apple/config/reader.js +33 -0
  38. package/build/metadata/apple/config/writer.d.ts +11 -1
  39. package/build/metadata/apple/config/writer.js +57 -0
  40. package/build/metadata/apple/data.d.ts +7 -2
  41. package/build/metadata/apple/rules/infoRestrictedWords.js +6 -1
  42. package/build/metadata/apple/tasks/age-rating.d.ts +1 -1
  43. package/build/metadata/apple/tasks/age-rating.js +19 -3
  44. package/build/metadata/apple/tasks/app-clip.d.ts +37 -0
  45. package/build/metadata/apple/tasks/app-clip.js +404 -0
  46. package/build/metadata/apple/tasks/app-review-detail.js +7 -2
  47. package/build/metadata/apple/tasks/index.js +6 -0
  48. package/build/metadata/apple/tasks/previews.d.ts +18 -0
  49. package/build/metadata/apple/tasks/previews.js +212 -0
  50. package/build/metadata/apple/tasks/screenshots.d.ts +18 -0
  51. package/build/metadata/apple/tasks/screenshots.js +235 -0
  52. package/build/metadata/apple/types.d.ts +61 -1
  53. package/build/metadata/auth.d.ts +11 -1
  54. package/build/metadata/auth.js +96 -2
  55. package/build/metadata/download.d.ts +5 -1
  56. package/build/metadata/download.js +16 -8
  57. package/build/metadata/upload.d.ts +5 -1
  58. package/build/metadata/upload.js +11 -4
  59. package/build/observe/fetchEvents.d.ts +27 -0
  60. package/build/observe/fetchEvents.js +83 -0
  61. package/build/observe/fetchMetrics.d.ts +11 -0
  62. package/build/observe/fetchMetrics.js +78 -0
  63. package/build/observe/fetchVersions.d.ts +7 -0
  64. package/build/observe/fetchVersions.js +31 -0
  65. package/build/observe/formatEvents.d.ts +31 -0
  66. package/build/observe/formatEvents.js +99 -0
  67. package/build/observe/formatMetrics.d.ts +38 -0
  68. package/build/observe/formatMetrics.js +206 -0
  69. package/build/observe/formatVersions.d.ts +32 -0
  70. package/build/observe/formatVersions.js +92 -0
  71. package/build/observe/metricNames.d.ts +4 -0
  72. package/build/observe/metricNames.js +33 -0
  73. package/build/observe/startAndEndTime.d.ts +18 -0
  74. package/build/observe/startAndEndTime.js +36 -0
  75. package/build/project/projectUtils.d.ts +0 -2
  76. package/build/project/projectUtils.js +0 -12
  77. package/build/project/workflow.js +1 -1
  78. package/build/sentry.d.ts +2 -0
  79. package/build/sentry.js +22 -0
  80. package/build/update/utils.d.ts +2 -2
  81. package/build/update/utils.js +1 -0
  82. package/build/user/SessionManager.js +11 -0
  83. package/build/user/User.d.ts +2 -2
  84. package/build/user/User.js +3 -0
  85. package/build/user/expoBrowserAuthFlowLauncher.js +70 -13
  86. package/build/worker/upload.js +15 -5
  87. package/oclif.manifest.json +1794 -1306
  88. package/package.json +15 -11
  89. package/schema/metadata-0.json +213 -0
@@ -7,8 +7,8 @@
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.EasServiceMetric = exports.EasService = exports.EasBuildWaiverType = exports.EasBuildDeprecationInfoType = exports.EasBuildBillingResourceClass = exports.DistributionType = exports.DashboardViewPin = exports.CustomDomainStatus = exports.CustomDomainDnsRecordType = exports.CrashSampleFor = exports.ContinentCode = exports.BuildWorkflow = exports.BuildTrigger = exports.BuildStatus = exports.BuildRetryDisabledReason = exports.BuildResourceClass = exports.BuildPriority = exports.BuildPhase = exports.BuildMode = exports.BuildLimitThresholdExceededMetadataType = exports.BuildIosEnterpriseProvisioning = exports.BuildCredentialsSource = exports.BuildAnnotationType = exports.BackgroundJobState = exports.BackgroundJobResultType = exports.AuthProviderIdentifier = exports.AuthProtocolType = exports.AuditLogsExportFormat = exports.AssetMetadataStatus = exports.AssetMapSourceType = exports.AppsFilter = exports.AppleTeamType = exports.AppleDeviceClass = exports.AppUploadSessionType = exports.AppStoreConnectUserRole = exports.AppSort = exports.AppProfileImageWidth = exports.AppPrivacy = exports.AppPlatform = exports.AppObservePlatform = exports.AppObserveEventsOrderByField = exports.AppObserveEventsOrderByDirection = exports.AppInternalDistributionBuildPrivacy = exports.AndroidKeystoreType = exports.AndroidFcmVersion = exports.AndroidBuildType = exports.ActivityTimelineProjectActivityType = exports.AccountUploadSessionType = exports.AccountMemberType = exports.AccountAppsSortByField = void 0;
10
- exports.ResponseStatusType = exports.ResponseCacheStatus = exports.ResourceClassExperiment = exports.RequestsOrderByField = exports.RequestsOrderByDirection = exports.RequestMethod = exports.ProjectArchiveSourceType = exports.Permission = exports.Order = exports.OnboardingEnvironment = exports.OnboardingDeviceType = exports.OfferType = exports.NotificationType = exports.NotificationEvent = exports.MailchimpTag = exports.MailchimpAudience = exports.LocalBuildArchiveSourceType = exports.JobRunStatus = exports.JobRunPriority = exports.IosSchemeBuildConfiguration = exports.IosManagedBuildType = exports.IosDistributionType = exports.IosBuildType = exports.InvoiceDiscountType = exports.InsightsFilterType = exports.GitHubJobRunTriggerType = exports.GitHubJobRunTriggerRunStatus = exports.GitHubJobRunJobType = exports.GitHubBuildTriggerType = exports.GitHubBuildTriggerRunStatus = exports.GitHubBuildTriggerExecutionBehavior = exports.GitHubAppInstallationStatus = exports.GitHubAppInstallationAccountType = exports.GitHubAppEnvironment = exports.FingerprintSourceType = exports.Feature = exports.Experiment = exports.EnvironmentVariableVisibility = exports.EnvironmentVariableScope = exports.EnvironmentSecretType = exports.EntityTypeName = exports.EchoVersionSource = exports.EchoProjectVisibility = exports.EchoMessageRole = exports.EchoMessagePartType = exports.EchoChatState = exports.EchoChangeType = exports.EchoBuildStatus = exports.EchoAgentType = exports.EasTotalPlanEnablementUnit = void 0;
11
- exports.WorkflowsInsightsRunsOverTimeGranularity = exports.WorkflowsInsightsExportFormat = exports.WorkflowRunTriggerEventType = exports.WorkflowRunStatus = exports.WorkflowProjectSourceType = exports.WorkflowJobType = exports.WorkflowJobStatus = exports.WorkflowJobReviewDecision = exports.WorkflowArtifactStorageType = exports.WorkerLoggerLevel = exports.WorkerDeploymentLogLevel = exports.WorkerDeploymentCrashKind = exports.WebhookType = exports.UserSpecifiedAccountUsage = exports.UserEntityTypeName = exports.UserAgentPlatform = exports.UserAgentOs = exports.UserAgentBrowser = exports.UsageMetricsGranularity = exports.UsageMetricType = exports.UploadSessionType = exports.TargetEntityMutationType = exports.SubmissionStatus = exports.SubmissionPriority = exports.SubmissionArchiveSourceType = exports.SubmissionAndroidReleaseStatus = exports.SubmissionAndroidArchiveType = exports.StatuspageServiceStatus = exports.StatuspageServiceName = exports.StatuspageIncidentStatus = exports.StatuspageIncidentImpact = exports.StandardOffer = exports.SecondFactorMethod = exports.Role = exports.ResponseType = void 0;
10
+ 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.OAuthProvider = exports.NotificationType = exports.NotificationEvent = exports.LocalBuildArchiveSourceType = exports.JobRunStatus = exports.JobRunPriority = exports.IosSchemeBuildConfiguration = exports.IosManagedBuildType = exports.IosDistributionType = exports.IosBuildType = exports.InvoiceDiscountType = exports.InsightsFilterType = exports.GitHubJobRunTriggerType = exports.GitHubJobRunTriggerRunStatus = exports.GitHubJobRunJobType = exports.GitHubBuildTriggerType = exports.GitHubBuildTriggerRunStatus = exports.GitHubBuildTriggerExecutionBehavior = exports.GitHubAppInstallationStatus = exports.GitHubAppInstallationAccountType = exports.GitHubAppEnvironment = exports.FingerprintSourceType = exports.Feature = exports.Experiment = exports.EnvironmentVariableVisibility = exports.EnvironmentVariableScope = exports.EnvironmentSecretType = exports.EntityTypeName = exports.EchoVersionSource = exports.EchoProjectVisibility = exports.EchoProjectUploadSessionType = exports.EchoMessageRole = exports.EchoMessagePartType = exports.EchoChatState = exports.EchoChangeType = exports.EchoBuildStatus = exports.EchoAgentType = exports.EasTotalPlanEnablementUnit = void 0;
11
+ exports.WorkflowsInsightsRunsOverTimeGranularity = exports.WorkflowsInsightsExportFormat = exports.WorkflowRunTriggerEventType = exports.WorkflowRunStatus = exports.WorkflowProjectSourceType = exports.WorkflowJobType = exports.WorkflowJobStatus = exports.WorkflowJobReviewDecision = exports.WorkflowDeviceTestCaseStatus = exports.WorkflowArtifactStorageType = exports.WorkerLoggerLevel = exports.WorkerDeploymentLogLevel = exports.WorkerDeploymentCrashKind = exports.WebhookType = exports.UserSpecifiedAccountUsage = exports.UserEntityTypeName = exports.UserAgentPlatform = exports.UserAgentOs = exports.UserAgentBrowser = exports.UsageMetricsGranularity = exports.UsageMetricType = exports.UploadSessionType = exports.UpdateDiffReceiptStateValue = exports.UpdateDiffReceiptOrderByField = exports.UpdateDiffReceiptOrderByDirection = exports.TargetEntityMutationType = exports.SubmissionStatus = exports.SubmissionPriority = exports.SubmissionArchiveSourceType = exports.SubmissionAndroidReleaseStatus = exports.SubmissionAndroidArchiveType = exports.StatuspageServiceStatus = exports.StatuspageServiceName = exports.StatuspageIncidentStatus = exports.StatuspageIncidentImpact = exports.StandardOffer = exports.SecondFactorMethod = exports.Role = exports.ResponseType = void 0;
12
12
  var AccountAppsSortByField;
13
13
  (function (AccountAppsSortByField) {
14
14
  AccountAppsSortByField["LatestActivityTime"] = "LATEST_ACTIVITY_TIME";
@@ -225,12 +225,17 @@ var BuildMode;
225
225
  var BuildPhase;
226
226
  (function (BuildPhase) {
227
227
  BuildPhase["BuilderInfo"] = "BUILDER_INFO";
228
+ BuildPhase["CacheStats"] = "CACHE_STATS";
229
+ BuildPhase["CalculateExpoUpdatesRuntimeVersion"] = "CALCULATE_EXPO_UPDATES_RUNTIME_VERSION";
228
230
  BuildPhase["CleanUpCredentials"] = "CLEAN_UP_CREDENTIALS";
229
231
  BuildPhase["CompleteBuild"] = "COMPLETE_BUILD";
232
+ BuildPhase["CompleteJob"] = "COMPLETE_JOB";
233
+ BuildPhase["ConfigureAndroidVersion"] = "CONFIGURE_ANDROID_VERSION";
230
234
  BuildPhase["ConfigureExpoUpdates"] = "CONFIGURE_EXPO_UPDATES";
231
235
  BuildPhase["ConfigureXcodeProject"] = "CONFIGURE_XCODE_PROJECT";
232
236
  BuildPhase["Custom"] = "CUSTOM";
233
237
  BuildPhase["DownloadApplicationArchive"] = "DOWNLOAD_APPLICATION_ARCHIVE";
238
+ BuildPhase["EagerBundle"] = "EAGER_BUNDLE";
234
239
  BuildPhase["EasBuildInternal"] = "EAS_BUILD_INTERNAL";
235
240
  BuildPhase["FailBuild"] = "FAIL_BUILD";
236
241
  BuildPhase["FixGradlew"] = "FIX_GRADLEW";
@@ -251,6 +256,7 @@ var BuildPhase;
251
256
  BuildPhase["PreUploadArtifactsHook"] = "PRE_UPLOAD_ARTIFACTS_HOOK";
252
257
  BuildPhase["Queue"] = "QUEUE";
253
258
  BuildPhase["ReadAppConfig"] = "READ_APP_CONFIG";
259
+ BuildPhase["ReadEasJson"] = "READ_EAS_JSON";
254
260
  BuildPhase["ReadPackageJson"] = "READ_PACKAGE_JSON";
255
261
  BuildPhase["RestoreCache"] = "RESTORE_CACHE";
256
262
  BuildPhase["RunExpoDoctor"] = "RUN_EXPO_DOCTOR";
@@ -380,8 +386,10 @@ var EasBuildWaiverType;
380
386
  })(EasBuildWaiverType || (exports.EasBuildWaiverType = EasBuildWaiverType = {}));
381
387
  var EasService;
382
388
  (function (EasService) {
389
+ EasService["Agent"] = "AGENT";
383
390
  EasService["Builds"] = "BUILDS";
384
391
  EasService["Jobs"] = "JOBS";
392
+ EasService["Mcp"] = "MCP";
385
393
  EasService["Updates"] = "UPDATES";
386
394
  })(EasService || (exports.EasService = EasService = {}));
387
395
  var EasServiceMetric;
@@ -389,8 +397,10 @@ var EasServiceMetric;
389
397
  EasServiceMetric["AssetsRequests"] = "ASSETS_REQUESTS";
390
398
  EasServiceMetric["BandwidthUsage"] = "BANDWIDTH_USAGE";
391
399
  EasServiceMetric["Builds"] = "BUILDS";
400
+ EasServiceMetric["CreditUsage"] = "CREDIT_USAGE";
392
401
  EasServiceMetric["LocalBuilds"] = "LOCAL_BUILDS";
393
402
  EasServiceMetric["ManifestRequests"] = "MANIFEST_REQUESTS";
403
+ EasServiceMetric["McpRequests"] = "MCP_REQUESTS";
394
404
  EasServiceMetric["RunTime"] = "RUN_TIME";
395
405
  EasServiceMetric["UniqueUpdaters"] = "UNIQUE_UPDATERS";
396
406
  EasServiceMetric["UniqueUsers"] = "UNIQUE_USERS";
@@ -447,6 +457,10 @@ var EchoMessageRole;
447
457
  EchoMessageRole["Assistant"] = "ASSISTANT";
448
458
  EchoMessageRole["User"] = "USER";
449
459
  })(EchoMessageRole || (exports.EchoMessageRole = EchoMessageRole = {}));
460
+ var EchoProjectUploadSessionType;
461
+ (function (EchoProjectUploadSessionType) {
462
+ EchoProjectUploadSessionType["ImageUpload"] = "IMAGE_UPLOAD";
463
+ })(EchoProjectUploadSessionType || (exports.EchoProjectUploadSessionType = EchoProjectUploadSessionType = {}));
450
464
  var EchoProjectVisibility;
451
465
  (function (EchoProjectVisibility) {
452
466
  EchoProjectVisibility["Private"] = "PRIVATE";
@@ -467,16 +481,15 @@ var EntityTypeName;
467
481
  EntityTypeName["AndroidKeystoreEntity"] = "AndroidKeystoreEntity";
468
482
  EntityTypeName["AppEntity"] = "AppEntity";
469
483
  EntityTypeName["AppStoreConnectApiKeyEntity"] = "AppStoreConnectApiKeyEntity";
484
+ EntityTypeName["AppStoreConnectAppEntity"] = "AppStoreConnectAppEntity";
470
485
  EntityTypeName["AppleDeviceEntity"] = "AppleDeviceEntity";
471
486
  EntityTypeName["AppleDistributionCertificateEntity"] = "AppleDistributionCertificateEntity";
472
487
  EntityTypeName["AppleProvisioningProfileEntity"] = "AppleProvisioningProfileEntity";
473
488
  EntityTypeName["AppleTeamEntity"] = "AppleTeamEntity";
489
+ EntityTypeName["BillingContractEntity"] = "BillingContractEntity";
474
490
  EntityTypeName["BranchEntity"] = "BranchEntity";
475
491
  EntityTypeName["ChannelEntity"] = "ChannelEntity";
476
492
  EntityTypeName["CustomerEntity"] = "CustomerEntity";
477
- EntityTypeName["EchoChatEntity"] = "EchoChatEntity";
478
- EntityTypeName["EchoMessageEntity"] = "EchoMessageEntity";
479
- EntityTypeName["EchoMessagePartEntity"] = "EchoMessagePartEntity";
480
493
  EntityTypeName["EchoProjectEntity"] = "EchoProjectEntity";
481
494
  EntityTypeName["EchoVersionEntity"] = "EchoVersionEntity";
482
495
  EntityTypeName["GoogleServiceAccountKeyEntity"] = "GoogleServiceAccountKeyEntity";
@@ -501,6 +514,7 @@ var EnvironmentSecretType;
501
514
  })(EnvironmentSecretType || (exports.EnvironmentSecretType = EnvironmentSecretType = {}));
502
515
  var EnvironmentVariableScope;
503
516
  (function (EnvironmentVariableScope) {
517
+ EnvironmentVariableScope["EchoProject"] = "ECHO_PROJECT";
504
518
  EnvironmentVariableScope["Project"] = "PROJECT";
505
519
  EnvironmentVariableScope["Shared"] = "SHARED";
506
520
  })(EnvironmentVariableScope || (exports.EnvironmentVariableScope = EnvironmentVariableScope = {}));
@@ -628,20 +642,6 @@ var LocalBuildArchiveSourceType;
628
642
  (function (LocalBuildArchiveSourceType) {
629
643
  LocalBuildArchiveSourceType["Gcs"] = "GCS";
630
644
  })(LocalBuildArchiveSourceType || (exports.LocalBuildArchiveSourceType = LocalBuildArchiveSourceType = {}));
631
- var MailchimpAudience;
632
- (function (MailchimpAudience) {
633
- MailchimpAudience["ExpoDevelopers"] = "EXPO_DEVELOPERS";
634
- MailchimpAudience["ExpoDeveloperOnboarding"] = "EXPO_DEVELOPER_ONBOARDING";
635
- MailchimpAudience["LaunchParty_2024"] = "LAUNCH_PARTY_2024";
636
- MailchimpAudience["NonprodExpoDevelopers"] = "NONPROD_EXPO_DEVELOPERS";
637
- })(MailchimpAudience || (exports.MailchimpAudience = MailchimpAudience = {}));
638
- var MailchimpTag;
639
- (function (MailchimpTag) {
640
- MailchimpTag["DevClientUsers"] = "DEV_CLIENT_USERS";
641
- MailchimpTag["DidSubscribeToEasAtLeastOnce"] = "DID_SUBSCRIBE_TO_EAS_AT_LEAST_ONCE";
642
- MailchimpTag["EasMasterList"] = "EAS_MASTER_LIST";
643
- MailchimpTag["NewsletterSignupList"] = "NEWSLETTER_SIGNUP_LIST";
644
- })(MailchimpTag || (exports.MailchimpTag = MailchimpTag = {}));
645
645
  var NotificationEvent;
646
646
  (function (NotificationEvent) {
647
647
  NotificationEvent["BuildComplete"] = "BUILD_COMPLETE";
@@ -657,6 +657,11 @@ var NotificationType;
657
657
  NotificationType["Email"] = "EMAIL";
658
658
  NotificationType["Web"] = "WEB";
659
659
  })(NotificationType || (exports.NotificationType = NotificationType = {}));
660
+ var OAuthProvider;
661
+ (function (OAuthProvider) {
662
+ OAuthProvider["Apple"] = "apple";
663
+ OAuthProvider["Google"] = "google";
664
+ })(OAuthProvider || (exports.OAuthProvider = OAuthProvider = {}));
660
665
  var OfferType;
661
666
  (function (OfferType) {
662
667
  /** Addon, or supplementary subscription */
@@ -852,6 +857,24 @@ var TargetEntityMutationType;
852
857
  TargetEntityMutationType["Delete"] = "DELETE";
853
858
  TargetEntityMutationType["Update"] = "UPDATE";
854
859
  })(TargetEntityMutationType || (exports.TargetEntityMutationType = TargetEntityMutationType = {}));
860
+ var UpdateDiffReceiptOrderByDirection;
861
+ (function (UpdateDiffReceiptOrderByDirection) {
862
+ UpdateDiffReceiptOrderByDirection["Asc"] = "ASC";
863
+ UpdateDiffReceiptOrderByDirection["Desc"] = "DESC";
864
+ })(UpdateDiffReceiptOrderByDirection || (exports.UpdateDiffReceiptOrderByDirection = UpdateDiffReceiptOrderByDirection = {}));
865
+ var UpdateDiffReceiptOrderByField;
866
+ (function (UpdateDiffReceiptOrderByField) {
867
+ UpdateDiffReceiptOrderByField["CreatedAt"] = "CREATED_AT";
868
+ UpdateDiffReceiptOrderByField["State"] = "STATE";
869
+ })(UpdateDiffReceiptOrderByField || (exports.UpdateDiffReceiptOrderByField = UpdateDiffReceiptOrderByField = {}));
870
+ var UpdateDiffReceiptStateValue;
871
+ (function (UpdateDiffReceiptStateValue) {
872
+ UpdateDiffReceiptStateValue["Failure"] = "FAILURE";
873
+ UpdateDiffReceiptStateValue["InProgress"] = "IN_PROGRESS";
874
+ UpdateDiffReceiptStateValue["Queued"] = "QUEUED";
875
+ UpdateDiffReceiptStateValue["Success"] = "SUCCESS";
876
+ UpdateDiffReceiptStateValue["WontCompute"] = "WONT_COMPUTE";
877
+ })(UpdateDiffReceiptStateValue || (exports.UpdateDiffReceiptStateValue = UpdateDiffReceiptStateValue = {}));
855
878
  var UploadSessionType;
856
879
  (function (UploadSessionType) {
857
880
  UploadSessionType["EasBuildGcsProjectMetadata"] = "EAS_BUILD_GCS_PROJECT_METADATA";
@@ -869,6 +892,7 @@ var UsageMetricType;
869
892
  (function (UsageMetricType) {
870
893
  UsageMetricType["Bandwidth"] = "BANDWIDTH";
871
894
  UsageMetricType["Build"] = "BUILD";
895
+ UsageMetricType["Credit"] = "CREDIT";
872
896
  UsageMetricType["Minute"] = "MINUTE";
873
897
  UsageMetricType["Request"] = "REQUEST";
874
898
  UsageMetricType["Update"] = "UPDATE";
@@ -921,6 +945,8 @@ var UserEntityTypeName;
921
945
  UserEntityTypeName["AccessTokenEntity"] = "AccessTokenEntity";
922
946
  UserEntityTypeName["DiscordUserEntity"] = "DiscordUserEntity";
923
947
  UserEntityTypeName["GitHubUserEntity"] = "GitHubUserEntity";
948
+ UserEntityTypeName["OAuthIdentityEntity"] = "OAuthIdentityEntity";
949
+ UserEntityTypeName["PartnerProvisionedActorEntity"] = "PartnerProvisionedActorEntity";
924
950
  UserEntityTypeName["PasswordEntity"] = "PasswordEntity";
925
951
  UserEntityTypeName["SsoUserEntity"] = "SSOUserEntity";
926
952
  UserEntityTypeName["UserEntity"] = "UserEntity";
@@ -970,6 +996,12 @@ var WorkflowArtifactStorageType;
970
996
  WorkflowArtifactStorageType["Gcs"] = "GCS";
971
997
  WorkflowArtifactStorageType["R2"] = "R2";
972
998
  })(WorkflowArtifactStorageType || (exports.WorkflowArtifactStorageType = WorkflowArtifactStorageType = {}));
999
+ /** Status of a device test case execution. */
1000
+ var WorkflowDeviceTestCaseStatus;
1001
+ (function (WorkflowDeviceTestCaseStatus) {
1002
+ WorkflowDeviceTestCaseStatus["Failed"] = "FAILED";
1003
+ WorkflowDeviceTestCaseStatus["Passed"] = "PASSED";
1004
+ })(WorkflowDeviceTestCaseStatus || (exports.WorkflowDeviceTestCaseStatus = WorkflowDeviceTestCaseStatus = {}));
973
1005
  var WorkflowJobReviewDecision;
974
1006
  (function (WorkflowJobReviewDecision) {
975
1007
  WorkflowJobReviewDecision["Approved"] = "APPROVED";
@@ -1020,12 +1052,20 @@ var WorkflowRunStatus;
1020
1052
  })(WorkflowRunStatus || (exports.WorkflowRunStatus = WorkflowRunStatus = {}));
1021
1053
  var WorkflowRunTriggerEventType;
1022
1054
  (function (WorkflowRunTriggerEventType) {
1055
+ WorkflowRunTriggerEventType["AppStoreConnectAppVersionStateChanged"] = "APP_STORE_CONNECT_APP_VERSION_STATE_CHANGED";
1056
+ WorkflowRunTriggerEventType["AppStoreConnectBetaFeedbackSubmitted"] = "APP_STORE_CONNECT_BETA_FEEDBACK_SUBMITTED";
1057
+ WorkflowRunTriggerEventType["AppStoreConnectBuildUploadStateChanged"] = "APP_STORE_CONNECT_BUILD_UPLOAD_STATE_CHANGED";
1058
+ WorkflowRunTriggerEventType["AppStoreConnectExternalBetaStateChanged"] = "APP_STORE_CONNECT_EXTERNAL_BETA_STATE_CHANGED";
1059
+ WorkflowRunTriggerEventType["EasSubmit"] = "EAS_SUBMIT";
1060
+ WorkflowRunTriggerEventType["ExpoLaunch"] = "EXPO_LAUNCH";
1023
1061
  WorkflowRunTriggerEventType["GithubPullRequestLabeled"] = "GITHUB_PULL_REQUEST_LABELED";
1024
1062
  WorkflowRunTriggerEventType["GithubPullRequestOpened"] = "GITHUB_PULL_REQUEST_OPENED";
1063
+ WorkflowRunTriggerEventType["GithubPullRequestReadyForReview"] = "GITHUB_PULL_REQUEST_READY_FOR_REVIEW";
1025
1064
  WorkflowRunTriggerEventType["GithubPullRequestReopened"] = "GITHUB_PULL_REQUEST_REOPENED";
1026
1065
  WorkflowRunTriggerEventType["GithubPullRequestSynchronize"] = "GITHUB_PULL_REQUEST_SYNCHRONIZE";
1027
1066
  WorkflowRunTriggerEventType["GithubPush"] = "GITHUB_PUSH";
1028
1067
  WorkflowRunTriggerEventType["Manual"] = "MANUAL";
1068
+ WorkflowRunTriggerEventType["RepackExpoGo"] = "REPACK_EXPO_GO";
1029
1069
  WorkflowRunTriggerEventType["Schedule"] = "SCHEDULE";
1030
1070
  })(WorkflowRunTriggerEventType || (exports.WorkflowRunTriggerEventType = WorkflowRunTriggerEventType = {}));
1031
1071
  var WorkflowsInsightsExportFormat;
@@ -0,0 +1,35 @@
1
+ import { ExpoGraphqlClient } from '../../commandUtils/context/contextUtils/createGraphqlClient';
2
+ import { AppObserveAppVersion, AppObserveEvent, AppObserveEventsFilter, AppObserveEventsOrderBy, AppObservePlatform, AppObserveTimeSeriesStatistics, PageInfo } from '../generated';
3
+ export type AppObserveTimeSeriesResult = {
4
+ appVersionMarkers: AppObserveAppVersion[];
5
+ eventCount: number;
6
+ statistics: AppObserveTimeSeriesStatistics;
7
+ };
8
+ type AppObserveEventsQueryVariables = {
9
+ appId: string;
10
+ filter?: AppObserveEventsFilter;
11
+ first?: number;
12
+ after?: string;
13
+ orderBy?: AppObserveEventsOrderBy;
14
+ };
15
+ export declare const ObserveQuery: {
16
+ timeSeriesAsync(graphqlClient: ExpoGraphqlClient, { appId, metricName, platform, startTime, endTime, }: {
17
+ appId: string;
18
+ metricName: string;
19
+ platform: AppObservePlatform;
20
+ startTime: string;
21
+ endTime: string;
22
+ }): Promise<AppObserveTimeSeriesResult>;
23
+ appVersionsAsync(graphqlClient: ExpoGraphqlClient, { appId, platform, startTime, endTime, metricNames, }: {
24
+ appId: string;
25
+ platform: AppObservePlatform;
26
+ startTime: string;
27
+ endTime: string;
28
+ metricNames?: string[];
29
+ }): Promise<AppObserveAppVersion[]>;
30
+ eventsAsync(graphqlClient: ExpoGraphqlClient, variables: AppObserveEventsQueryVariables): Promise<{
31
+ events: AppObserveEvent[];
32
+ pageInfo: PageInfo;
33
+ }>;
34
+ };
35
+ export {};
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ObserveQuery = 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 graphql_1 = require("graphql");
8
+ const Observe_1 = require("../types/Observe");
9
+ exports.ObserveQuery = {
10
+ async timeSeriesAsync(graphqlClient, { appId, metricName, platform, startTime, endTime, }) {
11
+ const data = await (0, client_1.withErrorHandlingAsync)(graphqlClient
12
+ .query((0, graphql_tag_1.default) `
13
+ query AppObserveTimeSeries(
14
+ $appId: String!
15
+ $input: AppObserveTimeSeriesInput!
16
+ ) {
17
+ app {
18
+ byId(appId: $appId) {
19
+ id
20
+ observe {
21
+ timeSeries(input: $input) {
22
+ ...AppObserveTimeSeriesFragment
23
+ }
24
+ }
25
+ }
26
+ }
27
+ }
28
+ ${(0, graphql_1.print)(Observe_1.AppObserveAppVersionFragmentNode)}
29
+ ${(0, graphql_1.print)(Observe_1.AppObserveTimeSeriesFragmentNode)}
30
+ `, {
31
+ appId,
32
+ input: { metricName, platform, startTime, endTime },
33
+ })
34
+ .toPromise());
35
+ return data.app.byId.observe.timeSeries;
36
+ },
37
+ async appVersionsAsync(graphqlClient, { appId, platform, startTime, endTime, metricNames, }) {
38
+ const data = await (0, client_1.withErrorHandlingAsync)(graphqlClient
39
+ .query((0, graphql_tag_1.default) `
40
+ query AppObserveAppVersions(
41
+ $appId: String!
42
+ $input: AppObserveReleasesInput!
43
+ ) {
44
+ app {
45
+ byId(appId: $appId) {
46
+ id
47
+ observe {
48
+ appVersions(input: $input) {
49
+ ...AppObserveAppVersionFragment
50
+ }
51
+ }
52
+ }
53
+ }
54
+ }
55
+ ${(0, graphql_1.print)(Observe_1.AppObserveAppVersionFragmentNode)}
56
+ `, {
57
+ appId,
58
+ input: { platform, startTime, endTime, ...(metricNames && { metricNames }) },
59
+ })
60
+ .toPromise());
61
+ return data.app.byId.observe.appVersions;
62
+ },
63
+ async eventsAsync(graphqlClient, variables) {
64
+ const data = await (0, client_1.withErrorHandlingAsync)(graphqlClient
65
+ .query((0, graphql_tag_1.default) `
66
+ query AppObserveEvents(
67
+ $appId: String!
68
+ $filter: AppObserveEventsFilter
69
+ $first: Int
70
+ $after: String
71
+ $orderBy: AppObserveEventsOrderBy
72
+ ) {
73
+ app {
74
+ byId(appId: $appId) {
75
+ id
76
+ observe {
77
+ events(
78
+ filter: $filter
79
+ first: $first
80
+ after: $after
81
+ orderBy: $orderBy
82
+ ) {
83
+ pageInfo {
84
+ hasNextPage
85
+ hasPreviousPage
86
+ endCursor
87
+ }
88
+ edges {
89
+ cursor
90
+ node {
91
+ id
92
+ ...AppObserveEventFragment
93
+ }
94
+ }
95
+ }
96
+ }
97
+ }
98
+ }
99
+ }
100
+ ${(0, graphql_1.print)(Observe_1.AppObserveEventFragmentNode)}
101
+ `, variables)
102
+ .toPromise());
103
+ const { edges, pageInfo } = data.app.byId.observe.events;
104
+ return {
105
+ events: edges.map(edge => edge.node),
106
+ pageInfo,
107
+ };
108
+ },
109
+ };
@@ -41,6 +41,9 @@ exports.UserQuery = {
41
41
  id
42
42
  ...AccountFragment
43
43
  }
44
+ ... on PartnerActor {
45
+ username
46
+ }
44
47
  featureGates
45
48
  isExpoAdmin
46
49
  }
@@ -0,0 +1,3 @@
1
+ export declare const AppObserveTimeSeriesFragmentNode: import("graphql").DocumentNode;
2
+ export declare const AppObserveEventFragmentNode: import("graphql").DocumentNode;
3
+ export declare const AppObserveAppVersionFragmentNode: import("graphql").DocumentNode;
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AppObserveAppVersionFragmentNode = exports.AppObserveEventFragmentNode = exports.AppObserveTimeSeriesFragmentNode = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const graphql_tag_1 = tslib_1.__importDefault(require("graphql-tag"));
6
+ exports.AppObserveTimeSeriesFragmentNode = (0, graphql_tag_1.default) `
7
+ fragment AppObserveTimeSeriesFragment on AppObserveTimeSeries {
8
+ appVersionMarkers {
9
+ ...AppObserveAppVersionFragment
10
+ }
11
+ eventCount
12
+ statistics {
13
+ min
14
+ max
15
+ median
16
+ average
17
+ p80
18
+ p90
19
+ p99
20
+ }
21
+ }
22
+ `;
23
+ exports.AppObserveEventFragmentNode = (0, graphql_tag_1.default) `
24
+ fragment AppObserveEventFragment on AppObserveEvent {
25
+ id
26
+ metricName
27
+ metricValue
28
+ timestamp
29
+ appVersion
30
+ appBuildNumber
31
+ appUpdateId
32
+ deviceModel
33
+ deviceOs
34
+ deviceOsVersion
35
+ countryCode
36
+ sessionId
37
+ easClientId
38
+ }
39
+ `;
40
+ exports.AppObserveAppVersionFragmentNode = (0, graphql_tag_1.default) `
41
+ fragment AppObserveAppVersionFragment on AppObserveAppVersion {
42
+ appVersion
43
+ firstSeenAt
44
+ eventCount
45
+ uniqueUserCount
46
+ buildNumbers {
47
+ appBuildNumber
48
+ firstSeenAt
49
+ eventCount
50
+ uniqueUserCount
51
+ easBuilds {
52
+ easBuildId
53
+ firstSeenAt
54
+ eventCount
55
+ uniqueUserCount
56
+ }
57
+ }
58
+ updates {
59
+ appUpdateId
60
+ firstSeenAt
61
+ eventCount
62
+ uniqueUserCount
63
+ easBuilds {
64
+ easBuildId
65
+ firstSeenAt
66
+ eventCount
67
+ uniqueUserCount
68
+ }
69
+ }
70
+ metrics {
71
+ metricName
72
+ eventCount
73
+ statistics {
74
+ min
75
+ max
76
+ median
77
+ average
78
+ p80
79
+ p90
80
+ p99
81
+ }
82
+ }
83
+ }
84
+ `;
@@ -26,6 +26,9 @@ exports.UpdateFragmentNode = (0, graphql_tag_1.default) `
26
26
  ... on Robot {
27
27
  firstName
28
28
  }
29
+ ... on PartnerActor {
30
+ username
31
+ }
29
32
  }
30
33
  branch {
31
34
  id
@@ -1,6 +1,6 @@
1
1
  import { AgeRatingDeclaration, AppInfoLocalization, AppStoreReviewDetail, AppStoreVersion, AppStoreVersionLocalization, AppStoreVersionPhasedRelease, CategoryIds } from '@expo/apple-utils';
2
2
  import { AttributesOf } from '../../utils/asc';
3
- import { AppleMetadata } from '../types';
3
+ import { AppleAppClip, AppleAppClipDefaultExperience, AppleAppClipLocalizedInfo, AppleMetadata, ApplePreviews, AppleScreenshots } from '../types';
4
4
  type PartialExcept<T, K extends keyof T> = Pick<T, K> & Partial<Omit<T, K>>;
5
5
  export declare const DEFAULT_WHATSNEW = "Bug fixes and improved stability";
6
6
  /**
@@ -22,5 +22,17 @@ export declare class AppleConfigReader {
22
22
  versionIsFirst: boolean;
23
23
  }): Partial<AttributesOf<AppStoreVersionLocalization>> | null;
24
24
  getReviewDetails(): Partial<AttributesOf<AppStoreReviewDetail>> | null;
25
+ /** Get screenshots configuration for a specific locale */
26
+ getScreenshots(locale: string): AppleScreenshots | null;
27
+ /** Get video previews configuration for a specific locale */
28
+ getPreviews(locale: string): ApplePreviews | null;
29
+ /** Get the App Clip configuration block, or null if no App Clip is configured. */
30
+ getAppClip(): AppleAppClip | null;
31
+ /** Get the App Clip default experience, or null if not configured. */
32
+ getAppClipDefaultExperience(): AppleAppClipDefaultExperience | null;
33
+ /** Locales that have App Clip default-experience info configured. */
34
+ getAppClipLocales(): string[];
35
+ /** Get the localized App Clip info (subtitle + header image) for a specific locale. */
36
+ getAppClipLocalizedInfo(locale: string): AppleAppClipLocalizedInfo | null;
25
37
  }
26
38
  export {};
@@ -40,6 +40,15 @@ class AppleConfigReader {
40
40
  violenceCartoonOrFantasy: attributes.violenceCartoonOrFantasy ?? apple_utils_1.Rating.NONE,
41
41
  violenceRealistic: attributes.violenceRealistic ?? apple_utils_1.Rating.NONE,
42
42
  violenceRealisticProlongedGraphicOrSadistic: attributes.violenceRealisticProlongedGraphicOrSadistic ?? apple_utils_1.Rating.NONE,
43
+ advertising: attributes.advertising ?? false,
44
+ ageAssurance: attributes.ageAssurance ?? false,
45
+ ageRatingOverrideV2: attributes.ageRatingOverrideV2 ?? null,
46
+ developerAgeRatingInfoUrl: attributes.developerAgeRatingInfoUrl ?? null,
47
+ gunsOrOtherWeapons: attributes.gunsOrOtherWeapons ?? apple_utils_1.Rating.NONE,
48
+ healthOrWellnessTopics: attributes.healthOrWellnessTopics ?? false,
49
+ messagingAndChat: attributes.messagingAndChat ?? false,
50
+ parentalControls: attributes.parentalControls ?? false,
51
+ userGeneratedContent: attributes.userGeneratedContent ?? false,
43
52
  };
44
53
  }
45
54
  getLocales() {
@@ -162,5 +171,29 @@ class AppleConfigReader {
162
171
  // TODO: add attachment
163
172
  };
164
173
  }
174
+ /** Get screenshots configuration for a specific locale */
175
+ getScreenshots(locale) {
176
+ return this.schema.info?.[locale]?.screenshots ?? null;
177
+ }
178
+ /** Get video previews configuration for a specific locale */
179
+ getPreviews(locale) {
180
+ return this.schema.info?.[locale]?.previews ?? null;
181
+ }
182
+ /** Get the App Clip configuration block, or null if no App Clip is configured. */
183
+ getAppClip() {
184
+ return this.schema.appClip ?? null;
185
+ }
186
+ /** Get the App Clip default experience, or null if not configured. */
187
+ getAppClipDefaultExperience() {
188
+ return this.schema.appClip?.defaultExperience ?? null;
189
+ }
190
+ /** Locales that have App Clip default-experience info configured. */
191
+ getAppClipLocales() {
192
+ return (0, uniq_1.default)(Object.keys(this.schema.appClip?.defaultExperience?.info ?? {}));
193
+ }
194
+ /** Get the localized App Clip info (subtitle + header image) for a specific locale. */
195
+ getAppClipLocalizedInfo(locale) {
196
+ return this.schema.appClip?.defaultExperience?.info?.[locale] ?? null;
197
+ }
165
198
  }
166
199
  exports.AppleConfigReader = AppleConfigReader;
@@ -1,6 +1,6 @@
1
1
  import { AgeRatingDeclaration, AppInfo, AppInfoLocalization, AppStoreReviewDetail, AppStoreVersion, AppStoreVersionLocalization, AppStoreVersionPhasedRelease } from '@expo/apple-utils';
2
2
  import { AttributesOf } from '../../utils/asc';
3
- import { AppleMetadata } from '../types';
3
+ import { AppleAppClipDefaultExperience, AppleAppClipLocalizedInfo, AppleAppClipReviewDetail, AppleMetadata, ApplePreviews, AppleScreenshots } from '../types';
4
4
  /**
5
5
  * Serializes the Apple ASC entities into the metadata configuration schema.
6
6
  * This uses version 0 of the config schema.
@@ -21,4 +21,14 @@ export declare class AppleConfigWriter {
21
21
  setVersionReleasePhased(attributes?: AttributesOf<AppStoreVersionPhasedRelease>): void;
22
22
  setVersionLocale(attributes: AttributesOf<AppStoreVersionLocalization>): void;
23
23
  setReviewDetails(attributes: AttributesOf<AppStoreReviewDetail>): void;
24
+ /** Set screenshots for a specific locale */
25
+ setScreenshots(locale: string, screenshots: AppleScreenshots): void;
26
+ /** Set video previews for a specific locale */
27
+ setPreviews(locale: string, previews: ApplePreviews): void;
28
+ /** Set the App Clip default experience attributes (action, releaseWithAppStoreVersion). */
29
+ setAppClipDefaultExperience(attributes: Pick<AppleAppClipDefaultExperience, 'action' | 'releaseWithAppStoreVersion'>): void;
30
+ /** Set the App Clip App Store review detail (invocation URLs). */
31
+ setAppClipReviewDetail(reviewDetail: AppleAppClipReviewDetail | null): void;
32
+ /** Set per-locale App Clip info (subtitle + header image). */
33
+ setAppClipLocalizedInfo(locale: string, info: AppleAppClipLocalizedInfo): void;
24
34
  }
@@ -39,6 +39,15 @@ class AppleConfigWriter {
39
39
  violenceCartoonOrFantasy: attributes.violenceCartoonOrFantasy ?? apple_utils_1.Rating.NONE,
40
40
  violenceRealistic: attributes.violenceRealistic ?? apple_utils_1.Rating.NONE,
41
41
  violenceRealisticProlongedGraphicOrSadistic: attributes.violenceRealisticProlongedGraphicOrSadistic ?? apple_utils_1.Rating.NONE,
42
+ advertising: attributes.advertising ?? false,
43
+ ageAssurance: attributes.ageAssurance ?? false,
44
+ ageRatingOverrideV2: attributes.ageRatingOverrideV2 ?? null,
45
+ developerAgeRatingInfoUrl: attributes.developerAgeRatingInfoUrl ?? null,
46
+ gunsOrOtherWeapons: attributes.gunsOrOtherWeapons ?? apple_utils_1.Rating.NONE,
47
+ healthOrWellnessTopics: attributes.healthOrWellnessTopics ?? false,
48
+ messagingAndChat: attributes.messagingAndChat ?? false,
49
+ parentalControls: attributes.parentalControls ?? false,
50
+ userGeneratedContent: attributes.userGeneratedContent ?? false,
42
51
  };
43
52
  }
44
53
  setInfoLocale(attributes) {
@@ -145,6 +154,54 @@ class AppleConfigWriter {
145
154
  // TODO: add attachment
146
155
  };
147
156
  }
157
+ /** Set screenshots for a specific locale */
158
+ setScreenshots(locale, screenshots) {
159
+ this.schema.info = this.schema.info ?? {};
160
+ this.schema.info[locale] = this.schema.info[locale] ?? { title: '' };
161
+ this.schema.info[locale].screenshots =
162
+ Object.keys(screenshots).length > 0 ? screenshots : undefined;
163
+ }
164
+ /** Set video previews for a specific locale */
165
+ setPreviews(locale, previews) {
166
+ this.schema.info = this.schema.info ?? {};
167
+ this.schema.info[locale] = this.schema.info[locale] ?? { title: '' };
168
+ this.schema.info[locale].previews = Object.keys(previews).length > 0 ? previews : undefined;
169
+ }
170
+ /** Set the App Clip default experience attributes (action, releaseWithAppStoreVersion). */
171
+ setAppClipDefaultExperience(attributes) {
172
+ this.schema.appClip = this.schema.appClip ?? {};
173
+ this.schema.appClip.defaultExperience = {
174
+ ...this.schema.appClip.defaultExperience,
175
+ action: attributes.action,
176
+ releaseWithAppStoreVersion: attributes.releaseWithAppStoreVersion,
177
+ };
178
+ }
179
+ /** Set the App Clip App Store review detail (invocation URLs). */
180
+ setAppClipReviewDetail(reviewDetail) {
181
+ this.schema.appClip = this.schema.appClip ?? {};
182
+ this.schema.appClip.defaultExperience = this.schema.appClip.defaultExperience ?? {};
183
+ if (reviewDetail && reviewDetail.invocationUrls.length > 0) {
184
+ this.schema.appClip.defaultExperience.reviewDetail = reviewDetail;
185
+ }
186
+ else {
187
+ delete this.schema.appClip.defaultExperience.reviewDetail;
188
+ }
189
+ }
190
+ /** Set per-locale App Clip info (subtitle + header image). */
191
+ setAppClipLocalizedInfo(locale, info) {
192
+ this.schema.appClip = this.schema.appClip ?? {};
193
+ this.schema.appClip.defaultExperience = this.schema.appClip.defaultExperience ?? {};
194
+ this.schema.appClip.defaultExperience.info = this.schema.appClip.defaultExperience.info ?? {};
195
+ if (info.subtitle || info.headerImage) {
196
+ this.schema.appClip.defaultExperience.info[locale] = {
197
+ subtitle: optional(info.subtitle ?? null),
198
+ headerImage: optional(info.headerImage ?? null),
199
+ };
200
+ }
201
+ else {
202
+ delete this.schema.appClip.defaultExperience.info[locale];
203
+ }
204
+ }
148
205
  }
149
206
  exports.AppleConfigWriter = AppleConfigWriter;
150
207
  /** Helper function to convert `T | null` to `T | undefined`, required for the entity properties */