Mono-repository of 58 TypeScript/ES6 projects for modern web development
Switch branches/tags
@thi.ng/vectors@1.4.3 @thi.ng/vectors@1.4.2 @thi.ng/vectors@1.4.1 @thi.ng/vectors@1.4.0 @thi.ng/vectors@1.3.0 @thi.ng/vectors@1.2.2 @thi.ng/vectors@1.2.1 @thi.ng/vectors@1.2.0 @thi.ng/vectors@1.1.0 @thi.ng/vectors@1.0.0 @thi.ng/vectors@0.6.0 @thi.ng/vectors@0.5.3 @thi.ng/vectors@0.5.2 @thi.ng/vectors@0.5.1 @thi.ng/vectors@0.5.0 @thi.ng/vectors@0.4.0 @thi.ng/vectors@0.3.0 @thi.ng/vectors@0.2.1 @thi.ng/vectors@0.2.0 @thi.ng/vectors@0.1.3 @thi.ng/vectors@0.1.2 @thi.ng/vectors@0.1.1 @thi.ng/vectors@0.1.0 @thi.ng/unionstruct@0.1.18 @thi.ng/unionstruct@0.1.17 @thi.ng/unionstruct@0.1.16 @thi.ng/unionstruct@0.1.15 @thi.ng/unionstruct@0.1.14 @thi.ng/unionstruct@0.1.13 @thi.ng/unionstruct@0.1.12 @thi.ng/unionstruct@0.1.11 @thi.ng/unionstruct@0.1.10 @thi.ng/unionstruct@0.1.9 @thi.ng/unionstruct@0.1.8 @thi.ng/unionstruct@0.1.7 @thi.ng/unionstruct@0.1.6 @thi.ng/unionstruct@0.1.5 @thi.ng/unionstruct@0.1.4 @thi.ng/unionstruct@0.1.3 @thi.ng/unionstruct@0.1.2 @thi.ng/unionstruct@0.1.1 @thi.ng/transducers@2.2.2 @thi.ng/transducers@2.2.1 @thi.ng/transducers@2.2.0 @thi.ng/transducers@2.1.6 @thi.ng/transducers@2.1.5 @thi.ng/transducers@2.1.4 @thi.ng/transducers@2.1.3 @thi.ng/transducers@2.1.2 @thi.ng/transducers@2.1.2-alpha.1 @thi.ng/transducers@2.1.2-alpha.0 @thi.ng/transducers@2.1.1 @thi.ng/transducers@2.1.0 @thi.ng/transducers@2.0.4 @thi.ng/transducers@2.0.3 @thi.ng/transducers@2.0.2 @thi.ng/transducers@2.0.1 @thi.ng/transducers@2.0.0 @thi.ng/transducers@1.16.0 @thi.ng/transducers@1.15.0 @thi.ng/transducers@1.14.3 @thi.ng/transducers@1.14.2 @thi.ng/transducers@1.14.1 @thi.ng/transducers@1.14.0 @thi.ng/transducers@1.13.0 @thi.ng/transducers@1.12.2 @thi.ng/transducers@1.12.1 @thi.ng/transducers@1.12.0 @thi.ng/transducers@1.11.1 @thi.ng/transducers@1.11.0 @thi.ng/transducers@1.10.3 @thi.ng/transducers@1.10.2 @thi.ng/transducers@1.10.1 @thi.ng/transducers@1.10.0 @thi.ng/transducers@1.9.4 @thi.ng/transducers@1.9.3 @thi.ng/transducers@1.9.2 @thi.ng/transducers@1.9.1 @thi.ng/transducers@1.9.0 @thi.ng/transducers@1.8.6 @thi.ng/transducers@1.8.5 @thi.ng/transducers@1.8.4 @thi.ng/transducers@1.8.3 @thi.ng/transducers@1.8.2 @thi.ng/transducers@1.8.1 @thi.ng/transducers@1.8.0 @thi.ng/transducers@1.7.5 @thi.ng/transducers@1.7.4 @thi.ng/transducers@1.7.3 @thi.ng/transducers@1.7.2 @thi.ng/transducers@1.7.1 @thi.ng/transducers@1.7.0 @thi.ng/transducers@1.6.2 @thi.ng/transducers@1.6.1 @thi.ng/transducers@1.6.0 @thi.ng/transducers@1.5.1 @thi.ng/transducers@1.5.0 @thi.ng/transducers@1.4.0 @thi.ng/transducers@1.3.0 @thi.ng/transducers@1.2.0
Nothing to show
Clone or download
postspectacular Publish
 - @thi.ng/dsp@0.1.2
 - @thi.ng/geom-accel@0.1.2
 - @thi.ng/geom@0.2.2
 - @thi.ng/math@0.2.1
 - @thi.ng/morton@0.2.1
 - @thi.ng/vectors@1.4.3
