@tecfancy/spinner
Version:
TecFancy spinner
34 lines • 1.22 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.spinnerStop = exports.spinnerStart = void 0;
const cli_spinners_1 = __importDefault(require("cli-spinners"));
let interval;
let currentSpinner;
/**
* Start the spinner
* @param message spinner message
* @param spinnerName spinner name
*/
function spinnerStart(message = "", spinnerName = "line") {
// choose a spinner style, default is 'line'
const spinner = cli_spinners_1.default[spinnerName];
currentSpinner = spinner;
// define the display logic of the spinner
let i = 0;
interval = setInterval(() => {
process.stdout.write(`\r${spinner.frames[(i = ++i % spinner.frames.length)]} ${message}`);
}, spinner.interval);
}
exports.spinnerStart = spinnerStart;
/** Stop the spinner */
function spinnerStop() {
// stop the spinner
clearInterval(interval);
// clear the last line of the spinner
process.stdout.write("\r" + " ".repeat(currentSpinner.frames[0].length) + "\r");
}
exports.spinnerStop = spinnerStop;
//# sourceMappingURL=index.js.map