umbrella

⛱ Mono-repository of 99 TypeScript/ES6 projects for functional, data driven development

Github stars Tracking Chart

@thi.ng/umbrella

Travis status
Code Climate
Conventional Commits
Discord chat
Twitter 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

Mono-repository for 100+ thi.ng TypeScript/ES6 projects, a wide
collection of largely data transformation oriented packages and building
blocks for:

  • Functional programming (composition, memoization, transducers, multi-methods)
  • ES6 iterators
  • Stream based, reactive programming, dataflow graphs / pipelines
  • WebWorker workflow abstractions
  • Data structures & data transformations for wide range of use cases (list, sets, maps)
  • Value-based equivalence
  • FSM primitives, parser generators
  • Data driven UI components, event & side effect handling
  • Canvas-based Immediate mode GUI components
  • Immutable data handling, state containers, transacted state updates, Undo-Redo history
  • 2D geometry generation, processing, conversion & visualization
  • Vector & matrix implementations with optional support for strided layouts, SIMD etc.
  • Color space conversions, cosine gradients
  • Multi-format pixel buffers, conversions, Porter-Duff alpha-blending operators
  • Declarative WebGL 1/2 abstraction layer
  • S-expression parser & runtime infrastructure for custom DSL creation
  • DSL for shader functions defined in TypeScript and cross-compilation to GLSL, JS, VEX etc.
  • Low-level tooling for binary data, shared memory / WASM / WebGL interop
  • etc. (see package overview below)

...all with a keen eye on simplicity, re-use & minimalism without
sacrificing flexibility.

This project is NOT a framework, provides no turn-key, one-size-fits-all
approach and instead encourages a mix & match philosophy for various key
aspects of application design (in & outside the browser). Most customization points only
expect certain interfaces rather than concrete implementations.

Most packages:

  • have detailed, individual README files w/ small usage examples
  • are versioned independently
  • distributed in ES6 syntax and multiple format (ESM, CommonJS, UMD)
    with TypeScript typings & changelogs
  • highly modular with largely only a few closely related functions or
    single function / class per file to help w/ tree shaking
  • provide re-exports of all their publics for full library imports
  • have either none or only @thi.ng internal runtime dependencies
  • have been used in production
  • declare public interfaces, enums & types in an src/api.ts file
    (larger packages only)
  • auto-generated online documentation at docs.thi.ng
  • licensed under Apache Software License 2.0

Examples

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

Blog posts

Community

Join our little community on our Discord
server
or get in touch via
Twitter or the issue
tracker
. If you'd like to
contribute, please first read this document.

Projects

New / unreleased packages in development

(These packages are still unreleased and only available on their feature or develop branches)

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:

lerna run build --scope @thi.ng/transducers

Building example projects

Please see the example build
instructions

in the wiki for further details.

Testing

(most, but not all packages have tests)

yarn test

# or individually
lerna run test --scope @thi.ng/rstream

Coverage

The resulting reports will be saved under /packages/*/coverage/lcov-report/.

yarn cover

Documentation

Autogenerated documentation (using
TypeDoc) will be saved under
/packages/*/doc/ and is also available at docs.thi.ng.

yarn doc

License

© 2018 Karsten Schmidt // Apache Software License 2.0

Contributors ✨

Thanks goes to these wonderful people (emoji key):

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

Main metrics

Overview
Name With Ownerthi-ng/umbrella
Primary LanguageTypeScript
Program languageTypeScript (Language Count: 7)
Platform
License:Apache License 2.0
所有者活动
Created At2018-01-24 02:31:44
Pushed At2025-04-24 23:46:06
Last Commit At
Release Count42134
Last Release Name@thi.ng/webgl-shadertoy@1.0.21 (Posted on )
First Release Name@thi.ng/api@1.2.1 (Posted on 2018-01-24 02:44:26)
用户参与
Stargazers Count3.6k
Watchers Count47
Fork Count150
Commits Count11.6k
Has Issues Enabled
Issues Count280
Issue Open Count51
Pull Requests Count157
Pull Requests Open Count4
Pull Requests Close Count23
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private