fix(scripts): suppress readline echo during password input in create-user

This commit is contained in:
2026-04-27 01:17:39 +02:00
parent ec61ae6721
commit d82dc0578c
+13 -7
View File
@@ -34,28 +34,34 @@ const question = (prompt) => {
const questionHidden = (prompt) => {
return new Promise((resolve) => {
process.stdout.write(prompt);
// Suppress readline's own software echo so only '*' appears
const originalWrite = rl._writeToOutput;
rl._writeToOutput = () => {};
process.stdin.setRawMode(true);
process.stdin.resume();
let password = '';
const dataListener = (char) => {
char = char.toString();
switch (char) {
case '\n':
case '\r':
case '\u0004':
case '':
process.stdin.setRawMode(false);
process.stdin.pause();
process.stdout.write('\n');
process.stdin.removeListener('data', dataListener);
rl._writeToOutput = originalWrite;
resolve(password);
break;
case '\u0003':
case '':
process.exit();
break;
case '\u007F':
case '':
case '\b':
password = password.slice(0, -1);
process.stdout.write('\b \b');
@@ -65,7 +71,7 @@ const questionHidden = (prompt) => {
process.stdout.write('*');
}
};
process.stdin.on('data', dataListener);
});
};