eas-cli 18.12.2 → 18.13.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.
@@ -8,16 +8,16 @@ export default class ObserveEvents extends EasCommand {
8
8
  static flags: {
9
9
  json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
10
10
  'non-interactive': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
- sort: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
12
- platform: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
- after: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
14
- limit: import("@oclif/core/lib/interfaces").OptionFlag<number | undefined>;
11
+ 'project-id': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ 'update-id': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
+ 'app-version': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
15
14
  start: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
16
15
  end: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
17
16
  days: import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
18
- 'app-version': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
19
- 'update-id': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
20
- 'project-id': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
17
+ limit: import("@oclif/core/lib/interfaces").OptionFlag<number | undefined>;
18
+ after: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
19
+ platform: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
20
+ sort: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
21
21
  };
22
22
  static contextDefinition: {
23
23
  loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
@@ -8,6 +8,7 @@ const flags_1 = require("../../commandUtils/flags");
8
8
  const pagination_1 = require("../../commandUtils/pagination");
9
9
  const log_1 = tslib_1.__importDefault(require("../../log"));
10
10
  const fetchEvents_1 = require("../../observe/fetchEvents");
11
+ const flags_2 = require("../../observe/flags");
11
12
  const metricNames_1 = require("../../observe/metricNames");
12
13
  const formatEvents_1 = require("../../observe/formatEvents");
13
14
  const platforms_1 = require("../../observe/platforms");
@@ -33,39 +34,16 @@ class ObserveEvents extends EasCommand_1.default {
33
34
  required: false,
34
35
  default: fetchEvents_1.EventsOrderPreset.Oldest.valueOf().toLowerCase(),
35
36
  })(),
36
- platform: core_1.Flags.option({
37
- description: 'Filter by platform',
38
- options: platforms_1.allowedPlatformFlagValues,
39
- })(),
40
- after: core_1.Flags.string({
41
- description: 'Cursor for pagination. Use the endCursor from a previous query to fetch the next page.',
42
- }),
37
+ ...flags_2.ObservePlatformFlag,
38
+ ...flags_2.ObserveAfterFlag,
43
39
  limit: (0, pagination_1.getLimitFlagWithCustomValues)({
44
40
  defaultTo: DEFAULT_EVENTS_LIMIT,
45
41
  limit: 100,
46
42
  }),
47
- start: core_1.Flags.string({
48
- description: 'Start of time range (ISO date)',
49
- exclusive: ['days'],
50
- }),
51
- end: core_1.Flags.string({
52
- description: 'End of time range (ISO date)',
53
- exclusive: ['days'],
54
- }),
55
- days: core_1.Flags.integer({
56
- description: 'Show events from the last N days (mutually exclusive with --start/--end)',
57
- min: 1,
58
- exclusive: ['start', 'end'],
59
- }),
60
- 'app-version': core_1.Flags.string({
61
- description: 'Filter by app version',
62
- }),
63
- 'update-id': core_1.Flags.string({
64
- description: 'Filter by EAS update ID',
65
- }),
66
- 'project-id': core_1.Flags.string({
67
- description: 'EAS project ID (defaults to the project ID of the current directory)',
68
- }),
43
+ ...flags_2.ObserveTimeRangeFlags,
44
+ ...flags_2.ObserveAppVersionFlag,
45
+ ...flags_2.ObserveUpdateIdFlag,
46
+ ...flags_2.ObserveProjectIdFlag,
69
47
  ...flags_1.EasNonInteractiveAndJsonFlags,
70
48
  };
