@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
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());
});
};
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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