An archive of my JavaScript packages, written between 2015 and 2021 .
This is a monorepo of ~150 small, mostly single-purpose npm packages I built
over the years — utilities, streaming primitives, CSS and UI experiments, build
tooling, servers, and a handful of full applications. Most were published to npm
(under jamen, @jamen/*, @finepoint/*, and @audio/*) and are MIT licensed
unless noted otherwise. They're preserved here as-is, both as a personal history
and in case any are still useful to someone.
Each package lives in its own folder under packages/ with its own
package.json, license, and (usually) tests.
pull-streams — a large family of pull-* modules for streaming files,
audio, builds, and IPC.
Callbags — a later take on the same streaming ideas.
CSS as data — parsing, collapsing, and representing CSS through plain
objects (rpv, vss, the css-* set).
Hyperapp & hyperscript — view layers, h(...) helpers, HMR, prerendering,
and persistence.
Audio & WebAssembly — decoding audio, Cubeb bindings, and WASM-friendly
canvas/audio functions.
Build & dev tooling — a Make-inspired build tool, scaffolders, dist
helpers, and a dev server.
Parsers & types — an ESTree toolkit, a general-purpose parser (guru),
and a from-scratch type checker (typling).
A large family of pull-stream
modules for building streaming pipelines.
Package
Description
css-parse-declarations
Parse CSS declarations into a simple array
css-collapse-values
Collapse CSS values into their shortest form
css-truncate-values
Truncate CSS numbers while retaining the original value
css-get-unit
Get the unit of a CSS value
rpv
Represent CSS through objects
to-rpv
Parse normal CSS to an RPV tree
vss
Virtual Style Sheets — enable data-binding with CSS
fss
"Next generation CSS" experiment
dist-css
Create a dist version of your CSS
Hyperscript helpers, Hyperapp add-ons, and small template engines.
Package
Description
h2dom
Create DOM nodes using h(...) functions
h2array
Create compact array nodes from h(...) calls
h2spec
Hyperscript spec helpers
html-to-hyperapp
Parse HTML into JSON that resembles Hyperapp nodes
hyperapp-head
Patch Hyperapp <head> nodes
hyperapp-page
Page/routing helper for Hyperapp
hyperapp-prerender
Prerendering for hyperapp-page
hyperapp-persist
Persist an app's state to the next session
hyperapp-hmr
Reload modules while preserving app state
svelte-router
Svelte router with a store and components
avo
Functions for building UI in JavaScript
arzo
An experimental component idea
pixie
Tiny template engine (~422 bytes minified + gzipped)
pixie-cli
Create and compile Pixie templates from the command line
mist
A tiny language to convert lists to a spec.js HTML format
Parsers, ASTs & type checking
Functional programming & control flow
Package
Description
esfp
Better functional programming in JS
lazy-o
Painless chains that are lazy, functional, and fast
lazy-template
Create template strings that are lazy and reusable
mower
Mow through data using a routine of functions
extending
Create extremely simple extendable objects
free-context
Free context from a function
fast-args
Very fast way to turn a function's arguments into an array
il
Simple generator to use in iteration loops
sate
Small utility for generator-based iteration stacking
bco
A better command object
osia
An elegant Promise-based tasking system
tasking
Tiny tasking system
promise-circuit
Create a circuit-type flow for Promise functions
promise-routine
Wrap a routine of Promise functions in Promise.all
prepared
Prepared callback error handling
event-callback
Turn a pass/fail event combo into a Node-style callback
event-intercept
Intercept event data before it reaches the listeners
log-cb
Better-looking formatting of errors and data from a callback
node-diagnose
Async and simple diagnostics system
Package
Description
neta
A modern, decentralized, customizable chatting client
neta-message
Encode and decode Neta messages
neta-server
Neta's official server tool
iora
Create modular HTTP servers
iora-static
A static-file aspect for iora servers
rela
Create and manage an independent WebSocket server for API systems
rela-json
JSON-event middleware for rela
hyperserver
Route some actions through your server, and elsewhere offline
http-kit
HTTP API kit
ws-utils
Functions for using WebSockets on Node.js
ws-rate-limit
Rate-limiting utility for ws
spocket
Socket with easy message encoding and decoding
email-router
A router for email addresses
loudnode
Forum middleware (MongoDB + Mustache) for a customizable forum system
sagepay
Sage Pay server integration protocol for Node.js
Audio, canvas & WebAssembly
The hmu info suite & registry tools
hmu ("hit me up") is a modular tool for looking up information across services.
Package
Description
hmu
A tool all about information
hmu-core
Run HMU requests and get raw output
hmu-plugin
Plugin utilities for normalizing output
hmu-gh
Check GitHub username availability
hmu-npm
Check npm package availability
hmu-http
Fetch the HTTP status of a server
domain-check
Module and CLI for checking a domain's availability
npm-random-feed
A feed of random names and whether they're free or taken
npm-dl-package
Download a package from npm's registry by name/version/tag
iana
Perform IANA functions through Node
Build & developer tooling
Package
Description
build
Tool for building web projects (inspired by GNU Make)
serve-dev
ZEIT serve remade with auto-reloading and Make rebuilding
dist-js
Create a dist version of your JS
import-graph
Create import graphs with Graphviz
markdown-to-code
Literate programming with markdown code blocks
ecodoc
Manage docs across multiple packages
bp
Create boilerplate templates and scaffold them
create
Functions for scaffolding projects
create-js
Scaffold a new JavaScript project
generator-devjs
DevJS's Yeoman generator
generator-z
Multiplex Yeoman generators
gulp-pug-1
Gulp plugin for compiling Pug templates
gulp-toast
Group project configurations
rollup-plugin-browser-extension
Rollup plugin for browser extensions
bench
A benchmark.js reporter
tape-benchmark
Benchmarking functions for tape
fii
Install package versions globally/concurrently and symlink them locally
lavish
Better npm install using a global cache and symlinking
refig
Manage configuration files with Promise objects
json-config-reader
Read and cache JSON configurations
require-glob
Require files using the resolve pattern, but with globs
args-from
Turn a package.json field into CLI args
slice-file-cli
Generate a module that slices a file between a given range
Package
Description
json-assign
Object.assign for JSON files
data-state
Fast state built on top of typed arrays
ca-formats
Decode cellular-automata formats to [x1, y1, …, xn, yn] values
pos
Turn coordinate positions (under 2¹⁵) into a single index
combin
Create an array of string combinations
node-concat
Concatenate items
template-path
Resolve a template string as a path
lorem
Create N bytes of lorem ipsum text
fake-word
Create fake words for names or tests
btoa
base64 encoding
Experiments & odds and ends