eas-cli 18.5.0 → 18.7.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 (57) hide show
  1. package/README.md +90 -89
  2. package/build/commandUtils/pagination.d.ts +2 -1
  3. package/build/commandUtils/pagination.js +3 -2
  4. package/build/commands/build/dev.d.ts +1 -0
  5. package/build/commands/build/dev.js +10 -2
  6. package/build/commands/deploy/index.js +18 -2
  7. package/build/commands/metadata/pull.d.ts +1 -1
  8. package/build/commands/metadata/pull.js +2 -4
  9. package/build/commands/metadata/push.d.ts +1 -1
  10. package/build/commands/metadata/push.js +2 -4
  11. package/build/commands/observe/events.d.ts +27 -0
  12. package/build/commands/observe/events.js +140 -0
  13. package/build/commands/observe/metrics.d.ts +21 -0
  14. package/build/commands/observe/metrics.js +111 -0
  15. package/build/commands/observe/versions.d.ts +19 -0
  16. package/build/commands/observe/versions.js +69 -0
  17. package/build/credentials/ios/IosCredentialsProvider.js +8 -4
  18. package/build/credentials/ios/utils/provisioningProfile.d.ts +1 -0
  19. package/build/credentials/ios/utils/provisioningProfile.js +15 -1
  20. package/build/graphql/generated.d.ts +634 -61
  21. package/build/graphql/generated.js +11 -9
  22. package/build/graphql/queries/ObserveQuery.d.ts +35 -0
  23. package/build/graphql/queries/ObserveQuery.js +109 -0
  24. package/build/graphql/types/Observe.d.ts +3 -0
  25. package/build/graphql/types/Observe.js +84 -0
  26. package/build/metadata/apple/config/reader.d.ts +9 -1
  27. package/build/metadata/apple/config/reader.js +25 -0
  28. package/build/metadata/apple/config/writer.d.ts +7 -1
  29. package/build/metadata/apple/config/writer.js +44 -0
  30. package/build/metadata/apple/data.d.ts +2 -1
  31. package/build/metadata/apple/tasks/app-clip.d.ts +37 -0
  32. package/build/metadata/apple/tasks/app-clip.js +404 -0
  33. package/build/metadata/apple/tasks/index.js +2 -0
  34. package/build/metadata/apple/tasks/previews.js +16 -12
  35. package/build/metadata/apple/tasks/screenshots.js +15 -4
  36. package/build/metadata/apple/types.d.ts +28 -1
  37. package/build/observe/fetchEvents.d.ts +27 -0
  38. package/build/observe/fetchEvents.js +83 -0
  39. package/build/observe/fetchMetrics.d.ts +11 -0
  40. package/build/observe/fetchMetrics.js +78 -0
  41. package/build/observe/fetchVersions.d.ts +7 -0
  42. package/build/observe/fetchVersions.js +31 -0
  43. package/build/observe/formatEvents.d.ts +31 -0
  44. package/build/observe/formatEvents.js +99 -0
  45. package/build/observe/formatMetrics.d.ts +38 -0
  46. package/build/observe/formatMetrics.js +206 -0
  47. package/build/observe/formatVersions.d.ts +32 -0
  48. package/build/observe/formatVersions.js +92 -0
  49. package/build/observe/metricNames.d.ts +4 -0
  50. package/build/observe/metricNames.js +33 -0
  51. package/build/observe/startAndEndTime.d.ts +18 -0
  52. package/build/observe/startAndEndTime.js +36 -0
  53. package/build/user/SessionManager.js +11 -0
  54. package/build/worker/upload.js +15 -5
  55. package/oclif.manifest.json +2102 -1620
  56. package/package.json +9 -6
  57. package/schema/metadata-0.json +177 -0
@@ -6,9 +6,9 @@
6
6
  * For more info and docs, visit https://graphql-code-generator.com/
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.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.AppObserveReleaseType = 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.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 = exports.EasServiceMetric = 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 = exports.ResponseStatusType = void 0;
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.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";
@@ -81,11 +81,6 @@ var AppObservePlatform;
81
81
  AppObservePlatform["Android"] = "ANDROID";
82
82
  AppObservePlatform["Ios"] = "IOS";
83
83
  })(AppObservePlatform || (exports.AppObservePlatform = AppObservePlatform = {}));
