@embrace-io/react-native
Version:
A React Native wrapper for the Embrace SDK
38 lines (37 loc) • 1.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const inquirer = require("inquirer");
class Asker {
constructor() {
this.answers = {};
}
ask(...question) {
const cached = question.reduce((a, { name }) => {
if (this.answers[name]) {
a[name] = this.answers[name];
}
return a;
}, {});
if (Object.keys(cached).length === question.length) {
return Promise.resolve(cached);
}
const formatted = question
.reduce((a, question) => {
if (cached[question.name]) {
return a;
}
return [...a, question];
}, [])
.map(({ name, message }) => ({ type: "input", name, message }));
const prompt = inquirer.createPromptModule();
return prompt(formatted).then((ans) => {
if (ans) {
Object.keys(ans).forEach(key => {
this.answers[key] = ans[key];
});
}
return Object.assign(Object.assign({}, cached), ans);
});
}
}
exports.default = Asker;