Get your own Node server
const readline = require('readline');

// Create the interface
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

// Function to prompt for masked input
function promptPassword(query) {
  return new Promise((resolve) => {
    // Create a hidden readline instance to control input/output
    const stdin = process.stdin;
    
    // Save the original configuration
    const originalStdinIsTTY = stdin.isTTY;
    if (originalStdinIsTTY) {
      stdin.setRawMode(true);
    }
    
    let password = '';
    
    // Write the query
    process.stdout.write(query);
    
    // Handle keypress events
    const onData = (key) => {
      // Ctrl+C
      if (key.toString() === '\u0003') {
        process.stdout.write('\n');
        process.exit();
      }
      
      // Enter key
      if (key.toString() === '\r' || key.toString() === '\n') {
        if (originalStdinIsTTY) {
          stdin.setRawMode(false);
        }
        stdin.removeListener('data', onData);
        process.stdout.write('\n');
        resolve(password);
        return;
      }
      
      // Backspace
      if (key.toString() === '\u0008' || key.toString() === '\u007f') {
        if (password.length > 0) {
          password = password.slice(0, -1);
          process.stdout.write('\b \b'); // Erase last character
        }
        return;
      }
      
      // Regular character
      password += key.toString();
      process.stdout.write('*'); // Show asterisk for each character
    };
    
    stdin.on('data', onData);
  });
}

// Example usage
async function login() {
  const username = await new Promise((resolve) => {
    rl.question('Username: ', (answer) => {
      resolve(answer);
    });
  });
  
  const password = await promptPassword('Password: ');
  
  console.log(`\nAttempting login for user: ${username}`);
  
  // Simulate authentication check
  if (username === 'admin' && password === 'password') {
    console.log('Login successful!');
  } else {
    console.log('Invalid username or password');
  }
  
  rl.close();
}

// Start the login process
login();

              
Username: admin
Password: ********

Attempting login for user: admin
Login successful!