UNPKG

@viewdo/dxp-story-cli

Version:

DXP Story Management CLI

135 lines 5.84 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; 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()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.PromptService = void 0; const inquirer_1 = __importDefault(require("inquirer")); /* https://github.com/SBoudrias/Inquirer.js */ const ConsoleService_1 = require("./ConsoleService"); const typedi_1 = require("typedi"); let PromptService = class PromptService { constructor(console) { this.console = console; this.prompter = inquirer_1.default.createPromptModule(); this.prefix = this.console.prefix; } validateEmail(email) { return /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(email); } validateFolder(folder) { return /^\.[a-zA-Z0-9_ \/-]*$/.test(folder); } validateKey(key) { return /^[A-Za-z0-9-_]{1,50}$/.test(key); } validateCode(code) { return /^[0-9]{6}/.test(code); } validateNotEmpty(value) { return /.+/.test(value); } validateAny(value) { return true; } askIf(question, default_value = false) { return this.prompter([{ type: 'confirm', name: 'answer', message: question, default: default_value, prefix: this.prefix }]) .then(({ answer }) => answer); } askFor(message, default_value, validate = this.validateAny, type = 'input', required = false) { // required inputs must have a non-empty value if (required && !validate) validate = this.validateNotEmpty; return this.prompter([{ type, name: 'value', message: required ? `${message} (required) ` : message, validate: validate, default: default_value, prefix: this.prefix, }]) .then(({ value }) => value); } askWhich(question, options, preselect, allowNew) { var choices = [...options]; if (allowNew) choices = [...options, "<new>"]; if (choices.length == 1) return Promise.resolve(choices[0].value || choices[0]); return this.prompter({ type: 'list', name: 'option', message: question, choices, default: preselect, prefix: this.prefix }) .then((_a) => __awaiter(this, [_a], void 0, function* ({ option }) { if (option == "<new>") option = yield this.askFor(question, preselect); return option; })); } askSensitive(question) { return this.prompter({ type: 'password', name: 'value', message: question, mask: true, prefix: this.prefix }) .then(({ value }) => value); } selectFromKeys(model_1, configured_keys_1, action_name_1) { return __awaiter(this, arguments, void 0, function* (model, configured_keys, action_name, allow_new = false, all = false) { if (configured_keys.length == 0) // no keys, ask for one return [yield this.askFor(`${model} Key`, null, this.validateKey)]; if (configured_keys.length > 1 && !all) { // multi key config let [all_text, new_text] = ['<all>', '<new>']; let choices = [all_text, ...configured_keys]; if (allow_new) choices.push(new_text); let option = yield this.askWhich(`${action_name} `, choices, all_text); // new key if (option === new_text) return [yield this.askFor(`${model} Key`, null, this.validateKey)]; // selected key else if (option !== all_text) return [option]; } return configured_keys; }); } }; exports.PromptService = PromptService; exports.PromptService = PromptService = __decorate([ (0, typedi_1.Service)(), __metadata("design:paramtypes", [ConsoleService_1.ConsoleService]) ], PromptService); //# sourceMappingURL=PromptService.js.map