Categories
WebAssembly
  • Github CLI
  • SSH
  • HTTPS
Clone Repo

thi.ng/umbrella

GitHub Workflow Status Code Climate Become a patron Mastodon Follow

About

“A collection of functional programming libraries that can be composed together. Unlike a framework, thi.ng is a suite of instruments and you (the user) must be the composer of. Geared towards versatility, not any specific type of music.” — @loganpowell via Twitter

Please visit thi.ng for additional information. You might also find the following tools useful to find & explore projects in this vast ecosystem:

This project is NOT a framework and all packages can be used in isolation.

Not including deprecations, this mono-repository is home to 204 individual TypeScript libraries/packages/tools and ~185 example projects illustrating their usage, currently totalling ~226k SLOC and ~4100 source files… Some of the projects have been in regular development since 2015. The monorepo exists in its current form since January 2018.

Unlike most other large mono-repos, this one is not for a single project, but a broad collection of jointly developed, yet independent libraries, tools and general purpose building blocks for the following non-exhaustive list of topics (see package overview below):

  • Functional programming (ES6 iterators/generators, composition, memoization, transducers, multi-methods)
  • Reactive programming, stream / transducer based dataflow graphs / pipelines / DOM
  • Fiber process tree abstraction for ES6 generators (co-routines / cooperative multitasking)
  • Data structures & data transformations for wide range of use cases (maps, sets, heaps, queues, graphs etc.)
  • WebAssembly bridge APIs & data structure bindings code generators for multiple target languages (primarily aimed at Zig & C11)
  • PEG-style functional parser combinators w/ (optional) custom grammar definition language
  • Customizable HTML & Markdown parsers
  • 2D/3D geometry generation, shape primitives, math, manipulation, intersections, conversions & visualizations
  • Canvas abstractions, pixel buffers & SVG serialization/conversion
  • Comprehensive function collection (900+) for nD-vectors and matrices (dense & sparse)
  • ECS implementations with optional support for strided memory layouts
  • Semi-declarative WebGL 1/2 abstraction layer
  • DSL for shader functions defined in TypeScript and cross-compilation to GLSL, JS, VEX etc.
  • Value-based equivalence (vs. native object identity) and associative data structures (sets, maps)
  • DSP building blocks: oscillators, noise generators, filters, 1D FFT/IFFT, muxers, rate converters
  • Immutable data handling, state containers, transacted state updates, Undo-Redo history
  • Reactive UI component toolkits (DOM-based, canvas-based, immediate-mode, multiple approaches…)
  • Multi-format, multi-channel pixel buffers (int & float based), conversions, dithering, Porter-Duff alpha-blending operators
  • Color space/format conversions, matrix based color manipulation, gradient generators, color palettes, dominant color extraction
  • Date-time abstraction, relative dates, iterators, formatters, math
  • WebWorker workflow abstractions
  • Forth-style pointfree DSL for functional composition and DSL development/extension
  • S-expression parser & runtime (interpreter) infrastructure for custom DSL creation
  • WASM-based SIMD batch-processing of vector data
  • Pen-plotter (AxiDraw) toolchain & geometry conversions
  • Interpolations, math helpers, automatic differentiation (Dual numbers)
  • etc.

Once more, this project is NOT a framework. There’s no turn-key, one-size-fits-all approach and instead the overall design philosophy encourages a mix & match philosophy for key aspects of application design (inside & outside the browser). Customization points are provided wherever useful and only expect certain interfaces/type signatures rather than hard-coded concrete implementations. In many cases presets are provided too.

All packages:

  • are versioned independently
  • have auto-generated online documentation at docs.thi.ng
  • built via esbuild and tested via bun.sh
  • released via thi.ng/monopub publishing toolchain
  • distributed as ESM modules (ES2022 syntax) with export maps, TypeScript typings & change logs
  • highly modular with often only a single function / class (incl. closely related functions) per file to help w/ selective imports and tree shaking
  • provide re-exports of all their publics for full library imports
  • have either none or only @thi.ng internal runtime dependencies (w/ very few exceptions! All dependencies are listed in each package readme)
  • declare public interfaces, enums & types in an api.ts file
  • licensed under Apache Software License 2.0

Getting started

