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.
- package/README.md +90 -89
- package/build/commandUtils/pagination.d.ts +2 -1
- package/build/commandUtils/pagination.js +3 -2
- package/build/commands/build/dev.d.ts +1 -0
- package/build/commands/build/dev.js +10 -2
- package/build/commands/deploy/index.js +18 -2
- package/build/commands/metadata/pull.d.ts +1 -1
- package/build/commands/metadata/pull.js +2 -4
- package/build/commands/metadata/push.d.ts +1 -1
- package/build/commands/metadata/push.js +2 -4
- package/build/commands/observe/events.d.ts +27 -0
- package/build/commands/observe/events.js +140 -0
- package/build/commands/observe/metrics.d.ts +21 -0
- package/build/commands/observe/metrics.js +111 -0
- package/build/commands/observe/versions.d.ts +19 -0
- package/build/commands/observe/versions.js +69 -0
- package/build/credentials/ios/IosCredentialsProvider.js +8 -4
- package/build/credentials/ios/utils/provisioningProfile.d.ts +1 -0
- package/build/credentials/ios/utils/provisioningProfile.js +15 -1
- package/build/graphql/generated.d.ts +634 -61
- package/build/graphql/generated.js +11 -9
- package/build/graphql/queries/ObserveQuery.d.ts +35 -0
- package/build/graphql/queries/ObserveQuery.js +109 -0
- package/build/graphql/types/Observe.d.ts +3 -0
- package/build/graphql/types/Observe.js +84 -0
- package/build/metadata/apple/config/reader.d.ts +9 -1
- package/build/metadata/apple/config/reader.js +25 -0
- package/build/metadata/apple/config/writer.d.ts +7 -1
- package/build/metadata/apple/config/writer.js +44 -0
- package/build/metadata/apple/data.d.ts +2 -1
- package/build/metadata/apple/tasks/app-clip.d.ts +37 -0
- package/build/metadata/apple/tasks/app-clip.js +404 -0
- package/build/metadata/apple/tasks/index.js +2 -0
- package/build/metadata/apple/tasks/previews.js +16 -12
- package/build/metadata/apple/tasks/screenshots.js +15 -4
- package/build/metadata/apple/types.d.ts +28 -1
- package/build/observe/fetchEvents.d.ts +27 -0
- package/build/observe/fetchEvents.js +83 -0
- package/build/observe/fetchMetrics.d.ts +11 -0
- package/build/observe/fetchMetrics.js +78 -0
- package/build/observe/fetchVersions.d.ts +7 -0
- package/build/observe/fetchVersions.js +31 -0
- package/build/observe/formatEvents.d.ts +31 -0
- package/build/observe/formatEvents.js +99 -0
- package/build/observe/formatMetrics.d.ts +38 -0
- package/build/observe/formatMetrics.js +206 -0
- package/build/observe/formatVersions.d.ts +32 -0
- package/build/observe/formatVersions.js +92 -0
- package/build/observe/metricNames.d.ts +4 -0
- package/build/observe/metricNames.js +33 -0
- package/build/observe/startAndEndTime.d.ts +18 -0
- package/build/observe/startAndEndTime.js +36 -0
- package/build/user/SessionManager.js +11 -0
- package/build/worker/upload.js +15 -5
- package/oclif.manifest.json +2102 -1620
- package/package.json +9 -6
- 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.
|
|
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 =
|
|
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 =
|
|
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["
|
|
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,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
|
+
}
|