'use strict'; const SPINNER_FRAMES = ['⠙','⠹','⠸','⠼','⠴','⠦','⠧','⠇','⠏']; const SPINNER_INTERVAL_MS = 80; const SPINNER_INDENT = ' '; function startSpinner(initialLabel) { let i = 0; let label = initialLabel; const timer = setInterval(() => { const frame = SPINNER_FRAMES[i % SPINNER_FRAMES.length]; process.stdout.write(`\r${SPINNER_INDENT}${frame}${label}`); i += 1; }, SPINNER_INTERVAL_MS); return { timer, setLabel(nextLabel) { label = nextLabel || ''; } }; } function stopSpinner(spinner, finalText) { clearInterval(spinner.timer); const clear = '\r' + ' '.repeat(80) + '\r'; process.stdout.write(clear + SPINNER_INDENT + finalText + '\n'); } module.exports = { startSpinner, stopSpinner };