next
Version:
The React Framework
71 lines (70 loc) • 2.18 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = createSpinner;
var _ora = _interopRequireDefault(require("next/dist/compiled/ora"));
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
const dotsSpinner = {
frames: [
'.',
'..',
'...'
],
interval: 200
};
function createSpinner(text, options = {
}, logFn = console.log) {
let spinner;
let prefixText = text && typeof text === 'object' && text.prefixText;
if (process.stdout.isTTY) {
spinner = (0, _ora).default({
text: typeof text === 'string' ? text : undefined,
prefixText: typeof prefixText === 'string' ? prefixText : undefined,
spinner: dotsSpinner,
stream: process.stdout,
...options
}).start();
// Add capturing of console.log/warn/error to allow pausing
// the spinner before logging and then restarting spinner after
const origLog = console.log;
const origWarn = console.warn;
const origError = console.error;
const origStop = spinner.stop.bind(spinner);
const origStopAndPersist = spinner.stopAndPersist.bind(spinner);
const logHandle = (method, args)=>{
origStop();
method(...args);
spinner.start();
};
console.log = (...args)=>logHandle(origLog, args)
;
console.warn = (...args)=>logHandle(origWarn, args)
;
console.error = (...args)=>logHandle(origError, args)
;
const resetLog = ()=>{
console.log = origLog;
console.warn = origWarn;
console.error = origError;
};
spinner.stop = ()=>{
origStop();
resetLog();
return spinner;
};
spinner.stopAndPersist = ()=>{
origStopAndPersist();
resetLog();
return spinner;
};
} else if (prefixText || text) {
logFn(prefixText ? prefixText + '...' : text);
}
return spinner;
}
//# sourceMappingURL=spinner.js.map
;