
Research
Security News
Lazarus Strikes npm Again with New Wave of Malicious Packages
The Socket Research Team has discovered six new malicious npm packages linked to North Korea’s Lazarus Group, designed to steal credentials and deploy backdoors.
question-store
Advanced tools
Ask questions, persist the answers. Basic support for i18n and storing answers based on current working directory.
Ask questions, persist the answers. Basic support for i18n and storing answers based on current working directory.
(TOC generated by verb using markdown-toc)
Install with npm:
$ npm install question-store --save
Similar to question-cache, but persists answers to disk and supports locales and storing answers based on current working directory.
var Questions = require('question-store');
Create an instance of Questions
with the given options
.
Params
options
{Object}: question store optionsExample
var Questions = new Questions(options);
Create stores for persisting data across sessions.
globals
: Persist non-project-specific answers when question.options.global
is truestore
: Persist project-specific answershints
: Persist project-specific hints. This is used to populate the question.default
value.Params
options
{Object}returns
{Object}Calls addQuestion, with the only difference being that .set
returns the questions
instance and .addQuestion
returns the question object. So use .set
if you want to chain questions, or .addQuestion
if you need the created question object.
Params
name
{Object|String}: Question name, message (string), or question/options object.value
{Object|String}: Question message (string), or question/options object.options
{Object|String}: Question/options object.Example
questions
.set('drink', 'What is your favorite beverage?')
.set('color', 'What is your favorite color?')
.set('season', 'What is your favorite season?');
// or
questions.set('drink', {
type: 'input',
message: 'What is your favorite beverage?'
});
// or
questions.set({
name: 'drink'
type: 'input',
message: 'What is your favorite beverage?'
});
Add a question to be asked at a later point. Creates an instance of Question, so any Question
options or settings may be used. Also, the default type
is input
if not defined by the user.
Params
name
{Object|String}: Question name, message (string), or question/options object.value
{Object|String}: Question message (string), or question/options object.options
{Object|String}: Question/options object.Example
questions.addQuestion('drink', 'What is your favorite beverage?');
// or
questions.addQuestion('drink', {
type: 'input',
message: 'What is your favorite beverage?'
});
// or
questions.addQuestion({
name: 'drink'
type: 'input',
message: 'What is your favorite beverage?'
});
Create a "choices" question from an array of values.
Params
queue
{String|Array}: Name or array of question names.options
{Object|Function}: Question options or callback functioncallback
{Function}: callback functionExample
questions.choices('foo', ['a', 'b', 'c']);
// or
questions.choices('foo', {
message: 'Favorite letter?',
choices: ['a', 'b', 'c']
});
Create a "list" question from an array of values.
Params
queue
{String|Array}: Name or array of question names.options
{Object|Function}: Question options or callback functioncallback
{Function}: callback functionExample
questions.list('foo', ['a', 'b', 'c']);
// or
questions.list('foo', {
message: 'Favorite letter?',
choices: ['a', 'b', 'c']
});
Create a "rawlist" question from an array of values.
Params
queue
{String|Array}: Name or array of question names.options
{Object|Function}: Question options or callback functioncallback
{Function}: callback functionExample
questions.rawlist('foo', ['a', 'b', 'c']);
// or
questions.rawlist('foo', {
message: 'Favorite letter?',
choices: ['a', 'b', 'c']
});
Create an "expand" question from an array of values.
Params
queue
{String|Array}: Name or array of question names.options
{Object|Function}: Question options or callback functioncallback
{Function}: callback functionExample
questions.expand('foo', ['a', 'b', 'c']);
// or
questions.expand('foo', {
message: 'Favorite letter?',
choices: ['a', 'b', 'c']
});
Create a "choices" question from an array of values.
Params
queue
{String|Array}: Name or array of question names.options
{Object|Function}: Question options or callback functioncallback
{Function}: callback functionExample
GFM_5
Get question name
, or group name
if question is not found. You can also do a direct lookup using quesions.cache['foo']
.
Params
name
{String}returns
{Object}: Returns the question object.Example
var name = questions.get('name');
//=> question object
Returns true if questions.cache
or questions.groups
has question name
.
returns
{String}: The name of the question to checkExample
var name = questions.has('name');
//=> true
Delete the given question or any questions that have the given namespace using dot-notation.
returns
{String}: The name of the question to deleteExample
questions.del('name');
questions.get('name');
//=> undefined
// using dot-notation
questions.del('author');
questions.get('author.name');
//=> undefined
Clear all cached answers.
Example
questions.clearAnswers();
Clear all questions from the cache.
Example
questions.clearQuestions();
Clear all cached questions and answers.
Example
questions.clear();
Ask one or more questions, with the given options
and callback.
Params
queue
{String|Array}: Name or array of question names.options
{Object|Function}: Question options or callback functioncallback
{Function}: callback functionExample
questions.ask(['name', 'description'], function(err, answers) {
console.log(answers);
});
Normalize the given value to return an array of question keys.
Params
returns
{[type]}Create new Question
store name
, with the given options
.
Params
name
{String}: The question property name.options
{Object}: Store optionsExample
var question = new Question(name, options);
Optionally define the next question to ask by setting a custom next
function on the question object.
Params
answer
{Object}questions
{Object}answers
{Object}next
{Function}returns
{Function}Example
questions.choice('deps', 'Where?')
questions.set('install', 'Want to install?', {
type: 'confirm',
next: function(answer, questions, answers, cb) {
if (answer === true) {
questions.ask('config.other', cb);
} else {
cb(null, answers);
}
}
});
Resolve the answer for the question from the given data sources, then set the question's default
value with any stored hints or answers if not already defined.
Params
answers
{Object}data
{Object}store
{Object}hints
{Object}returns
{Object}Example
question.answer(answers, data, store, hints);
Force the question to be asked.
returns
{undefined}Example
question.force();
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
Generate readme and API documentation with verb:
$ npm install verb && npm run docs
Or, if verb is installed globally:
$ verb
Install dev dependencies:
$ npm install -d && npm test
Jon Schlinkert
Copyright © 2016 Jon Schlinkert Released under the MIT license.
This file was generated by verb, v0.9.0, on February 27, 2016.
FAQs
Ask questions, persist the answers. Basic support for i18n and storing answers based on current working directory.
The npm package question-store receives a total of 27,116 weekly downloads. As such, question-store popularity was classified as popular.
We found that question-store demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
The Socket Research Team has discovered six new malicious npm packages linked to North Korea’s Lazarus Group, designed to steal credentials and deploy backdoors.
Security News
Socket CEO Feross Aboukhadijeh discusses the open web, open source security, and how Socket tackles software supply chain attacks on The Pair Program podcast.
Security News
Opengrep continues building momentum with the alpha release of its Playground tool, demonstrating the project's rapid evolution just two months after its initial launch.