
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
@hypernym/spinner
Advanced tools
A tiny and super customizable CLI spinner for Node.
Repository ✦ Package ✦ Releases ✦ Discussions
pnpm add @hypernym/spinner
import { createSpinner } from '@hypernym/spinner'
const spinner = createSpinner()
spinner.start()
setTimeout(() => {
spinner.update({
message: 'Still loading...',
})
}, 1000)
setTimeout(() => {
spinner.update({
message: 'Almost done...',
})
}, 2000)
setTimeout(() => {
spinner.stop()
}, 3000)
For all methods, each option is optional so you only need to specify what you want to change.
Starts the spinner.
import { createSpinner } from '@hypernym/spinner'
const spinner = createSpinner()
spinner.start({
message: 'Loading module...',
})
Dynamically updates the spinner on the fly.
Very useful when you want to change the message or dynamics of other options before stopping the spinner.
import { createSpinner } from '@hypernym/spinner'
const spinner = createSpinner()
spinner.start()
setTimeout(() => {
spinner.update({
message: 'Still loading...',
})
}, 1000)
setTimeout(() => {
spinner.update({
frames: ['-', '\\', '|', '/'],
interval: 30,
message: 'Almost done...',
})
}, 2000)
Stops the spinner with a custom mark and message.
Also, use this method as success, warning, cancel, error or similar events, since it is very customizable.
import { createSpinner } from '@hypernym/spinner'
const spinner = createSpinner()
spinner.start()
setTimeout(() => {
spinner.stop({
message: 'Module done!',
})
}, 3000)
It's possible to specify global options directly on the main spinner call. That way you don't have to define them for each method individually.
Also, all global options are optional.
string[]['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏']Specifies the frames to be used in the spinner animation.
const spinner = createSpinner({
frames: ['-', '\\', '|', '/'],
})
number40Specifies the time delay (in ms) between each frame.
const spinner = createSpinner({
interval: 60,
})
functionundefinedDefines the line template.
Useful when you need to rearrange the position of the animation and message or change the template completely.
import { cyan } from '@hypernym/colors'
const spinner = createSpinner({
template: (animation, message) => `${cyan(message)} ${cyan(animation)}`,
})
objectundefinedSpecifies global options for the .start() method.
const spinner = createSpinner({
start: {
message: 'Loading module...',
},
})
spinner.start()
objectundefinedSpecifies global options for the .stop() method.
import { cyan } from '@hypernym/colors'
const spinner = createSpinner({
stop: {
mark: cyan('✔'),
message: 'Module done!',
template: (mark, message) => `${message} ${mark}`,
},
})
spinner.stop()
objectundefinedSpecifies global options for the Node exit event.
It's activated when the user explicitly cancels the process in the terminal (ctrl + c).
import { magenta } from '@hypernym/colors'
const spinner = createSpinner({
cancel: {
mark: magenta('✖'),
message: 'Module cancelled!',
template: (mark, message) => `${message} ${mark}`,
},
})
Feel free to ask questions or share new ideas.
Use the official discussions to get involved.
Developed in 🇭🇷 Croatia, © Hypernym Studio.
Released under the MIT license.
FAQs
A tiny and super customizable CLI spinner for Node.
We found that @hypernym/spinner demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.