ninja_query
TypeScript icon, indicating that this package has built-in type declarations

0.3.3 • Public • Published

NinjaQuery

Middlelayer for Inquirer.js to allow prompting even when output is piped

NPM Version NPM Downloads

NPM

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])

  • question: <Question> Question block to be used
  • options: <Object> Password options
    • confirm: <string> Whether or not to request a re-enter for confirmation of input. Default: false
    • confirmMessage: <string> Message to print on the re-enter prompt. Default: 'Re enter password ?'
    • unmatchMessage: <string> Message to print when passwords don't match. Default: '[!] Password mismatch'
  • Returns: <Promise>

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 function
    • filter: Autocapitalise first character
    • validate: A least one character must be present
    • transform: Autocapitalise first character, colorise when [Enter] is pressed
  • username

    name type message validate
    'username' 'input' 'Enter user name :' function
    • validate: A least one character must be present
  • email

    name type message transformer validate
    'email' 'input' 'Enter your email :' function function
    • validate: Email must be valid
      • else 'Email invalid'
    • 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 answers
    • validate: Must be a valid date in the format 'dd/mm/yy'
      • else 'Date of birth should match the format [dd/mm/yy]'
    • 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>

Package Sidebar

Install

npm i ninja_query

Weekly Downloads

8

Version

0.3.3

License

Apache-2.0

Unpacked Size

29.8 kB

Total Files

7

Last publish

Collaborators

  • miraclx