ninja_query
v0.3.3
Published
Middlelayer for Inquirer.js to allow prompting even when output is piped
Downloads
44
Readme
NinjaQuery
Middlelayer for Inquirer.js to allow prompting even when output is piped
Installing
Via NPM:
npm install ninja_query
Usage
// Node CommonJS
const ninjaQuery = require('ninja_query');
// Or Node ES6
import ninjaQuery from 'ninja_query';
Examples
// Use ninjaQuery just like you use
ninjaQuery({
name: "name",
message: "What is your name?"
}).then(({name}) => console.log(`Hello, ${name}`))
API
ninjaQuery(questions)
Launch the prompt interface (inquiry session)
ninjaQuery.extend(templateID[, question])
Merge the templateID
's default Question with the specified question
object.
ninjaQuery.password(question[, options])
Construct a password prompt that inherits from DefaultQuestions.password and can request a password re-entry for confirmation.
ninjaQuery.defaults: DefaultQuestions
Question
A question object is a hash containing question related values:
type
: <string> Type of the prompt.name
: <string> The name to use when storing the answer in the answers hash. If the name contains periods, it will define a path in the answers hash.message
: <string| (rootObject
: object) => string > The question to print. If defined as a function, the first parameter will be the current inquirer session answers. Defaults to the value of name (followed by a colon).default
: <string|number|boolean|array|function> Default value(s) to use if nothing is entered, or a function that returns the default value(s). If defined as a function, the first parameter will be the current inquirer session answers.choices
: <array| (rootObject
: object) => array > Choices array or a function returning a choices array. If defined as a function, the first parameter will be the current inquirer session answers. Array values can be simple numbers, strings, or objects containing a name (to display in list), a value (to save in the answers hash) and a short (to display after selection) properties. The choices array can also contain a Separator.validate
: < (input
: string,hash
: object) => boolean > Receive the user input and answers hash. Should return true if the value is valid, and an error message (String) otherwise. If false is returned, a default error message is provided.filter
: <input
=> string > Receive the user input and return the filtered value to be used inside the program. The value returned will be added to the Answers hash.transformer
: < (input
: string,hash
: object,flags
: object) => string > Receive the user input, answers hash and option flags, and return a transformed value to display to the user. The transformation only impacts what is shown while editing. It does not modify the answers hash.when
: <hash
=> boolean > Receive the current user answers hash and should return true or false depending on whether or not this question should be asked. The value can also be a simple boolean.pageSize
: <number> Change the number of lines that will be rendered when using list, rawList, expand or checkbox.prefix
: <string> Change the default prefix message.suffix
: <string> Change the default suffix message.
DefaultQuestions
Default templates for Question
- password
name | type | message | validate
---- | ---- | ------- | --------
'password'
| 'password'
| 'Please enter a password :'
| function
- `validate`: Password must be 4 characters or more
- **else** `'Password should contain at least 4 characters'`
confirm
name | type | message ---- | ---- | -------
'confirm'
|'confirm'
|'Are you sure?'
name
name | type | message | filter | transformer | validate ---- | ---- | ------- | ------ | ----------- | --------
'name'
|'input'
|'Enter full name :'
| function | function | functionfilter
: Autocapitalise first charactervalidate
: A least one character must be presenttransform
: Autocapitalise first character, colorise when [Enter] is pressed
username
name | type | message | validate ---- | ---- | ------- | --------
'username'
|'input'
|'Enter user name :'
| functionvalidate
: A least one character must be present
email
name | type | message | transformer | validate ---- | ---- | ------- | ----------- | --------
'email'
|'input'
|'Enter your email :'
| function | functionvalidate
: Email must be valid- else
'Email invalid'
- else
transform
: Colorise email once email is valid
dateofbirth
name | type | message | filter | transformer | validate | suffix ---- | ---- | ------- | ------ | ----------- | -------- | ------
'dateofbirth'
|'input'
|'Date Of Birth '
| function | function | function |'[ddmmyy]:'
filter
: Insert separator'/'
to date in answersvalidate
: Must be a valid date in the format 'dd/mm/yy'- else
'Date of birth should match the format [dd/mm/yy]'
- else
transform
: Insert separator'/'
to date on input
More Examples
Check out some examples in the examples
folder
$ node examples/form.js
$ node examples/login.js
$ node examples/password.js
Development
Building
Feel free to clone, use in adherance to the license and perhaps send pull requests
git clone https://github.com/miraclx/ninjaQuery.git
cd ninjaquery
npm install
# hack on code
npm run build
License
Apache 2.0 © Miraculous Owonubi (@miraclx) <omiraculous@gmail.com>