@bitblit/asyncglk
Version:
A Typescript Glk library
39 lines (35 loc) • 802 B
JavaScript
/*
Shared cheap-mode stdio
=======================
Copyright (c) 2022 Dannii Willis
MIT licenced
https://github.com/curiousdannii/asyncglk
*/
import MuteStream from 'mute-stream';
import readline from 'readline';
// A memoized instance
let instance;
export function get_stdio() {
if (instance) {
return instance;
}
const stdin = process.stdin;
// Prepare to receive input events
if (stdin.isTTY) {
stdin.setRawMode(true);
}
const stdout = new MuteStream();
stdout.pipe(process.stdout);
const rl = readline.createInterface({
input: stdin,
output: stdout,
prompt: '',
});
readline.emitKeypressEvents(stdin);
instance = {
rl: rl,
stdin: stdin,
stdout: stdout,
};
return instance;
}