export async function connectTerminal()

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.');
}