71
49
  static contextDefinition = {
@@ -8,17 +8,17 @@ export default class ObserveLogs extends EasCommand {
8
8
  static flags: {
9
9
  json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
10
10
  'non-interactive': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
- platform: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
- after: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
- limit: import("@oclif/core/lib/interfaces").OptionFlag<number | undefined>;
11
+ 'project-id': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ 'session-id': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
+ 'all-events': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
14
+ 'update-id': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
15
+ 'app-version': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
14
16
  start: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
15
17
  end: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
16
18
  days: import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
17
- 'app-version': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
18
- 'update-id': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
19
- 'session-id': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
20
- 'all-events': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
21
- 'project-id': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
19
+ limit: import("@oclif/core/lib/interfaces").OptionFlag<number | undefined>;
20
+ after: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
21
+ platform: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
22
22
  };
23
23
  static contextDefinition: {
24
24
  loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
@@ -8,6 +8,7 @@ const pagination_1 = require("../../commandUtils/pagination");
8
8
  const log_1 = tslib_1.__importDefault(require("../../log"));
9
9
  const ObserveQuery_1 = require("../../graphql/queries/ObserveQuery");
10
10
  const fetchCustomEvents_1 = require("../../observe/fetchCustomEvents");
11
+ const flags_2 = require("../../observe/flags");
11
12
  const formatCustomEvents_1 = require("../../observe/formatCustomEvents");
12
13
  const platforms_1 = require("../../observe/platforms");
13
14
  const resolveProjectContext_1 = require("../../observe/resolveProjectContext");
@@ -24,36 +25,15 @@ class ObserveLogs extends EasCommand_1.default {
24
25
  }),
25
26
  };
26
27
  static flags = {
27
- platform: core_1.Flags.option({
28
- description: 'Filter by platform',
29
- options: platforms_1.allowedPlatformFlagValues,
30
- })(),
31
- after: core_1.Flags.string({
32
- description: 'Cursor for pagination. Use the endCursor from a previous query to fetch the next page.',
33
- }),
28
+ ...flags_2.ObservePlatformFlag,
29
+ ...flags_2.ObserveAfterFlag,
34
30
  limit: (0, pagination_1.getLimitFlagWithCustomValues)({
35
31
  defaultTo: DEFAULT_EVENTS_LIMIT,
36
32
  limit: 100,
37
33
  }),
38
- start: core_1.Flags.string({
39
- description: 'Start of time range (ISO date)',
40
- exclusive: ['days'],
41
- }),
42
- end: core_1.Flags.string({
43
- description: 'End of time range (ISO date)',
44
- exclusive: ['days'],
45
- }),
46
- days: core_1.Flags.integer({
47
- description: 'Show events from the last N days (mutually exclusive with --start/--end)',
48
- min: 1,
49
- exclusive: ['start', 'end'],
50
- }),
51
- 'app-version': core_1.Flags.string({
52
- description: 'Filter by app version',
53
- }),
54
- 'update-id': core_1.Flags.string({
55
- description: 'Filter by EAS update ID',
56
- }),
34
+ ...flags_2.ObserveTimeRangeFlags,
35
+ ...flags_2.ObserveAppVersionFlag,
36
+ ...flags_2.ObserveUpdateIdFlag,
57
37
  'session-id': core_1.Flags.string({
58
38
  description: 'Filter by session ID',
59
39
  }),
@@ -61,9 +41,7 @@ class ObserveLogs extends EasCommand_1.default {
61
41
  description: 'When no event name argument is provided, list all events across all event names instead of a summary of event names + counts.',
62
42
  default: false,
63
43
  }),
64
- 'project-id': core_1.Flags.string({
65
- description: 'EAS project ID (defaults to the project ID of the current directory)',
66
- }),
44
+ ...flags_2.ObserveProjectIdFlag,
67
45
  ...flags_1.EasNonInteractiveAndJsonFlags,
68
46
  };
