The homepage for all my repositories.
git clone --recurse-submodules git://github.com/fabiospampinato/monorepo.git
Repositories listed below are marked with some of the following badges.
- Production dependencies badges:
- Development dependencies badges:
: no development dependencies other than
tsex,fava,benchloop,esbuild,typescriptand@types/node.: only some extra first-party development dependencies.
: with some extra third-party development dependencies.
- Runtime badges:
- Other badges:
Some repositories don't have badges yet, this list is stil a work in progress
aborter: A minimal reimplementation of AbortController and AbortSignal.
amuchina: A work-in-progress HTML sanitizer that strives for: performance like window.Sanitizer, readiness like DOMPurify, and ability to run in a WebWorker like neither of those.
ansi-pad: A couple tiny functions for padding a string that may contain ANSI escape sequences.
ansi-purge: A tiny function for deleting ANSI escape sequences from a string.
ansi-truncate: A tiny function for truncating a string that may contain ANSI escape sequences.
are-deeply-equal: Check if two values are deeply equal to each other.
are-shallow-equal: Check if two values are shallowly equal to each other.
atomically: Write files atomically and reliably.
banal: On-demand bundle analyzer, powered by esbuild.
base128-encoding: Base128 encoding, the intersection of latin1 and utf-8, which is basically ASCII, the most memory-efficient string encoding that can be written to disk as utf-8 without ballooning in size.
base256-archive: Simple archive format that produces a base256-encoded string.
base256-encoding: Base256 encoding, the most memory-efficient encoding possible in JavaScript.
benchloop: Simple benchmarking library with a pretty output.
bigint-encoding: BigInt encoding, a simple way to convert Uint8Arrays into BigInts, and vice versa.
bob-wasm: A port of Svgbob to WASM.
buffer2uint8: A tiny function for casting a Buffer to a Uint8Array.
bustore: An isomorphic asynchronous Map-inspired key-value store for persisting blobs.
bump: Bump updates the project's version, updates/creates the changelog, makes the bump commit, tags the bump commit and makes the release to GitHub. Opinionated but configurable.
call-chainer: Combine a regular function and a class so that methods of the class become chainable properties of the function that get called automatically.
call-hooks: Function for adding before/after/call/arguments/result hooks to another function.
call-spy: Tiny wrapper for spying on function calls.
calls-batch: Execute calls in debounced batches, with pre/postflush hooks, useful for performance.
cash: An absurdly small jQuery alternative for modern browsers.
chrome-extension-livereload: A tiny and basic livereload solution for chrome extensions.
chrome-rpc: A simple RPC mechanism for Chrome extensions.
classattr: A classList-like API that's purely based on reading/writing the class attribute.
conf-merge: Deep merges objects, concatenating arrays.
configuration: Performant and feature rich library for managing configurations/settings.
context-keys: Performant and feature rich library for managing context keys.
copy-unused-path: Reliably copy to an unused path.
critically: Tiny performant library for extracting the critical CSS.
crypto-miller-rabin: Implementation of the Miller-Rabin primality test.
crypto-pbkdf2-hmac: Isomorphic wrapper for the PBKDF2-HMAC key derivation function.
crypto-prime-test: A function that deterministically checks if a number is prime.
crypto-puzzle: Basically a proof-of-work generator, this library makes cryptographic puzzles that are arbitrarily expensive to solve.
crypto-random-bigint: Generate a cryptographically-random BigInt with the given number of bits of entropy.
crypto-random-hexadecimal: Generate a cryptographically-random hexadecimal string with the given number of bytes of entropy.
crypto-random-in-range: Pick a cryptographically-random integer within a range.
crypto-random-prime: Generate a cryptographically-random probable prime number that passes the Miller-Rabin test with the given number of bits of entropy.
crypto-random-uint8: Generate a cryptographically-random Uint8Array with the given number of bytes of entropy.
crypto-sha: Isomorphic wrapper for the SHA family of hash functions.
crypto-sieve: Low memory-usage implementation of a Sieve of Eratosthenes.
crypto-timing-safe-equals: An isomorphic timing-safe equality function for strings and Uint8Arrays.
cson2json: A super-lightweight library for converting CSON objects to JSON objects.
css-eval: Tiny library for fully evaluating CSS properties and variables on a target element.
css-flatten: Flattens a nested (S)CSS string, "&" placeholders are supported too.
css-simple-minifier: A CSS minifier that's tiny and very fast.
css-simple-parser: A (S)CSS parser that's tiny, blazing fast and (too) simple.
csv-simple-parser: A simple, fast and configurable CSV parser.
decode-base64: A tiny function for decoding base64 strings into ArrayBuffer objects, useful for bundling and loading WASM modules.
depsman: Extract and report metadata about dependencies of the current package.
detect-eol: Quickly detect the EOL used in a string.
dettle: A tiny fully-featured debounce and throttle implementation.
dettle-batch: A batched debouncing and throttling solution, for performance.
domino-global: Make Node a browser-like environment, by using Domino.
dotlocker: A filesystem exclusionary lock implementation based on .lock files.
dotenv-jsonc: Simple library for loading your .env.json file containing JSONC.
dumper: Library for extracting attachments, notes and metadata out of formats used by popular note-taking apps.
duper: Standalone functions for creating shallow clones or deep clones.
entities-decode: Fast function for decoding HTML entities, based on the "entities" package.
entities-dom-decode: A ~200 bytes function with no dependencies for decoding HTML entities, it only works in the browser.
entities-standard: An object mapping ~2000 standard HTML entities to their value.
event-loop-yielder: A collection of strategies for yielding to the event loop, to avoid blocking for too long.
ext2mime: Convert a file extension to a mime type. It works only with popular file extensions and it's super lightweight.
fast-ignore: A fast parser and processor for .gitignore files.
fast-mod-exp: Fast modular exponentiation function, for numbers and bigints.
fast-string-truncated-width: A fast function for calculating where a string should be truncated, given an optional width limit and an ellipsis string.
fast-string-width: A fast function for calculating the visual width of a string once printed to the terminal.
fava: A wannabe tiny largely-drop-in replacement for ava that works in the browser too.
fileurl2path: A tiny function for converting a file URL to a file path.
file-pollex: A tiny hybrid filesystem watcher for a single file.
find-up-json: Find, read and parse the first matching file found walking the filesystem upwards.
find-up-path: Find the path of the first file matching a given name, walking the filesystem upwards.
flimsy: A single-file <1kb min+gzip simplified implementation of the reactive core of Solid, optimized for clean code.
function-once: Wraps a function so that it's only ever executed once.
get-current-package: Get the package.json of the currently executing bin.
get-current-version: Get the version of the currently executing bin.
get-unused-path: Reliably get an unused path you can write to.
github-logger: A simple logger for GitHub repositories, with various backends.
gitman: A simple yet powerful opinionated tool for managing GitHub repositories.
glow-highlighter: An isomorphic syntax highlighter for Glow.
grammex: A tiny PEG-like system for building language grammars with regexes.
graphmatch: A low-level utility for matching a string against a directed acyclic graph of regexes.
graphviz-wasm: A port of Graphviz to WASM.
grepgrep: A grep-like command that uses JavaScript-flavored regular expressions.
happy-dom-global: Make Node a browser-like environment, by using Happy DOM.
hex-encoding: Hex encoding. An extremely fast and synchronous JS implementation.
hex-to-uint8: The fastest function to convert a hexadecimal string to a Uint8Array.
html2markdown: A small function for converting HTML to Markdown.
html-segmentator: A small library for splitting an HTML string into its top-level sections. Based on html5parser.
huffy: A tiny compression library based on Huffman coding.
ifont: An isomorphic icon font generator with support for ligatures.
immediato: An isomorphic setImmediate implementation that doesn't prevent the process from exiting naturally.
import-fool-webpack: Use dynamic import() without webpack finding out.
infinity-map: A Map that doesn't throw if you put more than 16 million items in it. Because that's what the native
Mapobject does for some reason.infinity-set: A Set that doesn't throw if you put more than 16 million items in it. Because that's what the native
Setobject does for some reason.ini-simple-parser: A simple, fast and configurable INI parser.
int32-encoding: Int32 encoding, a simple way to convert 32-bit signed integers to Uint8Arrays, and vice versa.
ionstore: A very simple isomorphic key-value store with a Map-like API for persisting session data.
is: The definitive collection of is* functions for runtime type checking. Lodash-compatible, tree-shakable, with types.
isoconcurrency: An isomorphic way to get the number of logical cores available.
isoenv: A cross-platform Map-like interface for reading and writing environment variables.
isoplatform: An isomorphic detector for the current process platform.
isostore: A simple isomorphic key-value store with a Map-like API for persisting data.
isotimer: An isomorphic setImmediate/setInterval/setTimeout implementation.
js-simple-mangler: A simple JavaScript mangler that works across multiple files.
json-archive: Simple archive format based on JSON.
json-clone-deep: Deep cloning based on JSON.
json-is-sorted-equal: Alternative isEqual function based on a stable version of JSON.stringify.
json-oneline-stringify: A little function for stringifying into a single line, in a readable form.
json-simple-parser: The fastest pure-JS implementation for JSON I could come up with.
json-sorted-stringify: Alternative JSON.stringify function with sorted keys, so the output is stable.
jsonc-simple-parser: A simple JSON parser that supports comments and optional trailing commas.
kasi: A collection of functions for working with different casings.
khroma: A collection of functions for manipulating CSS colors, inspired by SASS.
known-symbols: A little library for working with well-known symbols.
lande: A tiny neural network for natural language detection.
linkedom-global: Make Node a browser-like environment, by using LinkeDOM.
linkify-it-tlds: Comprehensive list of TLDs, sourced from ICANN, for linkify-it.
lomemo: Lodash's memoize function, but in a much smaller package than lodash.memoize's.
lomemo-one: A variant of lodash's memoize function that remembers only one result, the last one.
memoization-registry: A generalized multi-key memoization solution that does not leak memory.
mild-map: A WeakMap that supports any value, it holds strong references to primitives, and weak references to objects.
mild-set: A WeakSet that supports any value, it holds strong references to primitives, and weak references to objects.
mime-standard: An object mapping ~300 standard mime types to ~400 extensions.
mime2ext: Convert a mime type to a file extension. It works only with popular mime types and its super lightweight.
minipacco: A little bundler for resolving dependencies graphs into a single concatenated file.
monex: Execute a script and restart it whenever it crashes or a watched file changes.
move-unused-path: Reliably move to an unused path.
nanoexec: A tiny wrapper around "spawn" for executing a command efficiently and conveniently.
nanopath: A tiny isomorphic port of [email protected] path module.
node-buffer-encoding: A little wrapper around Node's Buffer that provides encoding/decoding for all supported encodings.
noop-tag: A noop template literal tag, useful for syntax highlighting hints.
noren: A minimal HTTP server with good developer-experience and performance, for Node and beyond.
oby: A tiny Observable implementation, the brilliant primitive you need to build a powerful reactive system.
paketo: A tiny library for importing your package.json, with proper types!
path-prop: Fast library for manipulating plain objects using paths.
performance-interval: A precise implementation of setInterval that supports sub-millisecond intervals.
picolate: A minimalistic and flexible templating engine, inspired by Handlebars.
picolru: A tiny LRU implementation that strives for simplicity and performance.
picorpc: A tiny RPC library and spec, inspired by JSON-RPC 2.0 and tRPC.
pikchr-wasm: A fast and small port of Pikchr to WASM.
pioppo: A tiny isomorphic batched logger. ~3x faster than regular logging in Node.
plain-object-clone: Extremely fast function optimized for deep cloning json-serializable plain objects.
plain-object-is-empty: Extremely fast function that checks if a plain object is empty.
plain-object-is-equal: Extremely fast function optimized for deep equality checks of json-serializable plain objects.
plain-object-merge: Extremely fast function optimized for deep merging json-serializable plain objects.
pollex: A tiny polling-based filesystem watcher that tries to be efficient.
prask: Lightweight prompting library for terminal apps.
promise-concurrency-limiter: Tiny scheduler for functions returning promises that can limit their concurrency.
promise-make-counter: A simple function that makes a counter-based promise, which can be incremented and decremented, and it resolves once its counter reaches zero.
promise-make-naked: A simple function that makes a promise that can be resolved, rejected or introspected from the outside.
promise-resolve-timeout: Create a Promise which will resolve with the provided value after a timeout.
qunit-ava-spec: Helper functions for using QUnit as if it was ava/ava-spec.
radix64-encoding: Radix64 encoding, a.k.a. Base64 encoding. An extremely fast and synchronous JS implementation.
radix64url-encoding: Radix64url encoding, a.k.a. Base64url encoding. An extremely fast and synchronous JS implementation.
regexp-ranged-exec:: Generate an enhanced exec function, with information about the range of text that the regex paid attention to.
safex:: A language for writing safe expressions, in a tiny subset of JavaScript.
sanitize-basename: Sanitize a file name for cross-platform validity.
scex: A simple runner for npm scripts that can execute multiple scripts, in serial or in parallel.
siero: A serialization library that can handle functions, promises and symbols too.
siero-worker: A managed worker that can be interacted with via Siero.
skex: A modern schema validation and filtration library with great TypeScript support.
secret: The simplest command to encrypt/decrypt a file, useful for committing encrypted ".env" files to version control, among other things.
shortcuts: Super performant and feature rich shortcuts management library.
shortcuts-font: A minimal font designed to beutifully render characters used for representing shortcuts.
shosho: A modern and powerful shortcuts management library.
siar: A simple random-access archive format.
special-tlds: List of special-use ICANN TLDs.
specialist: A library that helps you write tiny, fast, bundled and beautiful CLI apps that can automatically check for updates.
stdin-blocker: A tiny library for blocking stdin keypresses, except for Ctrl+C. Useful while displaying animations.
strid: Get a unique string identifier for any input value.
string-escape-regex: A tiny function for escaping a string to be used as the source in a regex.
string-from-charcodes: An alternative to String.fromCharCode that doesn't throw with many arguments, while still remaining fast.
string-indexes: Retrieves all indexes, in non-overlapping ranges, of a substring in a string.
string-matches: Retrieves all the matches of a regex in a string.
string-matches-generator: Retrieves all the matches of a regex in a string, via a generator.
stubborn-fs: Stubborn versions of Node's fs functions that try really hard to do their job.
template: A super-simple way to create new projects based on templates.
test-diff: Library for writing tests that diff the excepted output with the actual output.
textmate-highlighter: An isomorphic syntax highlighter using TextMate grammars and VSCode themes.
tiny-bin: A library for building tiny and beautiful command line apps.
tiny-browser-open: A tiny utility for opening a file or a URL inside a browser of your choosing.
tiny-buffer: A tiny isomorphic implementation of a large subset of Node's Buffer.
tiny-colors: A tiny library providing the basic ANSI colors for the terminal.
tiny-compressor: A tiny isomorphic compression library that leverages CompressionStream and DecompressionStream.
tiny-cursor: A tiny library for hiding and showing the cursor in the terminal.
tiny-dirname: A tiny isomorphic ESM alternative to Node's "__dirname" global.
tiny-divider: A tiny simple terminal divider that spans the entire width of the terminal.
tiny-editorconfig: A tiny isomorphic parser and resolver for EditorConfig.
tiny-encryptor: A tiny opinionated isomorphic library for encrypting and decrypting with ease.
tiny-filename: A tiny isomorphic ESM alternative to Node's "__filename" global.
tiny-jsonc: An absurdly small JSONC parser.
tiny-levenshtein: A tiny implementation of the Levenshtein edit distance algorithm.
tiny-livereload: A tiny and basic livereload solution.
tiny-open: A tiny utility for opening a file or a URL with its default application, or a custom one.
tiny-parse-argv: A tiny function for parsing process.argv, a modern rewrite of minimist.
tiny-path-parse: A tiny package for parsing file paths, with the same output as [email protected]'s path.parse function.
tiny-readdir: A simple promisified recursive readdir function.
tiny-readdir-glob: A simple promisified recursive readdir function, with support for globs.
tiny-readdir-glob-gitignore: A simple promisified recursive readdir function, with support for globs and .gitignore files.
tiny-spinner: A simple, yet beautiful, CLI spinner.
tiny-sqlite3: A tiny cross-platform client for SQLite3, with precompiled binaries as the only third-party dependencies.
tiny-truncate: A tiny function for truncating a string which may containg ANSI escapes, with automatic terminal width detection.
tiny-updater: The smallest update notifier for NPM packages, useful for CLI apps.
tiny-webcrypto: A tiny isomorphic WebCrypto object, it just gives you the native one the current platform provides.
tokens-highlighter: A general syntax highlighter that can render syntax highlighting tokens.
toygrad: A toy library for building simple neural networks which can be serialized to compact JSON.
tryloop: Simple library for retrying operations, it supports multiple backoff strategies.
tsex: A little CLI for making TypeScript packages, cleanly and effortlessly.
ua2os: Detect the OS from a User-Agent string.
uint-rng: A tiny insorphic Random Number Generator for generating 1/8/16/32/64-bits unsigned integers.
uint8-concat: Concatenate mutiple Uint8Arrays super efficiently.
uint8-encoding: Uint8 encoding, a simple way to convert strings to Uint8Arrays and vice versa.
uint8-to-hex: The fastest function to convert a Uint8Array to hexadecimal.
unsanitize-basename: Unsanitize a file name, the inverse of the "sanitize-basename" library.
unused-path: Reliably get an unused path and copy/move/write to it.
utf16le-encoding: UTF16-le encoding, a.k.a. UCS2 encoding, an encoding you probably should never use.
voby: A high-performance framework with fine-grained observable-based reactivity for building rich applications.
voby-simple-router: A simple isomorphic router for Voby.
vscode-extras: A collection of utilities for development vscode extensions.
watcher: The file system watcher that strives for perfection, with no native dependencies and optional rename detection support.
webworker-shim: A tiny shim for WebWorker (data URI only) that works in Node.
when-exit: Execute a function right before the process, or the browser's tab, is about to exit.
worktank: A simple isomorphic library for executing functions inside WebWorkers or Node Threads pools.
worktank-esbuild-plugin: Esbuild plugin for WorkTank which enables you to execute whole files in a worker pool, transparently.
worktank-vite-plugin: Vite plugin for WorkTank which enables you to execute whole files in a worker pool, transparently.
write-unused-path: Reliably write to an unused path.
xml-simple-parser: A simple and tiny XML parser and stringifier.
zeptoid: A tiny isomorphic fast function for generating a cryptographically random hex string.
zeptomatch: An absurdly small glob matcher that packs a punch.
zeptomatch-escape: A little utility for escaping globs before passing them to zeptomatch.
zeptomatch-explode: A little utility for exploding a zeptomatch-flavored glob into its dynamic and static parts.
zeptomatch-is-static: A little utility for checking if a glob is fully static.
zeptomatch-unescape: A little utility for removing escape sequences from a glob.
zstandard-wasm: A fast and small port of Zstandard to WASM. (Decompress-only for now).
chrome-blank: Just a blank new tab page.
chrome-devbox: A collection of tools for web developers.
chrome-multi-homepage: Open multiple URLs with a single click.
chrome-night-theme: A dark and minimalistic theme.
chrome-window-session: Save each window as a separate session, automatically.
vscode-banal: A super quick way to inspect the bundle size of npm dependencies, via a code lens.
vscode-browser-refresh: Refresh the browser with a ⌘R, right from Code. No need to switch focus to it.
vscode-commands: Trigger arbitrary commands from the statusbar. Supports passing arguments!
vscode-diff: Diff 2 opened files with ease. Because running
code --diff path1 path2is too slow.vscode-git-history: View or diff against previous versions of the current file.
vscode-github-notifications-bell: A secure, customizable, statusbar bell that notifies you about notifications on github.
vscode-gitman: Frontend for GitMan for switching quickly to other repositories.
vscode-highlight: Advanced text highlighter based on regexes. Useful for todos, annotations etc.
vscode-js-beautify: A little wrapper around "js-beautify" for conveniently beautifying CSS/HTML/JS files.
vscode-kasi: A little wrapper over the "kasi" package for changing the casing of selections.
vscode-markdown-todo: Manage todo lists inside markdown files with ease.
vscode-monokai-night: A complete, dark and minimalistic Monokai-inspired theme.
vscode-open-devtools: A simple extension for opening DevTools windows listed under chrome://inspect.
vscode-open-in-application: Open an arbitrary file in its default app, or the app you want.
vscode-open-in-browsers: Adds some commands for opening the current file or project in any browser you like, even all of them simultaneously.
vscode-open-in-code: Switch between Code and Code Insiders with ease.
vscode-open-in-finder: Adds a few commands for opening the current file or project in Finder.
vscode-open-in-github: Open the current project or file in github.com.
vscode-open-in-gittower: Adds a command for opening the current project in GitTower.
vscode-open-in-marketplace: Adds a command for opening the current project in the Marketplace.
vscode-open-in-node-modules: Open the current selection or arbitrary string in node_modules.
vscode-open-in-npm: Open the current selection, project, or arbitrary string, in npmjs.com.
vscode-open-in-npm-graph: Open the current package, or arbitrary string, in npmgraph.js.org.
vscode-open-in-terminal: Adds a few commands for opening the current project in Terminal.
vscode-open-in-transmit: Adds a few commands for opening the current file or project in Transmit.
vscode-open-multiple-files: Open all files in a folder at once, optionally filtering by a glob.
vscode-optimize-images: Optimize one or all the images in your project using your favorite app.
vscode-outdated: A super quick way to update npm dependencies, via a code lens.
vscode-projects-plus-todo-plus: Bird's-eye view over your projects, view all your todo files aggregated into one.vscode-projects-plus: An extension for managing projects. Feature rich, customizable, automatically finds your projects.
vscode-search-open-all-results: Open all search results at once with a single command.
vscode-statusbar-debugger: Adds a debugger to the statusbar, less intrusive than the default floating one.
vscode-terminals: An extension for setting-up multiple terminals at once, or just running some commands.vscode-todo-plus: Manage todo lists with ease. Powerful, easy to use and customizable.
vscode-transmit: Adds a few commands for interacting with Transmit.
awesome-template: Curated list of templates for Template.template-chrome-extension: A template for starting a new Chrome extension quickly.template-template: A template for creating new templates quickly.template-typescript-cli-package: A template for creating a new TypeScript CLI package quickly.template-typescript-package: A template for creating a new TypeScript package quickly.template-vscode-extension: A template for starting a new vscode extension quickly.
.github: Account-level .github directory.ama: Ask me anything!monorepo: The homepage for all my repositories.
phoenix: My Phoenix setup. Powerful, easy to customize, tuned for web development, adds a space switcher.website: My personal website.yinyang-clock: A clock that keeps track of time spent yinning vs time spent yanging.
All archived, no longer maintained, repositories are listed here.