# prompt-question

> Question object, used by Enquirer and prompt plugins.

Latest version **5.0.2** (published 2017-08-31) · MIT license · 0 weekly downloads

## Install

```sh
npm install prompt-question
pnpm add prompt-question
yarn add prompt-question
bun add prompt-question
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 5.0.2 |
| Published | 2017-08-31 |
| First published | 2016-08-30 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=4.0.0 |
| Dependencies | 7 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 5 |
| Author | Jon Schlinkert |
| Maintainers | jonschlinkert |
| Keywords | answer, answers, ask, bar, bottom, checkbox, choice, cli, command, enquirer, input, inquire, inquirer, interact, list, menu, password, prompt, prompts, question, readline, stdin, stdout, terminal, tty, ui |

## Links

- npm: https://www.npmjs.com/package/prompt-question
- Repository: https://github.com/enquirer/prompt-question
- Issues: https://github.com/enquirer/prompt-question/issues
- npm.io page: https://npm.io/package/prompt-question

## Dependencies (7)

- [debug](https://npm.io/package/debug.md) ^3.0.1
- [koalas](https://npm.io/package/koalas.md) ^1.0.2
- [kind-of](https://npm.io/package/kind-of.md) ^5.0.2
- [isobject](https://npm.io/package/isobject.md) ^3.0.1
- [clone-deep](https://npm.io/package/clone-deep.md) ^1.0.0
- [prompt-choices](https://npm.io/package/prompt-choices.md) ^4.0.5
- [define-property](https://npm.io/package/define-property.md) ^1.0.0

## Alternatives

- [@salesforce/cli](https://npm.io/package/@salesforce/cli.md) — 389.7K weekly downloads
- [@mintlify/cli](https://npm.io/package/@mintlify/cli.md) — 208.9K weekly downloads
- [@grafana/e2e-selectors](https://npm.io/package/@grafana/e2e-selectors.md) — 128.7K weekly downloads
- [mintlify](https://npm.io/package/mintlify.md) — 112.0K weekly downloads
- [@intlayer/cli](https://npm.io/package/@intlayer/cli.md) — 22.8K weekly downloads

## Recent versions

- 5.0.2 (latest) — 2017-08-31
- 5.0.1 — 2017-07-08
- 5.0.0 — 2017-07-08
- 4.0.3 — 2017-06-05
- 4.0.2 — 2017-06-04
- 4.0.1 — 2017-06-02
- 4.0.0 — 2017-05-28
- 3.0.3 — 2017-05-23
- 3.0.2 — 2017-05-22
- 3.0.1 — 2017-05-21
- 3.0.0 — 2017-05-21
- 2.1.0 — 2017-05-17
- 2.0.1 — 2017-05-13
- 2.0.0 — 2017-05-10
- 1.0.0 — 2017-04-29
- … 8 more at https://npm.io/package/prompt-question/versions

## README

# prompt-question [![NPM version](https://img.shields.io/npm/v/prompt-question.svg?style=flat)](https://www.npmjs.com/package/prompt-question) [![NPM monthly downloads](https://img.shields.io/npm/dm/prompt-question.svg?style=flat)](https://npmjs.org/package/prompt-question) [![NPM total downloads](https://img.shields.io/npm/dt/prompt-question.svg?style=flat)](https://npmjs.org/package/prompt-question) [![Linux Build Status](https://img.shields.io/travis/enquirer/prompt-question.svg?style=flat&label=Travis)](https://travis-ci.org/enquirer/prompt-question)

> Question object, used by Enquirer and prompt plugins.

## Install

Install with [npm](https://www.npmjs.com/):

```sh
$ npm install --save prompt-question
```

## Usage

The main export is a constructor function that is used to create new `Question` objects, which are used in prompts by [base-prompt][].

```js
var Question = require('prompt-question');
var question = new Question('color', 'What is favorite color?');
```

**Examples**

Any of the following signatures may be used:

```js
var question = new Question('color'); // sets message as the same value as `name`
var question = new Question('color', 'What is favorite color?');
var question = new Question('color', {message: 'What is favorite color?'});
var question = new Question({name: 'color', message: 'What is favorite color?'});
var question = new Question({name: 'color'});
```

## API

### [Question](index.js#L29)

Create a new question with the given `name`, `message` and `options`.

**Params**

* `name` **{String|Object}**: Question name or options.
* `message` **{String|Object}**: Question message or options.
* `options` **{String|Object}**: Question options.

**Example**

```js
var question = new Question('first', 'What is your first name?');
console.log(question);
// {
//   type: 'input',
//   name: 'color',
//   message: 'What is your favorite color?'
// }
```

### [.clone](index.js#L71)

Clone the question instance.

* `returns` **{Object}**: Returns the cloned question

**Example**

```js
var clonedQuestion = question.clone();
```

### [.addChoices](index.js#L95)

Add formatted choice objects to the `question.choices` array. See [prompt-choices](https://github.com/enquirer/prompt-choices) for more details.

**Params**

* `choices` **{String|Array}**: One or more choices to add.
* `returns` **{Object}**: Returns the question instance for chaining

**Example**

```js
question.addChoices(['foo', 'bar', 'baz']);
```

### [.addChoice](index.js#L112)

Add a choice to `question.choices` array. See [prompt-choices](https://github.com/enquirer/prompt-choices) for more details.

**Params**

* `choice` **{String|Object}**
* `returns` **{Object}**: Returns the question instance for chaining

**Example**

```js
question.addChoice('foo');
```

### [.getDefault](index.js#L142)

Returns the given `val` or `question.default` if `val` is undefined or null.

**Params**

* `val` **{any}**
* `returns` **{any}**

**Example**

```js
var question = new Question({
  name: 'first',
  message: 'First name'?,
  default: 'Bob'
});

