+++ /dev/null
-'use strict';
-/**
- * `confirm` type prompt
- */
-
-var _ = {
- extend: require('lodash/extend'),
- isBoolean: require('lodash/isBoolean'),
-};
-var chalk = require('chalk');
-var { take, takeUntil } = require('rxjs/operators');
-var Base = require('./base');
-var observe = require('../utils/events');
-
-class ConfirmPrompt extends Base {
- constructor(questions, rl, answers) {
- super(questions, rl, answers);
-
- var rawDefault = true;
-
- _.extend(this.opt, {
- filter: function (input) {
- var value = rawDefault;
- if (input != null && input !== '') {
- value = /^y(es)?/i.test(input);
- }
-
- return value;
- },
- });
-
- if (_.isBoolean(this.opt.default)) {
- rawDefault = this.opt.default;
- }
-
- this.opt.default = rawDefault ? 'Y/n' : 'y/N';
- }
-
- /**
- * Start the Inquiry session
- * @param {Function} cb Callback when prompt is done
- * @return {this}
- */
-
- _run(cb) {
- this.done = cb;
-
- // Once user confirm (enter key)
- var events = observe(this.rl);
- events.keypress.pipe(takeUntil(events.line)).forEach(this.onKeypress.bind(this));
-
- events.line.pipe(take(1)).forEach(this.onEnd.bind(this));
-
- // Init
- this.render();
-
- return this;
- }
-
- /**
- * Render the prompt to screen
- * @return {ConfirmPrompt} self
- */
-
- render(answer) {
- var message = this.getQuestion();
-
- if (typeof answer === 'boolean') {
- message += chalk.cyan(answer ? 'Yes' : 'No');
- } else {
- message += this.rl.line;
- }
-
- this.screen.render(message);
-
- return this;
- }
-
- /**
- * When user press `enter` key
- */
-
- onEnd(input) {
- this.status = 'answered';
-
- var output = this.opt.filter(input);
- this.render(output);
-
- this.screen.done();
- this.done(output);
- }
-
- /**
- * When user press a key
- */
-
- onKeypress() {
- this.render();
- }
-}
-
-module.exports = ConfirmPrompt;