23 lines
540 B
TypeScript
23 lines
540 B
TypeScript
const frames = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"]
|
|
|
|
export function spinner(text: string) {
|
|
let i = 0
|
|
const id = setInterval(() => {
|
|
process.stderr.write(`\r\x1b[2K${frames[i++ % frames.length]} ${text}`)
|
|
}, 80)
|
|
|
|
return {
|
|
set text(t: string) {
|
|
text = t
|
|
},
|
|
succeed(msg: string) {
|
|
clearInterval(id)
|
|
process.stderr.write(`\r\x1b[2K✔ ${msg}\n`)
|
|
},
|
|
fail(msg: string) {
|
|
clearInterval(id)
|
|
process.stderr.write(`\r\x1b[2K✖ ${msg}\n`)
|
|
},
|
|
}
|
|
}
|