INNER CODE UNIT · JavaScript
Promise
wangshengithub/staticshield · encrypt.js:18
return new Promise((resolve) => {
if (!interactive) {
let buf = '';
stdin.resume(); stdin.setEncoding('utf8');
const onData = (d) => { const i = d.indexOf('\n'); if (i >= 0) { buf += d.slice(0, i).replace(/\r$/, ''); cleanup(); process.stderr.write('\n'); resolve(buf); } else buf += d; };
const onEnd = () => { cleanup(); process.stderr.write('\n'); resolve(buf); };
const cleanup = () => { stdin.removeListener('data', onData); stdin.removeListener('end', onEnd); stdin.destroy(); };
stdin.on('data', onData); stdin.on('end', onEnd);
return;
}
const bytes = [];
stdin.setRawMode(true); stdin.resume();
const finish = () => { stdin.setRawMode(false); stdin.pause(); stdin.removeListener('data', onData); process.stderr.write('\n'); resolve(Buffer.from(bytes).toString('utf8')); };
const onData = (chunk) => {
for (let k = 0; k < chunk.length; k++) {
const b = chunk[k];
if (b === 0x0d || b === 0x0a) return finish();
if (b === 0x03) { process.stderr.write('\n'); process.exit(0); }