UNPKG

1.7 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.addInteractionListener = addInteractionListener;
7exports.pauseInteractions = pauseInteractions;
8exports.prompt = prompt;
9exports.resumeInteractions = resumeInteractions;
10function _prompts() {
11 const data = _interopRequireDefault(require("prompts"));
12 _prompts = function () {
13 return data;
14 };
15 return data;
16}
17var _errors = require("./errors");
18var _logger = _interopRequireDefault(require("./logger"));
19function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20/** Interaction observers for detecting when keystroke tracking should pause/resume. */
21const listeners = [];
22async function prompt(question, options = {}) {
23 pauseInteractions();
24 try {
25 const results = await (0, _prompts().default)(question, {
26 onCancel() {
27 throw new _errors.CLIError('Prompt cancelled.');
28 },
29 ...options
30 });
31 return results;
32 } finally {
33 resumeInteractions();
34 }
35}
36function pauseInteractions(options = {}) {
37 _logger.default.debug('Interaction observers paused');
38 for (const listener of listeners) {
39 listener({
40 pause: true,
41 ...options
42 });
43 }
44}
45
46/** Notify all listeners that keypress observations can start.. */
47function resumeInteractions(options = {}) {
48 _logger.default.debug('Interaction observers resumed');
49 for (const listener of listeners) {
50 listener({
51 pause: false,
52 ...options
53 });
54 }
55}
56
57/** Used to pause/resume interaction observers while prompting (made for TerminalUI). */
58function addInteractionListener(callback) {
59 listeners.push(callback);
60}
61
62//# sourceMappingURL=prompt.ts.map
\No newline at end of file