84
- var AppObserveReleaseType;
85
- (function (AppObserveReleaseType) {
86
- AppObserveReleaseType["Update"] = "UPDATE";
87
- AppObserveReleaseType["Version"] = "VERSION";
88
- })(AppObserveReleaseType || (exports.AppObserveReleaseType = AppObserveReleaseType = {}));
89
84
  var AppPlatform;
90
85
  (function (AppPlatform) {
91
86
  AppPlatform["Android"] = "ANDROID";
@@ -391,6 +386,7 @@ var EasBuildWaiverType;
391
386
  })(EasBuildWaiverType || (exports.EasBuildWaiverType = EasBuildWaiverType = {}));
392
387
  var EasService;
393
388
  (function (EasService) {
389
+ EasService["Agent"] = "AGENT";
394
390
  EasService["Builds"] = "BUILDS";
395
391
  EasService["Jobs"] = "JOBS";
396
392
  EasService["Mcp"] = "MCP";
@@ -401,6 +397,7 @@ var EasServiceMetric;
401
397
  EasServiceMetric["AssetsRequests"] = "ASSETS_REQUESTS";
402
398
  EasServiceMetric["BandwidthUsage"] = "BANDWIDTH_USAGE";
403
399
  EasServiceMetric["Builds"] = "BUILDS";
400
+ EasServiceMetric["CreditUsage"] = "CREDIT_USAGE";
404
401
  EasServiceMetric["LocalBuilds"] = "LOCAL_BUILDS";
405
402
  EasServiceMetric["ManifestRequests"] = "MANIFEST_REQUESTS";
406
403
  EasServiceMetric["McpRequests"] = "MCP_REQUESTS";
@@ -484,7 +481,7 @@ var EntityTypeName;
484
481
  EntityTypeName["AndroidKeystoreEntity"] = "AndroidKeystoreEntity";
485
482
  EntityTypeName["AppEntity"] = "AppEntity";
486
483
  EntityTypeName["AppStoreConnectApiKeyEntity"] = "AppStoreConnectApiKeyEntity";
487
- EntityTypeName["AppStoreConnectAppWebhookEntity"] = "AppStoreConnectAppWebhookEntity";
484
+ EntityTypeName["AppStoreConnectAppEntity"] = "AppStoreConnectAppEntity";
488
485
  EntityTypeName["AppleDeviceEntity"] = "AppleDeviceEntity";
489
486
  EntityTypeName["AppleDistributionCertificateEntity"] = "AppleDistributionCertificateEntity";
490
487
  EntityTypeName["AppleProvisioningProfileEntity"] = "AppleProvisioningProfileEntity";
@@ -895,6 +892,7 @@ var UsageMetricType;
895
892
  (function (UsageMetricType) {
896
893
  UsageMetricType["Bandwidth"] = "BANDWIDTH";
897
894
  UsageMetricType["Build"] = "BUILD";
895
+ UsageMetricType["Credit"] = "CREDIT";
898
896
  UsageMetricType["Minute"] = "MINUTE";
899
897
  UsageMetricType["Request"] = "REQUEST";
900
898
  UsageMetricType["Update"] = "UPDATE";
@@ -1054,6 +1052,10 @@ var WorkflowRunStatus;
1054
1052
  })(WorkflowRunStatus || (exports.WorkflowRunStatus = WorkflowRunStatus = {}));
1055
1053
  var WorkflowRunTriggerEventType;
1056
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";
1057
1059
  WorkflowRunTriggerEventType["EasSubmit"] = "EAS_SUBMIT";
1058
1060
  WorkflowRunTriggerEventType["ExpoLaunch"] = "EXPO_LAUNCH";
1059
1061
  WorkflowRunTriggerEventType["GithubPullRequestLabeled"] = "GITHUB_PULL_REQUEST_LABELED";
@@ -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
+ };
@@ -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
+ `;
@@ -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, ApplePreviews, AppleScreenshots } 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
  /**
@@ -26,5 +26,13 @@ export declare class AppleConfigReader {
26
26
  getScreenshots(locale: string): AppleScreenshots | null;
27
27
  /** Get video previews configuration for a specific locale */
28
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;
29
37
  }
30
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() {
@@ -170,5 +179,21 @@ class AppleConfigReader {
170
179
  getPreviews(locale) {
171
180
  return this.schema.info?.[locale]?.previews ?? null;
172
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
+ }
173
198
  }
174
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, ApplePreviews, AppleScreenshots } 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.
@@ -25,4 +25,10 @@ export declare class AppleConfigWriter {
25
25
  setScreenshots(locale: string, screenshots: AppleScreenshots): void;
26
26
  /** Set video previews for a specific locale */
27
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;
28
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) {
@@ -158,6 +167,41 @@ class AppleConfigWriter {
158
167
  this.schema.info[locale] = this.schema.info[locale] ?? { title: '' };
159
168
  this.schema.info[locale].previews = Object.keys(previews).length > 0 ? previews : undefined;
160
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
+ }
161
205
  }
162
206
  exports.AppleConfigWriter = AppleConfigWriter;
163
207
  /** Helper function to convert `T | null` to `T | undefined`, required for the entity properties */
@@ -1,5 +1,6 @@
1
1
  import type { App } from '@expo/apple-utils';
2
2
  import type { AgeRatingData } from './tasks/age-rating';
3
+ import type { AppClipData } from './tasks/app-clip';
3
4
  import type { AppInfoData } from './tasks/app-info';
4
5
  import type { AppReviewData } from './tasks/app-review-detail';
5
6
  import type { AppVersionData } from './tasks/app-version';
@@ -12,7 +13,7 @@ import type { ScreenshotsData } from './tasks/screenshots';
12
13
  export type AppleData = {
13
14
  app: App;
14
15
  projectDir: string;
15
- } & AppInfoData & AppVersionData & AgeRatingData & AppReviewData & ScreenshotsData & PreviewsData;
16
+ } & AppInfoData & AppVersionData & AgeRatingData & AppReviewData & ScreenshotsData & PreviewsData & AppClipData;
16
17
  /**
17
18
  * The unprepared partial apple data, used within the `prepareAsync` tasks.
18
19
  * It contains a reference to the app, each task should populate the necessary data.
@@ -0,0 +1,37 @@
1
+ import { AppClip, AppClipAppStoreReviewDetail, AppClipDefaultExperience, AppClipDefaultExperienceLocalization, AppClipHeaderImage } from '@expo/apple-utils';
2
+ import { AppleTask, TaskDownloadOptions, TaskPrepareOptions, TaskUploadOptions } from '../task';
3
+ export type AppClipData = {
4
+ /** The App Clip resource for the current app, if one exists. */
5
+ appClip: AppClip | null;
6
+ /**
7
+ * The default experience attached to the *current editable* app store
8
+ * version, if one exists. App Clip default experiences are versioned per
9
+ * app store version, so this is null when the user has bumped the version
10
+ * but not yet pushed an App Clip configuration for it.
11
+ */
12
+ appClipDefaultExperience: AppClipDefaultExperience | null;
13
+ /**
14
+ * The most recent default experience from any other version, used as a
15
+ * template when creating a new default experience for the current version
16
+ * (and as the source for `metadata:pull` when the current version has none).
17
+ */
18
+ appClipTemplateExperience: AppClipDefaultExperience | null;
19
+ /** Existing localizations keyed by locale (e.g. `en-US`). */
20
+ appClipLocalizations: Map<string, AppClipDefaultExperienceLocalization>;
21
+ /** Existing header images keyed by locale. */
22
+ appClipHeaderImages: Map<string, AppClipHeaderImage>;
23
+ /** App Store review detail (invocation URLs), if one exists. */
24
+ appClipReviewDetail: AppClipAppStoreReviewDetail | null;
25
+ };
26
+ /**
27
+ * Task for managing App Clip metadata (default experience, localized
28
+ * subtitles + header images, App Store review invocation URLs).
29
+ *
30
+ * No-op when the app does not have an App Clip target.
31
+ */
32
+ export declare class AppClipTask extends AppleTask {
33
+ name: () => string;
34
+ prepareAsync({ context }: TaskPrepareOptions): Promise<void>;
35
+ downloadAsync({ config, context }: TaskDownloadOptions): Promise<void>;
36
+ uploadAsync({ config, context }: TaskUploadOptions): Promise<void>;
37
+ }