A common misconception is to think of this repo as single project. It is not! The sheer number and varied nature & purpose of these packages makes it impossible to provide traditional “Getting started” tutorials — there would have to be dozens of them… To compensate, this repo provides ~180 example projects, detailed package readmes (at the very least for all the larger and/or more important ones), as well as hundreds of small usage examples/snippets in doc strings & readme files.

Documentation

If you’re unsure about something, please reach out! Any constructive feedback is always highly appreciated!

Project templates

You might find one of the following template repos an useful starting point (only updated sporadically, make sure to update dependencies manually):

  • tpl-umbrella-basic: Bare-bones template repo for browser-based projects
  • tpl-umbrella-fxhash: Project template repo for generative art projects on the fx(hash) platform
  • tpl-umbrella-zig: Minimal browser project template for hybrid TypeScript & Zig (WebAssembly) apps

#HowToThing

Between August-November 2023, #HowToThing was a series of short posts & mini-tutorials on Mastodon, demonstrating a range of different techniques, patterns and use cases from across the thi.ng/umbrella ecosystem. These are not necessarily intro examples, but each one comes with heavily commented code (and often with visual outputs/results).

Blog posts

Videos

The following videos have been migrated from YouTube to their new home at makertube.net (more to come):

Examples & Showcase

There’s a steadily growing number (~180) of standalone examples of different complexities (often combining functionality from several packages) in the examples directory.

Example screenshots(small selection)

awesome.thi.ng

Due to other priorities still very much in its infancy & planning stage, but please help to document your own usage of these packages by contributing project information to the awesome.thi.ng repo, which will be used to build a showcase site… Thank you!

Generative art projects

Several generative art projects by Karsten Schmidt on fx(hash) were created exclusively with libraries from this collection.

De/Frag series
QuasiflockC-SCAPEASCII-SCAPE
BubblemaniaDanza (unreleased)S-TRACE (unreleased)

Community, contributing, getting help

[!NOTE] My Mastodon account is the best place to learn about ongoing developments. This is a multi-purpose account, but you can view #ThingUmbrella tagged posts only and/or subscribe to those via RSS.

Join the discussions here on Github, get in touch via Mastodon or use the issue tracker. If you’d like to contribute in other ways, please first read this document.

In general, we welcome contributions of all kinds (docs, examples, bug fixes, feature requests, financial contributions etc.). You can find a detailed overview for contributors here: CONTRIBUTING.md.

Note: The default branch for this repo is develop and all PRs should be based on this branch. This too means, the README files on this branch might refer to yet-unreleased features or packages. Please use the main branch for viewing the most recently released version(s)!.

Wiki

To date, the wiki has only been updated sporadically, but please be sure to check it out for project-wide glossary, information, cookbooks, useful snippets etc.

Projects

Latest updates

As of: 2025-04-06

StatusPackageVersionChangelog
@thi.ng/block-fsversionchangelog
@thi.ng/wasm-api-canvasversionchangelog

Algorithms & data structures

ProjectVersionChangelogDescription
@thi.ng/adjacencyversionchangelogAdjacency matrices & graph algorithms
@thi.ng/arraysversionchangelogArray utilities
@thi.ng/associativeversionchangelogAlt Set & Map implementations
@thi.ng/atomversionchangelogImmutable value wrappers, views, history
@thi.ng/bitfieldversionchangelog1D/2D bit field implementations
@thi.ng/bidir-indexversionchangelogBi-directional key-value map/index
@thi.ng/buffersversionchangelogGeneric read/write buffers w/ diff. behaviors
@thi.ng/cacheversionchangelogIn-memory caches / strategies
@thi.ng/cellularversionchangelogHighly configurable 1D Cellular automata
@thi.ng/dconsversionchangelogDoubly-linked list
@thi.ng/diffversionchangelogArray & object diffing
@thi.ng/disjoint-setversionchangelogDisjoint Set data structure
@thi.ng/dgraphversionchangelogDependency graph
@thi.ng/ecsversionchangelogEntity-Component System
@thi.ng/gpversionchangelogGenetic programming helpers / AST gen
@thi.ng/heapsversionchangelogBinary & d-ary heap impls
@thi.ng/idgenversionchangelogVersioned ID generation / free-list
@thi.ng/k-meansversionchangelogK-means clustering of n-D data
@thi.ng/leaky-bucketversionchangelogCounter-based Leaky Bucket implementation
@thi.ng/rampversionchangelogParametric, interpolated lookup tables
@thi.ng/quad-edgeversionchangelogQuad-edge, dual-graph data structure
@thi.ng/resolve-mapversionchangelogDAG computations & value resolution
@thi.ng/sorted-mapversionchangelogSorted map & set datastructure
@thi.ng/sparse-setversionchangelogSparse set datastructure
@thi.ng/trieversionchangelogTrie-based map datastructure w/ prefix queries
@thi.ng/vclockversionchangelogVector clock functions / comparators
@thi.ng/zipperversionchangelogImmutable tree editing / navigation

