in src/cloudConsole/cloudConsoleLauncher.ts [152:182]
export async function connectTerminal(accessTokens: AccessTokens, consoleUri: string, shellType: string, initialSize: Size, progress: (i: number) => void): Promise<ConsoleUris> {
for (let i = 0; i < 10; i++) {
/* eslint-disable @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment */
const response = await initializeTerminal(accessTokens, consoleUri, shellType, initialSize);
if (response.statusCode < 200 || response.statusCode > 299) {
if (response.statusCode !== 503 && response.statusCode !== 504 && response.body && response.body.error) {
if (response.body && response.body.error && response.body.error.message) {
throw new Error(`${response.body.error.message} (${response.statusCode})`);
} else {
throw new Error(`${response.statusCode} ${response.headers} ${response.body}`);
}
}
await delay(1000 * (i + 1));
progress(i + 1);
continue;
}
const { id, socketUri } = response.body;
const terminalUri = `${consoleUri}/terminals/${id}`;
return {
consoleUri,
terminalUri,
socketUri
};
/* eslint-enable @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment */
}
throw new Error('Failed to connect to the terminal.');
}