UNPKG

@mail-core/cli

Version:

Инструментарий для написания cli-скриптов

76 lines 2.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isSpinnerInstance = exports.spinnerFromPromise = exports.createSpinner = exports.stopAllSpinners = void 0; const ora_1 = require("ora"); const ora = require("ora"); const interactive_1 = require("../interactive/interactive"); const __spinners__ = []; function stopAllSpinners(as, text) { __spinners__.forEach((spinner) => { if (spinner.isSpinning) { spinner[as](text); } }); } exports.stopAllSpinners = stopAllSpinners; function createSpinner() { if (isPromiseLike(arguments[0])) { return ora_1.promise(arguments[0], arguments[1]); } const options = Object.assign({ stream: process.stdout }, arguments[0]); const spinner = ora(options); const start = spinner.start; spinner.start = function (...args) { interactive_1.interactiveToolNewLine.touch(options.prefixText); return start.apply(this, args); }; __spinners__.push(spinner); autoStart(spinner, options); spinner.done = spinner.succeed; spinner.status = function (text) { const _priv = this; if (!_priv._origText) { _priv._origText = this.text; } if (text == null) { if (_priv._origText) { this.text = _priv._origText; } _priv._origText = undefined; } else { this.text = `${_priv._origText}: ${text}`; } }; spinner.try = function (executer, complete) { try { const result = executer(this); this.succeed(); complete && complete(this); return result; } catch (err) { this.fail(); complete && complete(this, err); return undefined; } }; return spinner; } exports.createSpinner = createSpinner; function spinnerFromPromise(action, options) { createSpinner(action, options); return action; } exports.spinnerFromPromise = spinnerFromPromise; function isSpinnerInstance(val) { return !!(val && typeof val === 'object' && typeof val.start === 'function'); } exports.isSpinnerInstance = isSpinnerInstance; function isPromiseLike(value) { return value && typeof value.then === 'function'; } function autoStart(spinner, options) { spinner[options && options.autoStart !== false ? 'start' : 'stop'](); } //# sourceMappingURL=spinner.js.map