DSLs

ProjectVersionChangelogDescription
@thi.ng/pointfreeversionchangelogStack-based DSL & functional composition
@thi.ng/pointfree-langversionchangelogForth-like syntax layer for @thi.ng/pointfree
@thi.ng/proctextversionchangelogProcedural text generation engine
@thi.ng/sexprversionchangelogS-Expression parser & runtime infrastructure

File / file format / hardware support

ProjectVersionChangelogDescription
@thi.ng/axidrawversionchangelogMinimal, declarative AxiDraw plotter controller
@thi.ng/bencodeversionchangelogBencode binary format encoding
@thi.ng/csvversionchangelogCustomizable CSV parser/object mapper
@thi.ng/dotversionchangelogGraphviz DOM & export
@thi.ng/dsp-io-wavversionchangelogWAV file format exporter
@thi.ng/egfversionchangelogExtensible Graph Format
@thi.ng/file-ioversionchangelogAssorted file I/O utils for NodeJS
@thi.ng/geom-io-objversionchangelogWavefront OBJ model parser
@thi.ng/hiccup-cssversionchangelogCSS from nested JS data structures
@thi.ng/hiccup-htmlversionchangelogType-checked HTML5 element wrappers for hiccup
@thi.ng/hiccup-html-parseversionchangelogHTML parsing & transformation to hiccup format
@thi.ng/hiccup-markdownversionchangelogHiccup-to-Markdown serialization
@thi.ng/hiccup-svgversionchangeloghiccup based SVG vocab
@thi.ng/igesversionchangelogIGES format geometry serialization
@thi.ng/markdown-tableversionchangelogMarkdown table generator / formatter
@thi.ng/mimeversionchangelogFile extension to MIME type mappings
@thi.ng/msgpackversionchangelogMsgpack serialization/deserialization
@thi.ng/pixel-io-geotiffversionchangelogGeoTIFF reader support for thi.ng/pixel
@thi.ng/pixel-io-netpbmversionchangelog1/8/16/24bit NetPBM image format reader/writer
@thi.ng/pixel-io-pfmversionchangelogPortable FloatMap image format reader/writer
@thi.ng/prefixesversionchangelogLinked Data, RDF & xmlns prefixes/URLs
@thi.ng/saxversionchangelogSAX-like XML parser / transducer
@thi.ng/tangleversionchangelogLiterate programming utilities

Frontend / UI

ProjectVersionChangelogDescription
@thi.ng/blurhashversionchangelogFast image blurhash encoder/decoder
@thi.ng/canvasversionchangelogCanvas creation & HDPI support helpers
@thi.ng/dl-assetversionchangelogAsset/canvas/file download helpers
@thi.ng/emojiversionchangelogBi-directional emoji lookup tables (names/chars)
@thi.ng/hdiffversionchangelogString diffing w/ hiccup output (includes CLI)
@thi.ng/hdomversionchangelogHiccup based VDOM & diffing
@thi.ng/hdom-canvasversionchangeloghdom adapter for hiccup-canvas
@thi.ng/hdom-componentsversionchangeloghdom based UI components
@thi.ng/hdom-mockversionchangeloghdom mock implementation (testing / prototyping)
@thi.ng/hiccupversionchangelogS-expression based HTML/XML serialization
@thi.ng/hiccup-canvasversionchangeloghiccup interpreter for canvas api
@thi.ng/hiccup-carbon-iconsversionchangelogIBM Carbon icons in hiccup format
@thi.ng/imguiversionchangelogImmediate mode GUI
@thi.ng/interceptorsversionchangelogComposable event handlers & processor
@thi.ng/meta-cssversionchangelogCSS framework codegen, transpiler, bundler
@thi.ng/rdomversionchangelogReactive, diff-less, async UI components
@thi.ng/rdom-canvasversionchangelogrdom component wrapper for thi.ng/hiccup-canvas
@thi.ng/rdom-componentsversionchangelogUnstyled, customizable component collection
@thi.ng/rdom-formsversionchangelogDatadriven HTML form generation
@thi.ng/routerversionchangelogCustomizable browser & non-browser router
@thi.ng/text-canvasversionchangelogText-mode canvas, drawing, tables, charts
@thi.ng/text-formatversionchangelogColor text formatting w/ ANSI & HTML presets

