INNER CODE UNIT · JavaScript
promptPassword
wangshengithub/staticshield · encrypt.js:14
function promptPassword() {
const stdin = process.stdin;
const interactive = stdin.isTTY && typeof stdin.setRawMode === 'function';
process.stderr.write('请输入加密密码: ');
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) => {