GitHub - thi-ng/umbrella: ⛱ Mono-repository of ~50 TypeScript/ES6 projects for m...
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
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
changelog
Common types, decorators, mixins
@thi.ng/associative
changelog
Alt Set & Map implementations
@thi.ng/atom
changelog
Immutable value wrappers, views, history
@thi.ng/bench
changelog
Basic benchmarking helpers
@thi.ng/bitstream
changelog
Bitwise input / output streams
@thi.ng/cache
changelog
In-memory caches / strategies
@thi.ng/checks
changelog
Type & value checks
@thi.ng/compare
changelog
Comparator
@thi.ng/csp
changelog
Channel based async ops
@thi.ng/dcons
changelog
Doubly-linked list
@thi.ng/defmulti
changelog
Dynamic multiple dispatch
@thi.ng/dgraph
changelog
Dependency graph
@thi.ng/diff
changelog
Array & object diffing
@thi.ng/dot
changelog
Graphviz DOM & export
@thi.ng/equiv
changelog
Deep value equivalence checking
@thi.ng/errors
changelog
Custom error types
@thi.ng/hdom
changelog
Hiccup based VDOM & diffing
@thi.ng/hdom-canvas
changelog
hdom based declarative canvas drawing
@thi.ng/hdom-components
changelog
hdom based UI components
@thi.ng/heaps
changelog
Binary & d-ary heap impls
@thi.ng/hiccup
changelog
S-expression based HTML/XML serialization
@thi.ng/hiccup-css
changelog
CSS from nested JS data structures
@thi.ng/hiccup-svg
changelog
hiccup based SVG vocab
@thi.ng/iges
changelog
IGES format geometry serialization
@thi.ng/interceptors
changelog
Composable event handlers & processor
@thi.ng/iterators
changelog
ES6 generators / iterators
@thi.ng/memoize
changelog
Function memoization w/ customizable caching
@thi.ng/paths
changelog
Immutable nested object accessors
@thi.ng/pointfree
changelog
stack-based DSL & functional composition
@thi.ng/pointfree-lang
changelog
Forth-like syntax layer for @thi.ng/pointfree
@thi.ng/range-coder
changelog
Binary data Range encoder / decoder
@thi.ng/rle-pack
changelog
Run-length encoding data compression
@thi.ng/resolve-map
changelog
DAG computations & value resolution
@thi.ng/router
changelog
Customizable browser & non-browser router
@thi.ng/rstream
changelog
Push-based, reactive event stream primitves
@thi.ng/rstream-csp
changelog
Adapter bridge CSP -> rstream
@thi.ng/rstream-dot
changelog
Graphviz visualization of rstream topologies
@thi.ng/rstream-gestures
changelog
Mouse & touch event stream abstraction
@thi.ng/rstream-graph
changelog
Declarative dataflow graph construction
@thi.ng/rstream-log
changelog
Hierarchical structured data logging
@thi.ng/rstream-query
changelog
Triple store & query engine
@thi.ng/sax
changelog
SAX-like XML parser / transducer
@thi.ng/strings
changelog
Higher-order string formatting utils
@thi.ng/transducers
changelog
Composable data transformations
@thi.ng/transducers-fsm
changelog
Finite State Machine
@thi.ng/transducers-hdom
changelog
Transducer based hdom UI updates
@thi.ng/transducers-stats
changelog
Technical / statistical analysis
@thi.ng/unionstruct
changelog
Wrapper for C-like structs / unions
@thi.ng/vectors
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
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK