67

GitHub - thi-ng/umbrella: ⛱ Mono-repository of ~50 TypeScript/ES6 projects for m...

 5 years ago
source link: https://github.com/thi-ng/umbrella
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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 (20+) 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/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/dot version changelog Graphviz DOM & export @thi.ng/equiv version changelog Deep value equivalence checking @thi.ng/errors version changelog Custom error types @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/memoize version changelog Function memoization w/ customizable caching @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

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK