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
,typescript
and@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.
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.
fetch-shim
: A tiny isomoprhic Fetch function, it just gives you the native one if available, or the one from undici.
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.
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
Map
object 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
Set
object 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.
isoenv
: A cross-platform Map-like interface for reading and writing environment variables.
isostore
: A simple isomorphic key-value store with a Map-like API for persisting data.
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-oneline-stringify
: A little function for stringifying into a single line, in a readable form.
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 Node@17.8.0 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 or rejected 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-parse-argv
: A tiny function for parsing process.argv, a modern rewrite of a sensible subset of minimist.
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 8/16/32-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-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 path2
is 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.