ninja_query
v0.3.3
Published
Middlelayer for Inquirer.js to allow prompting even when output is piped
Readme
NinjaQuery
Middlelayer for Inquirer.js to allow prompting even when output is piped
Installing
Via NPM:
npm install ninja_queryUsage
// 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'`confirmname | type | message ---- | ---- | -------
'confirm'|'confirm'|'Are you sure?'namename | 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
usernamename | type | message | validate ---- | ---- | ------- | --------
'username'|'input'|'Enter user name :'| functionvalidate: A least one character must be present
emailname | 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
dateofbirthname | 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.jsDevelopment
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 buildLicense
Apache 2.0 © Miraculous Owonubi (@miraclx) <[email protected]>

