inquirer
Version:
A collection of common interactive command line user interfaces.
72 lines (71 loc) • 1.87 kB
JavaScript
/**
* Inquirer.js
* A collection of common interactive command line user interfaces.
*/
import { input, select, number, confirm, rawlist, expand, checkbox, password, editor, Separator, } from '@inquirer/prompts';
import { default as PromptsRunner } from './ui/prompt.mjs';
const defaultPrompts = {
input,
select,
/** @deprecated `list` is now named `select` */
list: select,
number,
confirm,
rawlist,
expand,
checkbox,
password,
editor,
};
/**
* Create a new self-contained prompt module.
*/
export function createPromptModule(opt) {
function promptModule(questions, answers) {
const runner = new PromptsRunner(promptModule.prompts, opt);
try {
return runner.run(questions, answers);
}
catch (error) {
const promise = Promise.reject(error);
return Object.assign(promise, { ui: runner });
}
}
promptModule.prompts = { ...defaultPrompts };
/**
* Register a prompt type
*/
promptModule.registerPrompt = function (name, prompt) {
promptModule.prompts[name] = prompt;
return this;
};
/**
* Register the defaults provider prompts
*/
promptModule.restoreDefaultPrompts = function () {
promptModule.prompts = { ...defaultPrompts };
};
return promptModule;
}
/**
* Public CLI helper interface
*/
const prompt = createPromptModule();
// Expose helper functions on the top level for easiest usage by common users
function registerPrompt(name, newPrompt) {
prompt.registerPrompt(name, newPrompt);
}
function restoreDefaultPrompts() {
prompt.restoreDefaultPrompts();
}
const inquirer = {
prompt,
ui: {
Prompt: PromptsRunner,
},
createPromptModule,
registerPrompt,
restoreDefaultPrompts,
Separator,
};
export default inquirer;