@visulima/vite-overlay
Visulima
The TypeScript toolbox for building modern Node.js, browser, edge, and CLI applications.
49 independent, production-ready packages. Pick only what you need.
Daniel Bannert's open source work is supported by the community on GitHub Sponsors
What is Visulima?
Visulima is a curated collection of small, focused TypeScript libraries that solve the problems you hit every day when shipping real applications. Things like parsing CLI args, formatting terminal output, handling files and paths, debugging errors with readable stack traces, building APIs, sending emails, redacting secrets, and dozens more.
Every package is standalone. Install one, install ten, mix them with whatever framework you already use. No lock-in, no umbrella runtime.
Why Visulima?
- Modular by design. Every package has a single responsibility and ships independently. Use
@visulima/fswithout touching anything else. - Modern runtimes. Pure ESM that works in Node.js, Bun, edge runtimes, and (where it makes sense) the browser.
- TypeScript-native. Written in TypeScript with strict types, full inference, and
"sideEffects": falsefor clean tree-shaking. - Production-tested. High test coverage, Vitest-driven, used in real products.
- Well-documented. Every package has a dedicated doc page on visulima.com, plus a README with examples and API reference.
- MIT licensed. Free to use, free to fork.
Drop-in replacements
Already using one of these? Swap it out without changing your code:
| You're using | Try | What you get |
|---|---|---|
node:path |
@visulima/path |
Same API, normalized paths, smaller and faster. |
chalk |
@visulima/colorize |
Chalk-compatible API, up to 3× faster, with nested templates. |
ink |
@visulima/tui |
Ink-compatible React API, backed by a native Rust diff engine. |
Powered by native Rust
Performance-critical packages ship with NAPI bindings and a JS fallback. Fast where it matters, portable everywhere. The packages that need a Rust toolchain are developed in visulima/vis.
@visulima/tuiuses a native Rust diff engine for the React-to-terminal renderer.@visulima/secret-scanneris a Rust port of gitleaks detection, exposed via NAPI.@visulima/task-runnerruns concurrent processes with native Rust performance and process-tree cleanup on every OS.
Install
Install only the packages you need:
# pnpm
pnpm add @visulima/pail @visulima/fs
# npm
npm install @visulima/pail @visulima/fs
# yarn
yarn add @visulima/pail @visulima/fs
Every package has a dedicated doc page on visulima.com with usage examples and full API reference.
What's inside
Packages are grouped into eight categories. Jump to the section you need:
- API: routing, CRUD, OpenAPI, pagination, health checks
- Data Manipulation: strings, objects, bytes, HTML, redaction, locales
- Email: multi-provider sending, templates, disposable-domain detection
- Error Debugging: stack traces, source maps, loggers, dev overlays
- Filesystem: human-friendly fs helpers, path utilities, cache directories
- Storage: S3, Azure, GCS, and local file uploads with a unified API
- Terminal: CLIs, colors, spinners, progress bars, tables, TUI
- Tooling: task runner, secret scanner, tsconfig parser, package utilities
All Packages
API
| Package | Version | Description |
|---|---|---|
| @visulima/health-check | Define async health checks for your dependencies and service, and expose their status on a health endpoint. | |
| @visulima/jsdoc-open-api | Generate OpenAPI/Swagger documentation from JSDoc comments, via CLI or webpack plugin. | |
| @visulima/pagination | Simple limit/offset and page-based pagination helper for Node.js APIs. |
Data Manipulation
| Package | Version | Description |
|---|---|---|
| @visulima/bytes | Utility functions to make dealing with Uint8Arrays easier | |
| @visulima/content-safety | Multi-language banned-word and profanity detection for 19 languages, with word-boundary matching and match positions. | |
| @visulima/deep-clone | Fast deep clone for plain objects, arrays and nested values. | |
| @visulima/html | Functions for HTML, such as escaping or unescaping HTML entities | |
| @visulima/humanizer | Humanizer is a library for humanizing data in a human-readable form. | |
| @visulima/iso-locale | ISO data for countries, currencies, regions, timezones, and BCP 47 locale support. | |
| @visulima/object | Helper functions for working with objects and arrays. | |
| @visulima/redact | A library for redacting and masking sensitive data from objects and strings, with support for GDPR compliance, custom rules, and deep object traversal. | |
| @visulima/string | Type-safe string utilities: case conversion, slugify, truncation, alignment and CJK-aware width. | |
| @visulima/yaml | A fast, zero-dependency YAML 1.2 parser and serializer with a drop-in API for both yaml and js-yaml. |
| Package | Version | Description |
|---|---|---|
| @visulima/disposable-email-domains | A regularly updated list of disposable and temporary email domains. | |
| @visulima/email | A comprehensive email library with multi-provider support, crypto utilities, and template engines | |
| @visulima/email-provider-mx | Classify the email provider (mailbox host or secure email gateway) behind an MX record. | |
| @visulima/email-verifier | Email verification and enrichment: syntax, MX/SMTP probing, disposable and role detection, catch-all, and a 0–100 quality score. | |
| @visulima/free-email-domains | A regularly updated list of free email service provider domains. |
Error Debugging
| Package | Version | Description |
|---|---|---|
| @visulima/dev-toolbar | Devtools is a set of tools for building advanced devtools for your application | |
| @visulima/error | Error with more than just a message, stacktrace parsing. | |
| @visulima/error-handler | Error handlers for use in development and production environments. | |
| @visulima/inspector | Inspect utility for Node.js and Browsers. | |
| @visulima/ono | Ono is an error-parsing library that pretty prints JavaScript errors on a web page or the terminal. | |
| @visulima/pail | Highly configurable Logger for Node.js, Edge and Browser. | |
| @visulima/source-map | Provides functionality related to source maps. | |
| @visulima/vite-overlay | Improved Vite error overlay that shows readable, source-mapped errors in the browser for React, Vue and Svelte. |
Filesystem
| Package | Version | Description |
|---|---|---|
| @visulima/find-cache-dir | Finds the common standard cache directory | |
| @visulima/fs | Human friendly file system utilities for Node.js | |
| @visulima/path | Drop-in replacement of the Node.js path module. |
Notification
| Package | Version | Description |
|---|---|---|
| @visulima/notification | A reusable, ESM-only, edge-ready multi-channel notification library with SMS, push, chat, in-app and webhook providers |
Storage
| Package | Version | Description |
|---|---|---|
| @visulima/storage | Server-side file storage abstraction with S3, Azure, GCS, local filesystem and 20+ backends, plus TUS, multipart and REST upload handlers. | |
| @visulima/storage-client | The upload client library. Simple and easy file uploads for React | Vue | Solid | Svelte. |
Terminal
| Package | Version | Description |
|---|---|---|
| @visulima/ansi | ANSI escape codes for some terminal swag. | |
| @visulima/boxen | Create beautiful boxes in the terminal with customizable borders, padding, and alignment. | |
| @visulima/cerebro | A delightful toolkit for building cross-runtime CLIs for Node.js and Bun. | |
| @visulima/colorize | Terminal and Console string styling done right. | |
| @visulima/command-line-args | A mature, feature-complete library to parse command-line options. | |
| @visulima/fmt | Util.format-like string formatting utility. | |
| @visulima/interactive-manager | Interactive terminal output manager for spinners, progress bars, and dynamic updates | |
| @visulima/is-ansi-color-supported | Detect whether a terminal or browser supports ansi colors. | |
| @visulima/progress-bar | Terminal progress bars with multiple styles and multi-bar support | |
| @visulima/spinner | Minimal animated terminal spinners for Node.js CLI tools. | |
| @visulima/tabular | Create beautiful ASCII tables and grids with customizable borders, padding, and alignment. Supports Unicode, colors, and ANSI escape codes. | |
| @visulima/tui-kit | Component library for @visulima/tui — installable as a package, or copy-pasteable via the shadcn CLI registry |
Tooling
| Package | Version | Description |
|---|---|---|
| @visulima/find-ai-runner | Detect and invoke AI CLI tools (Claude, Gemini, Codex, Copilot, Cursor, Crush, Amp, Kimi, Qwen, OpenCode, Droid) installed on the system | |
| @visulima/package | Find monorepo roots and package managers, and parse package.json, package.yaml and package.json5 files, with catalog resolution. | |
| @visulima/tsconfig | Find and/or parse the tsconfig.json file from a directory path. |
Workflow
| Package | Version | Description |
|---|---|---|
| @visulima/cron-parser | Fast, zero-dependency cron expression parser with time zone and DST support, for Node.js, Bun and Workers | |
| @visulima/workflow | Edge-ready, ESM-only durable workflow engine with resumable steps, delays, external-event waits and a pluggable store. |
Getting Started
Visit https://visulima.com/learn to get started with Visulima.
Documentation
Visit https://visulima.com/docs to view the full documentation. The site is built from visulima/docs, which collects the docs from the repositories below.
Repositories
| Repository | What is in it |
|---|---|
| visulima/visulima | This monorepo: the TypeScript packages, one per folder under packages/ |
| visulima/vis | The Rust-backed packages: vis, vis-mcp, task-runner, task-runner-client, secret-scanner and tui |
| visulima/packem | The packem bundler |
| visulima/docs | The documentation site at visulima.com |
Community
The Visulima community can be found on GitHub Discussions, where you can ask questions, voice ideas, and share your projects.
To chat with other community members you can join the Visulima Discord.
Our Code of Conduct applies to all Visulima community channels.
Contributing
Please see our contributing.md.
Good First Issues
We have a list of good first issues that contain bugs that have a relatively limited scope. This is a great place to get started, gain experience, and get familiar with our contribution process.
Related Packages
Vite plugin to enable SPA (Single Page Application) support for GitHub Pages
Your inkan API inside the Vite dev server: one port, reloaded on every save, /do...
Version History
| Version | Released | License |
|---|---|---|
| 2.0.41 | MIT | |
| 2.0.40 | MIT | |
| 2.0.39 | MIT | |
| 2.0.38 | MIT | |
| 2.0.37 | MIT | |
| 2.0.36 | MIT | |
| 2.0.35 | MIT | |
| 2.0.34 | MIT | |
| 2.0.33 | MIT | |
| 2.0.32 | MIT | |
| 2.0.31 | MIT | |
| 2.0.30 | MIT | |
| 2.0.29 | MIT | |
| 2.0.28 | MIT | |
| 2.0.27 | MIT | |
| 2.0.26 | MIT | |
| 2.0.25 | MIT | |
| 2.0.24 | MIT | |
| 2.0.23 | MIT | |
| 2.0.22 | MIT | |
| 2.0.21 | MIT | |
| 2.0.20 | MIT | |
| 2.0.19 | MIT | |
| 2.0.18 | MIT | |
| 2.0.17 | MIT | |
| 2.0.16 | MIT | |
| 2.0.15 | MIT | |
| 2.0.14 | MIT | |
| 2.0.13 | MIT | |
| 2.0.12 | MIT |
Showing the latest 30 of 57. See every release on npm
Pre-releases (36)
| Version | Released | License |
|---|---|---|
| 2.0.0-alpha.36 | MIT | |
| 2.0.0-alpha.35 | MIT | |
| 2.0.0-alpha.34 | MIT | |
| 2.0.0-alpha.33 | MIT | |
| 2.0.0-alpha.32 | MIT | |
| 2.0.0-alpha.31 | MIT | |
| 2.0.0-alpha.30 | MIT | |
| 2.0.0-alpha.29 | MIT | |
| 2.0.0-alpha.28 | MIT | |
| 2.0.0-alpha.27 | MIT | |
| 2.0.0-alpha.26 | MIT | |
| 2.0.0-alpha.25 | MIT | |
| 2.0.0-alpha.24 | MIT | |
| 2.0.0-alpha.23 | MIT | |
| 2.0.0-alpha.22 | MIT | |
| 2.0.0-alpha.21 | MIT | |
| 2.0.0-alpha.20 | MIT | |
| 2.0.0-alpha.19 | MIT | |
| 2.0.0-alpha.18 | MIT | |
| 2.0.0-alpha.17 | MIT | |
| 2.0.0-alpha.16 | MIT | |
| 2.0.0-alpha.15 | MIT | |
| 2.0.0-alpha.14 | MIT | |
| 2.0.0-alpha.13 | MIT | |
| 2.0.0-alpha.12 | MIT | |
| 2.0.0-alpha.11 | MIT | |
| 2.0.0-alpha.10 | MIT | |
| 2.0.0-alpha.9 | MIT | |
| 2.0.0-alpha.8 | MIT | |
| 2.0.0-alpha.7 | MIT |
Showing the latest 30 of 36. See every release on npm