eas-cli 19.0.8 → 20.0.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 +305 -101
- package/build/build/createContext.d.ts +2 -1
- package/build/build/createContext.js +3 -1
- package/build/build/ios/credentials.js +5 -1
- package/build/build/ios/prepareJob.js +3 -0
- package/build/build/runBuildAndSubmit.d.ts +1 -0
- package/build/build/runBuildAndSubmit.js +1 -0
- package/build/build/types.d.ts +1 -0
- package/build/commands/build/index.d.ts +1 -0
- package/build/commands/build/index.js +13 -0
- package/build/commands/build/internal.d.ts +1 -0
- package/build/commands/build/internal.js +5 -0
- package/build/commands/go.d.ts +1 -0
- package/build/commands/go.js +29 -1
- package/build/commands/observe/events.d.ts +3 -3
- package/build/commands/observe/events.js +69 -51
- package/build/commands/observe/{logs.d.ts → metrics-summary.d.ts} +3 -11
- package/build/commands/observe/metrics-summary.js +95 -0
- package/build/commands/observe/metrics.d.ts +8 -3
- package/build/commands/observe/metrics.js +63 -47
- package/build/commands/observe/routes.d.ts +0 -1
- package/build/commands/observe/routes.js +0 -4
- package/build/commands/observe/versions.d.ts +0 -1
- package/build/commands/observe/versions.js +0 -4
- package/build/commands/update/embedded/upload.d.ts +20 -0
- package/build/commands/update/embedded/upload.js +129 -0
- package/build/credentials/context.d.ts +2 -0
- package/build/credentials/context.js +2 -0
- package/build/credentials/ios/actions/DeviceUtils.d.ts +2 -0
- package/build/credentials/ios/actions/DeviceUtils.js +21 -0
- package/build/credentials/ios/actions/SetUpAdhocProvisioningProfile.d.ts +1 -0
- package/build/credentials/ios/actions/SetUpAdhocProvisioningProfile.js +76 -14
- package/build/credentials/ios/actions/SetUpTargetBuildCredentials.js +8 -0
- package/build/graphql/client.js +1 -0
- package/build/graphql/generated.d.ts +70 -1
- package/build/graphql/mutations/EmbeddedUpdateAssetMutation.d.ts +13 -0
- package/build/graphql/mutations/EmbeddedUpdateAssetMutation.js +32 -0
- package/build/graphql/mutations/EmbeddedUpdateMutation.d.ts +14 -0
- package/build/graphql/mutations/EmbeddedUpdateMutation.js +37 -0
- package/build/graphql/queries/WorkflowRunQuery.d.ts +2 -1
- package/build/graphql/queries/WorkflowRunQuery.js +19 -6
- package/build/observe/formatCustomEvents.js +5 -5
- package/build/observe/metricNames.js +2 -0
- package/build/update/embeddedManifest.d.ts +3 -0
- package/build/update/embeddedManifest.js +28 -0
- package/oclif.manifest.json +1852 -1714
- package/package.json +6 -6
- package/build/commands/observe/logs.js +0 -141
|
@@ -3990,6 +3990,12 @@ export type CreateConvexTeamConnectionInput = {
|
|
|
3990
3990
|
};
|
|
3991
3991
|
export type CreateDeviceRunSessionInput = {
|
|
3992
3992
|
appId: Scalars['ID']['input'];
|
|
3993
|
+
/**
|
|
3994
|
+
* Override for the underlying turtle job run's max run time, in minutes. Must
|
|
3995
|
+
* be non-negative and smaller than 120 (2 hours). Only customizable on paid
|
|
3996
|
+
* plans. If omitted, the default is derived based on the job run's priority.
|
|
3997
|
+
*/
|
|
3998
|
+
maxRunTimeMinutes?: InputMaybe<Scalars['Int']['input']>;
|
|
3993
3999
|
/**
|
|
3994
4000
|
* The version of the package backing the device run session (e.g. "0.1.3-alpha.3").
|
|
3995
4001
|
* If omitted, consumers treat the session as pinned to "latest".
|
|
@@ -5231,7 +5237,8 @@ export type EmbeddedUpdateMutation = {
|
|
|
5231
5237
|
__typename?: 'EmbeddedUpdateMutation';
|
|
5232
5238
|
/**
|
|
5233
5239
|
* Register an embedded bundle as the launch asset for a given app/platform/channel.
|
|
5234
|
-
* Returns EMBEDDED_UPDATE_ASSET_NOT_AVAILABLE if the asset has not been finalized yet
|
|
5240
|
+
* Returns EMBEDDED_UPDATE_ASSET_NOT_AVAILABLE if the asset has not been finalized yet,
|
|
5241
|
+
* or EMBEDDED_UPDATE_ALREADY_EXISTS if an embedded update with this id is already registered.
|
|
5235
5242
|
*/
|
|
5236
5243
|
uploadEmbeddedUpdate: EmbeddedUpdate;
|
|
5237
5244
|
};
|
|
@@ -5475,6 +5482,8 @@ export type ExperimentationQuery = {
|
|
|
5475
5482
|
export type ExpoGoBuildQuery = {
|
|
5476
5483
|
__typename?: 'ExpoGoBuildQuery';
|
|
5477
5484
|
repackConfiguration: ExpoGoProjectConfiguration;
|
|
5485
|
+
supportedSdkVersionKeys: Array<Scalars['String']['output']>;
|
|
5486
|
+
supportedSdkVersions: Array<ExpoGoSdkVersion>;
|
|
5478
5487
|
};
|
|
5479
5488
|
export type ExpoGoBuildQueryRepackConfigurationArgs = {
|
|
5480
5489
|
input: ExpoGoRepackInput;
|
|
@@ -5496,6 +5505,13 @@ export type ExpoGoRepackInput = {
|
|
|
5496
5505
|
bundleId: Scalars['String']['input'];
|
|
5497
5506
|
sdkVersion?: InputMaybe<Scalars['String']['input']>;
|
|
5498
5507
|
};
|
|
5508
|
+
export type ExpoGoSdkVersion = {
|
|
5509
|
+
__typename?: 'ExpoGoSdkVersion';
|
|
5510
|
+
isBeta: Scalars['Boolean']['output'];
|
|
5511
|
+
isDeprecated: Scalars['Boolean']['output'];
|
|
5512
|
+
isLatest: Scalars['Boolean']['output'];
|
|
5513
|
+
sdkVersion: Scalars['String']['output'];
|
|
5514
|
+
};
|
|
5499
5515
|
export type FcmSnippet = FcmSnippetLegacy | FcmSnippetV1;
|
|
5500
5516
|
export type FcmSnippetLegacy = {
|
|
5501
5517
|
__typename?: 'FcmSnippetLegacy';
|
|
@@ -6296,6 +6312,8 @@ export type JobRun = {
|
|
|
6296
6312
|
initiatingActor?: Maybe<Actor>;
|
|
6297
6313
|
isWaived: Scalars['Boolean']['output'];
|
|
6298
6314
|
logFileUrls: Array<Scalars['String']['output']>;
|
|
6315
|
+
/** Max run time in seconds for this job run. */
|
|
6316
|
+
maxRunTimeSeconds?: Maybe<Scalars['Int']['output']>;
|
|
6299
6317
|
name: Scalars['String']['output'];
|
|
6300
6318
|
priority: JobRunPriority;
|
|
6301
6319
|
/** String describing the worker profile used to run this job run. */
|
|
@@ -6303,6 +6321,7 @@ export type JobRun = {
|
|
|
6303
6321
|
startedAt?: Maybe<Scalars['DateTime']['output']>;
|
|
6304
6322
|
status: JobRunStatus;
|
|
6305
6323
|
updateGroups: Array<Array<Update>>;
|
|
6324
|
+
workflowJob?: Maybe<WorkflowJob>;
|
|
6306
6325
|
};
|
|
6307
6326
|
export type JobRunError = {
|
|
6308
6327
|
__typename?: 'JobRunError';
|
|
@@ -14525,6 +14544,40 @@ export type EnsureDeviceRunSessionStoppedMutation = {
|
|
|
14525
14544
|
};
|
|
14526
14545
|
};
|
|
14527
14546
|
};
|
|
14547
|
+
export type GetSignedEmbeddedUpdateAssetUploadSpecMutationVariables = Exact<{
|
|
14548
|
+
appId: Scalars['ID']['input'];
|
|
14549
|
+
embeddedUpdateId: Scalars['ID']['input'];
|
|
14550
|
+
contentType: Scalars['String']['input'];
|
|
14551
|
+
}>;
|
|
14552
|
+
export type GetSignedEmbeddedUpdateAssetUploadSpecMutation = {
|
|
14553
|
+
__typename?: 'RootMutation';
|
|
14554
|
+
embeddedUpdateAsset: {
|
|
14555
|
+
__typename?: 'EmbeddedUpdateAssetMutation';
|
|
14556
|
+
getSignedEmbeddedUpdateAssetUploadSpecifications: {
|
|
14557
|
+
__typename?: 'EmbeddedUpdateAssetUploadSpec';
|
|
14558
|
+
storageKey: string;
|
|
14559
|
+
presignedUrl: string;
|
|
14560
|
+
fields: any;
|
|
14561
|
+
};
|
|
14562
|
+
};
|
|
14563
|
+
};
|
|
14564
|
+
export type UploadEmbeddedUpdateMutationVariables = Exact<{
|
|
14565
|
+
input: UploadEmbeddedUpdateInput;
|
|
14566
|
+
}>;
|
|
14567
|
+
export type UploadEmbeddedUpdateMutation = {
|
|
14568
|
+
__typename?: 'RootMutation';
|
|
14569
|
+
embeddedUpdate: {
|
|
14570
|
+
__typename?: 'EmbeddedUpdateMutation';
|
|
14571
|
+
uploadEmbeddedUpdate: {
|
|
14572
|
+
__typename?: 'EmbeddedUpdate';
|
|
14573
|
+
id: string;
|
|
14574
|
+
platform: AppPlatform;
|
|
14575
|
+
runtimeVersion: string;
|
|
14576
|
+
channel: string;
|
|
14577
|
+
createdAt: any;
|
|
14578
|
+
};
|
|
14579
|
+
};
|
|
14580
|
+
};
|
|
14528
14581
|
export type CreateEnvironmentSecretForAccountMutationVariables = Exact<{
|
|
14529
14582
|
input: CreateEnvironmentSecretInput;
|
|
14530
14583
|
accountId: Scalars['String']['input'];
|
|
@@ -18596,6 +18649,22 @@ export type WorkflowJobByIdQuery = {
|
|
|
18596
18649
|
};
|
|
18597
18650
|
};
|
|
18598
18651
|
};
|
|
18652
|
+
export type ExpoGoSupportedSdkVersionsQueryVariables = Exact<{
|
|
18653
|
+
[key: string]: never;
|
|
18654
|
+
}>;
|
|
18655
|
+
export type ExpoGoSupportedSdkVersionsQuery = {
|
|
18656
|
+
__typename?: 'RootQuery';
|
|
18657
|
+
expoGoBuild: {
|
|
18658
|
+
__typename?: 'ExpoGoBuildQuery';
|
|
18659
|
+
supportedSdkVersions: Array<{
|
|
18660
|
+
__typename?: 'ExpoGoSdkVersion';
|
|
18661
|
+
sdkVersion: string;
|
|
18662
|
+
isLatest: boolean;
|
|
18663
|
+
isBeta: boolean;
|
|
18664
|
+
isDeprecated: boolean;
|
|
18665
|
+
}>;
|
|
18666
|
+
};
|
|
18667
|
+
};
|
|
18599
18668
|
export type ExpoGoRepackConfigurationQueryVariables = Exact<{
|
|
18600
18669
|
input: ExpoGoRepackInput;
|
|
18601
18670
|
}>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ExpoGraphqlClient } from '../../commandUtils/context/contextUtils/createGraphqlClient';
|
|
2
|
+
export type EmbeddedUpdateAssetUploadSpec = {
|
|
3
|
+
storageKey: string;
|
|
4
|
+
presignedUrl: string;
|
|
5
|
+
fields: Record<string, string>;
|
|
6
|
+
};
|
|
7
|
+
export declare const EmbeddedUpdateAssetMutation: {
|
|
8
|
+
getSignedUploadSpecAsync(graphqlClient: ExpoGraphqlClient, { appId, embeddedUpdateId, contentType, }: {
|
|
9
|
+
appId: string;
|
|
10
|
+
embeddedUpdateId: string;
|
|
11
|
+
contentType: string;
|
|
12
|
+
}): Promise<EmbeddedUpdateAssetUploadSpec>;
|
|
13
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EmbeddedUpdateAssetMutation = 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
|
+
exports.EmbeddedUpdateAssetMutation = {
|
|
8
|
+
async getSignedUploadSpecAsync(graphqlClient, { appId, embeddedUpdateId, contentType, }) {
|
|
9
|
+
const data = await (0, client_1.withErrorHandlingAsync)(graphqlClient
|
|
10
|
+
.mutation((0, graphql_tag_1.default) `
|
|
11
|
+
mutation GetSignedEmbeddedUpdateAssetUploadSpec(
|
|
12
|
+
$appId: ID!
|
|
13
|
+
$embeddedUpdateId: ID!
|
|
14
|
+
$contentType: String!
|
|
15
|
+
) {
|
|
16
|
+
embeddedUpdateAsset {
|
|
17
|
+
getSignedEmbeddedUpdateAssetUploadSpecifications(
|
|
18
|
+
appId: $appId
|
|
19
|
+
embeddedUpdateId: $embeddedUpdateId
|
|
20
|
+
contentType: $contentType
|
|
21
|
+
) {
|
|
22
|
+
storageKey
|
|
23
|
+
presignedUrl
|
|
24
|
+
fields
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
`, { appId, embeddedUpdateId, contentType })
|
|
29
|
+
.toPromise());
|
|
30
|
+
return data.embeddedUpdateAsset.getSignedEmbeddedUpdateAssetUploadSpecifications;
|
|
31
|
+
},
|
|
32
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ExpoGraphqlClient } from '../../commandUtils/context/contextUtils/createGraphqlClient';
|
|
2
|
+
import { AppPlatform, UploadEmbeddedUpdateInput } from '../generated';
|
|
3
|
+
export type EmbeddedUpdateResult = {
|
|
4
|
+
id: string;
|
|
5
|
+
platform: AppPlatform;
|
|
6
|
+
runtimeVersion: string;
|
|
7
|
+
channel: string;
|
|
8
|
+
createdAt: string;
|
|
9
|
+
};
|
|
10
|
+
export declare function isEmbeddedUpdateAssetNotAvailableError(error: unknown): boolean;
|
|
11
|
+
export declare function isEmbeddedUpdateAlreadyExistsError(error: unknown): boolean;
|
|
12
|
+
export declare const EmbeddedUpdateMutation: {
|
|
13
|
+
uploadEmbeddedUpdateAsync(graphqlClient: ExpoGraphqlClient, input: UploadEmbeddedUpdateInput): Promise<EmbeddedUpdateResult>;
|
|
14
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EmbeddedUpdateMutation = void 0;
|
|
4
|
+
exports.isEmbeddedUpdateAssetNotAvailableError = isEmbeddedUpdateAssetNotAvailableError;
|
|
5
|
+
exports.isEmbeddedUpdateAlreadyExistsError = isEmbeddedUpdateAlreadyExistsError;
|
|
6
|
+
const tslib_1 = require("tslib");
|
|
7
|
+
const core_1 = require("@urql/core");
|
|
8
|
+
const graphql_tag_1 = tslib_1.__importDefault(require("graphql-tag"));
|
|
9
|
+
const client_1 = require("../client");
|
|
10
|
+
function isEmbeddedUpdateAssetNotAvailableError(error) {
|
|
11
|
+
return (error instanceof core_1.CombinedError &&
|
|
12
|
+
error.graphQLErrors.some(e => e.extensions?.['errorCode'] === 'EMBEDDED_UPDATE_ASSET_NOT_AVAILABLE'));
|
|
13
|
+
}
|
|
14
|
+
function isEmbeddedUpdateAlreadyExistsError(error) {
|
|
15
|
+
return (error instanceof core_1.CombinedError &&
|
|
16
|
+
error.graphQLErrors.some(e => e.extensions?.['errorCode'] === 'EMBEDDED_UPDATE_ALREADY_EXISTS'));
|
|
17
|
+
}
|
|
18
|
+
exports.EmbeddedUpdateMutation = {
|
|
19
|
+
async uploadEmbeddedUpdateAsync(graphqlClient, input) {
|
|
20
|
+
const data = await (0, client_1.withErrorHandlingAsync)(graphqlClient
|
|
21
|
+
.mutation((0, graphql_tag_1.default) `
|
|
22
|
+
mutation UploadEmbeddedUpdate($input: UploadEmbeddedUpdateInput!) {
|
|
23
|
+
embeddedUpdate {
|
|
24
|
+
uploadEmbeddedUpdate(input: $input) {
|
|
25
|
+
id
|
|
26
|
+
platform
|
|
27
|
+
runtimeVersion
|
|
28
|
+
channel
|
|
29
|
+
createdAt
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
`, { input })
|
|
34
|
+
.toPromise());
|
|
35
|
+
return data.embeddedUpdate.uploadEmbeddedUpdate;
|
|
36
|
+
},
|
|
37
|
+
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ExpoGraphqlClient } from '../../commandUtils/context/contextUtils/createGraphqlClient';
|
|
2
|
-
import { ExpoGoProjectConfiguration, ExpoGoRepackInput, WorkflowRunByIdQuery, WorkflowRunByIdWithJobsQuery, WorkflowRunFragment, WorkflowRunStatus } from '../generated';
|
|
2
|
+
import { ExpoGoProjectConfiguration, ExpoGoRepackInput, ExpoGoSdkVersion, WorkflowRunByIdQuery, WorkflowRunByIdWithJobsQuery, WorkflowRunFragment, WorkflowRunStatus } from '../generated';
|
|
3
3
|
export declare const WorkflowRunQuery: {
|
|
4
|
+
expoGoSupportedSdkVersionsAsync(graphqlClient: ExpoGraphqlClient): Promise<ExpoGoSdkVersion[]>;
|
|
4
5
|
expoGoRepackConfigurationAsync(graphqlClient: ExpoGraphqlClient, input: ExpoGoRepackInput): Promise<ExpoGoProjectConfiguration>;
|
|
5
6
|
byIdAsync(graphqlClient: ExpoGraphqlClient, workflowRunId: string, { useCache }?: {
|
|
6
7
|
useCache?: boolean;
|
|
@@ -9,11 +9,26 @@ const client_1 = require("../client");
|
|
|
9
9
|
const WorkflowJob_1 = require("../types/WorkflowJob");
|
|
10
10
|
const WorkflowRun_1 = require("../types/WorkflowRun");
|
|
11
11
|
exports.WorkflowRunQuery = {
|
|
12
|
+
async expoGoSupportedSdkVersionsAsync(graphqlClient) {
|
|
13
|
+
const data = await (0, client_1.withErrorHandlingAsync)(graphqlClient
|
|
14
|
+
.query((0, graphql_tag_1.default) `
|
|
15
|
+
query ExpoGoSupportedSdkVersions {
|
|
16
|
+
expoGoBuild {
|
|
17
|
+
supportedSdkVersions {
|
|
18
|
+
sdkVersion
|
|
19
|
+
isLatest
|
|
20
|
+
isBeta
|
|
21
|
+
isDeprecated
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
`, {}, { requestPolicy: 'network-only' })
|
|
26
|
+
.toPromise());
|
|
27
|
+
return data.expoGoBuild.supportedSdkVersions;
|
|
28
|
+
},
|
|
12
29
|
async expoGoRepackConfigurationAsync(graphqlClient, input) {
|
|
13
30
|
const data = await (0, client_1.withErrorHandlingAsync)(graphqlClient
|
|
14
|
-
.query(
|
|
15
|
-
/* eslint-disable graphql/template-strings */
|
|
16
|
-
(0, graphql_tag_1.default) `
|
|
31
|
+
.query((0, graphql_tag_1.default) `
|
|
17
32
|
query ExpoGoRepackConfiguration($input: ExpoGoRepackInput!) {
|
|
18
33
|
expoGoBuild {
|
|
19
34
|
repackConfiguration(input: $input) {
|
|
@@ -25,9 +40,7 @@ exports.WorkflowRunQuery = {
|
|
|
25
40
|
}
|
|
26
41
|
}
|
|
27
42
|
}
|
|
28
|
-
`,
|
|
29
|
-
/* eslint-enable graphql/template-strings */
|
|
30
|
-
{ input }, { requestPolicy: 'network-only' })
|
|
43
|
+
`, { input }, { requestPolicy: 'network-only' })
|
|
31
44
|
.toPromise());
|
|
32
45
|
return data.expoGoBuild.repackConfiguration;
|
|
33
46
|
},
|
|
@@ -21,7 +21,7 @@ function formatSeverity(event) {
|
|
|
21
21
|
}
|
|
22
22
|
function buildObserveCustomEventsTable(events, pageInfo, options) {
|
|
23
23
|
if (events.length === 0) {
|
|
24
|
-
return chalk_1.default.yellow('No
|
|
24
|
+
return chalk_1.default.yellow('No events found.');
|
|
25
25
|
}
|
|
26
26
|
const showEventName = !options?.eventName;
|
|
27
27
|
const hasSeverity = events.some(e => e.severityText != null || e.severityNumber != null);
|
|
@@ -49,7 +49,7 @@ function buildObserveCustomEventsTable(events, pageInfo, options) {
|
|
|
49
49
|
const totalDesc = options.totalEventCount != null
|
|
50
50
|
? ` — ${options.totalEventCount.toLocaleString()} total events`
|
|
51
51
|
: '';
|
|
52
|
-
const subject = options.eventName ? `${options.eventName} events` : '
|
|
52
|
+
const subject = options.eventName ? `${options.eventName} events` : 'Events';
|
|
53
53
|
lines.push(chalk_1.default.bold(`${subject} ${timeDesc}${totalDesc}`.trim()), '');
|
|
54
54
|
}
|
|
55
55
|
lines.push((0, renderTextTable_1.default)(headers, rows));
|
|
@@ -94,7 +94,7 @@ function buildObserveCustomEventsEmptyWithSuggestionsTable(eventName, names, opt
|
|
|
94
94
|
const timeDesc = options ? (0, formatUtils_1.buildTimeRangeDescription)(options) : '';
|
|
95
95
|
lines.push(chalk_1.default.yellow(`No events found matching "${eventName}" ${timeDesc}.`.trim()));
|
|
96
96
|
if (names.length === 0) {
|
|
97
|
-
lines.push('', chalk_1.default.yellow('No
|
|
97
|
+
lines.push('', chalk_1.default.yellow('No event names found in this time range.'));
|
|
98
98
|
return lines.join('\n');
|
|
99
99
|
}
|
|
100
100
|
lines.push('', 'Available event names in this time range:', '');
|
|
@@ -116,14 +116,14 @@ function buildObserveCustomEventsEmptyWithSuggestionsJson(eventName, names, isTr
|
|
|
116
116
|
}
|
|
117
117
|
function buildObserveCustomEventNamesTable(names, options) {
|
|
118
118
|
if (names.length === 0) {
|
|
119
|
-
return chalk_1.default.yellow('No
|
|
119
|
+
return chalk_1.default.yellow('No event names found.');
|
|
120
120
|
}
|
|
121
121
|
const headers = ['Event Name', 'Count'];
|
|
122
122
|
const rows = names.map(n => [n.eventName, n.count.toLocaleString()]);
|
|
123
123
|
const lines = [];
|
|
124
124
|
if (options) {
|
|
125
125
|
const timeDesc = (0, formatUtils_1.buildTimeRangeDescription)(options);
|
|
126
|
-
const subject = '
|
|
126
|
+
const subject = 'Event names';
|
|
127
127
|
lines.push(chalk_1.default.bold(`${subject} ${timeDesc}`.trim()), '');
|
|
128
128
|
}
|
|
129
129
|
lines.push((0, renderTextTable_1.default)(headers, rows));
|
|
@@ -11,6 +11,7 @@ exports.METRIC_ALIASES = {
|
|
|
11
11
|
cold_launch: 'expo.app_startup.cold_launch_time',
|
|
12
12
|
warm_launch: 'expo.app_startup.warm_launch_time',
|
|
13
13
|
bundle_load: 'expo.app_startup.bundle_load_time',
|
|
14
|
+
update_download: 'expo.updates.download_time',
|
|
14
15
|
};
|
|
15
16
|
exports.NAVIGATION_METRIC_ALIASES = {
|
|
16
17
|
cold_ttr: 'expo.navigation.cold_ttr',
|
|
@@ -25,6 +26,7 @@ exports.METRIC_SHORT_NAMES = {
|
|
|
25
26
|
'expo.app_startup.tti': 'Startup TTI',
|
|
26
27
|
'expo.app_startup.ttr': 'Startup TTR',
|
|
27
28
|
'expo.app_startup.bundle_load_time': 'Bundle Load',
|
|
29
|
+
'expo.updates.download_time': 'Update Download',
|
|
28
30
|
'expo.navigation.cold_ttr': 'Nav Cold TTR',
|
|
29
31
|
'expo.navigation.warm_ttr': 'Nav Warm TTR',
|
|
30
32
|
'expo.navigation.tti': 'Nav TTI',
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.readEmbeddedManifestAsync = readEmbeddedManifestAsync;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
|
|
6
|
+
const uuid = tslib_1.__importStar(require("uuid"));
|
|
7
|
+
async function readEmbeddedManifestAsync(manifestPath) {
|
|
8
|
+
let parsed;
|
|
9
|
+
try {
|
|
10
|
+
parsed = JSON.parse(await fs_extra_1.default.readFile(manifestPath, 'utf8'));
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
throw new Error(`Could not read or parse manifest at "${manifestPath}". ` +
|
|
14
|
+
`Check the file exists, is readable, and contains valid JSON.`);
|
|
15
|
+
}
|
|
16
|
+
if (typeof parsed !== 'object' ||
|
|
17
|
+
parsed === null ||
|
|
18
|
+
typeof parsed.id !== 'string') {
|
|
19
|
+
throw new Error(`Manifest at "${manifestPath}" is missing the required "id" field. ` +
|
|
20
|
+
`Make sure you're pointing at the app.manifest generated by expo-updates during your native build, not a different JSON file.`);
|
|
21
|
+
}
|
|
22
|
+
const id = parsed.id;
|
|
23
|
+
if (!uuid.validate(id)) {
|
|
24
|
+
throw new Error(`Manifest at "${manifestPath}" has an invalid "id" field ("${id}" is not a UUID). ` +
|
|
25
|
+
`Make sure you're pointing at the app.manifest generated by expo-updates during your native build.`);
|
|
26
|
+
}
|
|
27
|
+
return { id };
|
|
28
|
+
}
|