/umbrella

⛱ Mono-repository for 35+ thi.ng TypeScript/ES6 projects

Primary LanguageTypeScript

@thi.ng/umbrella

Travis status Conventional Commits Discord chat

Mono-repository for thi.ng TypeScript/ES6 projects, a collection of largely data / transformation oriented packages and building blocks reactive applications, components (not just UI related), dataflow.

All/most packages:

  • have detailed, individual README files w/ small usage examples
  • versioned independently
  • distributed as ES6 (CommonJS modules) with bundled TypeScript typings & changelogs
  • highly modular with largely only a few closely related functions / single 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 (see graph below)
  • declare public interfaces, enums & types in an src/api.ts file (larger packages only)
  • autogenerated online documentation at docs.thi.ng
  • licensed under Apache Software License 2.0

There's a steadily growing number of standalone examples (different difficulties, many combining functionality from several packages) in the examples directory.

Projects

Projects Version Changelog Description
@thi.ng/api npm (scoped) changelog Common types, decorators, mixins
@thi.ng/associative npm (scoped) changelog Alt Set & Map implementations
@thi.ng/atom npm (scoped) changelog Immutable value wrappers, views, history
@thi.ng/bench npm (scoped) changelog Basic benchmarking helpers
@thi.ng/bitstream npm (scoped) changelog Bitwise input / output streams
@thi.ng/cache npm (scoped) changelog In-memory caches / strategies
@thi.ng/checks npm (scoped) changelog Type & value checks
@thi.ng/compare npm (scoped) changelog Comparator
@thi.ng/csp npm (scoped) changelog Channel based async ops
@thi.ng/dcons npm (scoped) changelog Doubly-linked list
@thi.ng/defmulti npm (scoped) changelog Dynamic multiple dispatch
@thi.ng/dgraph npm (scoped) changelog Dependency graph
@thi.ng/diff npm (scoped) changelog Array & object diffing
@thi.ng/dot npm (scoped) changelog Graphviz DOM & export
@thi.ng/equiv npm (scoped) changelog Deep value equivalence checking
@thi.ng/errors npm (scoped) changelog Custom error types
@thi.ng/hdom npm (scoped) changelog Hiccup based VDOM & diffing
@thi.ng/hdom-components npm (scoped) changelog hdom based UI components
@thi.ng/heaps npm (scoped) changelog Binary & d-ary heap impls
@thi.ng/hiccup npm (scoped) changelog S-expression based HTML/XML serialization
@thi.ng/hiccup-css npm (scoped) changelog CSS from nested JS data structures
@thi.ng/hiccup-svg npm (scoped) changelog hiccup based SVG vocab
@thi.ng/interceptors npm (scoped) changelog Composable event handlers & processor
@thi.ng/iterators npm (scoped) changelog ES6 generators / iterators
@thi.ng/paths npm (scoped) changelog Immutable nested object accessors
@thi.ng/pointfree npm (scoped) changelog stack-based DSL & functional composition
@thi.ng/pointfree-lang npm (scoped) changelog Forth-like syntax layer for @thi.ng/pointfree
@thi.ng/rle-pack npm (scoped) changelog Run-length encoding data compression
@thi.ng/resolve-map npm (scoped) changelog DAG computations & value resolution
@thi.ng/router npm (scoped) changelog Customizable browser & non-browser router
@thi.ng/rstream npm (scoped) changelog Push-based, reactive event stream primitves
@thi.ng/rstream-csp npm (scoped) changelog Adapter bridge CSP -> rstream
@thi.ng/rstream-dot npm (scoped) changelog Graphviz visualization of rstream topologies
@thi.ng/rstream-gestures npm (scoped) changelog Mouse & touch event stream abstraction
@thi.ng/rstream-graph npm (scoped) changelog Declarative dataflow graph construction
@thi.ng/rstream-log npm (scoped) changelog Hierarchical structured data logging
@thi.ng/rstream-query npm (scoped) changelog Triple store & query engine
@thi.ng/transducers npm (scoped) changelog Composable data transformations
@thi.ng/unionstruct npm (scoped) changelog Wrapper for C-like structs / unions

Dependency graph

(The graph has been temporarily removed to save repo space)

Building

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

Building example projects

# build all examples (from project root)
yarn examples

# in example dir
yarn dev

Testing

(TODO not all packages have tests yet)

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