Fundamentals

ProjectVersionChangelogDescription
@thi.ng/argsversionchangelogDeclarative & functional CLI arg parsing & coercions
@thi.ng/apiversionchangelogCommon types, decorators, mixins
@thi.ng/benchversionchangelogBasic benchmarking helpers
@thi.ng/checksversionchangelogType & value checks
@thi.ng/compareversionchangelogComparators
@thi.ng/composeversionchangelogFunctional composition helpers
@thi.ng/dateversionchangelogDate/time iterators, formatters, rounding
@thi.ng/defmultiversionchangelogDynamic multiple dispatch
@thi.ng/distanceversionchangelogn-D distance metrics & K-nearest neighborhoods
@thi.ng/equivversionchangelogDeep value equivalence checking
@thi.ng/errorsversionchangelogCustom error types
@thi.ng/exposeversionchangelogConditional global variable exposition
@thi.ng/fibersversionchangelogProcess hierarchies & ops for cooperative multitasking
@thi.ng/hexversionchangelogHex value formatters for U4-64 words
@thi.ng/loggerversionchangelogBasis infrastructure for arbitrary logging
@thi.ng/memoizeversionchangelogFunction memoization w/ customizable caching
@thi.ng/object-utilsversionchangelogPlain JS object & map manipulation
@thi.ng/oqueryversionchangelogPattern based query engine for JS objects
@thi.ng/parseversionchangelogParser combinators & AST generator/transformer
@thi.ng/pathsversionchangelogImmutable nested object accessors
@thi.ng/stringsversionchangelogHigher-order string formatting utils
@thi.ng/systemversionchangelogMinimal life cycle container for stateful app components
@thi.ng/timestampversionchangelogTimestamp abstraction/wrapper
@thi.ng/transcludeversionchangelogTemplate engine for text document generation
@thi.ng/unitsversionchangelogExtensible SI unit conversions

Geometry, image & visualization

ProjectVersionChangelogDescription
@thi.ng/boidsversionchangelogConfigurable n-dimensional boids simulation
@thi.ng/colorversionchangelogColor conversions, gradients
@thi.ng/color-palettesversionchangelogCollection of image-based color palettes
@thi.ng/dgraph-dotversionchangelogDependency graph -> Graphviz
@thi.ng/distance-transformversionchangelogImage based distance field generation
@thi.ng/fuzzy-vizversionchangelogVisualization, instrumentation for @thi.ng/fuzzy
@thi.ng/geomversionchangelog2D only geometry types & ops
@thi.ng/geom-accelversionchangelogSpatial indexing data structures
@thi.ng/geom-axidrawversionchangelogShape conversions for AxiDraw pen plotter
@thi.ng/geom-arcversionchangelog2D elliptic arc utils
@thi.ng/geom-clip-lineversionchangelog2D line clipping
@thi.ng/geom-clip-polyversionchangelog2D convex polygon clipping
@thi.ng/geom-closest-pointversionchangelogClosest point helpers
@thi.ng/geom-fuzzversionchangelogFuzzy 2D shape drawing / filling
@thi.ng/geom-hullversionchangelog2D convex hull (Graham scan)
@thi.ng/geom-isecversionchangelogPoint & shape intersection tests
@thi.ng/geom-isolineversionchangelog2D contour line extraction
@thi.ng/geom-poly-utilsversionchangelog2D polygon helpers
@thi.ng/geom-resampleversionchangelognD polyline / curve resampling
@thi.ng/geom-sdfversionchangelog2D SDF creation, conversions, operators, utilities
@thi.ng/geom-splinesversionchangelognD cubic / quadratic spline ops
@thi.ng/geom-subdiv-curveversionchangelognD iterative subdivision curves
@thi.ng/geom-tessellateversionchangelognD convex polygon tessellators
@thi.ng/geom-trace-bitmapversionchangelogbitmap image to vector conversion
@thi.ng/geom-voronoiversionchangelog2D iterative delaunay/voronoi
@thi.ng/geom-webglversionchangelogthi.ng/geom / WebGL shape conversion & interop
@thi.ng/imagoversionchangelogDeclarative & extensible image processing pipelines
@thi.ng/lsysversionchangelogExtensible L-System architecture
@thi.ng/pixelversionchangelogMulti-format pixel buffers
@thi.ng/pixel-convolveversionchangelogExtensible image convolution & kernel presets
@thi.ng/pixel-dominant-colorsversionchangelogk-means based dominant colors extraction
@thi.ng/pixel-ditherversionchangelogImage dithering w/ various algorithm presets
@thi.ng/poissonversionchangelognD Poisson disk sampling
@thi.ng/porter-duffversionchangelogAlpha blending / compositing ops
@thi.ng/rasterizeversionchangelogShape drawing, filling & rasterization
@thi.ng/scenegraphversionchangelogExtensible 2D/3D scenegraph
@thi.ng/simdversionchangelogWebAssembly SIMD vector batch processing
@thi.ng/tsneversionchangelogConfigurable t-SNE visualization solver
@thi.ng/vizversionchangelogDeclarative & functional data visualization toolkit

