45 lines
4.9 KiB
JavaScript
45 lines
4.9 KiB
JavaScript
|
"use strict";
|
||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||
|
};
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
const tty_1 = __importDefault(require("tty"));
|
||
|
const elegant_spinner_1 = __importDefault(require("elegant-spinner"));
|
||
|
const log_update_async_hook_1 = __importDefault(require("log-update-async-hook"));
|
||
|
const chalk_1 = __importDefault(require("chalk"));
|
||
|
const is_ci_1 = __importDefault(require("is-ci"));
|
||
|
// NOTE: To support piping, we use stderr as the log output
|
||
|
// stream, while stdout is used for the report output.
|
||
|
exports.default = {
|
||
|
animation: null,
|
||
|
isAnimated: tty_1.default.isatty(1) && !is_ci_1.default,
|
||
|
showSpinner() {
|
||
|
// NOTE: we can use the spinner only if stdout is a TTY and we are not in CI environment (e.g. TravisCI),
|
||
|
// otherwise we can't repaint animation frames. Thanks https://github.com/sindresorhus/ora for insight.
|
||
|
if (this.isAnimated) {
|
||
|
const spinnerFrame = (0, elegant_spinner_1.default)();
|
||
|
this.animation = setInterval(() => {
|
||
|
const frame = chalk_1.default.cyan(spinnerFrame());
|
||
|
(0, log_update_async_hook_1.default)(frame);
|
||
|
}, 50);
|
||
|
}
|
||
|
},
|
||
|
hideSpinner(isExit) {
|
||
|
if (this.animation) {
|
||
|
clearInterval(this.animation);
|
||
|
log_update_async_hook_1.default.clear();
|
||
|
if (isExit)
|
||
|
log_update_async_hook_1.default.done();
|
||
|
this.animation = null;
|
||
|
}
|
||
|
},
|
||
|
write(text) {
|
||
|
if (this.animation)
|
||
|
this.hideSpinner();
|
||
|
console.log(text);
|
||
|
if (this.animation)
|
||
|
this.showSpinner();
|
||
|
},
|
||
|
};
|
||
|
module.exports = exports.default;
|
||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS9sb2cuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4Q0FBc0I7QUFDdEIsc0VBQTZDO0FBQzdDLGtGQUE4QztBQUM5QyxrREFBMEI7QUFDMUIsa0RBQXlCO0FBRXpCLDJEQUEyRDtBQUMzRCxzREFBc0Q7QUFDdEQsa0JBQWU7SUFDWCxTQUFTLEVBQUcsSUFBSTtJQUNoQixVQUFVLEVBQUUsYUFBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQUk7SUFFbEMsV0FBVztRQUNQLHlHQUF5RztRQUN6Ryx1R0FBdUc7UUFDdkcsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2pCLE1BQU0sWUFBWSxHQUFHLElBQUEseUJBQWMsR0FBRSxDQUFDO1lBRXRDLElBQUksQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtnQkFDOUIsTUFBTSxLQUFLLEdBQUcsZUFBSyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO2dCQUV6QyxJQUFBLCtCQUFTLEVBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQ1Y7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFFLE1BQU07UUFDZixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDaEIsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM5QiwrQkFBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRWxCLElBQUksTUFBTTtnQkFDTiwrQkFBUyxDQUFDLElBQUksRUFBRSxDQUFDO1lBRXJCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBRSxJQUFJO1FBQ1AsSUFBSSxJQUFJLENBQUMsU0FBUztZQUNkLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUV2QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWxCLElBQUksSUFBSSxDQUFDLFNBQVM7WUFDZCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDM0IsQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHR5IGZyb20gJ3R0eSc7XG5pbXBvcnQgZWxlZ2FudFNwaW5uZXIgZnJvbSAnZWxlZ2FudC1zcGlubmVyJztcbmltcG9ydCBsb2dVcGRhdGUgZnJvbSAnbG9nLXVwZGF0ZS1hc3luYy1ob29rJztcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgaXNDSSBmcm9tICdpcy1jaSc7XG5cbi8vIE5PVEU6IFRvIHN1cHBvcnQgcGlwaW5nLCB3ZSB1c2Ugc3RkZXJyIGFzIHRoZSBsb2cgb3V0cHV0XG4vLyBzdHJlYW0sIHdoaWxlIHN0ZG91dCBpcyB1c2VkIGZvciB0aGUgcmVwb3J0IG91dHB1dC5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBhbmltYXRpb246ICBudWxsLFxuICAgIGlzQW5pbWF0ZWQ6IHR0eS5pc2F0dHkoMSkgJiYgIWlzQ0ksXG5cbiAgICBzaG93U3Bpbm5lciAoKSB7XG4gICAgICAgIC8vIE5PVEU6IHdlIGNhbiB1c2UgdGhlIHNwaW5uZXIgb25seSBpZiBzdGRvdXQgaXMgYSBUVFkgYW5kIHdlIGFyZSBub3QgaW4gQ0kgZW52aXJvbm1lbnQgKGUuZy4gVHJhdmlzQ0kpLFxuICAgICAgICAvLyBvdGhlcndpc2Ugd2UgY2FuJ3QgcmVwYWludCBhbmltYXRpb24gZnJhbWVzLiBUaGFua3MgaHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9vcmEgZm9yIGluc2lnaHQuXG4gICAgICAgIGlmICh0aGlzLmlzQW5pbWF0ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNwaW5uZXJGcmFtZSA9IGVsZWdhbnRTcGlubmVyKCk7XG5cbiAgICAgICAgICAgIHRoaXMuYW5pbWF0aW9uID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZyYW1lID0gY2hhbGsuY3lhbihzcGlubmVyRnJhbWUoKSk7XG5cbiAgICAgICAgICAgICAgICBsb2dVcGRhdGUoZnJhbWUpO1xuICAgICAgICAgICAgfSwgNTApO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIGhpZGVTcGlubmVyIChpc0V4aXQpIHtcbiAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuYW5pbWF0aW9uKTtcbiAgICAgICAgICAgIGxvZ1VwZGF0ZS5jbGVhcigpO1xuXG4gICAgICAgICAgICBpZiAoaXNFeGl0KVxuICAgICAgICAgICAgICAgIGxvZ1VwZGF0ZS5kb25lKCk7XG5cbiAgICAgICAgICAgIHRoaXMuYW5pbWF0aW9uID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICB3cml0ZSAodGV4dCkge1xuICAgICAgICBpZiAodGhpcy5hbmltYXRpb24pXG4gICAgICAgICAgICB0aGlzLmhpZGVTcGlubmVyKCk7XG5cbiAgICAgICAgY29uc29sZS5sb2codGV4dCk7XG5cbiAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uKVxuICAgICAgICAgICAgdGhpcy5zaG93U3Bpbm5lcigpO1xuICAgIH0sXG59O1xuXG4iXX0=
|