UNPKG

mongoose-management

Version:
142 lines (141 loc) 5.51 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { 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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); /* tslint:disable:no-console */ const chalk_1 = __importDefault(require("chalk")); const inquirer_1 = require("inquirer"); const inquirer_fuzzy_path_1 = __importDefault(require("inquirer-fuzzy-path")); const ora_1 = __importDefault(require("ora")); const table_1 = require("table"); exports.regexpName = /^[a-z](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$|^$/; exports.regexpNameMessage = `Only letters, numbers and hyphens are allowed and the first character must be a small letter! (RegExp: ${exports.regexpName.source})`; exports.promptTableOptions = { drawHorizontalLine: () => false, border: Object.assign({}, table_1.getBorderCharacters('norc'), { bodyLeft: chalk_1.default.dim('|'), bodyRight: chalk_1.default.dim('|'), bodyJoin: chalk_1.default.dim('|') }), }; class Prompts { constructor(clearScreen = true) { this.clearScreen = clearScreen; this.options = { pageSize: 75, prefix: '🎃', filter: (value) => (typeof value === 'string' ? value.trim() : value), }; inquirer_1.registerPrompt('fuzzypath', inquirer_fuzzy_path_1.default); } exit() { return __awaiter(this, void 0, void 0, function* () { const { confirm } = yield this.call([ { type: 'confirm', name: 'confirm', message: 'Generator really quit?', default: false, }, ]); if (confirm) { console.log(); console.log(chalk_1.default.bold('Bye Bye 🖖')); console.log(); process.exit(); } }); } clear() { if (this.clearScreen) { // https://github.com/bahamas10/node-clear process.stdout.write('\x1b[2J'); process.stdout.write('\x1b[0f'); } } retry(message) { return __awaiter(this, void 0, void 0, function* () { const prefix = chalk_1.default.red('>>'); console.log(`${prefix} Error!`); console.log(`${prefix} ${message}`); const { retry } = yield this.call([ { type: 'confirm', name: 'retry', message: 'Retry?', default: false, }, ]); return retry; }); } remove(name) { return __awaiter(this, void 0, void 0, function* () { const { remove } = yield this.call([ { type: 'confirm', name: 'remove', message: `Really delete "${name}"?`, default: false, }, ]); return remove; }); } pressKey(messages, isError = false) { return __awaiter(this, void 0, void 0, function* () { if (messages) { let isException = false; if (messages instanceof Error) { isException = true; isError = true; messages = messages.stack ? messages.stack.split('\n') : messages.message.split('\n'); } const prefix = isError ? chalk_1.default.red('>>') : chalk_1.default.green('>>'); if (isError && !isException) { console.log(`${prefix} Error`); } if (Array.isArray(messages)) { messages.forEach((message) => console.log(`${prefix} ${message}`)); } else { console.log(`${prefix} ${messages}`); } console.log(prefix); } yield this.call([ { type: 'input', name: 'press', message: 'Press a key', }, ]); }); } call(questions) { return __awaiter(this, void 0, void 0, function* () { const result = yield inquirer_1.prompt(questions.map((question) => (Object.assign({}, this.options, question)))); return result; }); } menu(message, choices) { return __awaiter(this, void 0, void 0, function* () { const { value } = yield inquirer_1.prompt([ Object.assign({}, this.options, { type: 'list', name: 'value', message, choices }), ]); return value; }); } getSpinner() { return ora_1.default({ prefixText: chalk_1.default.green('>>'), }); } } exports.default = Prompts;