console.log(question.getAnswer());
//=> 'Bob'
console.log(question.getAnswer('Joe'));
//=> 'Joe'
console.log(question.getAnswer(false));
//=> false
console.log(question.getAnswer(0));
//=> 0
```

### [.getChoice](index.js#L186)

Get the given choice from `questions.choices`.

**Params**

* `val` **{any}**
* `returns` **{any}**

**Example**

```js
var Question = require('prompt-question');
var question = new Question('color', 'What is your favorite color?', {
  choices: ['red', 'blue', 'yellow']
});
console.log(question.getChoice('red'));
//=> Choice { name: 'red', short: 'red', value: 'red', checked: false }
```

### [.separator](index.js#L195)

Create a separator using [choices-separator](https://github.com/enquirer/choices-separator).

### [.hasDefault](index.js#L207)

Getter that returns true if a `default` value has been defined.

* `returns` **{Boolean}**: True if a default value is defined.

### [.checkbox](index.js#L229)

Getter/setter for the checkbox symbols to use.

* `returns` **{Object}**: Checkbox object with `.on`, `.off` and `.disabled` properties.

**Example**

```js
var question = new Question({
  name: 'foo',
  checkbox: {off: '[ ]', on: '[x]', disabled: 'X'}
});
// or
question.checkbox = {off: '[ ]', on: '[x]', disabled: 'X'};
```

### [.choices](index.js#L253)

Getter/setter for getting and setting choices (if applicable).

* `returns` **{Object}**: Returns an instance of [prompt-choices](https://github.com/enquirer/prompt-choices)

**Example**

```js
var question = new Question();
question.choices = ['a', 'b', 'c'];
```

### [.Question.isQuestion](index.js#L288)

Static method that returns true if `question` is a valid question object.

**Params**

* `question` **{Object}**
* `returns` **{Boolean}**

**Example**

```js
console.log(Question.isQuestion('foo'));
//=> false
console.log(Question.isQuestion(new Question('What is your name?')));
//=> true
```

### [.Question.choices](index.js#L305)

Static method for creating a new `Choices` object. See [prompt-choices](https://github.com/enquirer/prompt-choices) for more details.

**Params**

* `choices` **{Array}**: Array of choices
* `returns` **{Object}**: Returns an intance of Choices.

**Example**

```js
var choices = new Question.Choices(['foo', 'bar', 'baz']);
```

### [.Question.Separator](index.js#L320)

Static method for creating a new `Separator` object. See [choices-separator](https://github.com/enquirer/choices-separator) for more details.

**Params**

* `separator` **{String}**: Optionally pass a string to use as the separator.
* `returns` **{Object}**: Returns a separator object.

**Example**

```js
new Question.Separator();
```

## Release history

### v5.0.0

* Support `.choices` as a function

### v4.0.0

* bumps [prompt-choices](https://github.com/enquirer/prompt-choices)

### v3.0.0

* bumps [prompt-choices](https://github.com/enquirer/prompt-choices)

### v2.0.0

* bumps [prompt-choices](https://github.com/enquirer/prompt-choices). A major bump was warranted due to potentially breaking changes in prompt-choices. Please see that library for more details.

## About

### Related projects

* [choices-separator](https://www.npmjs.com/package/choices-separator): Separator for choices arrays in prompts. Based on the Separator from inquirer. | [homepage](https://github.com/enquirer/choices-separator "Separator for choices arrays in prompts. Based on the Separator from inquirer.")
* [enquirer](https://www.npmjs.com/package/enquirer): Intuitive, plugin-based prompt system for node.js. | [homepage](http://enquirer.io "Intuitive, plugin-based prompt system for node.js.")
* [prompt-choices](https://www.npmjs.com/package/prompt-choices): Create an array of multiple choice objects for use in prompts. | [homepage](https://github.com/enquirer/prompt-choices "Create an array of multiple choice objects for use in prompts.")
* [readline-utils](https://www.npmjs.com/package/readline-utils): Readline utils, for moving the cursor, clearing lines, creating a readline interface, and more. | [homepage](https://github.com/enquirer/readline-utils "Readline utils, for moving the cursor, clearing lines, creating a readline interface, and more.")

### Contributing

Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).

Please read the [contributing guide](.github/contributing.md) for advice on opening issues, pull requests, and coding standards.

### Building docs

_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_

To generate the readme, run the following command:

```sh
$ npm install -g verbose/verb#dev verb-generate-readme && verb
```

### Running tests

Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:

```sh
$ npm install && npm test
```

### Author

**Jon Schlinkert**

* [github/jonschlinkert](https://github.com/jonschlinkert)
* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)

### License

Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
Released under the [MIT License](LICENSE).

***

_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on July 08, 2017._

---
_Source: https://npm.io/package/prompt-question · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
