Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jlyonsmith/readline-password
A Node.js readline package for password entry
https://github.com/jlyonsmith/readline-password
Last synced: 6 days ago
JSON representation
A Node.js readline package for password entry
- Host: GitHub
- URL: https://github.com/jlyonsmith/readline-password
- Owner: jlyonsmith
- License: mit
- Created: 2019-04-28T16:59:41.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2019-04-28T20:19:08.000Z (over 5 years ago)
- Last Synced: 2024-08-08T21:51:08.245Z (3 months ago)
- Language: JavaScript
- Size: 72.3 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.html
- License: LICENSE
Awesome Lists containing this project
README
Readline for Passwords
.task-list-item { list-style-type: none; } .task-list-item-checkbox { margin-left: -20px; vertical-align: middle; }
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe WPC', 'Segoe UI', 'Ubuntu', 'Droid Sans', sans-serif;
font-size: 14px;
line-height: 1.6;
}
Readline for Passwords
-
Package:readline-password
- Class:
Interface
- Event:
close
- Event:
SIGINT
- Method:
close()
- Method:
password(options, callback)
- Method:
passwordAsync(options)
- Class:
Package: readline-password
This is a readline
for passwords. It has a similar interface to the Node.js readline. Node's readline
does not have any functionality to not echo the output of the question()
method to the screen. It also has lots of other functionality such as history and tab completion that is not relevant to entering passwords.
This implementation also provides for optionally echoing the password characters to the screen as *
.
Here is an example of the usage:
import readlinePassword from "@johnls/readline-password"
const rl = readlinePassword.createInstance(process.stdin, process.stdout)
rl.on("SIGINT", () => process.exit(1))
rl.password("Password: \u{1F511} ", (password) => {
console.log(password)
rl.close()
process.stdin.unref() // Do this only when we are all done with input
})
You can also use promises:
import readlinePassword from "@johnls/readline-password"
const rl = readlinePassword.createInstance(process.stdin, process.stdout)
rl.on("SIGINT", () => process.exit(1))
;(async () => {
const password = await rl.passwordAsync("Password: \u{1F511} ")
console.log(password)
rl.close()
process.stdin.unref() // See above
})()
A call to unref()
or something similar is needed to cause the Node.js event loop to exit, and is needed even with the built-in readline
package.
Class: Interface
Construct with a call to createInterface()
or with new Interface()
.
Event: close
Occurs when:
- The
close()
method is called
Event: SIGINT
Occurs when:
- The user types Control+C while entering a password
Method: close()
Closes the Interface
and relinquishes control over the input
and output
streams.
Method: password(options, callback)
If options
is a string, displays it as the text prompt and begins receiving a password. When the user hits Enter or Return the callback()
function is called. This method follows the standard node convention of (err, value) => ...
where value is the entered password string. err
will always be null
. This allows the call to be wrapped with util.promisify()
.
If options
is an object it can contain:
-
prompt
. String to display for the prompt -
echo
. Whether to echo a*
everytime an character is entered
The only editing that is supported is Backspace to delete the last character entered, and Control+V or Command+V to paste a password.
Method: passwordAsync(options)
Like password()
but returns a Promise
.