const readline = require('readline') // const xstdin = (prompt, input) => { // const rl = readline.createInterface({ // input: input || process.stdin // }) // return async function* () { // return await new Promise((resolve) => { // rl.question(prompt, resolve) // }) // } // } // stdin = () => async function* stdin() { // const done = new Promise(resolve => process.stdin.once('end', x => resolve(null))) // let data // do { // data = await Promise.race([ // new Promise(resolve => process.stdin.once('data', resolve)), // done // ]) // console.log(data) // if (data) yield data // } while (data) // } const stdin = () => { return async function*() { return await new Promise(resolve => { const onData = (data) => { resolve(data.toString().trim()) cleanup() } const onEnd = () => { resolve('') cleanup() } const cleanup = () => { process.stdin.off('data', onData) process.stdin.off('end', onEnd) } process.stdin.on('data', onData) process.stdin.on('end', onEnd) }) } } const stdout = () => async function* stdout(output, scripting) { process.stdout.write(output) } module.exports = {stdin, stdout}