69
47
  static contextDefinition = {
@@ -5,13 +5,13 @@ export default class ObserveMetrics extends EasCommand {
5
5
  static flags: {
6
6
  json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
7
7
  'non-interactive': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
8
- platform: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
9
- metric: import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
- stat: import("@oclif/core/lib/interfaces").OptionFlag<("min" | "max" | "median" | "average" | "p80" | "p90" | "p99" | "eventCount")[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
8
+ 'project-id': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
9
  start: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
10
  end: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
11
  days: import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
14
- 'project-id': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ metric: import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
+ stat: import("@oclif/core/lib/interfaces").OptionFlag<("min" | "max" | "median" | "average" | "p80" | "p90" | "p99" | "eventCount")[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
14
+ platform: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
15
15
  };
16
16
  static contextDefinition: {
17
17
  loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
@@ -6,6 +6,7 @@ const EasCommand_1 = tslib_1.__importDefault(require("../../commandUtils/EasComm
6
6
  const flags_1 = require("../../commandUtils/flags");
7
7
  const log_1 = tslib_1.__importDefault(require("../../log"));
8
8
  const fetchMetrics_1 = require("../../observe/fetchMetrics");
9
+ const flags_2 = require("../../observe/flags");
9
10
  const formatMetrics_1 = require("../../observe/formatMetrics");
10
11
  const metricNames_1 = require("../../observe/metricNames");
11
12
  const platforms_1 = require("../../observe/platforms");
@@ -34,10 +35,7 @@ class ObserveMetrics extends EasCommand_1.default {
34
35
  static hidden = true;
35
36
  static description = 'display app performance metrics grouped by app version';
36
37
  static flags = {
37
- platform: core_1.Flags.option({
38
- description: 'Filter by platform',
39
- options: platforms_1.allowedPlatformFlagValues,
40
- })(),
38
+ ...flags_2.ObservePlatformFlag,
41
39
  metric: core_1.Flags.option({
42
40
  description: 'Metric name to display (can be specified multiple times).',
43
41
  multiple: true,
@@ -48,22 +46,8 @@ class ObserveMetrics extends EasCommand_1.default {
48
46
  multiple: true,
49
47
  options: DEFAULT_STATS_JSON,
50
48
  })(),
51
- start: core_1.Flags.string({
52
- description: 'Start of time range for metrics data (ISO date).',
53
- exclusive: ['days'],
54
- }),
55
- end: core_1.Flags.string({
56
- description: 'End of time range for metrics data (ISO date).',
57
- exclusive: ['days'],
58
- }),
59
- days: core_1.Flags.integer({
60
- description: 'Show metrics from the last N days (mutually exclusive with --start/--end)',
61
- min: 1,
62
- exclusive: ['start', 'end'],
63
- }),
64
- 'project-id': core_1.Flags.string({
65
- description: 'EAS project ID (defaults to the project ID of the current directory)',
66
- }),
49
+ ...flags_2.ObserveTimeRangeFlags,
50
+ ...flags_2.ObserveProjectIdFlag,
67
51
  ...flags_1.EasNonInteractiveAndJsonFlags,
68
52
  };
69
53
  static contextDefinition = {
@@ -0,0 +1,27 @@
1
+ import EasCommand from '../../commandUtils/EasCommand';
2
+ export default class ObserveRoutes extends EasCommand {
3
+ static hidden: boolean;
4
+ static description: string;
5
+ static flags: {
6
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
7
+ 'non-interactive': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
8
+ 'project-id': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
9
+ 'build-number': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ 'update-id': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ 'app-version': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ start: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
+ end: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
14
+ days: import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
15
+ limit: import("@oclif/core/lib/interfaces").OptionFlag<number | undefined>;
16
+ after: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
17
+ metric: import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
18
+ stat: import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
19
+ platform: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
20
+ };
21
+ static contextDefinition: {
22
+ loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
23
+ projectId: import("../../commandUtils/context/ProjectIdContextField").ProjectIdContextField;
24
+ };
25
+ private static loggedInOnlyContextDefinition;
26
+ runAsync(): Promise<void>;
27
+ }
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const core_1 = require("@oclif/core");
5
+ const EasCommand_1 = tslib_1.__importDefault(require("../../commandUtils/EasCommand"));
6
+ const flags_1 = require("../../commandUtils/flags");
7
+ const pagination_1 = require("../../commandUtils/pagination");
8
+ const log_1 = tslib_1.__importDefault(require("../../log"));
9
+ const fetchNavigationRoutes_1 = require("../../observe/fetchNavigationRoutes");
10
+ const flags_2 = require("../../observe/flags");
11
+ const formatNavigationRoutes_1 = require("../../observe/formatNavigationRoutes");
12
+ const metricNames_1 = require("../../observe/metricNames");
13
+ const platforms_1 = require("../../observe/platforms");
14
+ const resolveProjectContext_1 = require("../../observe/resolveProjectContext");
15
+ const startAndEndTime_1 = require("../../observe/startAndEndTime");
16
+ const json_1 = require("../../utils/json");
17
+ const DEFAULT_ROUTES_LIMIT = 50;
18
+ const STAT_OPTIONS = ['median', 'med', 'p90', 'count', 'event_count', 'eventCount'];
19
+ const DEFAULT_STATS_TABLE = ['median', 'count'];
20
+ const DEFAULT_STATS_JSON = ['median', 'p90', 'count'];
21
+ class ObserveRoutes extends EasCommand_1.default {
22
+ static hidden = true;
23
+ static description = 'display app navigation route metrics (Cold TTR, Warm TTR, TTI) grouped by route name';
24
+ static flags = {
25
+ ...flags_2.ObservePlatformFlag,
26
+ metric: core_1.Flags.option({
27
+ description: 'Navigation metric to display (can be specified multiple times). Defaults to all three.',
28
+ multiple: true,
29
+ options: Object.keys(metricNames_1.NAVIGATION_METRIC_ALIASES),
30
+ })(),
31
+ stat: core_1.Flags.option({
32
+ description: 'Statistic to display per metric (can be specified multiple times)',
33
+ multiple: true,
34
+ options: STAT_OPTIONS,
35
+ })(),
36
+ ...flags_2.ObserveAfterFlag,
37
+ limit: (0, pagination_1.getLimitFlagWithCustomValues)({
38
+ defaultTo: DEFAULT_ROUTES_LIMIT,
39
+ limit: 200,
40
+ }),
41
+ ...flags_2.ObserveTimeRangeFlags,
42
+ ...flags_2.ObserveAppVersionFlag,
43
+ ...flags_2.ObserveUpdateIdFlag,
44
+ 'build-number': core_1.Flags.string({
45
+ description: 'Filter by app build number',
46
+ }),
47
+ ...flags_2.ObserveProjectIdFlag,
48
+ ...flags_1.EasNonInteractiveAndJsonFlags,
49
+ };
50
+ static contextDefinition = {
51
+ ...this.ContextOptions.ProjectId,
52
+ ...this.ContextOptions.LoggedIn,
53
+ };
54
+ static loggedInOnlyContextDefinition = {
55
+ ...this.ContextOptions.LoggedIn,
56
+ };
57
+ async runAsync() {
58
+ const { flags } = await this.parse(ObserveRoutes);
59
+ const { projectId, graphqlClient } = await (0, resolveProjectContext_1.resolveObserveCommandContextAsync)({
60
+ command: this,
61
+ commandClass: ObserveRoutes,
62
+ loggedInOnlyContextDefinition: ObserveRoutes.loggedInOnlyContextDefinition,
63
+ projectIdOverride: flags['project-id'],
64
+ nonInteractive: flags['non-interactive'],
65
+ });
66
+ if (flags.json) {
67
+ (0, json_1.enableJsonOutput)();
68
+ }
69
+ else {
70
+ log_1.default.warn('EAS Observe is in preview and subject to breaking changes.');
71
+ }
72
+ const metricNames = flags.metric?.length
73
+ ? Array.from(new Set(flags.metric.map(metricNames_1.resolveNavigationMetricName)))
74
+ : formatNavigationRoutes_1.NAVIGATION_METRIC_NAMES;
75
+ const argumentsStat = flags.stat?.length
76
+ ? Array.from(new Set(flags.stat.map(formatNavigationRoutes_1.resolveNavigationStatKey)))
77
+ : undefined;
78
+ const { daysBack, startTime, endTime } = (0, startAndEndTime_1.resolveTimeRange)(flags);
79
+ const platforms = (0, platforms_1.appPlatformsFromFlag)(flags.platform);
80
+ const { routes, pageInfoByPlatform } = await (0, fetchNavigationRoutes_1.fetchObserveNavigationRoutesAsync)(graphqlClient, projectId, {
81
+ startTime,
82
+ endTime,
83
+ platforms,
84
+ limit: flags.limit ?? DEFAULT_ROUTES_LIMIT,
85
+ ...(flags.after && { after: flags.after }),
86
+ appVersion: flags['app-version'],
87
+ updateId: flags['update-id'],
88
+ buildNumber: flags['build-number'],
89
+ });
90
+ if (flags.json) {
91
+ const stats = argumentsStat ?? DEFAULT_STATS_JSON;
92
+ (0, json_1.printJsonOnlyOutput)((0, formatNavigationRoutes_1.buildObserveNavigationRoutesJson)(routes, metricNames, stats, pageInfoByPlatform));
93
+ }
94
+ else {
95
+ const stats = argumentsStat ?? DEFAULT_STATS_TABLE;
96
+ log_1.default.addNewLineIfNone();
97
+ log_1.default.log((0, formatNavigationRoutes_1.buildObserveNavigationRoutesTable)(routes, metricNames, stats, {
98
+ daysBack,
99
+ startTime,
100
+ endTime,
101
+ pageInfoByPlatform,
102
+ }));
103
+ }
104
+ }
105
+ }
106
+ exports.default = ObserveRoutes;
@@ -5,11 +5,11 @@ export default class ObserveVersions extends EasCommand {
5
5
  static flags: {
6
6
  json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
7
7
  'non-interactive': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
8
- platform: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
8
+ 'project-id': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
9
9
  start: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
10
  end: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
11
  days: import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
- 'project-id': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ platform: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
13
  };
14
14
  static contextDefinition: {
15
15
  loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- const core_1 = require("@oclif/core");
5
4
  const EasCommand_1 = tslib_1.__importDefault(require("../../commandUtils/EasCommand"));
6
5
  const flags_1 = require("../../commandUtils/flags");
7
6
  const log_1 = tslib_1.__importDefault(require("../../log"));
8
7
  const fetchVersions_1 = require("../../observe/fetchVersions");
8
+ const flags_2 = require("../../observe/flags");
9
9
  const formatVersions_1 = require("../../observe/formatVersions");
10
10
  const platforms_1 = require("../../observe/platforms");
11
11
  const resolveProjectContext_1 = require("../../observe/resolveProjectContext");
@@ -15,26 +15,9 @@ class ObserveVersions extends EasCommand_1.default {
15
15
  static hidden = true;
16
16
  static description = 'display app versions with build and update details';
17
17
  static flags = {
18
- platform: core_1.Flags.option({
19
- description: 'Filter by platform',
20
- options: platforms_1.allowedPlatformFlagValues,
21
- })(),
22
- start: core_1.Flags.string({
23
- description: 'Start of time range (ISO date)',
24
- exclusive: ['days'],
25
- }),
26
- end: core_1.Flags.string({
27
- description: 'End of time range (ISO date)',
28
- exclusive: ['days'],
29
- }),
30
- days: core_1.Flags.integer({
31
- description: 'Show versions from the last N days (mutually exclusive with --start/--end)',
32
- min: 1,
33
- exclusive: ['start', 'end'],
34
- }),
35
- 'project-id': core_1.Flags.string({
36
- description: 'EAS project ID (defaults to the project ID of the current directory)',
37
- }),
18
+ ...flags_2.ObservePlatformFlag,
19
+ ...flags_2.ObserveTimeRangeFlags,
20
+ ...flags_2.ObserveProjectIdFlag,
38
21
  ...flags_1.EasNonInteractiveAndJsonFlags,
39
22
  };
40
23
  static contextDefinition = {
@@ -952,8 +952,13 @@ export type Address = {
952
952
  };
953
953
  export type AgentDeviceRunSessionRemoteConfig = {
954
954
  __typename?: 'AgentDeviceRunSessionRemoteConfig';
955
- token: Scalars['String']['output'];
956
- url: Scalars['String']['output'];
955
+ agentDeviceRemoteSessionToken: Scalars['String']['output'];
956
+ agentDeviceRemoteSessionUrl: Scalars['String']['output'];
957
+ /**
958
+ * URL of the web preview surface for the session. Null when web previews are
959
+ * not available for the platform (e.g. Android).
960
+ */
961
+ webPreviewUrl?: Maybe<Scalars['String']['output']>;
957
962
  };
958
963
  export type AndroidAppBuildCredentials = {
959
964
  __typename?: 'AndroidAppBuildCredentials';
@@ -1838,6 +1843,7 @@ export type AppObserve = {
1838
1843
  customEventNames: AppObserveCustomEventNames;
1839
1844
  environments: Array<Scalars['String']['output']>;
1840
1845
  events: AppObserveEventsConnection;
1846
+ navigationRoutes: AppObserveNavigationRoutesConnection;
1841
1847
  timeSeries: AppObserveTimeSeries;
1842
1848
  totalEventCount: Scalars['Int']['output'];
1843
1849
  updates: AppObserveUpdatesConnection;
@@ -1879,6 +1885,14 @@ export type AppObserveEventsArgs = {
1879
1885
  last?: InputMaybe<Scalars['Int']['input']>;
1880
1886
  orderBy?: InputMaybe<AppObserveEventsOrderBy>;
1881
1887
  };
1888
+ export type AppObserveNavigationRoutesArgs = {
1889
+ after?: InputMaybe<Scalars['String']['input']>;
1890
+ before?: InputMaybe<Scalars['String']['input']>;
1891
+ filter: AppObserveNavigationRoutesFilter;
1892
+ first?: InputMaybe<Scalars['Int']['input']>;
1893
+ last?: InputMaybe<Scalars['Int']['input']>;
1894
+ orderBy?: InputMaybe<AppObserveNavigationRoutesOrderBy>;
1895
+ };
1882
1896
  export type AppObserveTimeSeriesArgs = {
1883
1897
  input: AppObserveTimeSeriesInput;
1884
1898
  };
@@ -2079,6 +2093,7 @@ export type AppObserveEventsFilter = {
2079
2093
  environment?: InputMaybe<Scalars['String']['input']>;
2080
2094
  metricName?: InputMaybe<Scalars['String']['input']>;
2081
2095
  platform?: InputMaybe<AppObservePlatform>;
2096
+ routeName?: InputMaybe<Scalars['String']['input']>;
2082
2097
  sessionId?: InputMaybe<Scalars['String']['input']>;
2083
2098
  startTime?: InputMaybe<Scalars['DateTime']['input']>;
2084
2099
  };
@@ -2094,6 +2109,59 @@ export declare enum AppObserveEventsOrderByField {
2094
2109
  MetricValue = "METRIC_VALUE",
2095
2110
  Timestamp = "TIMESTAMP"
2096
2111
  }
2112
+ /**
2113
+ * Per-route navigation timing breakdown. The "Navigations" count shown in the
2114
+ * dashboard is `coldTtr.count` (one cold-TTR event per user navigation).
2115
+ * Per-metric `median`/`p90` are null when `count` is 0 so the client can
2116
+ * distinguish "no data" from "0ms".
2117
+ */
2118
+ export type AppObserveNavigationRoute = {
2119
+ __typename?: 'AppObserveNavigationRoute';
2120
+ coldTtr: AppObserveNavigationStat;
2121
+ routeName: Scalars['String']['output'];
2122
+ tti: AppObserveNavigationStat;
2123
+ warmTtr: AppObserveNavigationStat;
2124
+ };
2125
+ export type AppObserveNavigationRouteEdge = {
2126
+ __typename?: 'AppObserveNavigationRouteEdge';
2127
+ cursor: Scalars['String']['output'];
2128
+ node: AppObserveNavigationRoute;
2129
+ };
2130
+ export type AppObserveNavigationRoutesConnection = {
2131
+ __typename?: 'AppObserveNavigationRoutesConnection';
2132
+ edges: Array<AppObserveNavigationRouteEdge>;
2133
+ pageInfo: PageInfo;
2134
+ };
2135
+ export type AppObserveNavigationRoutesFilter = {
2136
+ appBuildNumber?: InputMaybe<Scalars['String']['input']>;
2137
+ appEasBuildId?: InputMaybe<Scalars['String']['input']>;
2138
+ appUpdateId?: InputMaybe<Scalars['String']['input']>;
2139
+ appVersion?: InputMaybe<Scalars['String']['input']>;
2140
+ endTime: Scalars['DateTime']['input'];
2141
+ environment?: InputMaybe<Scalars['String']['input']>;
2142
+ platform: AppObservePlatform;
2143
+ startTime: Scalars['DateTime']['input'];
2144
+ };
2145
+ export type AppObserveNavigationRoutesOrderBy = {
2146
+ direction: AppObserveEventsOrderByDirection;
2147
+ field: AppObserveNavigationRoutesOrderByField;
2148
+ };
2149
+ export declare enum AppObserveNavigationRoutesOrderByField {
2150
+ MedianColdTtr = "MEDIAN_COLD_TTR",
2151
+ MedianTti = "MEDIAN_TTI",
2152
+ MedianWarmTtr = "MEDIAN_WARM_TTR",
2153
+ NavigationCount = "NAVIGATION_COUNT",
2154
+ P90ColdTtr = "P90_COLD_TTR",
2155
+ P90Tti = "P90_TTI",
2156
+ P90WarmTtr = "P90_WARM_TTR",
2157
+ RouteName = "ROUTE_NAME"
2158
+ }
2159
+ export type AppObserveNavigationStat = {
2160
+ __typename?: 'AppObserveNavigationStat';
2161
+ count: Scalars['Int']['output'];
2162
+ median?: Maybe<Scalars['Float']['output']>;
2163
+ p90?: Maybe<Scalars['Float']['output']>;
2164
+ };
2097
2165
  export declare enum AppObservePlatform {
2098
2166
  Android = "ANDROID",
2099
2167
  Ios = "IOS"
@@ -2142,6 +2210,7 @@ export type AppObserveTimeSeriesInput = {
2142
2210
  environment?: InputMaybe<Scalars['String']['input']>;
2143
2211
  metricName: Scalars['String']['input'];
2144
2212
  platform: AppObservePlatform;
2213
+ routeName?: InputMaybe<Scalars['String']['input']>;
2145
2214
  startTime: Scalars['DateTime']['input'];
2146
2215
  };
2147
2216
  export type AppObserveTimeSeriesStatistics = {
@@ -3363,6 +3432,7 @@ export type BuildMetadataInput = {
3363
3432
  developmentClient?: InputMaybe<Scalars['Boolean']['input']>;
3364
3433
  distribution?: InputMaybe<DistributionType>;
3365
3434
  environment?: InputMaybe<Scalars['String']['input']>;
3435
+ expoPackageVersion?: InputMaybe<Scalars['String']['input']>;
3366
3436
  fingerprintHash?: InputMaybe<Scalars['String']['input']>;
3367
3437
  fingerprintSource?: InputMaybe<FingerprintSourceInput>;
3368
3438
  gitCommitHash?: InputMaybe<Scalars['String']['input']>;
@@ -16736,8 +16806,9 @@ export type DeviceRunSessionByIdQuery = {
16736
16806
  };
16737
16807
  remoteConfig?: {
16738
16808
  __typename: 'AgentDeviceRunSessionRemoteConfig';
16739
- url: string;
16740
- token: string;
16809
+ agentDeviceRemoteSessionUrl: string;
16810
+ agentDeviceRemoteSessionToken: string;
16811
+ webPreviewUrl?: string | null;
16741
16812
  } | {
16742
16813
  __typename: 'ServeSimRunSessionRemoteConfig';
16743
16814
  previewUrl: string;
@@ -17279,6 +17350,61 @@ export type AppObserveCustomEventNamesQuery = {
17279
17350
  };
17280
17351
  };
17281
17352
  };
17353
+ export type AppObserveNavigationRoutesQueryVariables = Exact<{
17354
+ appId: Scalars['String']['input'];
17355
+ filter: AppObserveNavigationRoutesFilter;
17356
+ first?: InputMaybe<Scalars['Int']['input']>;
17357
+ after?: InputMaybe<Scalars['String']['input']>;
17358
+ orderBy?: InputMaybe<AppObserveNavigationRoutesOrderBy>;
17359
+ }>;
17360
+ export type AppObserveNavigationRoutesQuery = {
17361
+ __typename?: 'RootQuery';
17362
+ app: {
17363
+ __typename?: 'AppQuery';
17364
+ byId: {
17365
+ __typename?: 'App';
17366
+ id: string;
17367
+ observe: {
17368
+ __typename?: 'AppObserve';
17369
+ navigationRoutes: {
17370
+ __typename?: 'AppObserveNavigationRoutesConnection';
17371
+ pageInfo: {
17372
+ __typename?: 'PageInfo';
17373
+ hasNextPage: boolean;
17374
+ hasPreviousPage: boolean;
17375
+ endCursor?: string | null;
17376
+ };
17377
+ edges: Array<{
17378
+ __typename?: 'AppObserveNavigationRouteEdge';
17379
+ cursor: string;
17380
+ node: {
17381
+ __typename?: 'AppObserveNavigationRoute';
17382
+ routeName: string;
17383
+ coldTtr: {
17384
+ __typename?: 'AppObserveNavigationStat';
17385
+ count: number;
17386
+ median?: number | null;
17387
+ p90?: number | null;
17388
+ };
17389
+ warmTtr: {
17390
+ __typename?: 'AppObserveNavigationStat';
17391
+ count: number;
17392
+ median?: number | null;
17393
+ p90?: number | null;
17394
+ };
17395
+ tti: {
17396
+ __typename?: 'AppObserveNavigationStat';
17397
+ count: number;
17398
+ median?: number | null;
17399
+ p90?: number | null;
17400
+ };
17401
+ };
17402
+ }>;
17403
+ };
17404
+ };
17405
+ };
17406
+ };
17407
+ };
17282
17408
  export type GetAssetMetadataQueryVariables = Exact<{
17283
17409
  storageKeys: Array<Scalars['String']['input']> | Scalars['String']['input'];
17284
17410
  }>;