Latest commit e044a6a Nov 19, 2018

README.md

@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 for functional programming, reactive applications, dataflow graphs / pipelines, components (not just UI related), all with a keen eye on simplicity & minimalism without sacrificing flexibility.

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

All / most packages:

  • have detailed, individual README files w/ small usage examples
  • are versioned independently
  • distributed in ES6 syntax (as CommonJS modules) with doc comments (incl. example code snippets), bundled 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

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

Projects

Projects Version Changelog Description
@thi.ng/api version changelog Common types, decorators, mixins
@thi.ng/associative version changelog Alt Set & Map implementations
@thi.ng/atom version changelog Immutable value wrappers, views, history
@thi.ng/bench version changelog Basic benchmarking helpers
@thi.ng/binary version changelog Assorted binary / bitwise ops, utilities
@thi.ng/bitstream version changelog Bitwise input / output streams
@thi.ng/cache version changelog In-memory caches / strategies
@thi.ng/checks version changelog Type & value checks
@thi.ng/compare version changelog Comparator
@thi.ng/csp version changelog Channel based async ops
@thi.ng/dcons version changelog Doubly-linked list
@thi.ng/defmulti version changelog Dynamic multiple dispatch
@thi.ng/dgraph version changelog Dependency graph
@thi.ng/diff version changelog Array & object diffing
@thi.ng/dlogic version changelog Digital logic ops / constructs
@thi.ng/dot version changelog Graphviz DOM & export
@thi.ng/dsp version changelog DSP utils, oscillators
@thi.ng/equiv version changelog Deep value equivalence checking
@thi.ng/errors version changelog Custom error types
@thi.ng/geom version changelog 2D geometry types & operations
@thi.ng/geom-accel version changelog Spatial indexing data structures
@thi.ng/hdom version changelog Hiccup based VDOM & diffing
@thi.ng/hdom-canvas version changelog hdom based declarative canvas drawing
@thi.ng/hdom-components version changelog hdom based UI components
@thi.ng/heaps version changelog Binary & d-ary heap impls
@thi.ng/hiccup version changelog S-expression based HTML/XML serialization
@thi.ng/hiccup-css version changelog CSS from nested JS data structures
@thi.ng/hiccup-svg version changelog hiccup based SVG vocab
@thi.ng/iges version changelog IGES format geometry serialization
@thi.ng/interceptors version changelog Composable event handlers & processor
@thi.ng/iterators version changelog ES6 generators / iterators
@thi.ng/malloc version changelog Raw & typed array memory pool & allocator
@thi.ng/math version changelog Assorted common math functions & utilities
@thi.ng/memoize version changelog Function memoization w/ customizable caching
@thi.ng/morton version changelog Z-order-curve / Morton coding
@thi.ng/paths version changelog Immutable nested object accessors
@thi.ng/pointfree version changelog stack-based DSL & functional composition
@thi.ng/pointfree-lang version changelog Forth-like syntax layer for @thi.ng/pointfree
@thi.ng/range-coder version changelog Binary data Range encoder / decoder
@thi.ng/rle-pack version changelog Run-length encoding data compression
@thi.ng/resolve-map version changelog DAG computations & value resolution
@thi.ng/router version changelog Customizable browser & non-browser router
@thi.ng/rstream version changelog Push-based, reactive event stream primitves
@thi.ng/rstream-csp version changelog Adapter bridge CSP -> rstream
@thi.ng/rstream-dot version changelog Graphviz visualization of rstream topologies
@thi.ng/rstream-gestures version changelog Mouse & touch event stream abstraction
@thi.ng/rstream-graph version changelog Declarative dataflow graph construction
@thi.ng/rstream-log version changelog Hierarchical structured data logging
@thi.ng/rstream-query version changelog Triple store & query engine
@thi.ng/sax version changelog SAX-like XML parser / transducer
@thi.ng/strings version changelog Higher-order string formatting utils
@thi.ng/transducers version changelog Composable data transformations
@thi.ng/transducers-fsm version changelog Finite State Machine
@thi.ng/transducers-hdom version changelog Transducer based hdom UI updates
@thi.ng/transducers-stats version changelog Technical / statistical analysis
@thi.ng/unionstruct version changelog Wrapper for C-like structs / unions
@thi.ng/vectors version changelog Memory-mapped vector & matrix operations

Building

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

Building example projects

The below yarn examples command assumes you have the parcel bundler & terser minifier globally installed, if not then please first run:

yarn global add parcel-bundler terser
# build all examples (from project root)
yarn examples

# build a single example (production mode)
scripts/build-examples example-name

# in example dir
yarn build

Testing

(TODO 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