Iterator, stream & sequence processing

ProjectVersionChangelogDescription
@thi.ng/cspversionchangelogChannel based async ops
@thi.ng/grid-iteratorsversionchangelog2D grid iterator strategies
@thi.ng/seqversionchangelogLisp/Clojure-style sequence abstraction
@thi.ng/transducersversionchangelogComposable data transformations
@thi.ng/transducers-asyncversionchangelogAsync transducers, reducers & iterators
@thi.ng/transducers-binaryversionchangelogBinary data related transducers
@thi.ng/transducers-fsmversionchangelogFinite state transducer
@thi.ng/transducers-hdomversionchangelogTransducer based hdom UI updates
@thi.ng/transducers-patchversionchangelogPatch-based, array & object editing
@thi.ng/transducers-statsversionchangelogTechnical / statistical analysis

Low-level, binary, memory management, interop

ProjectVersionChangelogDescription
@thi.ng/base-nversionchangelogArbitrary base-n encoding/decoding with presets
@thi.ng/binaryversionchangelogAssorted binary / bitwise ops, utilities
@thi.ng/bitstreamversionchangelogBitwise input / output streams
@thi.ng/dlogicversionchangelogDigital logic ops / constructs
@thi.ng/leb128versionchangelogWASM based LEB128 varint encoder / decoder
@thi.ng/mallocversionchangelogRaw & typed array memory pool & allocator
@thi.ng/mortonversionchangelogZ-order-curve / Morton coding
@thi.ng/range-coderversionchangelogBinary data Range encoder / decoder
@thi.ng/rle-packversionchangelogRun-length encoding data compression
@thi.ng/soaversionchangelogMemory mapped data structures & serialization
@thi.ng/unionstructversionchangelogWrapper for C-like structs / unions
@thi.ng/vector-poolsversionchangelogData structures for memory mapped vectors
@thi.ng/wasm-apiversionchangelogModular, extensible JS/WebAssembly bridge API
@thi.ng/wasm-api-bindgenversionchangelogPolyglot bindings code generator for C/Zig/TS
@thi.ng/wasm-api-canvasversionchangelogWASM-side Canvas2D API bindings
@thi.ng/wasm-api-domversionchangelogWASM-side DOM manipulation
@thi.ng/wasm-api-scheduleversionchangelogWASM-side delayed code execution/scheduling

Maths

ProjectVersionChangelogDescription
@thi.ng/dual-algebraversionchangelogDual number algebra / automatic differentiation
@thi.ng/dspversionchangelogDSP utils, composable signal gens/processors
@thi.ng/fuzzyversionchangelogFuzzy logic primitives & rule inference engine
@thi.ng/intervalsversionchangelogOpen/closed intervals, queries, set ops
@thi.ng/mathversionchangelogAssorted common math functions & utilities
@thi.ng/matricesversionchangelogMatrix operations
@thi.ng/sparseversionchangelogSparse matrix & vector impls
@thi.ng/timestepversionchangelogFixed timestep simulation updates with state interpolation
@thi.ng/vectorsversionchangelogFixed & arbitrary-length vector ops

