export function main()

in src/cloudConsole/cloudConsoleLauncher.ts [325:366]


export function main() {
	// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
	process.stdin.setRawMode!(true);
	process.stdin.resume();

	// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
	const ipcHandle = process.env.CLOUD_CONSOLE_IPC!;
	(async () => {
		void sendData(ipcHandle, JSON.stringify([ { type: 'size', size: getWindowSize() } ]));
		let res: http.IncomingMessage;
		// eslint-disable-next-line no-cond-assign
		while (res = await sendData(ipcHandle, JSON.stringify([ { type: 'poll' } ]))) {
			// eslint-disable-next-line @typescript-eslint/no-explicit-any
			for (const message of await readJSON<any>(res)) {
				/* eslint-disable @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment */
				if (message.type === 'log') {
					console.log(...message.args);
				} else if (message.type === 'connect') {
					try {
						const accessTokens: AccessTokens = message.accessTokens;
						const consoleUris: ConsoleUris = message.consoleUris;
						connectSocket(ipcHandle, consoleUris.socketUri);
						process.stdout.on('resize', () => {
							resize(accessTokens, consoleUris.terminalUri)
								.catch(console.error);
						});
					} catch(err) {
						console.error(err);
						sendData(ipcHandle, JSON.stringify([ { type: 'status', status: 'Disconnected' } ]))
							.catch(err => {
								console.error(err);
							});
					}
				} else if (message.type === 'exit') {
					process.exit(message.code);
				}
				/* eslint-enable @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment */
			}
		}
	})()
		.catch(console.error);
}