@mendix/pluggable-widgets-tools
Version:
Mendix Pluggable Widgets Tools
42 lines (41 loc) • 1.99 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.confirm = confirm;
const ansi_colors_1 = require("ansi-colors");
const readline_1 = require("readline");
function confirm(prompt_1) {
return __awaiter(this, arguments, void 0, function* (prompt, defaultAnswer = true) {
const rl = (0, readline_1.createInterface)(process.stdin, process.stdout);
return ask().finally(() => {
process.stdout.write("\n");
rl.close();
});
function ask() {
return new Promise(resolve => {
rl.question(`${(0, ansi_colors_1.green)(ansi_colors_1.symbols.question)} ${(0, ansi_colors_1.bold)((0, ansi_colors_1.whiteBright)(prompt))} ${(0, ansi_colors_1.gray)(defaultAnswer ? "(Yes/no)" : "(yes/No)")} `, answer => {
if (answer.trim() === "") {
resolve(defaultAnswer);
}
else if (/^ye?s?$/i.test(answer)) {
resolve(true);
}
else if (/^no?$/i.test(answer)) {
resolve(false);
}
else {
resolve(ask());
}
});
});
}
});
}