File size: 1,253 Bytes
bccbbe3 27f36ae bccbbe3 27f36ae bccbbe3 27f36ae bccbbe3 27f36ae bccbbe3 27f36ae bccbbe3 27f36ae bccbbe3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
import os from 'os';
import pty from 'node-pty';
let sharedPtyProcess = null;
let sharedTerminalMode = false;
const shell = os.platform() === 'win32' ? 'powershell.exe' : 'bash';
const spawnShell = () => {
return pty.spawn(shell, [], {
name: 'xterm-color',
env: process.env,
});
};
export const setSharedTerminalMode = (useSharedTerminal) => {
sharedTerminalMode = useSharedTerminal;
if (sharedTerminalMode && !sharedPtyProcess) {
sharedPtyProcess = spawnShell();
}
};
export const handleTerminalConnection = (ws) => {
let ptyProcess = sharedTerminalMode ? sharedPtyProcess : spawnShell();
ws.on('message', command => {
const processedCommand = commandProcessor(command);
ptyProcess.write(processedCommand);
});
ptyProcess.on('data', (rawOutput) => {
const processedOutput = outputProcessor(rawOutput);
ws.send(processedOutput);
});
ws.on('close', () => {
if (!sharedTerminalMode) {
ptyProcess.kill();
}
});
};
// Utility function to process commands
const commandProcessor = (command) => {
return command;
};
// Utility function to process output
const outputProcessor = (output) => {
return output;
}; |