UNPKG

@kba-tools/genesis-tool

Version:

A forked repo from ConsenSys which helps to generate genesis block for Besu Network with xemptyBlockPeriod field.

133 lines 10.9 kB
"use strict"; 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.QuestionRenderer = void 0; const readline_1 = __importDefault(require("readline")); class QuestionRenderer { constructor(questions, forceDefaults) { this._questions = questions; this._forceDefaults = !!forceDefaults; } render() { return __awaiter(this, void 0, void 0, function* () { const answers = {}; const rl = readline_1.default.createInterface(process.stdin, process.stdout); try { let question = this._questions; while (question) { if (question.options) { question = yield this._handleOptionsQuestion(rl, question, answers); } else if (question.transformerValidator) { question = yield this._handleTransformerQuestion(rl, question, answers); } else { throw new Error(`BUG! Question '${question.name}' does not include multiple choice options or a free form input transformer.`); } } } finally { rl.close(); } return answers; }); } _handleOptionsQuestion(rl, question, answers) { return __awaiter(this, void 0, void 0, function* () { let prompt = question.prompt + "\n"; if (!question.options) { throw new Error(`BUG! Question '${question.name}' does not include any options from which to select`); } let defaultOption = null; for (let i = 1; i < question.options.length + 1; i++) { const option = question.options[i - 1]; if (option.default && !defaultOption) { defaultOption = option; } prompt += `\t${i}. ${option.label}\n`; } const rawInput = yield this._askQuestion(rl, prompt); const choice = parseInt(rawInput, 10); if (choice >= 1 && choice <= question.options.length) { const selectedOption = question.options[choice - 1]; // we're 1 indexed on the answers here if (question.transformerValidator) { return this._handleTransformerAnswer(question, selectedOption.value, answers, selectedOption.nextQuestion); } else { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment answers[question.name] = selectedOption.value; return selectedOption.nextQuestion; } } else if (rawInput === "" && defaultOption !== null) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment answers[question.name] = defaultOption.value; return defaultOption.nextQuestion; } else { return question; } }); } _handleTransformerQuestion(rl, question, answers) { return __awaiter(this, void 0, void 0, function* () { const prompt = question.prompt; if (!question.transformerValidator) { throw new Error(`BUG! Question '${question.name}' does not include a transformer to handle free form entry.`); } const rawInput = yield this._askQuestion(rl, prompt); return this._handleTransformerAnswer(question, rawInput.trim(), answers); }); } _handleTransformerAnswer(question, rawInput, // eslint-disable-line @typescript-eslint/explicit-module-boundary-types answers, fallbackQuestion) { return __awaiter(this, void 0, void 0, function* () { if (!question.transformerValidator) { throw new Error(`BUG! Question '${question.name}' does not include a transformer to handle free form entry.`); } try { let nextQuestion = question.transformerValidator(rawInput, answers); if (nextQuestion && typeof nextQuestion.then === 'function') { nextQuestion = yield nextQuestion; } return nextQuestion ? nextQuestion : fallbackQuestion; } catch (_a) { return question; } }); } _askQuestion(rl, prompt) { const forceDefaults = this._forceDefaults; if (!prompt.endsWith("\n")) { prompt += "\n"; } return new Promise((resolve, reject) => { try { if (forceDefaults) { resolve(""); } else { rl.question(prompt, resolve); } } catch (err) { reject(err); } }); } } exports.QuestionRenderer = QuestionRenderer; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25SZW5kZXJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9xdWVzdGlvblJlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUNBLHdEQUE4QztBQUU5QyxNQUFhLGdCQUFnQjtJQUkzQixZQUFZLFNBQXVCLEVBQUUsYUFBdUI7UUFDMUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDO0lBQ3hDLENBQUM7SUFFSyxNQUFNOztZQUNWLE1BQU0sT0FBTyxHQUFjLEVBQUUsQ0FBQztZQUM5QixNQUFNLEVBQUUsR0FBRyxrQkFBUSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUVuRSxJQUFJLENBQUM7Z0JBQ0gsSUFBSSxRQUFRLEdBQTZCLElBQUksQ0FBQyxVQUFVLENBQUM7Z0JBRXpELE9BQU8sUUFBUSxFQUFFLENBQUM7b0JBQ2hCLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUNyQixRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDdEUsQ0FBQzt5QkFBTSxJQUFJLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO3dCQUN6QyxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDMUUsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLFFBQVEsQ0FBQyxJQUFJLDhFQUE4RSxDQUFDLENBQUM7b0JBQ2pJLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7b0JBQVMsQ0FBQztnQkFDVCxFQUFFLENBQUMsS0FBSyxF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