eas-cli 18.11.0 → 18.12.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 +100 -100
- package/build/commands/integrations/convex/connect.d.ts +1 -0
- package/build/commands/integrations/convex/connect.js +53 -3
- package/build/commands/simulator/start.js +13 -99
- package/build/graphql/generated.d.ts +110 -4
- package/build/graphql/generated.js +19 -3
- package/build/graphql/queries/DeviceRunSessionQuery.js +8 -1
- package/oclif.manifest.json +1041 -1041
- package/package.json +5 -5
|
@@ -12,6 +12,7 @@ export default class IntegrationsConvexConnect extends EasCommand {
|
|
|
12
12
|
'non-interactive': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
13
13
|
};
|
|
14
14
|
runAsync(): Promise<void>;
|
|
15
|
+
private upsertConvexUrlEasEnvVarAsync;
|
|
15
16
|
private resolveRegionAsync;
|
|
16
17
|
private resolveTeamNameAsync;
|
|
17
18
|
private resolveProjectNameAsync;
|
|
@@ -7,11 +7,15 @@ const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
|
7
7
|
const dotenv_1 = tslib_1.__importDefault(require("dotenv"));
|
|
8
8
|
const fs = tslib_1.__importStar(require("fs-extra"));
|
|
9
9
|
const path_1 = tslib_1.__importDefault(require("path"));
|
|
10
|
+
const environment_1 = require("../../../build/utils/environment");
|
|
10
11
|
const EasCommand_1 = tslib_1.__importDefault(require("../../../commandUtils/EasCommand"));
|
|
11
12
|
const convex_1 = require("../../../commandUtils/convex");
|
|
12
13
|
const flags_1 = require("../../../commandUtils/flags");
|
|
14
|
+
const generated_1 = require("../../../graphql/generated");
|
|
13
15
|
const ConvexMutation_1 = require("../../../graphql/mutations/ConvexMutation");
|
|
16
|
+
const EnvironmentVariableMutation_1 = require("../../../graphql/mutations/EnvironmentVariableMutation");
|
|
14
17
|
const ConvexQuery_1 = require("../../../graphql/queries/ConvexQuery");
|
|
18
|
+
const EnvironmentVariablesQuery_1 = require("../../../graphql/queries/EnvironmentVariablesQuery");
|
|
15
19
|
const log_1 = tslib_1.__importDefault(require("../../../log"));
|
|
16
20
|
const ora_1 = require("../../../ora");
|
|
17
21
|
const projectUtils_1 = require("../../../project/projectUtils");
|
|
@@ -21,6 +25,12 @@ const CONVEX_REGIONS = [
|
|
|
21
25
|
{ title: 'EU West (aws-eu-west-1)', value: 'aws-eu-west-1' },
|
|
22
26
|
];
|
|
23
27
|
const DEFAULT_REGION = 'aws-us-east-1';
|
|
28
|
+
const EAS_CONVEX_ENV_VAR_NAME = 'EXPO_PUBLIC_CONVEX_URL';
|
|
29
|
+
const EAS_CONVEX_ENVIRONMENTS = [
|
|
30
|
+
environment_1.DefaultEnvironment.Production,
|
|
31
|
+
environment_1.DefaultEnvironment.Preview,
|
|
32
|
+
environment_1.DefaultEnvironment.Development,
|
|
33
|
+
];
|
|
24
34
|
class IntegrationsConvexConnect extends EasCommand_1.default {
|
|
25
35
|
static description = 'connect Convex to your Expo project';
|
|
26
36
|
static contextDefinition = {
|
|
@@ -99,23 +109,63 @@ class IntegrationsConvexConnect extends EasCommand_1.default {
|
|
|
99
109
|
spinner.fail('Failed to set up Convex project');
|
|
100
110
|
throw error;
|
|
101
111
|
}
|
|
102
|
-
// 6.
|
|
112
|
+
// 6. Save the Convex URL as an EAS environment variable for builds
|
|
113
|
+
await this.upsertConvexUrlEasEnvVarAsync(graphqlClient, projectId, setupResult.convexDeploymentUrl, nonInteractive);
|
|
114
|
+
// 7. Send team invite (non-fatal)
|
|
103
115
|
const teamInviteResult = await this.sendTeamInviteAsync(graphqlClient, connection, actor, {
|
|
104
116
|
nonInteractive,
|
|
105
117
|
});
|
|
106
|
-
//
|
|
118
|
+
// 8. Write deploy key and URL to .env.local
|
|
107
119
|
await this.writeEnvLocalAsync(projectDir, setupResult.deployKey, setupResult.convexDeploymentUrl, nonInteractive);
|
|
108
|
-
//
|
|
120
|
+
// 9. Success message
|
|
109
121
|
log_1.default.addNewLineIfNone();
|
|
110
122
|
log_1.default.log(chalk_1.default.green('Convex is ready!'));
|
|
111
123
|
log_1.default.newLine();
|
|
112
124
|
log_1.default.log('Next steps:');
|
|
113
125
|
log_1.default.log(` 1. Start the Convex dev server: ${chalk_1.default.cyan('npx convex dev')}`);
|
|
126
|
+
log_1.default.log(` 2. Learn how to connect to your new Convex database by following our quickstart guide: ${chalk_1.default.cyan('https://docs.expo.dev/guides/using-convex')}`);
|
|
127
|
+
log_1.default.log(` 3. Read more about Convex: ${chalk_1.default.cyan('https://docs.convex.dev/')}`);
|
|
114
128
|
log_1.default.newLine();
|
|
115
129
|
if (teamInviteResult === 'sent') {
|
|
116
130
|
log_1.default.log(`Check your email for an invitation to join your Convex team. Accept it for full dashboard access.`);
|
|
117
131
|
}
|
|
118
132
|
}
|
|
133
|
+
async upsertConvexUrlEasEnvVarAsync(graphqlClient, projectId, convexUrl, nonInteractive) {
|
|
134
|
+
const existingVariables = await EnvironmentVariablesQuery_1.EnvironmentVariablesQuery.byAppIdAsync(graphqlClient, {
|
|
135
|
+
appId: projectId,
|
|
136
|
+
filterNames: [EAS_CONVEX_ENV_VAR_NAME],
|
|
137
|
+
});
|
|
138
|
+
const existingProjectVariable = existingVariables.find(variable => variable.scope === generated_1.EnvironmentVariableScope.Project);
|
|
139
|
+
if (existingProjectVariable) {
|
|
140
|
+
if (!nonInteractive) {
|
|
141
|
+
const overwrite = await (0, prompts_1.confirmAsync)({
|
|
142
|
+
message: `EAS already has an ${EAS_CONVEX_ENV_VAR_NAME} environment variable for this project. Overwrite it?`,
|
|
143
|
+
});
|
|
144
|
+
if (!overwrite) {
|
|
145
|
+
log_1.default.warn(`Skipped updating EAS environment variable ${chalk_1.default.bold(EAS_CONVEX_ENV_VAR_NAME)}.`);
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
await EnvironmentVariableMutation_1.EnvironmentVariableMutation.updateAsync(graphqlClient, {
|
|
150
|
+
id: existingProjectVariable.id,
|
|
151
|
+
name: EAS_CONVEX_ENV_VAR_NAME,
|
|
152
|
+
value: convexUrl,
|
|
153
|
+
environments: EAS_CONVEX_ENVIRONMENTS,
|
|
154
|
+
visibility: generated_1.EnvironmentVariableVisibility.Public,
|
|
155
|
+
type: generated_1.EnvironmentSecretType.String,
|
|
156
|
+
});
|
|
157
|
+
log_1.default.withTick(`Updated EAS environment variable ${chalk_1.default.bold(EAS_CONVEX_ENV_VAR_NAME)} for builds`);
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
await EnvironmentVariableMutation_1.EnvironmentVariableMutation.createForAppAsync(graphqlClient, {
|
|
161
|
+
name: EAS_CONVEX_ENV_VAR_NAME,
|
|
162
|
+
value: convexUrl,
|
|
163
|
+
environments: EAS_CONVEX_ENVIRONMENTS,
|
|
164
|
+
visibility: generated_1.EnvironmentVariableVisibility.Public,
|
|
165
|
+
type: generated_1.EnvironmentSecretType.String,
|
|
166
|
+
}, projectId);
|
|
167
|
+
log_1.default.withTick(`Created EAS environment variable ${chalk_1.default.bold(EAS_CONVEX_ENV_VAR_NAME)} for builds`);
|
|
168
|
+
}
|
|
119
169
|
async resolveRegionAsync(flagValue, nonInteractive) {
|
|
120
170
|
if (flagValue) {
|
|
121
171
|
return flagValue;
|
|
@@ -68,10 +68,9 @@ class SimulatorStart extends EasCommand_1.default {
|
|
|
68
68
|
createSpinner.fail('Failed to create device run session');
|
|
69
69
|
throw err;
|
|
70
70
|
}
|
|
71
|
-
const checkReadiness = getReadinessCheckerForType(flags.type);
|
|
72
71
|
const pollSpinner = (0, ora_1.ora)(`⏳ Waiting for ${flags.type} daemon to start`).start();
|
|
73
72
|
const deadline = Date.now() + POLL_TIMEOUT_MS;
|
|
74
|
-
let
|
|
73
|
+
let remoteConfig;
|
|
75
74
|
try {
|
|
76
75
|
while (Date.now() < deadline) {
|
|
77
76
|
const session = await DeviceRunSessionQuery_1.DeviceRunSessionQuery.byIdAsync(graphqlClient, deviceRunSessionId);
|
|
@@ -85,9 +84,8 @@ class SimulatorStart extends EasCommand_1.default {
|
|
|
85
84
|
jobRunStatus === generated_1.JobRunStatus.Finished) {
|
|
86
85
|
throw new Error(`Turtle job run for device run session ${deviceRunSessionId} ${jobRunStatus.toLowerCase()} before the ${flags.type} daemon was ready. ${(0, log_1.link)(jobRunUrl)}`);
|
|
87
86
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
if (result.ready) {
|
|
87
|
+
if (session.remoteConfig) {
|
|
88
|
+
remoteConfig = session.remoteConfig;
|
|
91
89
|
pollSpinner.succeed(`🎉 ${flags.type} daemon is ready`);
|
|
92
90
|
break;
|
|
93
91
|
}
|
|
@@ -95,11 +93,11 @@ class SimulatorStart extends EasCommand_1.default {
|
|
|
95
93
|
}
|
|
96
94
|
}
|
|
97
95
|
catch (err) {
|
|
98
|
-
pollSpinner.fail(`Failed while polling for ${flags.type} daemon
|
|
96
|
+
pollSpinner.fail(`Failed while polling for ${flags.type} daemon to start`);
|
|
99
97
|
await ensureDeviceRunSessionStoppedSafelyAsync(graphqlClient, deviceRunSessionId);
|
|
100
98
|
throw err;
|
|
101
99
|
}
|
|
102
|
-
if (!
|
|
100
|
+
if (!remoteConfig) {
|
|
103
101
|
pollSpinner.fail(`Timed out waiting for ${flags.type} daemon to start`);
|
|
104
102
|
await ensureDeviceRunSessionStoppedSafelyAsync(graphqlClient, deviceRunSessionId);
|
|
105
103
|
throw new Error(`Timed out after ${Math.round(POLL_TIMEOUT_MS / 1000)}s waiting for ${flags.type} daemon to start. ${(0, log_1.link)(jobRunUrl)}`);
|
|
@@ -107,7 +105,7 @@ class SimulatorStart extends EasCommand_1.default {
|
|
|
107
105
|
log_1.default.newLine();
|
|
108
106
|
log_1.default.log(`🔑 Run the following in your shell to attach to ${flags.type}:`);
|
|
109
107
|
log_1.default.newLine();
|
|
110
|
-
log_1.default.log(
|
|
108
|
+
log_1.default.log(formatRemoteConfigShellSnippet(remoteConfig));
|
|
111
109
|
log_1.default.newLine();
|
|
112
110
|
if (flags['non-interactive']) {
|
|
113
111
|
log_1.default.log(`When you are done, stop the session with: eas simulator:stop --id ${deviceRunSessionId}`);
|
|
@@ -189,96 +187,12 @@ async function ensureDeviceRunSessionStoppedSafelyAsync(graphqlClient, deviceRun
|
|
|
189
187
|
return false;
|
|
190
188
|
}
|
|
191
189
|
}
|
|
192
|
-
function
|
|
193
|
-
switch (
|
|
194
|
-
case
|
|
195
|
-
return
|
|
196
|
-
|
|
197
|
-
|
|
190
|
+
function formatRemoteConfigShellSnippet(remoteConfig) {
|
|
191
|
+
switch (remoteConfig.__typename) {
|
|
192
|
+
case 'AgentDeviceRunSessionRemoteConfig':
|
|
193
|
+
return [
|
|
194
|
+
`export AGENT_DEVICE_DAEMON_BASE_URL='${remoteConfig.url}'`,
|
|
195
|
+
`export AGENT_DEVICE_DAEMON_AUTH_TOKEN='${remoteConfig.token}'`,
|
|
196
|
+
].join('\n');
|
|
198
197
|
}
|
|
199
198
|
}
|
|
200
|
-
const AGENT_DEVICE_BASE_URL_ENV_VAR = 'AGENT_DEVICE_DAEMON_BASE_URL';
|
|
201
|
-
const AGENT_DEVICE_AUTH_TOKEN_ENV_VAR = 'AGENT_DEVICE_DAEMON_AUTH_TOKEN';
|
|
202
|
-
function checkAgentDeviceReadiness(logMessages) {
|
|
203
|
-
let baseUrl;
|
|
204
|
-
let authToken;
|
|
205
|
-
for (const msg of logMessages) {
|
|
206
|
-
baseUrl = baseUrl ?? extractExportedEnvValue(msg, AGENT_DEVICE_BASE_URL_ENV_VAR);
|
|
207
|
-
authToken = authToken ?? extractExportedEnvValue(msg, AGENT_DEVICE_AUTH_TOKEN_ENV_VAR);
|
|
208
|
-
if (baseUrl && authToken) {
|
|
209
|
-
break;
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
if (baseUrl && authToken) {
|
|
213
|
-
return {
|
|
214
|
-
ready: true,
|
|
215
|
-
message: [
|
|
216
|
-
`export ${AGENT_DEVICE_BASE_URL_ENV_VAR}='${baseUrl}'`,
|
|
217
|
-
`export ${AGENT_DEVICE_AUTH_TOKEN_ENV_VAR}='${authToken}'`,
|
|
218
|
-
].join('\n'),
|
|
219
|
-
};
|
|
220
|
-
}
|
|
221
|
-
return { ready: false };
|
|
222
|
-
}
|
|
223
|
-
async function fetchLogMessagesAsync(logUrls) {
|
|
224
|
-
const messages = [];
|
|
225
|
-
for (const url of logUrls) {
|
|
226
|
-
const text = await fetchLogTextAsync(url);
|
|
227
|
-
if (!text) {
|
|
228
|
-
continue;
|
|
229
|
-
}
|
|
230
|
-
for (const line of text.split('\n')) {
|
|
231
|
-
if (!line.trim()) {
|
|
232
|
-
continue;
|
|
233
|
-
}
|
|
234
|
-
messages.push(extractLogMessage(line));
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
return messages;
|
|
238
|
-
}
|
|
239
|
-
async function fetchLogTextAsync(url) {
|
|
240
|
-
try {
|
|
241
|
-
const response = await fetch(url);
|
|
242
|
-
if (!response.ok) {
|
|
243
|
-
return undefined;
|
|
244
|
-
}
|
|
245
|
-
return await response.text();
|
|
246
|
-
}
|
|
247
|
-
catch {
|
|
248
|
-
return undefined;
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
function extractLogMessage(line) {
|
|
252
|
-
// Turtle job run logs are JSONL (bunyan-shaped), e.g.
|
|
253
|
-
// {"msg":"export FOO=\"bar\"","time":"...","logId":"..."}
|
|
254
|
-
// Fall back to the raw line if it's not JSON or doesn't have a string msg.
|
|
255
|
-
const trimmed = line.trim();
|
|
256
|
-
if (!trimmed.startsWith('{')) {
|
|
257
|
-
return line;
|
|
258
|
-
}
|
|
259
|
-
try {
|
|
260
|
-
const parsed = JSON.parse(trimmed);
|
|
261
|
-
if (parsed && typeof parsed === 'object' && 'msg' in parsed) {
|
|
262
|
-
const msg = parsed.msg;
|
|
263
|
-
if (typeof msg === 'string') {
|
|
264
|
-
return msg;
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
catch {
|
|
269
|
-
// not JSON, fall through
|
|
270
|
-
}
|
|
271
|
-
return line;
|
|
272
|
-
}
|
|
273
|
-
function extractExportedEnvValue(text, varName) {
|
|
274
|
-
// Matches: export NAME=value | export NAME="value" | export NAME='value'
|
|
275
|
-
const pattern = new RegExp(`export\\s+${escapeRegExp(varName)}=(?:"([^"]*)"|'([^']*)'|(\\S+))`);
|
|
276
|
-
const match = pattern.exec(text);
|
|
277
|
-
if (!match) {
|
|
278
|
-
return undefined;
|
|
279
|
-
}
|
|
280
|
-
return match[1] ?? match[2] ?? match[3];
|
|
281
|
-
}
|
|
282
|
-
function escapeRegExp(value) {
|
|
283
|
-
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
284
|
-
}
|
|
@@ -215,8 +215,13 @@ export type Account = {
|
|
|
215
215
|
/** @deprecated Legacy access tokens are deprecated */
|
|
216
216
|
requiresAccessTokenForPushSecurity: Scalars['Boolean']['output'];
|
|
217
217
|
sentryInstallation?: Maybe<SentryInstallation>;
|
|
218
|
-
/**
|
|
218
|
+
/**
|
|
219
|
+
* Snacks associated with this account
|
|
220
|
+
* @deprecated Use snacksPaginated
|
|
221
|
+
*/
|
|
219
222
|
snacks: Array<Snack>;
|
|
223
|
+
/** Paginated list of Snacks associated with this account, sorted by most recent activity. */
|
|
224
|
+
snacksPaginated: AccountSnacksConnection;
|
|
220
225
|
/** Allowed SSO providers for this account */
|
|
221
226
|
ssoAllowedAuthProviders: Array<AuthProviderIdentifier>;
|
|
222
227
|
/** SSO configuration for this account */
|
|
@@ -462,6 +467,16 @@ export type AccountSnacksArgs = {
|
|
|
462
467
|
limit: Scalars['Int']['input'];
|
|
463
468
|
offset: Scalars['Int']['input'];
|
|
464
469
|
};
|
|
470
|
+
/**
|
|
471
|
+
* An account is a container owning projects, credentials, billing and other organization
|
|
472
|
+
* data and settings. Actors may own and be members of accounts.
|
|
473
|
+
*/
|
|
474
|
+
export type AccountSnacksPaginatedArgs = {
|
|
475
|
+
after?: InputMaybe<Scalars['String']['input']>;
|
|
476
|
+
before?: InputMaybe<Scalars['String']['input']>;
|
|
477
|
+
first?: InputMaybe<Scalars['Int']['input']>;
|
|
478
|
+
last?: InputMaybe<Scalars['Int']['input']>;
|
|
479
|
+
};
|
|
465
480
|
/**
|
|
466
481
|
* An account is a container owning projects, credentials, billing and other organization
|
|
467
482
|
* data and settings. Actors may own and be members of accounts.
|
|
@@ -804,6 +819,16 @@ export type AccountSsoConfigurationPublicDataQuery = {
|
|
|
804
819
|
export type AccountSsoConfigurationPublicDataQueryPublicDataByAccountNameArgs = {
|
|
805
820
|
accountName: Scalars['String']['input'];
|
|
806
821
|
};
|
|
822
|
+
export type AccountSnacksConnection = {
|
|
823
|
+
__typename?: 'AccountSnacksConnection';
|
|
824
|
+
edges: Array<AccountSnacksEdge>;
|
|
825
|
+
pageInfo: PageInfo;
|
|
826
|
+
};
|
|
827
|
+
export type AccountSnacksEdge = {
|
|
828
|
+
__typename?: 'AccountSnacksEdge';
|
|
829
|
+
cursor: Scalars['String']['output'];
|
|
830
|
+
node: Snack;
|
|
831
|
+
};
|
|
807
832
|
export declare enum AccountUploadSessionType {
|
|
808
833
|
ProfileImageUpload = "PROFILE_IMAGE_UPLOAD",
|
|
809
834
|
WorkflowsProjectSources = "WORKFLOWS_PROJECT_SOURCES"
|
|
@@ -923,6 +948,11 @@ export type Address = {
|
|
|
923
948
|
state?: Maybe<Scalars['String']['output']>;
|
|
924
949
|
zip?: Maybe<Scalars['String']['output']>;
|
|
925
950
|
};
|
|
951
|
+
export type AgentDeviceRunSessionRemoteConfig = {
|
|
952
|
+
__typename?: 'AgentDeviceRunSessionRemoteConfig';
|
|
953
|
+
token: Scalars['String']['output'];
|
|
954
|
+
url: Scalars['String']['output'];
|
|
955
|
+
};
|
|
926
956
|
export type AndroidAppBuildCredentials = {
|
|
927
957
|
__typename?: 'AndroidAppBuildCredentials';
|
|
928
958
|
androidKeystore?: Maybe<AndroidKeystore>;
|
|
@@ -1824,8 +1854,13 @@ export type AppObserveCustomEventListArgs = {
|
|
|
1824
1854
|
last?: InputMaybe<Scalars['Int']['input']>;
|
|
1825
1855
|
};
|
|
1826
1856
|
export type AppObserveCustomEventNamesArgs = {
|
|
1857
|
+
appBuildNumber?: InputMaybe<Scalars['String']['input']>;
|
|
1858
|
+
appEasBuildId?: InputMaybe<Scalars['String']['input']>;
|
|
1859
|
+
appUpdateId?: InputMaybe<Scalars['String']['input']>;
|
|
1860
|
+
appVersion?: InputMaybe<Scalars['String']['input']>;
|
|
1827
1861
|
endTime: Scalars['DateTime']['input'];
|
|
1828
1862
|
environment?: InputMaybe<Scalars['String']['input']>;
|
|
1863
|
+
orderBy?: InputMaybe<AppObserveCustomEventNamesOrderBy>;
|
|
1829
1864
|
platform?: InputMaybe<AppObservePlatform>;
|
|
1830
1865
|
startTime: Scalars['DateTime']['input'];
|
|
1831
1866
|
};
|
|
@@ -1963,6 +1998,18 @@ export type AppObserveCustomEventNames = {
|
|
|
1963
1998
|
isTruncated: Scalars['Boolean']['output'];
|
|
1964
1999
|
names: Array<AppObserveCustomEventName>;
|
|
1965
2000
|
};
|
|
2001
|
+
export type AppObserveCustomEventNamesOrderBy = {
|
|
2002
|
+
direction: AppObserveCustomEventNamesOrderByDirection;
|
|
2003
|
+
field: AppObserveCustomEventNamesOrderByField;
|
|
2004
|
+
};
|
|
2005
|
+
export declare enum AppObserveCustomEventNamesOrderByDirection {
|
|
2006
|
+
Asc = "ASC",
|
|
2007
|
+
Desc = "DESC"
|
|
2008
|
+
}
|
|
2009
|
+
export declare enum AppObserveCustomEventNamesOrderByField {
|
|
2010
|
+
Count = "COUNT",
|
|
2011
|
+
EventName = "EVENT_NAME"
|
|
2012
|
+
}
|
|
1966
2013
|
export type AppObserveCustomEventPropertyFilter = {
|
|
1967
2014
|
key: Scalars['String']['input'];
|
|
1968
2015
|
value: Scalars['String']['input'];
|
|
@@ -2124,6 +2171,9 @@ export type AppObserveUpdatesConnection = {
|
|
|
2124
2171
|
};
|
|
2125
2172
|
export type AppObserveUpdatesInput = {
|
|
2126
2173
|
after?: InputMaybe<Scalars['String']['input']>;
|
|
2174
|
+
appBuildNumber?: InputMaybe<Scalars['String']['input']>;
|
|
2175
|
+
appUpdateId?: InputMaybe<Scalars['String']['input']>;
|
|
2176
|
+
appVersion?: InputMaybe<Scalars['String']['input']>;
|
|
2127
2177
|
endTime: Scalars['DateTime']['input'];
|
|
2128
2178
|
environment?: InputMaybe<Scalars['String']['input']>;
|
|
2129
2179
|
first?: InputMaybe<Scalars['Int']['input']>;
|
|
@@ -4270,6 +4320,7 @@ export type DeviceRunSession = {
|
|
|
4270
4320
|
*/
|
|
4271
4321
|
packageVersion?: Maybe<Scalars['String']['output']>;
|
|
4272
4322
|
platform: AppPlatform;
|
|
4323
|
+
remoteConfig?: Maybe<DeviceRunSessionRemoteConfig>;
|
|
4273
4324
|
startedAt?: Maybe<Scalars['DateTime']['output']>;
|
|
4274
4325
|
status: DeviceRunSessionStatus;
|
|
4275
4326
|
turtleJobRun?: Maybe<JobRun>;
|
|
@@ -4286,6 +4337,8 @@ export type DeviceRunSessionMutation = {
|
|
|
4286
4337
|
* ERRORED).
|
|
4287
4338
|
*/
|
|
4288
4339
|
ensureDeviceRunSessionStopped: DeviceRunSession;
|
|
4340
|
+
/** Mark a device run session as started and persist remote connection details */
|
|
4341
|
+
startDeviceRunSession: DeviceRunSession;
|
|
4289
4342
|
};
|
|
4290
4343
|
export type DeviceRunSessionMutationCreateDeviceRunSessionArgs = {
|
|
4291
4344
|
deviceRunSessionInput: CreateDeviceRunSessionInput;
|
|
@@ -4293,6 +4346,10 @@ export type DeviceRunSessionMutationCreateDeviceRunSessionArgs = {
|
|
|
4293
4346
|
export type DeviceRunSessionMutationEnsureDeviceRunSessionStoppedArgs = {
|
|
4294
4347
|
deviceRunSessionId: Scalars['ID']['input'];
|
|
4295
4348
|
};
|
|
4349
|
+
export type DeviceRunSessionMutationStartDeviceRunSessionArgs = {
|
|
4350
|
+
deviceRunSessionId: Scalars['ID']['input'];
|
|
4351
|
+
remoteConfig: Scalars['JSONObject']['input'];
|
|
4352
|
+
};
|
|
4296
4353
|
export type DeviceRunSessionQuery = {
|
|
4297
4354
|
__typename?: 'DeviceRunSessionQuery';
|
|
4298
4355
|
byId: DeviceRunSession;
|
|
@@ -4300,6 +4357,7 @@ export type DeviceRunSessionQuery = {
|
|
|
4300
4357
|
export type DeviceRunSessionQueryByIdArgs = {
|
|
4301
4358
|
deviceRunSessionId: Scalars['ID']['input'];
|
|
4302
4359
|
};
|
|
4360
|
+
export type DeviceRunSessionRemoteConfig = AgentDeviceRunSessionRemoteConfig;
|
|
4303
4361
|
export declare enum DeviceRunSessionStatus {
|
|
4304
4362
|
Errored = "ERRORED",
|
|
4305
4363
|
InProgress = "IN_PROGRESS",
|
|
@@ -4792,11 +4850,15 @@ export type EchoRepositoryResult = {
|
|
|
4792
4850
|
export type EchoTurn = {
|
|
4793
4851
|
__typename?: 'EchoTurn';
|
|
4794
4852
|
completedAt?: Maybe<Scalars['DateTime']['output']>;
|
|
4853
|
+
/** Terminal status of the turn (null if still in progress) */
|
|
4854
|
+
completionStatus?: Maybe<EchoTurnCompletionStatus>;
|
|
4795
4855
|
createdAt: Scalars['DateTime']['output'];
|
|
4796
4856
|
/** Parent chat */
|
|
4797
4857
|
echoChat: EchoChat;
|
|
4798
4858
|
/** Messages in this turn */
|
|
4799
4859
|
echoMessages: Array<EchoMessage>;
|
|
4860
|
+
/** Error message when completionStatus is ERROR */
|
|
4861
|
+
error?: Maybe<Scalars['String']['output']>;
|
|
4800
4862
|
id: Scalars['ID']['output'];
|
|
4801
4863
|
};
|
|
4802
4864
|
/** Breakdown of cache write input tokens by cache TTL. */
|
|
@@ -4805,12 +4867,25 @@ export type EchoTurnCacheWriteInput = {
|
|
|
4805
4867
|
ttl5m?: InputMaybe<Scalars['Int']['input']>;
|
|
4806
4868
|
ttl24h?: InputMaybe<Scalars['Int']['input']>;
|
|
4807
4869
|
};
|
|
4870
|
+
export declare enum EchoTurnCompletionStatus {
|
|
4871
|
+
Cancelled = "CANCELLED",
|
|
4872
|
+
Completed = "COMPLETED",
|
|
4873
|
+
Error = "ERROR"
|
|
4874
|
+
}
|
|
4808
4875
|
export type EchoTurnMutation = {
|
|
4809
4876
|
__typename?: 'EchoTurnMutation';
|
|
4810
|
-
/**
|
|
4877
|
+
/**
|
|
4878
|
+
* Mark a turn as completed and create a billing ledger entry.
|
|
4879
|
+
*
|
|
4880
|
+
* completionStatus defaults to COMPLETED for backward compatibility with
|
|
4881
|
+
* clients that do not yet send a status. error may be set when
|
|
4882
|
+
* completionStatus is ERROR to record the failure reason.
|
|
4883
|
+
*/
|
|
4811
4884
|
completeTurn: EchoTurn;
|
|
4812
4885
|
};
|
|
4813
4886
|
export type EchoTurnMutationCompleteTurnArgs = {
|
|
4887
|
+
completionStatus?: InputMaybe<EchoTurnCompletionStatus>;
|
|
4888
|
+
error?: InputMaybe<Scalars['String']['input']>;
|
|
4814
4889
|
id: Scalars['ID']['input'];
|
|
4815
4890
|
usage: EchoTurnUsageInput;
|
|
4816
4891
|
};
|
|
@@ -5151,6 +5226,30 @@ export type ExperimentationQuery = {
|
|
|
5151
5226
|
/** Get user experimentation config */
|
|
5152
5227
|
userConfig: Scalars['JSONObject']['output'];
|
|
5153
5228
|
};
|
|
5229
|
+
export type ExpoGoBuildQuery = {
|
|
5230
|
+
__typename?: 'ExpoGoBuildQuery';
|
|
5231
|
+
repackConfiguration: ExpoGoProjectConfiguration;
|
|
5232
|
+
};
|
|
5233
|
+
export type ExpoGoBuildQueryRepackConfigurationArgs = {
|
|
5234
|
+
input: ExpoGoRepackInput;
|
|
5235
|
+
};
|
|
5236
|
+
export type ExpoGoProjectConfiguration = {
|
|
5237
|
+
__typename?: 'ExpoGoProjectConfiguration';
|
|
5238
|
+
files: Array<ExpoGoProjectFile>;
|
|
5239
|
+
sdkVersion: Scalars['String']['output'];
|
|
5240
|
+
};
|
|
5241
|
+
export type ExpoGoProjectFile = {
|
|
5242
|
+
__typename?: 'ExpoGoProjectFile';
|
|
5243
|
+
fileContents: Scalars['String']['output'];
|
|
5244
|
+
fileName: Scalars['String']['output'];
|
|
5245
|
+
};
|
|
5246
|
+
export type ExpoGoRepackInput = {
|
|
5247
|
+
appId: Scalars['ID']['input'];
|
|
5248
|
+
appName?: InputMaybe<Scalars['String']['input']>;
|
|
5249
|
+
ascAppId: Scalars['String']['input'];
|
|
5250
|
+
bundleId: Scalars['String']['input'];
|
|
5251
|
+
sdkVersion?: InputMaybe<Scalars['String']['input']>;
|
|
5252
|
+
};
|
|
5154
5253
|
export type FcmSnippet = FcmSnippetLegacy | FcmSnippetV1;
|
|
5155
5254
|
export type FcmSnippetLegacy = {
|
|
5156
5255
|
__typename?: 'FcmSnippetLegacy';
|
|
@@ -6669,7 +6768,7 @@ export type RootMutation = {
|
|
|
6669
6768
|
deployments: DeploymentsMutation;
|
|
6670
6769
|
/** Mutations that assign or modify DevDomainNames for apps */
|
|
6671
6770
|
devDomainName: AppDevDomainNameMutation;
|
|
6672
|
-
/** Mutations that create and stop device run sessions */
|
|
6771
|
+
/** Mutations that create, start, and stop device run sessions */
|
|
6673
6772
|
deviceRunSession: DeviceRunSessionMutation;
|
|
6674
6773
|
/** Mutations for Discord users */
|
|
6675
6774
|
discordUser: DiscordUserMutation;
|
|
@@ -6837,6 +6936,7 @@ export type RootQuery = {
|
|
|
6837
6936
|
echoVersion: EchoVersionQuery;
|
|
6838
6937
|
/** Top-level query object for querying Experimentation configuration. */
|
|
6839
6938
|
experimentation: ExperimentationQuery;
|
|
6939
|
+
expoGoBuild: ExpoGoBuildQuery;
|
|
6840
6940
|
/** Top-level query object for querying GitHub App information and resources it has access to. */
|
|
6841
6941
|
githubApp: GitHubAppQuery;
|
|
6842
6942
|
/** Top-level query object for querying Google Service Account Keys. */
|
|
@@ -9491,6 +9591,7 @@ export type WorkflowRunMutationCancelWorkflowRunArgs = {
|
|
|
9491
9591
|
export type WorkflowRunMutationCreateExpoGoRepackWorkflowRunArgs = {
|
|
9492
9592
|
appId: Scalars['ID']['input'];
|
|
9493
9593
|
projectSource: WorkflowProjectSourceInput;
|
|
9594
|
+
sdkVersion?: InputMaybe<Scalars['String']['input']>;
|
|
9494
9595
|
};
|
|
9495
9596
|
export type WorkflowRunMutationCreateWorkflowRunArgs = {
|
|
9496
9597
|
appId: Scalars['ID']['input'];
|
|
@@ -16555,11 +16656,16 @@ export type DeviceRunSessionByIdQuery = {
|
|
|
16555
16656
|
__typename?: 'DeviceRunSession';
|
|
16556
16657
|
id: string;
|
|
16557
16658
|
status: DeviceRunSessionStatus;
|
|
16659
|
+
type: DeviceRunSessionType;
|
|
16660
|
+
remoteConfig?: {
|
|
16661
|
+
__typename: 'AgentDeviceRunSessionRemoteConfig';
|
|
16662
|
+
url: string;
|
|
16663
|
+
token: string;
|
|
16664
|
+
} | null;
|
|
16558
16665
|
turtleJobRun?: {
|
|
16559
16666
|
__typename?: 'JobRun';
|
|
16560
16667
|
id: string;
|
|
16561
16668
|
status: JobRunStatus;
|
|
16562
|
-
logFileUrls: Array<string>;
|
|
16563
16669
|
} | null;
|
|
16564
16670
|
};
|
|
16565
16671
|
};
|
|
@@ -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 = exports.ResponseCacheStatus = exports.ResourceClassExperiment = exports.RequestsOrderByField = exports.RequestsOrderByDirection = exports.RequestMethod = void 0;
|
|
9
|
+
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.AppObserveUpdatesOrderByField = exports.AppObserveUpdatesOrderByDirection = exports.AppObservePropertyType = exports.AppObservePlatform = exports.AppObserveEventsOrderByField = exports.AppObserveEventsOrderByDirection = exports.AppObserveCustomEventNamesOrderByField = exports.AppObserveCustomEventNamesOrderByDirection = exports.AppInternalDistributionBuildPrivacy = exports.AndroidKeystoreType = exports.AndroidFcmVersion = exports.AndroidBuildType = exports.ActivityTimelineProjectActivityType = exports.AccountUploadSessionType = exports.AccountMemberType = exports.AccountAppsSortByField = void 0;
|
|
10
|
+
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.EchoTurnCompletionStatus = exports.EchoProjectVisibility = exports.EchoProjectUploadSessionType = exports.EchoProjectIconSource = exports.EchoMessageRole = exports.EchoMessagePartType = exports.EchoChatState = exports.EchoChangeType = exports.EchoBuildStatus = exports.EchoAgentType = exports.EasTotalPlanEnablementUnit = exports.EasServiceMetric = exports.EasService = exports.EasBuildWaiverType = exports.EasBuildDeprecationInfoType = exports.EasBuildBillingResourceClass = exports.DistributionType = exports.DeviceRunSessionType = 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 = exports.RequestsOrderByField = exports.RequestsOrderByDirection = exports.RequestMethod = exports.ProjectArchiveSourceType = exports.Permission = exports.Order = void 0;
|
|
12
12
|
var AccountAppsSortByField;
|
|
13
13
|
(function (AccountAppsSortByField) {
|
|
14
14
|
AccountAppsSortByField["LatestActivityTime"] = "LATEST_ACTIVITY_TIME";
|
|
@@ -66,6 +66,16 @@ var AppInternalDistributionBuildPrivacy;
|
|
|
66
66
|
AppInternalDistributionBuildPrivacy["Private"] = "PRIVATE";
|
|
67
67
|
AppInternalDistributionBuildPrivacy["Public"] = "PUBLIC";
|
|
68
68
|
})(AppInternalDistributionBuildPrivacy || (exports.AppInternalDistributionBuildPrivacy = AppInternalDistributionBuildPrivacy = {}));
|
|
69
|
+
var AppObserveCustomEventNamesOrderByDirection;
|
|
70
|
+
(function (AppObserveCustomEventNamesOrderByDirection) {
|
|
71
|
+
AppObserveCustomEventNamesOrderByDirection["Asc"] = "ASC";
|
|
72
|
+
AppObserveCustomEventNamesOrderByDirection["Desc"] = "DESC";
|
|
73
|
+
})(AppObserveCustomEventNamesOrderByDirection || (exports.AppObserveCustomEventNamesOrderByDirection = AppObserveCustomEventNamesOrderByDirection = {}));
|
|
74
|
+
var AppObserveCustomEventNamesOrderByField;
|
|
75
|
+
(function (AppObserveCustomEventNamesOrderByField) {
|
|
76
|
+
AppObserveCustomEventNamesOrderByField["Count"] = "COUNT";
|
|
77
|
+
AppObserveCustomEventNamesOrderByField["EventName"] = "EVENT_NAME";
|
|
78
|
+
})(AppObserveCustomEventNamesOrderByField || (exports.AppObserveCustomEventNamesOrderByField = AppObserveCustomEventNamesOrderByField = {}));
|
|
69
79
|
var AppObserveEventsOrderByDirection;
|
|
70
80
|
(function (AppObserveEventsOrderByDirection) {
|
|
71
81
|
AppObserveEventsOrderByDirection["Asc"] = "ASC";
|
|
@@ -501,6 +511,12 @@ var EchoProjectVisibility;
|
|
|
501
511
|
EchoProjectVisibility["Private"] = "PRIVATE";
|
|
502
512
|
EchoProjectVisibility["Public"] = "PUBLIC";
|
|
503
513
|
})(EchoProjectVisibility || (exports.EchoProjectVisibility = EchoProjectVisibility = {}));
|
|
514
|
+
var EchoTurnCompletionStatus;
|
|
515
|
+
(function (EchoTurnCompletionStatus) {
|
|
516
|
+
EchoTurnCompletionStatus["Cancelled"] = "CANCELLED";
|
|
517
|
+
EchoTurnCompletionStatus["Completed"] = "COMPLETED";
|
|
518
|
+
EchoTurnCompletionStatus["Error"] = "ERROR";
|
|
519
|
+
})(EchoTurnCompletionStatus || (exports.EchoTurnCompletionStatus = EchoTurnCompletionStatus = {}));
|
|
504
520
|
var EchoVersionSource;
|
|
505
521
|
(function (EchoVersionSource) {
|
|
506
522
|
EchoVersionSource["Agent"] = "AGENT";
|
|
@@ -13,10 +13,17 @@ exports.DeviceRunSessionQuery = {
|
|
|
13
13
|
byId(deviceRunSessionId: $deviceRunSessionId) {
|
|
14
14
|
id
|
|
15
15
|
status
|
|
16
|
+
type
|
|
17
|
+
remoteConfig {
|
|
18
|
+
__typename
|
|
19
|
+
... on AgentDeviceRunSessionRemoteConfig {
|
|
20
|
+
url
|
|
21
|
+
token
|
|
22
|
+
}
|
|
23
|
+
}
|
|
16
24
|
turtleJobRun {
|
|
17
25
|
id
|
|
18
26
|
status
|
|
19
|
-
logFileUrls
|
|
20
27
|
}
|
|
21
28
|
}
|
|
22
29
|
}
|