eas-cli 18.8.0 → 18.8.1
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 -90
- package/build/build/utils/url.d.ts +6 -0
- package/build/build/utils/url.js +9 -0
- package/build/commands/simulator/start.d.ts +16 -0
- package/build/commands/simulator/start.js +203 -0
- package/build/graphql/generated.d.ts +125 -0
- package/build/graphql/generated.js +15 -3
- package/build/graphql/mutations/DeviceRunSessionMutation.d.ts +5 -0
- package/build/graphql/mutations/DeviceRunSessionMutation.js +34 -0
- package/build/graphql/queries/DeviceRunSessionQuery.d.ts +5 -0
- package/build/graphql/queries/DeviceRunSessionQuery.js +28 -0
- package/oclif.manifest.json +580 -476
- package/package.json +2 -2
|
@@ -5,5 +5,11 @@ export declare function getArtifactUrl(artifactId: string): string;
|
|
|
5
5
|
export declare function getInternalDistributionInstallUrl(build: BuildFragment): string;
|
|
6
6
|
export declare function getUpdateGroupUrl(accountName: string, projectName: string, updateGroupId: string): string;
|
|
7
7
|
export declare function getWorkflowRunUrl(accountName: string, projectName: string, workflowRunId: string): string;
|
|
8
|
+
/**
|
|
9
|
+
* @deprecated Links to the raw job-run page; prefer a higher-level URL (e.g. the workflow run
|
|
10
|
+
* or the feature-specific dashboard) that gives users more context. Use this only for internal
|
|
11
|
+
* tooling where no richer URL exists.
|
|
12
|
+
*/
|
|
13
|
+
export declare function getBareJobRunUrl(accountName: string, projectName: string, jobRunId: string): string;
|
|
8
14
|
export declare function getProjectGitHubSettingsUrl(accountName: string, projectName: string): string;
|
|
9
15
|
export declare function getHostingDeploymentsUrl(accountName: string, projectName: string): string;
|
package/build/build/utils/url.js
CHANGED
|
@@ -6,6 +6,7 @@ exports.getArtifactUrl = getArtifactUrl;
|
|
|
6
6
|
exports.getInternalDistributionInstallUrl = getInternalDistributionInstallUrl;
|
|
7
7
|
exports.getUpdateGroupUrl = getUpdateGroupUrl;
|
|
8
8
|
exports.getWorkflowRunUrl = getWorkflowRunUrl;
|
|
9
|
+
exports.getBareJobRunUrl = getBareJobRunUrl;
|
|
9
10
|
exports.getProjectGitHubSettingsUrl = getProjectGitHubSettingsUrl;
|
|
10
11
|
exports.getHostingDeploymentsUrl = getHostingDeploymentsUrl;
|
|
11
12
|
const tslib_1 = require("tslib");
|
|
@@ -38,6 +39,14 @@ function getUpdateGroupUrl(accountName, projectName, updateGroupId) {
|
|
|
38
39
|
function getWorkflowRunUrl(accountName, projectName, workflowRunId) {
|
|
39
40
|
return new URL(`/accounts/${encodeURIComponent(accountName)}/projects/${encodeURIComponent(projectName)}/workflows/${workflowRunId}`, (0, api_1.getExpoWebsiteBaseUrl)()).toString();
|
|
40
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* @deprecated Links to the raw job-run page; prefer a higher-level URL (e.g. the workflow run
|
|
44
|
+
* or the feature-specific dashboard) that gives users more context. Use this only for internal
|
|
45
|
+
* tooling where no richer URL exists.
|
|
46
|
+
*/
|
|
47
|
+
function getBareJobRunUrl(accountName, projectName, jobRunId) {
|
|
48
|
+
return new URL(`/accounts/${encodeURIComponent(accountName)}/projects/${encodeURIComponent(projectName)}/job-runs/${encodeURIComponent(jobRunId)}`, (0, api_1.getExpoWebsiteBaseUrl)()).toString();
|
|
49
|
+
}
|
|
41
50
|
function getProjectGitHubSettingsUrl(accountName, projectName) {
|
|
42
51
|
return new URL(`/accounts/${encodeURIComponent(accountName)}/projects/${encodeURIComponent(projectName)}/github`, (0, api_1.getExpoWebsiteBaseUrl)()).toString();
|
|
43
52
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import EasCommand from '../../commandUtils/EasCommand';
|
|
2
|
+
export default class SimulatorStart extends EasCommand {
|
|
3
|
+
static hidden: boolean;
|
|
4
|
+
static description: string;
|
|
5
|
+
static flags: {
|
|
6
|
+
'non-interactive': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
7
|
+
platform: import("@oclif/core/lib/interfaces").OptionFlag<"android" | "ios", import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
8
|
+
type: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
9
|
+
'package-version': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
10
|
+
};
|
|
11
|
+
static contextDefinition: {
|
|
12
|
+
loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
|
|
13
|
+
projectId: import("../../commandUtils/context/ProjectIdContextField").ProjectIdContextField;
|
|
14
|
+
};
|
|
15
|
+
runAsync(): Promise<void>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,203 @@
|
|
|
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 url_1 = require("../../build/utils/url");
|
|
6
|
+
const EasCommand_1 = tslib_1.__importDefault(require("../../commandUtils/EasCommand"));
|
|
7
|
+
const flags_1 = require("../../commandUtils/flags");
|
|
8
|
+
const generated_1 = require("../../graphql/generated");
|
|
9
|
+
const DeviceRunSessionMutation_1 = require("../../graphql/mutations/DeviceRunSessionMutation");
|
|
10
|
+
const DeviceRunSessionQuery_1 = require("../../graphql/queries/DeviceRunSessionQuery");
|
|
11
|
+
const log_1 = tslib_1.__importStar(require("../../log"));
|
|
12
|
+
const ora_1 = require("../../ora");
|
|
13
|
+
const promise_1 = require("../../utils/promise");
|
|
14
|
+
const nullthrows_1 = tslib_1.__importDefault(require("nullthrows"));
|
|
15
|
+
const POLL_INTERVAL_MS = 5_000; // 5 seconds
|
|
16
|
+
const POLL_TIMEOUT_MS = 15 * 60 * 1_000; // 15 minutes
|
|
17
|
+
// Mapping enum → CLI flag value. Declared as Record<DeviceRunSessionType, string>
|
|
18
|
+
// so adding a new enum value in codegen fails the build until it is wired up here.
|
|
19
|
+
const DEVICE_RUN_SESSION_TYPE_FLAG_VALUES = {
|
|
20
|
+
[generated_1.DeviceRunSessionType.AgentDevice]: 'agent-device',
|
|
21
|
+
};
|
|
22
|
+
const DEVICE_RUN_SESSION_TYPE_BY_FLAG_VALUE = Object.fromEntries(Object.entries(DEVICE_RUN_SESSION_TYPE_FLAG_VALUES).map(([type, value]) => [value, type]));
|
|
23
|
+
class SimulatorStart extends EasCommand_1.default {
|
|
24
|
+
static hidden = true;
|
|
25
|
+
static description = '[EXPERIMENTAL] start a remote simulator session on EAS and get the credentials to connect to it with the CLI tool of your choice';
|
|
26
|
+
static flags = {
|
|
27
|
+
platform: core_1.Flags.option({
|
|
28
|
+
description: 'Device platform',
|
|
29
|
+
options: ['android', 'ios'],
|
|
30
|
+
required: true,
|
|
31
|
+
})(),
|
|
32
|
+
type: core_1.Flags.option({
|
|
33
|
+
description: 'Type of device run session to create',
|
|
34
|
+
options: Object.values(DEVICE_RUN_SESSION_TYPE_FLAG_VALUES),
|
|
35
|
+
default: DEVICE_RUN_SESSION_TYPE_FLAG_VALUES[generated_1.DeviceRunSessionType.AgentDevice],
|
|
36
|
+
})(),
|
|
37
|
+
'package-version': core_1.Flags.string({
|
|
38
|
+
description: 'Version of the package backing the device run session (e.g. "0.1.3-alpha.3"). Defaults to "latest" when omitted.',
|
|
39
|
+
}),
|
|
40
|
+
...flags_1.EASNonInteractiveFlag,
|
|
41
|
+
};
|
|
42
|
+
static contextDefinition = {
|
|
43
|
+
...this.ContextOptions.ProjectId,
|
|
44
|
+
...this.ContextOptions.LoggedIn,
|
|
45
|
+
};
|
|
46
|
+
async runAsync() {
|
|
47
|
+
const { flags } = await this.parse(SimulatorStart);
|
|
48
|
+
const { projectId, loggedIn: { graphqlClient }, } = await this.getContextAsync(SimulatorStart, {
|
|
49
|
+
nonInteractive: flags['non-interactive'],
|
|
50
|
+
});
|
|
51
|
+
const platform = flags.platform === 'android' ? generated_1.AppPlatform.Android : generated_1.AppPlatform.Ios;
|
|
52
|
+
const createSpinner = (0, ora_1.ora)('🚀 Creating device run session').start();
|
|
53
|
+
let deviceRunSessionId;
|
|
54
|
+
try {
|
|
55
|
+
const session = await DeviceRunSessionMutation_1.DeviceRunSessionMutation.createDeviceRunSessionAsync(graphqlClient, {
|
|
56
|
+
appId: projectId,
|
|
57
|
+
platform,
|
|
58
|
+
type: DEVICE_RUN_SESSION_TYPE_BY_FLAG_VALUE[flags.type],
|
|
59
|
+
packageVersion: flags['package-version'],
|
|
60
|
+
});
|
|
61
|
+
deviceRunSessionId = session.id;
|
|
62
|
+
const jobRunId = (0, nullthrows_1.default)(session.turtleJobRun?.id, 'Expected device run session to start');
|
|
63
|
+
const jobRunUrl = (0, url_1.getBareJobRunUrl)(session.app.ownerAccount.name, session.app.slug, jobRunId);
|
|
64
|
+
createSpinner.succeed(`Device run session created (id: ${deviceRunSessionId}) ${(0, log_1.link)(jobRunUrl)}`);
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
createSpinner.fail('Failed to create device run session');
|
|
68
|
+
throw err;
|
|
69
|
+
}
|
|
70
|
+
const checkReadiness = getReadinessCheckerForType(flags.type);
|
|
71
|
+
const pollSpinner = (0, ora_1.ora)(`⏳ Waiting for ${flags.type} daemon to start`).start();
|
|
72
|
+
const deadline = Date.now() + POLL_TIMEOUT_MS;
|
|
73
|
+
let result = { ready: false };
|
|
74
|
+
try {
|
|
75
|
+
while (Date.now() < deadline) {
|
|
76
|
+
const session = await DeviceRunSessionQuery_1.DeviceRunSessionQuery.byIdAsync(graphqlClient, deviceRunSessionId);
|
|
77
|
+
if (session.status === generated_1.DeviceRunSessionStatus.Errored ||
|
|
78
|
+
session.status === generated_1.DeviceRunSessionStatus.Stopped) {
|
|
79
|
+
throw new Error(`Device run session ${deviceRunSessionId} ${session.status.toLowerCase()} before the ${flags.type} daemon was ready.`);
|
|
80
|
+
}
|
|
81
|
+
const jobRunStatus = session.turtleJobRun?.status;
|
|
82
|
+
if (jobRunStatus === generated_1.JobRunStatus.Errored ||
|
|
83
|
+
jobRunStatus === generated_1.JobRunStatus.Canceled ||
|
|
84
|
+
jobRunStatus === generated_1.JobRunStatus.Finished) {
|
|
85
|
+
throw new Error(`Turtle job run for device run session ${deviceRunSessionId} ${jobRunStatus.toLowerCase()} before the ${flags.type} daemon was ready.`);
|
|
86
|
+
}
|
|
87
|
+
const logMessages = await fetchLogMessagesAsync(session.turtleJobRun?.logFileUrls ?? []);
|
|
88
|
+
result = checkReadiness(logMessages);
|
|
89
|
+
if (result.ready) {
|
|
90
|
+
pollSpinner.succeed(`🎉 ${flags.type} daemon is ready`);
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
await (0, promise_1.sleepAsync)(POLL_INTERVAL_MS);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
pollSpinner.fail(`Failed while polling for ${flags.type} daemon logs`);
|
|
98
|
+
throw err;
|
|
99
|
+
}
|
|
100
|
+
if (!result.ready) {
|
|
101
|
+
pollSpinner.fail(`Timed out waiting for ${flags.type} daemon to start`);
|
|
102
|
+
throw new Error(`Timed out after ${Math.round(POLL_TIMEOUT_MS / 1000)}s waiting for ${flags.type} daemon to start.`);
|
|
103
|
+
}
|
|
104
|
+
log_1.default.newLine();
|
|
105
|
+
log_1.default.log(`🔑 Run the following in your shell to attach to ${flags.type}:`);
|
|
106
|
+
log_1.default.newLine();
|
|
107
|
+
log_1.default.log(result.message);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
exports.default = SimulatorStart;
|
|
111
|
+
function getReadinessCheckerForType(type) {
|
|
112
|
+
switch (type) {
|
|
113
|
+
case DEVICE_RUN_SESSION_TYPE_FLAG_VALUES[generated_1.DeviceRunSessionType.AgentDevice]:
|
|
114
|
+
return checkAgentDeviceReadiness;
|
|
115
|
+
default:
|
|
116
|
+
throw new Error(`Unsupported device run session type: ${type}`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
const AGENT_DEVICE_BASE_URL_ENV_VAR = 'AGENT_DEVICE_DAEMON_BASE_URL';
|
|
120
|
+
const AGENT_DEVICE_AUTH_TOKEN_ENV_VAR = 'AGENT_DEVICE_DAEMON_AUTH_TOKEN';
|
|
121
|
+
function checkAgentDeviceReadiness(logMessages) {
|
|
122
|
+
let baseUrl;
|
|
123
|
+
let authToken;
|
|
124
|
+
for (const msg of logMessages) {
|
|
125
|
+
baseUrl = baseUrl ?? extractExportedEnvValue(msg, AGENT_DEVICE_BASE_URL_ENV_VAR);
|
|
126
|
+
authToken = authToken ?? extractExportedEnvValue(msg, AGENT_DEVICE_AUTH_TOKEN_ENV_VAR);
|
|
127
|
+
if (baseUrl && authToken) {
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (baseUrl && authToken) {
|
|
132
|
+
return {
|
|
133
|
+
ready: true,
|
|
134
|
+
message: [
|
|
135
|
+
`export ${AGENT_DEVICE_BASE_URL_ENV_VAR}='${baseUrl}'`,
|
|
136
|
+
`export ${AGENT_DEVICE_AUTH_TOKEN_ENV_VAR}='${authToken}'`,
|
|
137
|
+
].join('\n'),
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
return { ready: false };
|
|
141
|
+
}
|
|
142
|
+
async function fetchLogMessagesAsync(logUrls) {
|
|
143
|
+
const messages = [];
|
|
144
|
+
for (const url of logUrls) {
|
|
145
|
+
const text = await fetchLogTextAsync(url);
|
|
146
|
+
if (!text) {
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
for (const line of text.split('\n')) {
|
|
150
|
+
if (!line.trim()) {
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
messages.push(extractLogMessage(line));
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return messages;
|
|
157
|
+
}
|
|
158
|
+
async function fetchLogTextAsync(url) {
|
|
159
|
+
try {
|
|
160
|
+
const response = await fetch(url);
|
|
161
|
+
if (!response.ok) {
|
|
162
|
+
return undefined;
|
|
163
|
+
}
|
|
164
|
+
return await response.text();
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
return undefined;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
function extractLogMessage(line) {
|
|
171
|
+
// Turtle job run logs are JSONL (bunyan-shaped), e.g.
|
|
172
|
+
// {"msg":"export FOO=\"bar\"","time":"...","logId":"..."}
|
|
173
|
+
// Fall back to the raw line if it's not JSON or doesn't have a string msg.
|
|
174
|
+
const trimmed = line.trim();
|
|
175
|
+
if (!trimmed.startsWith('{')) {
|
|
176
|
+
return line;
|
|
177
|
+
}
|
|
178
|
+
try {
|
|
179
|
+
const parsed = JSON.parse(trimmed);
|
|
180
|
+
if (parsed && typeof parsed === 'object' && 'msg' in parsed) {
|
|
181
|
+
const msg = parsed.msg;
|
|
182
|
+
if (typeof msg === 'string') {
|
|
183
|
+
return msg;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
catch {
|
|
188
|
+
// not JSON, fall through
|
|
189
|
+
}
|
|
190
|
+
return line;
|
|
191
|
+
}
|
|
192
|
+
function extractExportedEnvValue(text, varName) {
|
|
193
|
+
// Matches: export NAME=value | export NAME="value" | export NAME='value'
|
|
194
|
+
const pattern = new RegExp(`export\\s+${escapeRegExp(varName)}=(?:"([^"]*)"|'([^']*)'|(\\S+))`);
|
|
195
|
+
const match = pattern.exec(text);
|
|
196
|
+
if (!match) {
|
|
197
|
+
return undefined;
|
|
198
|
+
}
|
|
199
|
+
return match[1] ?? match[2] ?? match[3];
|
|
200
|
+
}
|
|
201
|
+
function escapeRegExp(value) {
|
|
202
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
203
|
+
}
|
|
@@ -2437,6 +2437,19 @@ export type AppleDeviceRegistrationRequestMutationCreateAppleDeviceRegistrationR
|
|
|
2437
2437
|
accountId: Scalars['ID']['input'];
|
|
2438
2438
|
appleTeamId: Scalars['ID']['input'];
|
|
2439
2439
|
};
|
|
2440
|
+
/** Publicly visible data for an AppleDeviceRegistrationRequest. */
|
|
2441
|
+
export type AppleDeviceRegistrationRequestPublicData = {
|
|
2442
|
+
__typename?: 'AppleDeviceRegistrationRequestPublicData';
|
|
2443
|
+
id: Scalars['ID']['output'];
|
|
2444
|
+
};
|
|
2445
|
+
export type AppleDeviceRegistrationRequestPublicDataQuery = {
|
|
2446
|
+
__typename?: 'AppleDeviceRegistrationRequestPublicDataQuery';
|
|
2447
|
+
/** Get AppleDeviceRegistrationRequest public data by ID */
|
|
2448
|
+
byId?: Maybe<AppleDeviceRegistrationRequestPublicData>;
|
|
2449
|
+
};
|
|
2450
|
+
export type AppleDeviceRegistrationRequestPublicDataQueryByIdArgs = {
|
|
2451
|
+
id: Scalars['ID']['input'];
|
|
2452
|
+
};
|
|
2440
2453
|
export type AppleDeviceRegistrationRequestQuery = {
|
|
2441
2454
|
__typename?: 'AppleDeviceRegistrationRequestQuery';
|
|
2442
2455
|
byId: AppleDeviceRegistrationRequest;
|
|
@@ -3549,6 +3562,16 @@ export type CreateConvexTeamConnectionInput = {
|
|
|
3549
3562
|
convexTeamName?: InputMaybe<Scalars['String']['input']>;
|
|
3550
3563
|
deploymentRegion: Scalars['String']['input'];
|
|
3551
3564
|
};
|
|
3565
|
+
export type CreateDeviceRunSessionInput = {
|
|
3566
|
+
appId: Scalars['ID']['input'];
|
|
3567
|
+
/**
|
|
3568
|
+
* The version of the package backing the device run session (e.g. "0.1.3-alpha.3").
|
|
3569
|
+
* If omitted, consumers treat the session as pinned to "latest".
|
|
3570
|
+
*/
|
|
3571
|
+
packageVersion?: InputMaybe<Scalars['String']['input']>;
|
|
3572
|
+
platform: AppPlatform;
|
|
3573
|
+
type: DeviceRunSessionType;
|
|
3574
|
+
};
|
|
3552
3575
|
export type CreateEchoChatInput = {
|
|
3553
3576
|
agentMetadata?: InputMaybe<Scalars['JSONObject']['input']>;
|
|
3554
3577
|
agentType?: InputMaybe<EchoAgentType>;
|
|
@@ -4045,6 +4068,54 @@ export type DeploymentsMutationDeleteWorkerDeploymentByIdentifierArgs = {
|
|
|
4045
4068
|
appId: Scalars['ID']['input'];
|
|
4046
4069
|
deploymentIdentifier: Scalars['ID']['input'];
|
|
4047
4070
|
};
|
|
4071
|
+
export type DeviceRunSession = {
|
|
4072
|
+
__typename?: 'DeviceRunSession';
|
|
4073
|
+
app: App;
|
|
4074
|
+
createdAt: Scalars['DateTime']['output'];
|
|
4075
|
+
finishedAt?: Maybe<Scalars['DateTime']['output']>;
|
|
4076
|
+
id: Scalars['ID']['output'];
|
|
4077
|
+
initiatingActor?: Maybe<Actor>;
|
|
4078
|
+
/**
|
|
4079
|
+
* The version of the package backing the device run session. Null means the session is
|
|
4080
|
+
* pinned to "latest" at the consumer side.
|
|
4081
|
+
*/
|
|
4082
|
+
packageVersion?: Maybe<Scalars['String']['output']>;
|
|
4083
|
+
platform: AppPlatform;
|
|
4084
|
+
startedAt?: Maybe<Scalars['DateTime']['output']>;
|
|
4085
|
+
status: DeviceRunSessionStatus;
|
|
4086
|
+
turtleJobRun?: Maybe<JobRun>;
|
|
4087
|
+
type: DeviceRunSessionType;
|
|
4088
|
+
updatedAt: Scalars['DateTime']['output'];
|
|
4089
|
+
};
|
|
4090
|
+
export type DeviceRunSessionMutation = {
|
|
4091
|
+
__typename?: 'DeviceRunSessionMutation';
|
|
4092
|
+
/** Create a device run session */
|
|
4093
|
+
createDeviceRunSession: DeviceRunSession;
|
|
4094
|
+
/** Stop a device run session */
|
|
4095
|
+
stopDeviceRunSession: DeviceRunSession;
|
|
4096
|
+
};
|
|
4097
|
+
export type DeviceRunSessionMutationCreateDeviceRunSessionArgs = {
|
|
4098
|
+
deviceRunSessionInput: CreateDeviceRunSessionInput;
|
|
4099
|
+
};
|
|
4100
|
+
export type DeviceRunSessionMutationStopDeviceRunSessionArgs = {
|
|
4101
|
+
deviceRunSessionId: Scalars['ID']['input'];
|
|
4102
|
+
};
|
|
4103
|
+
export type DeviceRunSessionQuery = {
|
|
4104
|
+
__typename?: 'DeviceRunSessionQuery';
|
|
4105
|
+
byId: DeviceRunSession;
|
|
4106
|
+
};
|
|
4107
|
+
export type DeviceRunSessionQueryByIdArgs = {
|
|
4108
|
+
deviceRunSessionId: Scalars['ID']['input'];
|
|
4109
|
+
};
|
|
4110
|
+
export declare enum DeviceRunSessionStatus {
|
|
4111
|
+
Errored = "ERRORED",
|
|
4112
|
+
InProgress = "IN_PROGRESS",
|
|
4113
|
+
New = "NEW",
|
|
4114
|
+
Stopped = "STOPPED"
|
|
4115
|
+
}
|
|
4116
|
+
export declare enum DeviceRunSessionType {
|
|
4117
|
+
AgentDevice = "AGENT_DEVICE"
|
|
4118
|
+
}
|
|
4048
4119
|
export type DiscordUser = {
|
|
4049
4120
|
__typename?: 'DiscordUser';
|
|
4050
4121
|
discordIdentifier: Scalars['String']['output'];
|
|
@@ -4668,6 +4739,7 @@ export declare enum EntityTypeName {
|
|
|
4668
4739
|
BillingContractEntity = "BillingContractEntity",
|
|
4669
4740
|
BranchEntity = "BranchEntity",
|
|
4670
4741
|
ChannelEntity = "ChannelEntity",
|
|
4742
|
+
ConvexTeamConnectionEntity = "ConvexTeamConnectionEntity",
|
|
4671
4743
|
CustomerEntity = "CustomerEntity",
|
|
4672
4744
|
EchoProjectEntity = "EchoProjectEntity",
|
|
4673
4745
|
EchoVersionEntity = "EchoVersionEntity",
|
|
@@ -6402,6 +6474,8 @@ export type RootMutation = {
|
|
|
6402
6474
|
deployments: DeploymentsMutation;
|
|
6403
6475
|
/** Mutations that assign or modify DevDomainNames for apps */
|
|
6404
6476
|
devDomainName: AppDevDomainNameMutation;
|
|
6477
|
+
/** Mutations that create and stop device run sessions */
|
|
6478
|
+
deviceRunSession: DeviceRunSessionMutation;
|
|
6405
6479
|
/** Mutations for Discord users */
|
|
6406
6480
|
discordUser: DiscordUserMutation;
|
|
6407
6481
|
/** Mutations for Echo chats */
|
|
@@ -6530,6 +6604,8 @@ export type RootQuery = {
|
|
|
6530
6604
|
appStoreConnectApiKey: AppStoreConnectApiKeyQuery;
|
|
6531
6605
|
/** Top-level query object for querying Apple Device registration requests. */
|
|
6532
6606
|
appleDeviceRegistrationRequest: AppleDeviceRegistrationRequestQuery;
|
|
6607
|
+
/** Top-level query object for querying AppleDeviceRegistrationRequest publicly. */
|
|
6608
|
+
appleDeviceRegistrationRequestPublicData: AppleDeviceRegistrationRequestPublicDataQuery;
|
|
6533
6609
|
/** Top-level query object for querying Apple distribution certificates. */
|
|
6534
6610
|
appleDistributionCertificate?: Maybe<AppleDistributionCertificateQuery>;
|
|
6535
6611
|
/** Top-level query object for querying Apple provisioning profiles. */
|
|
@@ -6553,6 +6629,7 @@ export type RootQuery = {
|
|
|
6553
6629
|
convexIntegration: ConvexIntegrationQuery;
|
|
6554
6630
|
/** Top-level query object for querying Deployments. */
|
|
6555
6631
|
deployments: DeploymentQuery;
|
|
6632
|
+
deviceRunSessions: DeviceRunSessionQuery;
|
|
6556
6633
|
/** Top-level query object for querying Echo chats. */
|
|
6557
6634
|
echoChat: EchoChatQuery;
|
|
6558
6635
|
/** Top-level query object for querying Echo messages. */
|
|
@@ -13658,6 +13735,34 @@ export type RetryIosBuildMutation = {
|
|
|
13658
13735
|
};
|
|
13659
13736
|
};
|
|
13660
13737
|
};
|
|
13738
|
+
export type CreateDeviceRunSessionMutationVariables = Exact<{
|
|
13739
|
+
deviceRunSessionInput: CreateDeviceRunSessionInput;
|
|
13740
|
+
}>;
|
|
13741
|
+
export type CreateDeviceRunSessionMutation = {
|
|
13742
|
+
__typename?: 'RootMutation';
|
|
13743
|
+
deviceRunSession: {
|
|
13744
|
+
__typename?: 'DeviceRunSessionMutation';
|
|
13745
|
+
createDeviceRunSession: {
|
|
13746
|
+
__typename?: 'DeviceRunSession';
|
|
13747
|
+
id: string;
|
|
13748
|
+
status: DeviceRunSessionStatus;
|
|
13749
|
+
app: {
|
|
13750
|
+
__typename?: 'App';
|
|
13751
|
+
id: string;
|
|
13752
|
+
slug: string;
|
|
13753
|
+
ownerAccount: {
|
|
13754
|
+
__typename?: 'Account';
|
|
13755
|
+
id: string;
|
|
13756
|
+
name: string;
|
|
13757
|
+
};
|
|
13758
|
+
};
|
|
13759
|
+
turtleJobRun?: {
|
|
13760
|
+
__typename?: 'JobRun';
|
|
13761
|
+
id: string;
|
|
13762
|
+
} | null;
|
|
13763
|
+
};
|
|
13764
|
+
};
|
|
13765
|
+
};
|
|
13661
13766
|
export type CreateEnvironmentSecretForAccountMutationVariables = Exact<{
|
|
13662
13767
|
input: CreateEnvironmentSecretInput;
|
|
13663
13768
|
accountId: Scalars['String']['input'];
|
|
@@ -15953,6 +16058,26 @@ export type ViewUpdateChannelsPaginatedOnAppQuery = {
|
|
|
15953
16058
|
};
|
|
15954
16059
|
};
|
|
15955
16060
|
};
|
|
16061
|
+
export type DeviceRunSessionByIdQueryVariables = Exact<{
|
|
16062
|
+
deviceRunSessionId: Scalars['ID']['input'];
|
|
16063
|
+
}>;
|
|
16064
|
+
export type DeviceRunSessionByIdQuery = {
|
|
16065
|
+
__typename?: 'RootQuery';
|
|
16066
|
+
deviceRunSessions: {
|
|
16067
|
+
__typename?: 'DeviceRunSessionQuery';
|
|
16068
|
+
byId: {
|
|
16069
|
+
__typename?: 'DeviceRunSession';
|
|
16070
|
+
id: string;
|
|
16071
|
+
status: DeviceRunSessionStatus;
|
|
16072
|
+
turtleJobRun?: {
|
|
16073
|
+
__typename?: 'JobRun';
|
|
16074
|
+
id: string;
|
|
16075
|
+
status: JobRunStatus;
|
|
16076
|
+
logFileUrls: Array<string>;
|
|
16077
|
+
} | null;
|
|
16078
|
+
};
|
|
16079
|
+
};
|
|
16080
|
+
};
|
|
15956
16081
|
export type EnvironmentSecretsByAppIdQueryVariables = Exact<{
|
|
15957
16082
|
appId: Scalars['String']['input'];
|
|
15958
16083
|
}>;
|
|
@@ -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.
|
|
10
|
-
exports.
|
|
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.EasBuildWaiverType = exports.EasBuildDeprecationInfoType = exports.EasBuildBillingResourceClass = exports.DistributionType = exports.DeviceRunSessionType = exports.DeviceRunSessionStatus = 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.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.EchoProjectIconSource = exports.EchoMessageRole = exports.EchoMessagePartType = exports.EchoChatState = exports.EchoChangeType = exports.EchoBuildStatus = exports.EchoAgentType = exports.EasTotalPlanEnablementUnit = exports.EasServiceMetric = exports.EasService = 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 = exports.ResponseCacheStatus = exports.ResourceClassExperiment = void 0;
|
|
12
12
|
var AccountAppsSortByField;
|
|
13
13
|
(function (AccountAppsSortByField) {
|
|
14
14
|
AccountAppsSortByField["LatestActivityTime"] = "LATEST_ACTIVITY_TIME";
|
|
@@ -363,6 +363,17 @@ var DashboardViewPin;
|
|
|
363
363
|
DashboardViewPin["Activity"] = "ACTIVITY";
|
|
364
364
|
DashboardViewPin["Overview"] = "OVERVIEW";
|
|
365
365
|
})(DashboardViewPin || (exports.DashboardViewPin = DashboardViewPin = {}));
|
|
366
|
+
var DeviceRunSessionStatus;
|
|
367
|
+
(function (DeviceRunSessionStatus) {
|
|
368
|
+
DeviceRunSessionStatus["Errored"] = "ERRORED";
|
|
369
|
+
DeviceRunSessionStatus["InProgress"] = "IN_PROGRESS";
|
|
370
|
+
DeviceRunSessionStatus["New"] = "NEW";
|
|
371
|
+
DeviceRunSessionStatus["Stopped"] = "STOPPED";
|
|
372
|
+
})(DeviceRunSessionStatus || (exports.DeviceRunSessionStatus = DeviceRunSessionStatus = {}));
|
|
373
|
+
var DeviceRunSessionType;
|
|
374
|
+
(function (DeviceRunSessionType) {
|
|
375
|
+
DeviceRunSessionType["AgentDevice"] = "AGENT_DEVICE";
|
|
376
|
+
})(DeviceRunSessionType || (exports.DeviceRunSessionType = DeviceRunSessionType = {}));
|
|
366
377
|
var DistributionType;
|
|
367
378
|
(function (DistributionType) {
|
|
368
379
|
DistributionType["Internal"] = "INTERNAL";
|
|
@@ -494,6 +505,7 @@ var EntityTypeName;
|
|
|
494
505
|
EntityTypeName["BillingContractEntity"] = "BillingContractEntity";
|
|
495
506
|
EntityTypeName["BranchEntity"] = "BranchEntity";
|
|
496
507
|
EntityTypeName["ChannelEntity"] = "ChannelEntity";
|
|
508
|
+
EntityTypeName["ConvexTeamConnectionEntity"] = "ConvexTeamConnectionEntity";
|
|
497
509
|
EntityTypeName["CustomerEntity"] = "CustomerEntity";
|
|
498
510
|
EntityTypeName["EchoProjectEntity"] = "EchoProjectEntity";
|
|
499
511
|
EntityTypeName["EchoVersionEntity"] = "EchoVersionEntity";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ExpoGraphqlClient } from '../../commandUtils/context/contextUtils/createGraphqlClient';
|
|
2
|
+
import { CreateDeviceRunSessionInput, CreateDeviceRunSessionMutation } from '../generated';
|
|
3
|
+
export declare const DeviceRunSessionMutation: {
|
|
4
|
+
createDeviceRunSessionAsync(graphqlClient: ExpoGraphqlClient, deviceRunSessionInput: CreateDeviceRunSessionInput): Promise<CreateDeviceRunSessionMutation["deviceRunSession"]["createDeviceRunSession"]>;
|
|
5
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeviceRunSessionMutation = 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.DeviceRunSessionMutation = {
|
|
8
|
+
async createDeviceRunSessionAsync(graphqlClient, deviceRunSessionInput) {
|
|
9
|
+
const data = await (0, client_1.withErrorHandlingAsync)(graphqlClient
|
|
10
|
+
.mutation((0, graphql_tag_1.default) `
|
|
11
|
+
mutation CreateDeviceRunSessionMutation($deviceRunSessionInput: CreateDeviceRunSessionInput!) {
|
|
12
|
+
deviceRunSession {
|
|
13
|
+
createDeviceRunSession(deviceRunSessionInput: $deviceRunSessionInput) {
|
|
14
|
+
id
|
|
15
|
+
status
|
|
16
|
+
app {
|
|
17
|
+
id
|
|
18
|
+
slug
|
|
19
|
+
ownerAccount {
|
|
20
|
+
id
|
|
21
|
+
name
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
turtleJobRun {
|
|
25
|
+
id
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
`, { deviceRunSessionInput }, { noRetry: true })
|
|
31
|
+
.toPromise());
|
|
32
|
+
return data.deviceRunSession.createDeviceRunSession;
|
|
33
|
+
},
|
|
34
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ExpoGraphqlClient } from '../../commandUtils/context/contextUtils/createGraphqlClient';
|
|
2
|
+
import { DeviceRunSessionByIdQuery } from '../generated';
|
|
3
|
+
export declare const DeviceRunSessionQuery: {
|
|
4
|
+
byIdAsync(graphqlClient: ExpoGraphqlClient, deviceRunSessionId: string): Promise<DeviceRunSessionByIdQuery["deviceRunSessions"]["byId"]>;
|
|
5
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeviceRunSessionQuery = 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.DeviceRunSessionQuery = {
|
|
8
|
+
async byIdAsync(graphqlClient, deviceRunSessionId) {
|
|
9
|
+
const data = await (0, client_1.withErrorHandlingAsync)(graphqlClient
|
|
10
|
+
.query((0, graphql_tag_1.default) `
|
|
11
|
+
query DeviceRunSessionByIdQuery($deviceRunSessionId: ID!) {
|
|
12
|
+
deviceRunSessions {
|
|
13
|
+
byId(deviceRunSessionId: $deviceRunSessionId) {
|
|
14
|
+
id
|
|
15
|
+
status
|
|
16
|
+
turtleJobRun {
|
|
17
|
+
id
|
|
18
|
+
status
|
|
19
|
+
logFileUrls
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
`, { deviceRunSessionId }, { requestPolicy: 'network-only' })
|
|
25
|
+
.toPromise());
|
|
26
|
+
return data.deviceRunSessions.byId;
|
|
27
|
+
},
|
|
28
|
+
};
|