Network

ProjectVersionChangelogDescription
@thi.ng/serverversionchangelogMinimal, extensible, interceptor-based HTTP server

Randomness

ProjectVersionChangelogDescription
@thi.ng/colored-noiseversionchangelog1D colored noise generators
@thi.ng/ksuidversionchangelogK-sortable unique identifiers, binary & base-N encoded
@thi.ng/lowdiscversionchangelogn-D Low discrepancy sequence generators
@thi.ng/randomversionchangelogSeedable PRNG implementations, distributions & utilities
@thi.ng/random-fxhashversionchangelogPRNG impl & utilities for fxhash projects
@thi.ng/uuidversionchangelogBinary & string-based UUID v4 generator

Reactive programming

ProjectVersionChangelogDescription
@thi.ng/rstreamversionchangelogPush-based, reactive event stream primitves
@thi.ng/rstream-cspversionchangelogAdapter bridge CSP -> rstream
@thi.ng/rstream-dotversionchangelogGraphviz visualization of rstream topologies
@thi.ng/rstream-gesturesversionchangelogMouse & touch event stream abstraction
@thi.ng/rstream-graphversionchangelogDeclarative dataflow graph construction
@thi.ng/rstream-logversionchangelogHierarchical structured data logging
@thi.ng/rstream-log-fileversionchangelogLog-file output handler
@thi.ng/rstream-queryversionchangelogTriple store & query engine

WebGL / GPGPU

ProjectVersionChangelogDescription
@thi.ng/shader-astversionchangelogAST DSL for x-platform shader code
@thi.ng/shader-ast-glslversionchangelogGLSL code generator
@thi.ng/shader-ast-jsversionchangelogJS code generator
@thi.ng/shader-ast-optimizeversionchangelogAST code optimization strategies
@thi.ng/shader-ast-stdlibversionchangelog100+ useful AST shader functions
@thi.ng/webglversionchangelogWebGL 1/2 / GPGPU facilities
@thi.ng/webgl-msdfversionchangelogMSDF font rendering
@thi.ng/webgl-shadertoyversionchangelogShadertoy-like WebGL setup

Deprecated packages

The following packages have been deprecated. Their readmes describe reasons and alternatives:

ProjectVersionChangelogDescription
@thi.ng/fsmversionchangelogFSM / parser primitives
@thi.ng/geom-apiversionchangelogShared types for thi.ng/geom packages
@thi.ng/iteratorsversionchangelogES6 generators / iterators
@thi.ng/testamentversionchangelogMinimal test runner

Building

git clone https://github.com/thi-ng/umbrella.git
cd umbrella

yarn install
yarn build

Once the entire mono-repo has been fully built at least once before, individual packages can then be (re)built like so:

yarn workspace @thi.ng/transducers run build

# or

(cd packages/transducers && yarn build)

# or

(cd packages/transducers && yarn build:esbuild)

Note: The yarn build script alias will also generate TS type declaration files. This step is only needed once in the beginning or if updating the public API of a package. If you’re confident it’s not needed, using the build:esbuild alias is sufficient and much faster. Also, TS declaration files can be manually rebuilt via build:decl

Building example projects

Please see the example build instructions in the wiki for further details.

Testing

(Most, but not all packages have tests)

Test for all packages are run via bun.sh.

# build all packages, then run all tests (in one go)
yarn test

# only run all tests
yarn test:only

# or individually
yarn workspace @thi.ng/rstream run test

Building API docs

