UNPKG

1.43 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const deps_1 = require("./deps");
4class Prompt extends deps_1.default.Base {
5 prompt(name, inputOptions = {}) {
6 const options = Object.assign({ isTTY: !!(process.env.TERM !== 'dumb' && process.stdin.isTTY), name, prompt: name ? deps_1.default.chalk.dim(`${name}: `) : deps_1.default.chalk.dim('> '), type: 'normal' }, inputOptions);
7 switch (options.type) {
8 case 'normal':
9 return this.normal(options);
10 case 'mask':
11 case 'hide':
12 return deps_1.default.passwordPrompt(options.prompt, { method: options.type });
13 default:
14 throw new Error(`unexpected type ${options.type}`);
15 }
16 }
17 normal(options, retries = 100) {
18 if (retries < 0)
19 throw new Error('no input');
20 return new Promise(resolve => {
21 process.stdin.setEncoding('utf8');
22 this.stderr.write(options.prompt);
23 process.stdin.resume();
24 process.stdin.once('data', data => {
25 process.stdin.pause();
26 data = data.trim();
27 if (data === '') {
28 resolve(this.normal(options, retries - 1));
29 }
30 else {
31 resolve(data);
32 }
33 });
34 });
35 }
36}
37exports.default = Prompt;