'use strict'; const {stdin} = process; module.exports = () => { let result = ''; return new Promise(resolve => { if (stdin.isTTY) { resolve(result); return; } stdin.setEncoding('utf8'); stdin.on('readable', () => { let chunk; while ((chunk = stdin.read())) { result += chunk; } }); stdin.on('end', () => { resolve(result); }); }); }; module.exports.buffer = () => { const result = []; let length = 0; return new Promise(resolve => { if (stdin.isTTY) { resolve(Buffer.concat([])); return; } stdin.on('readable', () => { let chunk; while ((chunk = stdin.read())) { result.push(chunk); length += chunk.length; } }); stdin.on('end', () => { resolve(Buffer.concat(result, length)); }); }); };