Autogenerated documentation (using TypeDoc) will be saved under /packages/*/doc/ (more info).

yarn doc

Extracting code examples from readme files & comments

All packages in this repo have prepared infrastructure to extract various code examples & snippets from their README files and from comments in the source code. Altogether, there’re 800-1000 of them in this repo, but only ~420 have been processed thus far (it’s an ongoing time consuming manual process to prepare & check each of them, but work is under way! Please get in touch if you want to help!).

The code extraction is handled via thi.ng/tangle, itself a part of thi.ng/umbrella. You can read more details about this process here:

To extract code blocks as source files from readmes:

# in the repo root (to process all packages)
yarn doc:readme

# for a single package only
(cd packages/<name> && yarn doc:readme)

To extract example code blocks from doc strings (API docs) in source code:

# in the repo root (to process all packages)
yarn tool:tangle

# for a single package only
(cd packages/<name> && yarn tool:tangle)

In all cases, the extracted files will be saved in each package’s /export folder and can then be run directly via bun:

bun packages/arrays/export/topo-sort.ts

Acknowledgements

Maintaining a large monorepo like this requires a lot of infrastructure and I’m grateful for the tooling provided by the following projects to simplify those tasks:

License

© 2015 - 2025 Karsten Schmidt // Apache Software License 2.0

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Karsten Schmidt
Karsten Schmidt

💻 📖 🚧 💵
Alberto
Alberto

💻 💡 🐛 🤔 💵
Arthur Carabott
Arthur Carabott

💻 🤔 💡 📝 💵
André Wachter
André Wachter

💻 🤔 🐛
Gavin Cannizzaro
Gavin Cannizzaro

💻 🐛 🤔
Logan Powell
Logan Powell

📖 🐛 🤔 💵
Marcin Ignac
Marcin Ignac

🐛
arcticnoah
arcticnoah

💻
allforabit
allforabit

🐛 💻 🤔 💵
Yifan Wu
Yifan Wu

🐛 📖
stwind
stwind

💻 🐛
evilive
evilive

💻
Bnaya Peretz
Bnaya Peretz

💻 🐛 🤔
oljeger
oljeger

🐛
Nik Shevchenko
Nik Shevchenko

🐛 💻
Matei Adriel
Matei Adriel

💻 🐛 🤔
Pierre Grimaud
Pierre Grimaud

📖
Matt Huebert
Matt Huebert

💵
Raphael Saunier
Raphael Saunier

💵
Eric Ihli
Eric Ihli

💵
David Pham
David Pham

💵
TBD
TBD

🐛 🤔
Pedro Henriques dos Santos Teixeira
Pedro Henriques dos Santos Teixeira

💵
Jamie Owen
Jamie Owen

💻 🐛
Robert Kesteson
Robert Kesteson

🐛 💻
Chancy Kennedy
Chancy Kennedy

💵
Jarred Sumner
Jarred Sumner

🐛
Jamie Slome
Jamie Slome

🐛 🛡️
d3v53c
d3v53c

🐛 🛡️
Jannis Pohlmann
Jannis Pohlmann

🐛
Shakthi Prasad G S
Shakthi Prasad G S

🐛 💻
Robin Gower
Robin Gower

🐛
Michael Latzoni
Michael Latzoni

🐛
Z Yin
Z Yin

🐛
Damien Seguin
Damien Seguin

🐛 💻
Rui Gil
Rui Gil

🐛
Ja|nz
Ja|nz

💻 🚇 🚧
Tyler Freeman
Tyler Freeman

🐛 💻
blackhuman
blackhuman

🐛
David Negstad
David Negstad

💻
Muhammad Ridho
Muhammad Ridho

🐛 💻
MarcusWagberg
MarcusWagberg

💻
Masashi Yoshikawa
Masashi Yoshikawa

🐛
Guido Schmidt
Guido Schmidt

🐛 💵
tsukamotohideki
tsukamotohideki

💵
Dave Meehan
Dave Meehan

💻 🤔
Aurélien Bottazini
Aurélien Bottazini

🐛
Alex
Alex

🐛 💵
Ross Cairns
Ross Cairns

💵
Ruslan Prakapchuk
Ruslan Prakapchuk

💵
Jarrod Davis
Jarrod Davis

💵
Nicolas Lebrun
Nicolas Lebrun

💡
Dawid Górny
Dawid Górny

💵
Michael Reitzenstein
Michael Reitzenstein

💵
Sam Nosenzo
Sam Nosenzo

💵
Igor Loskutov
Igor Loskutov

💻 🤔
Yury
Yury

💻 🤔 💵
Jean-Frédéric Faust
Jean-Frédéric Faust

💻 🐛

This project follows the all-contributors specification. Contributions of any kind welcome!

About
⛱ Broadly scoped ecosystem & mono-repository of 204 TypeScript projects (and ~185 examples) for general purpose, functional, data driven development
Owner
thi-ng (Organization)
Last Commit
2025-04-09
Latest Release
Latest Release Date
Created
2018-01-24