From 89e1bd5177fa1dc890218d2dc3ee8dc2cf34ea5c Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Fri, 24 Aug 2018 18:52:04 +0100 Subject: [PATCH 01/60] docs(rle-pack): fix diagram link --- packages/rle-pack/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/rle-pack/README.md b/packages/rle-pack/README.md index d2295b4a6f..83570a0112 100644 --- a/packages/rle-pack/README.md +++ b/packages/rle-pack/README.md @@ -17,7 +17,7 @@ will be encoded using additional RLE chunks... ### Encoding format -![data layout](https://github.com/thi-ng/umbrella/tree/master/packages/assets/rle-layout.png) +![data layout](../../assets/rle-layout.png) - 32 bits - original number of words - 5 bits - word size From f9a1cc2ace4cc3702414b46f450ce4e7ec07082f Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Fri, 24 Aug 2018 18:52:20 +0100 Subject: [PATCH 02/60] docs(transducers-stats): fix screenshot link --- packages/transducers-stats/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/transducers-stats/README.md b/packages/transducers-stats/README.md index f0bd784ef3..af3dc77be5 100644 --- a/packages/transducers-stats/README.md +++ b/packages/transducers-stats/README.md @@ -59,7 +59,7 @@ For some realworld use, please see the [crypto chart](https://github.com/thi-ng/umbrella/tree/master/examples/crypto-chart) example. -![screenshot](https://github.com/thi-ng/umbrella/tree/master/assets/crypto-chart.png) +![screenshot](../../assets/crypto-chart.png) ```ts import * as tx from "@thi.ng/transducers"; From 113b424b425ebc701eb28a914785105ff52c27c4 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Fri, 24 Aug 2018 21:34:11 +0100 Subject: [PATCH 03/60] docs: fix links in readmes --- assets/hdom-dataflow.png | Bin 0 -> 140826 bytes assets/hdom-dataflow.svg | 2 - examples/crypto-chart/README.md | 4 +- examples/pointfree-svg/README.md | 13 +- examples/rstream-dataflow/README.md | 2 +- packages/dot/README.md | 2 +- packages/hdom/README.md | 2 +- packages/iges/README.md | 2 +- packages/pointfree-lang/README.md | 2 +- packages/rle-pack/README.md | 2 +- packages/rstream-dot/README.md | 2 +- packages/rstream-query/README.md | 5 +- packages/transducers-stats/README.md | 28 ++-- packages/transducers/README.md | 224 +++++++++++++-------------- 14 files changed, 145 insertions(+), 145 deletions(-) create mode 100644 assets/hdom-dataflow.png delete mode 100644 assets/hdom-dataflow.svg diff --git a/assets/hdom-dataflow.png b/assets/hdom-dataflow.png new file mode 100644 index 0000000000000000000000000000000000000000..820ae33df973112ea65fda83dae76cde22513e85 GIT binary patch literal 140826 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 DCea`I literal 0 HcmV?d00001 diff --git a/assets/hdom-dataflow.svg b/assets/hdom-dataflow.svg deleted file mode 100644 index aa6ea5e2c4..0000000000 --- a/assets/hdom-dataflow.svg +++ /dev/null @@ -1,2 +0,0 @@ - -
App state /
source data
[Not supported by viewer]
DOM tree creation
(nested JS array)
[Not supported by viewer]
Recursive Diff
w/ previous tree
[Not supported by viewer]

State changes
caused by
events

[Not supported by viewer]
Browser DOM
mutation
Browser DOM<div>mutation</div>
Tree expansion
(normalization)
[Not supported by viewer]
element & attrib updates
component lifecycle hooks
[Not supported by viewer]
computes
minimum changeset
[Not supported by viewer]
tag normalization
nested component function execution
tag normalization<div>nested component function execution</div>
static / dynamic arrays
closures
component objects
[Not supported by viewer]
unprescribed /
anything goes...
[Not supported by viewer]
  requestAnimationFrame()  
&nbsp; requestAnimationFrame()&nbsp;&nbsp;
  user code  
[Not supported by viewer]
\ No newline at end of file diff --git a/examples/crypto-chart/README.md b/examples/crypto-chart/README.md index 34357ea635..f6fb86990c 100644 --- a/examples/crypto-chart/README.md +++ b/examples/crypto-chart/README.md @@ -2,7 +2,7 @@ [Live demo](https://s3.amazonaws.com/demo.thi.ng/umbrella/crypto-chart/index.html) -![chart](../../assets/crypto-chart.png) +![chart](https://raw.githubusercontent.com/thi-ng/umbrella/master/assets/crypto-chart.png) Price data provided by [cryptocompare.com](https://min-api.cryptocompare.com/). @@ -20,7 +20,7 @@ updates / diffs when there were any relevant upstream value changes. The diagram below shows a schematic of the dataflow graph used: -![dataflow](../../assets/crypto-dflow.svg) +![dataflow](https://raw.githubusercontent.com/thi-ng/umbrella/master/assets/crypto-dflow.svg) ## Building diff --git a/examples/pointfree-svg/README.md b/examples/pointfree-svg/README.md index 882b87d0f0..f2835888b0 100644 --- a/examples/pointfree-svg/README.md +++ b/examples/pointfree-svg/README.md @@ -7,13 +7,14 @@ This is a non-interactive demo combining the following packages to generate the - [@thi.ng/pointfree](https://github.com/thi-ng/umbrella/tree/master/packages/pointfree) - [@thi.ng/pointfree-lang](https://github.com/thi-ng/umbrella/tree/master/packages/pointfree-lang) -![generated result](./output.svg) +![generated result](https://raw.githubusercontent.com/thi-ng/umbrella/master/examples/pointfree-svg/output.svg) -Most of the [source code](./src/index.ts) is written in the pointfree -DSL syntax and includes a rudimentary graphics lib to generate SVG -shapes in hiccup format (basically a DOM defined by nested arrays). The -example also demonstrates how to define custom words defined in JS to -easily extend the language. +Most of the [source +code](https://raw.githubusercontent.com/thi-ng/umbrella/master/examples/pointfree-svg/src/index.ts) +is written in the pointfree DSL syntax and includes a rudimentary +graphics lib to generate SVG shapes in hiccup format (basically a DOM +defined by nested arrays). The example also demonstrates how to define +custom words defined in JS to easily extend the language. The generated SVG file will be written in this example's directory... diff --git a/examples/rstream-dataflow/README.md b/examples/rstream-dataflow/README.md index 41159d72c0..75da64947f 100644 --- a/examples/rstream-dataflow/README.md +++ b/examples/rstream-dataflow/README.md @@ -13,7 +13,7 @@ Installs all dependencies, runs `webpack-dev-server` and opens the app in your b ## About -![dataflow graph](../../assets/rs-dflow.png) +![dataflow graph](https://raw.githubusercontent.com/thi-ng/umbrella/master/assets/rs-dflow.png) This example combines the following packages to create & execute the above dataflow graph in a declarative manner. The diagram generation diff --git a/packages/dot/README.md b/packages/dot/README.md index 8d3dce9dbc..aa5c62da3b 100644 --- a/packages/dot/README.md +++ b/packages/dot/README.md @@ -32,7 +32,7 @@ yarn add @thi.ng/dot ## Usage examples -![example graph](../../assets/dot-example.png) +![example graph](https://raw.githubusercontent.com/thi-ng/umbrella/master/assets/dot-example.png) The source code of this example is also available in [/test/example.ts](https://github.com/thi-ng/umbrella/tree/master/packages/dot/test/example.ts). diff --git a/packages/hdom/README.md b/packages/hdom/README.md index 3564218db2..85f7a5ba30 100644 --- a/packages/hdom/README.md +++ b/packages/hdom/README.md @@ -132,7 +132,7 @@ JS arrays). Components can be defined as static arrays, closures or objects with [life cycle methods](#lifecycle-methods) (init, render, release). -![hdom dataflow](../../assets/hdom-dataflow.svg) +![hdom dataflow](https://raw.githubusercontent.com/thi-ng/umbrella/master/assets/hdom-dataflow.png) The syntax is inspired by Clojure's [Hiccup](https://github.com/weavejester/hiccup) and diff --git a/packages/iges/README.md b/packages/iges/README.md index 109d22b29e..693513e4ee 100644 --- a/packages/iges/README.md +++ b/packages/iges/README.md @@ -11,7 +11,7 @@ Bare-bones IGES 5.3 serializer for (currently only) polygonal geometry, both open & closed, for use in various CAD applications (e.g. Rhino, Houdini, Fusion 360) -![houdini](../../assets/iges.png) +![houdini](https://raw.githubusercontent.com/thi-ng/umbrella/master/assets/iges.png) ## Installation diff --git a/packages/pointfree-lang/README.md b/packages/pointfree-lang/README.md index aed9398619..4c433e5e79 100644 --- a/packages/pointfree-lang/README.md +++ b/packages/pointfree-lang/README.md @@ -78,7 +78,7 @@ example](https://github.com/thi-ng/umbrella/tree/master/examples/pointfree-svg/) generating the below SVG graphic is located in the `/examples` directory. -![generated example output](../../examples/pointfree-svg/output.svg) +![generated example output](https://raw.githubusercontent.com/thi-ng/umbrella/master/examples/pointfree-svg/output.svg) ```ts // DSL source code (syntax described further below) diff --git a/packages/rle-pack/README.md b/packages/rle-pack/README.md index 83570a0112..ff3e2f9d6e 100644 --- a/packages/rle-pack/README.md +++ b/packages/rle-pack/README.md @@ -17,7 +17,7 @@ will be encoded using additional RLE chunks... ### Encoding format -![data layout](../../assets/rle-layout.png) +![data layout](https://raw.githubusercontent.com/thi-ng/umbrella/master/assets/rle-layout.png) - 32 bits - original number of words - 5 bits - word size diff --git a/packages/rstream-dot/README.md b/packages/rstream-dot/README.md index 1971fa25c5..c97d80d924 100644 --- a/packages/rstream-dot/README.md +++ b/packages/rstream-dot/README.md @@ -73,7 +73,7 @@ dot -Tsvg -o graph.svg graph.dot This will generate this diagram: -![graphviz output](../../assets/rs-dot-example.svg) +![graphviz output](https://raw.githubusercontent.com/thi-ng/umbrella/master/assets/rs-dot-example.svg) ## Authors diff --git a/packages/rstream-query/README.md b/packages/rstream-query/README.md index 4652db4a45..01d7b9afc7 100644 --- a/packages/rstream-query/README.md +++ b/packages/rstream-query/README.md @@ -160,7 +160,7 @@ addCity("paris", "france"); After setting up the above query and its internal transformations, the generated dataflow topology then looks as follows: -![graphviz output](../../assets/rs-query1.svg) +![graphviz output](https://raw.githubusercontent.com/thi-ng/umbrella/master/assets/rs-query1.svg) - The blue nodes are `TripleStore`-internal index stream sources, emitting changes when new triples are added @@ -174,7 +174,8 @@ Btw. The diagram has been generated using [@thi.ng/rstream-dot](https://github.com/thi-ng/umbrella/tree/master/packages/rstream-dot) and can be recreated by calling `store.toDot()` (for the above example) -The source code for the above example is [here](./test/example.ts) +The source code for the above example is +[here](https://github.com/thi-ng/umbrella/tree/master/packages/rstream-query/test/example.ts) (Many) more features forthcoming... diff --git a/packages/transducers-stats/README.md b/packages/transducers-stats/README.md index af3dc77be5..f2adeefb6a 100644 --- a/packages/transducers-stats/README.md +++ b/packages/transducers-stats/README.md @@ -33,19 +33,19 @@ transforming ES6 iterator (generator) instead of a transducer. ## Supported indicators -- [Bollinger Bands](./src/bollinger.ts) -- [Donchian Channel](./src/donchian.ts) -- [EMA (Exponential Moving Average)](./src/ema.ts) -- [HMA (Hull Moving Average)](./src/hma.ts) -- [MACD (Moving Average Convergence/Divergence)](./src/macd.ts) -- [Momentum](./src/momentum.ts) -- [ROC (Rate of change)](./src/roc.ts) -- [RSI (Relative Strength Index)](./src/rsi.ts) -- [SD (Standard Deviation)](./src/sd.ts) -- [SMA (Simple Moving Average)](./src/sma.ts) -- [Stochastic oscillator](./src/stochastic.ts) -- [TRIX (Triple smoothed EMA)](./src/trix.ts) -- [WMA (Weighted Moving Average)](./src/wma.ts) +- [Bollinger Bands](https://github.com/thi-ng/umbrella/tree/master/packages/transducers-stats/src/bollinger.ts) +- [Donchian Channel](https://github.com/thi-ng/umbrella/tree/master/packages/transducers-stats/src/donchian.ts) +- [EMA (Exponential Moving Average)](https://github.com/thi-ng/umbrella/tree/master/packages/transducers-stats/src/ema.ts) +- [HMA (Hull Moving Average)](https://github.com/thi-ng/umbrella/tree/master/packages/transducers-stats/src/hma.ts) +- [MACD (Moving Average Convergence/Divergence)](https://github.com/thi-ng/umbrella/tree/master/packages/transducers-stats/src/macd.ts) +- [Momentum](https://github.com/thi-ng/umbrella/tree/master/packages/transducers-stats/src/momentum.ts) +- [ROC (Rate of change)](https://github.com/thi-ng/umbrella/tree/master/packages/transducers-stats/src/roc.ts) +- [RSI (Relative Strength Index)](https://github.com/thi-ng/umbrella/tree/master/packages/transducers-stats/src/rsi.ts) +- [SD (Standard Deviation)](https://github.com/thi-ng/umbrella/tree/master/packages/transducers-stats/src/sd.ts) +- [SMA (Simple Moving Average)](https://github.com/thi-ng/umbrella/tree/master/packages/transducers-stats/src/sma.ts) +- [Stochastic oscillator](https://github.com/thi-ng/umbrella/tree/master/packages/transducers-stats/src/stochastic.ts) +- [TRIX (Triple smoothed EMA)](https://github.com/thi-ng/umbrella/tree/master/packages/transducers-stats/src/trix.ts) +- [WMA (Weighted Moving Average)](https://github.com/thi-ng/umbrella/tree/master/packages/transducers-stats/src/wma.ts) ## Installation @@ -59,7 +59,7 @@ For some realworld use, please see the [crypto chart](https://github.com/thi-ng/umbrella/tree/master/examples/crypto-chart) example. -![screenshot](../../assets/crypto-chart.png) +![screenshot](https://raw.githubusercontent.com/thi-ng/umbrella/master/assets/crypto-chart.png) ```ts import * as tx from "@thi.ng/transducers"; diff --git a/packages/transducers/README.md b/packages/transducers/README.md index d82510fc60..cd070a5012 100644 --- a/packages/transducers/README.md +++ b/packages/transducers/README.md @@ -589,7 +589,7 @@ provided via implementations of the `IReducible` interface in the source collection type. Examples can be found here: - [DCons](https://github.com/thi-ng/umbrella/tree/master/packages/dcons/src/index.ts#L123) -- [SortedMap](https://github.com/thi-ng/umbrella/tree/master/packages/associative/src/index.ts#L261) +- [SortedMap](https://github.com/thi-ng/umbrella/tree/master/packages/associative/src/sorted-map.ts#L261) **Note:** The `IReducible` interface is only used by `reduce()`, `transduce()` and `run()`. @@ -688,95 +688,95 @@ tx.transduce(tx.map((x) => x*10), tx.push(), tx.range(4)) // [ 0, 10, 20, 30 ] ``` -- [base64Decode](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/base64.ts) -- [base64Encode](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/base64.ts) -- [benchmark](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/benchmark.ts) -- [bits](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/bits.ts) -- [cat](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/cat.ts) -- [convolve2d](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/convolve.ts) -- [dedupe](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/dedupe.ts) -- [delayed](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/delayed.ts) -- [distinct](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/distinct.ts) -- [dropNth](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/drop-nth.ts) -- [dropWhile](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/drop-while.ts) -- [drop](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/drop.ts) -- [duplicate](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/duplicate.ts) -- [filterFuzzy](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/filter-fuzzy.ts) -- [filter](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/filter.ts) -- [flattenWith](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/flatten-with.ts) -- [flatten](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/flatten.ts) -- [hexDump](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/hex-dump.ts) -- [indexed](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/indexed.ts) -- [interleave](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/interleave.ts) -- [interpose](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/interpose.ts) -- [keep](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/keep.ts) -- [labeled](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/labeled.ts) -- [mapDeep](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/map-deep.ts) -- [mapIndexed](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/map-indexed.ts) -- [mapKeys](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/map-keys.ts) -- [mapNth](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/map-nth.ts) -- [mapVals](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/map-vals.ts) -- [map](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/map.ts) -- [mapcat](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/mapcat.ts) -- [matchFirst](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/match-first.ts) -- [matchLast](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/match-last.ts) -- [movingAverage](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/moving-average.ts) -- [movingMedian](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/moving-median.ts) -- [multiplexObj](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/multiplex-obj.ts) -- [multiplex](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/multiplex.ts) -- [noop](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/noop.ts) -- [padLast](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/pad-last.ts) -- [page](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/page.ts) -- [partitionBits](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/partition-bits.ts) -- [partitionBy](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/partition-by.ts) -- [partitionOf](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/partition-of.ts) -- [partitionSort](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/partition-sort.ts) -- [partitionSync](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/partition-sync.ts) -- [partition](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/partition.ts) -- [pluck](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/pluck.ts) -- [rename](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/rename.ts) -- [sample](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/sample.ts) -- [scan](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/scan.ts) -- [selectKeys](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/select-keys.ts) -- [sideEffect](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/side-effect.ts) -- [streamShuffle](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/stream-shuffle.ts) -- [streamSort](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/stream-sort.ts) -- [struct](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/struct.ts) -- [swizzle](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/swizzle.ts) -- [takeLast](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/take-last.ts) -- [takeNth](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/take-nth.ts) -- [takeWhile](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/take-while.ts) -- [take](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/take.ts) -- [throttleTime](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/throttle-time.ts) -- [throttle](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/throttle.ts) -- [trace](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/trace.ts) -- [utf8Decode](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/utf8.ts) -- [utf8Encode](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/utf8.ts) -- [wordWrap](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/xform/word-wrap.ts) +- [base64Decode](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/base64.ts) +- [base64Encode](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/base64.ts) +- [benchmark](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/benchmark.ts) +- [bits](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/bits.ts) +- [cat](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/cat.ts) +- [convolve2d](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/convolve.ts) +- [dedupe](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/dedupe.ts) +- [delayed](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/delayed.ts) +- [distinct](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/distinct.ts) +- [dropNth](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/drop-nth.ts) +- [dropWhile](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/drop-while.ts) +- [drop](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/drop.ts) +- [duplicate](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/duplicate.ts) +- [filterFuzzy](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/filter-fuzzy.ts) +- [filter](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/filter.ts) +- [flattenWith](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/flatten-with.ts) +- [flatten](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/flatten.ts) +- [hexDump](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/hex-dump.ts) +- [indexed](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/indexed.ts) +- [interleave](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/interleave.ts) +- [interpose](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/interpose.ts) +- [keep](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/keep.ts) +- [labeled](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/labeled.ts) +- [mapDeep](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/map-deep.ts) +- [mapIndexed](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/map-indexed.ts) +- [mapKeys](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/map-keys.ts) +- [mapNth](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/map-nth.ts) +- [mapVals](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/map-vals.ts) +- [map](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/map.ts) +- [mapcat](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/mapcat.ts) +- [matchFirst](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/match-first.ts) +- [matchLast](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/match-last.ts) +- [movingAverage](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/moving-average.ts) +- [movingMedian](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/moving-median.ts) +- [multiplexObj](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/multiplex-obj.ts) +- [multiplex](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/multiplex.ts) +- [noop](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/noop.ts) +- [padLast](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/pad-last.ts) +- [page](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/page.ts) +- [partitionBits](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/partition-bits.ts) +- [partitionBy](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/partition-by.ts) +- [partitionOf](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/partition-of.ts) +- [partitionSort](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/partition-sort.ts) +- [partitionSync](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/partition-sync.ts) +- [partition](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/partition.ts) +- [pluck](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/pluck.ts) +- [rename](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/rename.ts) +- [sample](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/sample.ts) +- [scan](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/scan.ts) +- [selectKeys](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/select-keys.ts) +- [sideEffect](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/side-effect.ts) +- [streamShuffle](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/stream-shuffle.ts) +- [streamSort](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/stream-sort.ts) +- [struct](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/struct.ts) +- [swizzle](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/swizzle.ts) +- [takeLast](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/take-last.ts) +- [takeNth](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/take-nth.ts) +- [takeWhile](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/take-while.ts) +- [take](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/take.ts) +- [throttleTime](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/throttle-time.ts) +- [throttle](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/throttle.ts) +- [trace](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/trace.ts) +- [utf8Decode](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/utf8.ts) +- [utf8Encode](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/utf8.ts) +- [wordWrap](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/xform/word-wrap.ts) ### Generators / Iterators -- [choices](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/iter/choices.ts) -- [concat](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/iter/concat.ts) -- [cycle](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/iter/cycle.ts) -- [iterate](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/iter/iterate.ts) -- [keys](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/iter/keys.ts) -- [normRange](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/iter/normRange.ts) -- [pairs](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/iter/pairs.ts) -- [permutations](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/iter/permutations.ts) -- [permutationsN](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/iter/permutationsN.ts) -- [range](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/iter/range.ts) -- [range2d](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/iter/range2d.ts) -- [range3d](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/iter/range3d.ts) -- [repeat](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/iter/repeat.ts) -- [repeatedly](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/iter/repeatedly.ts) -- [reverse](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/iter/reverse.ts) -- [tuples](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/iter/tuples.ts) -- [vals](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/iter/vals.ts) -- [wrapBoth](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/iter/wrapBoth.ts) -- [wrapLeft](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/iter/wrapLeft.ts) -- [wrapRight](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/iter/wrapRight.ts) -- [wrap](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/iter/wrap.ts) +- [choices](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/iter/choices.ts) +- [concat](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/iter/concat.ts) +- [cycle](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/iter/cycle.ts) +- [iterate](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/iter/iterate.ts) +- [keys](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/iter/keys.ts) +- [normRange](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/iter/normRange.ts) +- [pairs](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/iter/pairs.ts) +- [permutations](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/iter/permutations.ts) +- [permutationsN](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/iter/permutationsN.ts) +- [range](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/iter/range.ts) +- [range2d](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/iter/range2d.ts) +- [range3d](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/iter/range3d.ts) +- [repeat](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/iter/repeat.ts) +- [repeatedly](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/iter/repeatedly.ts) +- [reverse](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/iter/reverse.ts) +- [tuples](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/iter/tuples.ts) +- [vals](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/iter/vals.ts) +- [wrapBoth](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/iter/wrapBoth.ts) +- [wrapLeft](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/iter/wrapLeft.ts) +- [wrapRight](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/iter/wrapRight.ts) +- [wrap](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/iter/wrap.ts) ### Reducers @@ -784,31 +784,31 @@ As with transducer functions, reducer functions can also given an optional input iterable. If done so, the function will consume the input and return a reduced result (as if it would be called via `reduce()`). -- [add](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/rfn/add) -- [assocMap](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/rfn/assoc-map) -- [assocObj](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/rfn/assoc-obj) -- [conj](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/rfn/conj) -- [count](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/rfn/count) -- [div](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/rfn/div) -- [every](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/rfn/every) -- [fill](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/rfn/fill) -- [frequencies](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/rfn/frequencies) -- [groupBinary](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/rfn/group-binary) -- [groupByMap](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/rfn/group-by-map) -- [groupByObj](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/rfn/group-by-obj) -- [last](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/rfn/last) -- [maxCompare](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/rfn/max-compare) -- [max](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/rfn/max) -- [mean](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/rfn/mean) -- [minCompare](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/rfn/min-compare) -- [min](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/rfn/min) -- [mul](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/rfn/mul) -- [pushCopy](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/rfn/push-copy) -- [push](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/rfn/push) -- [reductions](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/rfn/reductions) -- [some](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/rfn/some) -- [str](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/rfn/str) -- [sub](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/rfn/sub) +- [add](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/rfn/add) +- [assocMap](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/rfn/assoc-map) +- [assocObj](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/rfn/assoc-obj) +- [conj](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/rfn/conj) +- [count](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/rfn/count) +- [div](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/rfn/div) +- [every](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/rfn/every) +- [fill](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/rfn/fill) +- [frequencies](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/rfn/frequencies) +- [groupBinary](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/rfn/group-binary) +- [groupByMap](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/rfn/group-by-map) +- [groupByObj](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/rfn/group-by-obj) +- [last](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/rfn/last) +- [maxCompare](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/rfn/max-compare) +- [max](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/rfn/max) +- [mean](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/rfn/mean) +- [minCompare](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/rfn/min-compare) +- [min](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/rfn/min) +- [mul](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/rfn/mul) +- [pushCopy](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/rfn/push-copy) +- [push](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/rfn/push) +- [reductions](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/rfn/reductions) +- [some](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/rfn/some) +- [str](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/rfn/str) +- [sub](https://github.com/thi-ng/umbrella/tree/master/packages/transducers/src/rfn/sub) ## Authors From 8e9ba3477f5b29b52b07d78753b2cdcb802719e1 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Fri, 24 Aug 2018 21:35:56 +0100 Subject: [PATCH 04/60] Publish - @thi.ng/associative@0.6.1 - @thi.ng/cache@0.2.17 - @thi.ng/csp@0.3.57 - @thi.ng/dcons@1.1.1 - @thi.ng/dgraph@0.2.13 - @thi.ng/dot@0.1.12 - @thi.ng/hdom-components@2.1.13 - @thi.ng/hdom@3.0.34 - @thi.ng/hiccup-css@0.2.16 - @thi.ng/iges@0.2.6 - @thi.ng/iterators@4.1.22 - @thi.ng/pointfree-lang@0.2.19 - @thi.ng/range-coder@0.1.6 - @thi.ng/rle-pack@1.0.1 - @thi.ng/rstream-csp@0.1.98 - @thi.ng/rstream-dot@0.2.37 - @thi.ng/rstream-gestures@0.4.18 - @thi.ng/rstream-graph@2.1.22 - @thi.ng/rstream-log@1.0.49 - @thi.ng/rstream-query@0.3.36 - @thi.ng/rstream@1.11.4 - @thi.ng/sax@0.3.15 - @thi.ng/transducers-fsm@0.2.14 - @thi.ng/transducers-hdom@0.1.4 - @thi.ng/transducers-stats@0.4.1 - @thi.ng/transducers@2.0.1 --- packages/associative/CHANGELOG.md | 8 ++++++++ packages/associative/package.json | 6 +++--- packages/cache/CHANGELOG.md | 8 ++++++++ packages/cache/package.json | 6 +++--- packages/csp/CHANGELOG.md | 8 ++++++++ packages/csp/package.json | 6 +++--- packages/dcons/CHANGELOG.md | 8 ++++++++ packages/dcons/package.json | 4 ++-- packages/dgraph/CHANGELOG.md | 8 ++++++++ packages/dgraph/package.json | 6 +++--- packages/dot/CHANGELOG.md | 8 ++++++++ packages/dot/package.json | 2 +- packages/hdom-components/CHANGELOG.md | 8 ++++++++ packages/hdom-components/package.json | 4 ++-- packages/hdom/CHANGELOG.md | 8 ++++++++ packages/hdom/package.json | 2 +- packages/hiccup-css/CHANGELOG.md | 8 ++++++++ packages/hiccup-css/package.json | 4 ++-- packages/iges/CHANGELOG.md | 8 ++++++++ packages/iges/package.json | 4 ++-- packages/iterators/CHANGELOG.md | 8 ++++++++ packages/iterators/package.json | 4 ++-- packages/pointfree-lang/CHANGELOG.md | 8 ++++++++ packages/pointfree-lang/package.json | 2 +- packages/range-coder/CHANGELOG.md | 8 ++++++++ packages/range-coder/package.json | 4 ++-- packages/rle-pack/CHANGELOG.md | 8 ++++++++ packages/rle-pack/package.json | 2 +- packages/rstream-csp/CHANGELOG.md | 8 ++++++++ packages/rstream-csp/package.json | 6 +++--- packages/rstream-dot/CHANGELOG.md | 8 ++++++++ packages/rstream-dot/package.json | 4 ++-- packages/rstream-gestures/CHANGELOG.md | 8 ++++++++ packages/rstream-gestures/package.json | 6 +++--- packages/rstream-graph/CHANGELOG.md | 8 ++++++++ packages/rstream-graph/package.json | 6 +++--- packages/rstream-log/CHANGELOG.md | 8 ++++++++ packages/rstream-log/package.json | 6 +++--- packages/rstream-query/CHANGELOG.md | 8 ++++++++ packages/rstream-query/package.json | 10 +++++----- packages/rstream/CHANGELOG.md | 8 ++++++++ packages/rstream/package.json | 6 +++--- packages/sax/CHANGELOG.md | 8 ++++++++ packages/sax/package.json | 6 +++--- packages/transducers-fsm/CHANGELOG.md | 8 ++++++++ packages/transducers-fsm/package.json | 4 ++-- packages/transducers-hdom/CHANGELOG.md | 8 ++++++++ packages/transducers-hdom/package.json | 6 +++--- packages/transducers-stats/CHANGELOG.md | 8 ++++++++ packages/transducers-stats/package.json | 6 +++--- packages/transducers/CHANGELOG.md | 8 ++++++++ packages/transducers/package.json | 2 +- 52 files changed, 270 insertions(+), 62 deletions(-) diff --git a/packages/associative/CHANGELOG.md b/packages/associative/CHANGELOG.md index 926a15260d..4c7a724220 100644 --- a/packages/associative/CHANGELOG.md +++ b/packages/associative/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.6.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/associative@0.6.0...@thi.ng/associative@0.6.1) (2018-08-24) + + + + +**Note:** Version bump only for package @thi.ng/associative + # [0.6.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/associative@0.5.11...@thi.ng/associative@0.6.0) (2018-08-24) diff --git a/packages/associative/package.json b/packages/associative/package.json index cad40e2e6f..419951e996 100644 --- a/packages/associative/package.json +++ b/packages/associative/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/associative", - "version": "0.6.0", + "version": "0.6.1", "description": "Alternative Set & Map data type implementations with customizable equality semantics & supporting operations", "main": "./index.js", "typings": "./index.d.ts", @@ -31,10 +31,10 @@ "@thi.ng/api": "^4.1.0", "@thi.ng/checks": "^1.5.7", "@thi.ng/compare": "^0.1.6", - "@thi.ng/dcons": "^1.1.0", + "@thi.ng/dcons": "^1.1.1", "@thi.ng/equiv": "^0.1.7", "@thi.ng/errors": "^0.1.6", - "@thi.ng/transducers": "^2.0.0" + "@thi.ng/transducers": "^2.0.1" }, "keywords": [ "data structures", diff --git a/packages/cache/CHANGELOG.md b/packages/cache/CHANGELOG.md index c6f5008399..f71c28c2f2 100644 --- a/packages/cache/CHANGELOG.md +++ b/packages/cache/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.2.17](https://github.com/thi-ng/umbrella/compare/@thi.ng/cache@0.2.16...@thi.ng/cache@0.2.17) (2018-08-24) + + + + +**Note:** Version bump only for package @thi.ng/cache + ## [0.2.16](https://github.com/thi-ng/umbrella/compare/@thi.ng/cache@0.2.15...@thi.ng/cache@0.2.16) (2018-08-24) diff --git a/packages/cache/package.json b/packages/cache/package.json index 1c44a077f0..f0381899a5 100644 --- a/packages/cache/package.json +++ b/packages/cache/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/cache", - "version": "0.2.16", + "version": "0.2.17", "description": "In-memory cache implementations with ES6 Map-like API and different eviction strategies", "main": "./index.js", "typings": "./index.d.ts", @@ -29,8 +29,8 @@ }, "dependencies": { "@thi.ng/api": "^4.1.0", - "@thi.ng/dcons": "^1.1.0", - "@thi.ng/transducers": "^2.0.0" + "@thi.ng/dcons": "^1.1.1", + "@thi.ng/transducers": "^2.0.1" }, "keywords": [ "cache", diff --git a/packages/csp/CHANGELOG.md b/packages/csp/CHANGELOG.md index ca122ed170..15be8c8c70 100644 --- a/packages/csp/CHANGELOG.md +++ b/packages/csp/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.3.57](https://github.com/thi-ng/umbrella/compare/@thi.ng/csp@0.3.56...@thi.ng/csp@0.3.57) (2018-08-24) + + + + +**Note:** Version bump only for package @thi.ng/csp + ## [0.3.56](https://github.com/thi-ng/umbrella/compare/@thi.ng/csp@0.3.55...@thi.ng/csp@0.3.56) (2018-08-24) diff --git a/packages/csp/package.json b/packages/csp/package.json index 8424e473ec..3c5373942c 100644 --- a/packages/csp/package.json +++ b/packages/csp/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/csp", - "version": "0.3.56", + "version": "0.3.57", "description": "ES6 promise based CSP implementation", "main": "./index.js", "typings": "./index.d.ts", @@ -34,9 +34,9 @@ "dependencies": { "@thi.ng/api": "^4.1.0", "@thi.ng/checks": "^1.5.7", - "@thi.ng/dcons": "^1.1.0", + "@thi.ng/dcons": "^1.1.1", "@thi.ng/errors": "^0.1.6", - "@thi.ng/transducers": "^2.0.0" + "@thi.ng/transducers": "^2.0.1" }, "keywords": [ "async", diff --git a/packages/dcons/CHANGELOG.md b/packages/dcons/CHANGELOG.md index ba6a2db6b2..6c23b1c57d 100644 --- a/packages/dcons/CHANGELOG.md +++ b/packages/dcons/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [1.1.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/dcons@1.1.0...@thi.ng/dcons@1.1.1) (2018-08-24) + + + + +**Note:** Version bump only for package @thi.ng/dcons + # [1.1.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/dcons@1.0.7...@thi.ng/dcons@1.1.0) (2018-08-24) diff --git a/packages/dcons/package.json b/packages/dcons/package.json index 8164a3bee9..da46f84b78 100644 --- a/packages/dcons/package.json +++ b/packages/dcons/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/dcons", - "version": "1.1.0", + "version": "1.1.1", "description": "Comprehensive doubly linked list structure w/ iterator support", "main": "./index.js", "typings": "./index.d.ts", @@ -33,7 +33,7 @@ "@thi.ng/compare": "^0.1.6", "@thi.ng/equiv": "^0.1.7", "@thi.ng/errors": "^0.1.6", - "@thi.ng/transducers": "^2.0.0" + "@thi.ng/transducers": "^2.0.1" }, "keywords": [ "datastructure", diff --git a/packages/dgraph/CHANGELOG.md b/packages/dgraph/CHANGELOG.md index cc7140eaae..1c3f7bb74e 100644 --- a/packages/dgraph/CHANGELOG.md +++ b/packages/dgraph/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.2.13](https://github.com/thi-ng/umbrella/compare/@thi.ng/dgraph@0.2.12...@thi.ng/dgraph@0.2.13) (2018-08-24) + + + + +**Note:** Version bump only for package @thi.ng/dgraph + ## [0.2.12](https://github.com/thi-ng/umbrella/compare/@thi.ng/dgraph@0.2.11...@thi.ng/dgraph@0.2.12) (2018-08-24) diff --git a/packages/dgraph/package.json b/packages/dgraph/package.json index 33ee783dd8..5407b22c52 100644 --- a/packages/dgraph/package.json +++ b/packages/dgraph/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/dgraph", - "version": "0.2.12", + "version": "0.2.13", "description": "Type-agnostic directed acyclic graph (DAG) & graph operations", "main": "./index.js", "typings": "./index.d.ts", @@ -29,10 +29,10 @@ }, "dependencies": { "@thi.ng/api": "^4.1.0", - "@thi.ng/associative": "^0.6.0", + "@thi.ng/associative": "^0.6.1", "@thi.ng/equiv": "^0.1.7", "@thi.ng/errors": "^0.1.6", - "@thi.ng/transducers": "^2.0.0" + "@thi.ng/transducers": "^2.0.1" }, "keywords": [ "data structure", diff --git a/packages/dot/CHANGELOG.md b/packages/dot/CHANGELOG.md index 25ae448527..946597a780 100644 --- a/packages/dot/CHANGELOG.md +++ b/packages/dot/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.1.12](https://github.com/thi-ng/umbrella/compare/@thi.ng/dot@0.1.11...@thi.ng/dot@0.1.12) (2018-08-24) + + + + +**Note:** Version bump only for package @thi.ng/dot + ## [0.1.11](https://github.com/thi-ng/umbrella/compare/@thi.ng/dot@0.1.10...@thi.ng/dot@0.1.11) (2018-08-24) diff --git a/packages/dot/package.json b/packages/dot/package.json index 1e957174df..75cf29fae8 100644 --- a/packages/dot/package.json +++ b/packages/dot/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/dot", - "version": "0.1.11", + "version": "0.1.12", "description": "Graphviz DOM abstraction as vanilla JS objects & serialization to DOT format", "main": "./index.js", "typings": "./index.d.ts", diff --git a/packages/hdom-components/CHANGELOG.md b/packages/hdom-components/CHANGELOG.md index 85010d8eb1..37b53729fb 100644 --- a/packages/hdom-components/CHANGELOG.md +++ b/packages/hdom-components/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [2.1.13](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom-components@2.1.12...@thi.ng/hdom-components@2.1.13) (2018-08-24) + + + + +**Note:** Version bump only for package @thi.ng/hdom-components + ## [2.1.12](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom-components@2.1.11...@thi.ng/hdom-components@2.1.12) (2018-08-24) diff --git a/packages/hdom-components/package.json b/packages/hdom-components/package.json index 6953e85b2e..c6ebd07c01 100644 --- a/packages/hdom-components/package.json +++ b/packages/hdom-components/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/hdom-components", - "version": "2.1.12", + "version": "2.1.13", "description": "Raw, skinnable UI & SVG components for @thi.ng/hdom", "main": "./index.js", "typings": "./index.d.ts", @@ -30,7 +30,7 @@ "dependencies": { "@thi.ng/api": "^4.1.0", "@thi.ng/checks": "^1.5.7", - "@thi.ng/transducers": "^2.0.0", + "@thi.ng/transducers": "^2.0.1", "@types/webgl2": "^0.0.4" }, "keywords": [ diff --git a/packages/hdom/CHANGELOG.md b/packages/hdom/CHANGELOG.md index 08059f31a0..204b12d3e3 100644 --- a/packages/hdom/CHANGELOG.md +++ b/packages/hdom/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [3.0.34](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom@3.0.33...@thi.ng/hdom@3.0.34) (2018-08-24) + + + + +**Note:** Version bump only for package @thi.ng/hdom + ## [3.0.33](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom@3.0.32...@thi.ng/hdom@3.0.33) (2018-08-24) diff --git a/packages/hdom/package.json b/packages/hdom/package.json index 816558234d..de3a3af50c 100644 --- a/packages/hdom/package.json +++ b/packages/hdom/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/hdom", - "version": "3.0.33", + "version": "3.0.34", "description": "Lightweight vanilla ES6 UI component & virtual DOM system", "main": "./index.js", "typings": "./index.d.ts", diff --git a/packages/hiccup-css/CHANGELOG.md b/packages/hiccup-css/CHANGELOG.md index c00428584d..f2a0f5e5b1 100644 --- a/packages/hiccup-css/CHANGELOG.md +++ b/packages/hiccup-css/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.2.16](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-css@0.2.15...@thi.ng/hiccup-css@0.2.16) (2018-08-24) + + + + +**Note:** Version bump only for package @thi.ng/hiccup-css + ## [0.2.15](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-css@0.2.14...@thi.ng/hiccup-css@0.2.15) (2018-08-24) diff --git a/packages/hiccup-css/package.json b/packages/hiccup-css/package.json index 0521fd800c..751631f270 100644 --- a/packages/hiccup-css/package.json +++ b/packages/hiccup-css/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/hiccup-css", - "version": "0.2.15", + "version": "0.2.16", "description": "CSS from nested JS data structures", "main": "./index.js", "typings": "./index.d.ts", @@ -31,7 +31,7 @@ "@thi.ng/api": "^4.1.0", "@thi.ng/checks": "^1.5.7", "@thi.ng/errors": "^0.1.6", - "@thi.ng/transducers": "^2.0.0" + "@thi.ng/transducers": "^2.0.1" }, "keywords": [ "clojure", diff --git a/packages/iges/CHANGELOG.md b/packages/iges/CHANGELOG.md index 1a9f9a3462..03e4c5923f 100644 --- a/packages/iges/CHANGELOG.md +++ b/packages/iges/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.2.6](https://github.com/thi-ng/umbrella/compare/@thi.ng/iges@0.2.5...@thi.ng/iges@0.2.6) (2018-08-24) + + + + +**Note:** Version bump only for package @thi.ng/iges + ## [0.2.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/iges@0.2.4...@thi.ng/iges@0.2.5) (2018-08-24) diff --git a/packages/iges/package.json b/packages/iges/package.json index 31617e6a04..75069725b3 100644 --- a/packages/iges/package.json +++ b/packages/iges/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/iges", - "version": "0.2.5", + "version": "0.2.6", "description": "IGES 5.3 serializer for (currently only) polygonal geometry, both open & closed", "main": "./index.js", "typings": "./index.d.ts", @@ -31,7 +31,7 @@ "@thi.ng/api": "^4.1.0", "@thi.ng/defmulti": "^0.3.8", "@thi.ng/strings": "^0.3.0", - "@thi.ng/transducers": "^2.0.0" + "@thi.ng/transducers": "^2.0.1" }, "keywords": [ "CAD", diff --git a/packages/iterators/CHANGELOG.md b/packages/iterators/CHANGELOG.md index 2317d54fe0..fa3eb52510 100644 --- a/packages/iterators/CHANGELOG.md +++ b/packages/iterators/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [4.1.22](https://github.com/thi-ng/umbrella/compare/@thi.ng/iterators@4.1.21...@thi.ng/iterators@4.1.22) (2018-08-24) + + + + +**Note:** Version bump only for package @thi.ng/iterators + ## [4.1.21](https://github.com/thi-ng/umbrella/compare/@thi.ng/iterators@4.1.20...@thi.ng/iterators@4.1.21) (2018-08-24) diff --git a/packages/iterators/package.json b/packages/iterators/package.json index 19b86bc3a0..3da316fd33 100644 --- a/packages/iterators/package.json +++ b/packages/iterators/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/iterators", - "version": "4.1.21", + "version": "4.1.22", "description": "clojure.core inspired, composable ES6 iterators & generators", "main": "./index.js", "typings": "./index.d.ts", @@ -29,7 +29,7 @@ }, "dependencies": { "@thi.ng/api": "^4.1.0", - "@thi.ng/dcons": "^1.1.0", + "@thi.ng/dcons": "^1.1.1", "@thi.ng/errors": "^0.1.6" }, "keywords": [ diff --git a/packages/pointfree-lang/CHANGELOG.md b/packages/pointfree-lang/CHANGELOG.md index e49b8a5192..7f03c9b280 100644 --- a/packages/pointfree-lang/CHANGELOG.md +++ b/packages/pointfree-lang/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.2.19](https://github.com/thi-ng/umbrella/compare/@thi.ng/pointfree-lang@0.2.18...@thi.ng/pointfree-lang@0.2.19) (2018-08-24) + + + + +**Note:** Version bump only for package @thi.ng/pointfree-lang + ## [0.2.18](https://github.com/thi-ng/umbrella/compare/@thi.ng/pointfree-lang@0.2.17...@thi.ng/pointfree-lang@0.2.18) (2018-08-24) diff --git a/packages/pointfree-lang/package.json b/packages/pointfree-lang/package.json index 79a0b9a10d..6ea4b625e6 100644 --- a/packages/pointfree-lang/package.json +++ b/packages/pointfree-lang/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/pointfree-lang", - "version": "0.2.18", + "version": "0.2.19", "description": "Forth style syntax layer/compiler for the @thi.ng/pointfree DSL", "main": "./index.js", "typings": "./index.d.ts", diff --git a/packages/range-coder/CHANGELOG.md b/packages/range-coder/CHANGELOG.md index 880d6d27a2..077df4fc79 100644 --- a/packages/range-coder/CHANGELOG.md +++ b/packages/range-coder/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.1.6](https://github.com/thi-ng/umbrella/compare/@thi.ng/range-coder@0.1.5...@thi.ng/range-coder@0.1.6) (2018-08-24) + + + + +**Note:** Version bump only for package @thi.ng/range-coder + ## [0.1.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/range-coder@0.1.4...@thi.ng/range-coder@0.1.5) (2018-08-24) diff --git a/packages/range-coder/package.json b/packages/range-coder/package.json index 5562826539..e274eb5bf7 100644 --- a/packages/range-coder/package.json +++ b/packages/range-coder/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/range-coder", - "version": "0.1.5", + "version": "0.1.6", "description": "Binary data range encoder / decoder", "main": "./index.js", "typings": "./index.d.ts", @@ -20,7 +20,7 @@ "test": "rm -rf build && tsc -p test && nyc mocha build/test/*.js" }, "devDependencies": { - "@thi.ng/transducers": "^2.0.0", + "@thi.ng/transducers": "^2.0.1", "@types/mocha": "^5.2.5", "@types/node": "^10.5.5", "mocha": "^5.2.0", diff --git a/packages/rle-pack/CHANGELOG.md b/packages/rle-pack/CHANGELOG.md index 03bf012bd5..536f3e6998 100644 --- a/packages/rle-pack/CHANGELOG.md +++ b/packages/rle-pack/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [1.0.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/rle-pack@1.0.0...@thi.ng/rle-pack@1.0.1) (2018-08-24) + + + + +**Note:** Version bump only for package @thi.ng/rle-pack + # [1.0.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/rle-pack@0.2.24...@thi.ng/rle-pack@1.0.0) (2018-08-24) diff --git a/packages/rle-pack/package.json b/packages/rle-pack/package.json index 2e774dca28..873d0b513f 100644 --- a/packages/rle-pack/package.json +++ b/packages/rle-pack/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rle-pack", - "version": "1.0.0", + "version": "1.0.1", "description": "Binary run-length encoding packer w/ flexible repeat bit widths", "main": "./index.js", "typings": "./index.d.ts", diff --git a/packages/rstream-csp/CHANGELOG.md b/packages/rstream-csp/CHANGELOG.md index f6fde73b09..541a716723 100644 --- a/packages/rstream-csp/CHANGELOG.md +++ b/packages/rstream-csp/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.1.98](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-csp@0.1.97...@thi.ng/rstream-csp@0.1.98) (2018-08-24) + + + + +**Note:** Version bump only for package @thi.ng/rstream-csp + ## [0.1.97](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-csp@0.1.96...@thi.ng/rstream-csp@0.1.97) (2018-08-24) diff --git a/packages/rstream-csp/package.json b/packages/rstream-csp/package.json index 866e69e408..fc4c509944 100644 --- a/packages/rstream-csp/package.json +++ b/packages/rstream-csp/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-csp", - "version": "0.1.97", + "version": "0.1.98", "description": "@thi.ng/csp bridge module for @thi.ng/rstream", "main": "./index.js", "typings": "./index.d.ts", @@ -28,8 +28,8 @@ "typescript": "^3.0.1" }, "dependencies": { - "@thi.ng/csp": "^0.3.56", - "@thi.ng/rstream": "^1.11.3" + "@thi.ng/csp": "^0.3.57", + "@thi.ng/rstream": "^1.11.4" }, "keywords": [ "bridge", diff --git a/packages/rstream-dot/CHANGELOG.md b/packages/rstream-dot/CHANGELOG.md index f1e83827ff..efbb648b0b 100644 --- a/packages/rstream-dot/CHANGELOG.md +++ b/packages/rstream-dot/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.2.37](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-dot@0.2.36...@thi.ng/rstream-dot@0.2.37) (2018-08-24) + + + + +**Note:** Version bump only for package @thi.ng/rstream-dot + ## [0.2.36](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-dot@0.2.35...@thi.ng/rstream-dot@0.2.36) (2018-08-24) diff --git a/packages/rstream-dot/package.json b/packages/rstream-dot/package.json index 652290e6c8..1a3a57f88b 100644 --- a/packages/rstream-dot/package.json +++ b/packages/rstream-dot/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-dot", - "version": "0.2.36", + "version": "0.2.37", "description": "Graphviz DOT conversion of @thi.ng/rstream dataflow graph topologies", "main": "./index.js", "typings": "./index.d.ts", @@ -28,7 +28,7 @@ "typescript": "^3.0.1" }, "dependencies": { - "@thi.ng/rstream": "^1.11.3" + "@thi.ng/rstream": "^1.11.4" }, "keywords": [ "conversion", diff --git a/packages/rstream-gestures/CHANGELOG.md b/packages/rstream-gestures/CHANGELOG.md index 7d484d27f2..d6c1f5cbf3 100644 --- a/packages/rstream-gestures/CHANGELOG.md +++ b/packages/rstream-gestures/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.4.18](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-gestures@0.4.17...@thi.ng/rstream-gestures@0.4.18) (2018-08-24) + + + + +**Note:** Version bump only for package @thi.ng/rstream-gestures + ## [0.4.17](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-gestures@0.4.16...@thi.ng/rstream-gestures@0.4.17) (2018-08-24) diff --git a/packages/rstream-gestures/package.json b/packages/rstream-gestures/package.json index 12679292c7..06e8283f1a 100644 --- a/packages/rstream-gestures/package.json +++ b/packages/rstream-gestures/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-gestures", - "version": "0.4.17", + "version": "0.4.18", "description": "Unified mouse, mouse wheel & single-touch event stream abstraction", "main": "./index.js", "typings": "./index.d.ts", @@ -29,8 +29,8 @@ }, "dependencies": { "@thi.ng/api": "^4.1.0", - "@thi.ng/rstream": "^1.11.3", - "@thi.ng/transducers": "^2.0.0" + "@thi.ng/rstream": "^1.11.4", + "@thi.ng/transducers": "^2.0.1" }, "keywords": [ "dataflow", diff --git a/packages/rstream-graph/CHANGELOG.md b/packages/rstream-graph/CHANGELOG.md index a528ca1fd7..68bc412dad 100644 --- a/packages/rstream-graph/CHANGELOG.md +++ b/packages/rstream-graph/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [2.1.22](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-graph@2.1.21...@thi.ng/rstream-graph@2.1.22) (2018-08-24) + + + + +**Note:** Version bump only for package @thi.ng/rstream-graph + ## [2.1.21](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-graph@2.1.20...@thi.ng/rstream-graph@2.1.21) (2018-08-24) diff --git a/packages/rstream-graph/package.json b/packages/rstream-graph/package.json index f20712229b..7b0185b116 100644 --- a/packages/rstream-graph/package.json +++ b/packages/rstream-graph/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-graph", - "version": "2.1.21", + "version": "2.1.22", "description": "Declarative dataflow graph construction for @thi.ng/rstream", "main": "./index.js", "typings": "./index.d.ts", @@ -33,8 +33,8 @@ "@thi.ng/errors": "^0.1.6", "@thi.ng/paths": "^1.5.2", "@thi.ng/resolve-map": "^3.0.8", - "@thi.ng/rstream": "^1.11.3", - "@thi.ng/transducers": "^2.0.0" + "@thi.ng/rstream": "^1.11.4", + "@thi.ng/transducers": "^2.0.1" }, "keywords": [ "compute", diff --git a/packages/rstream-log/CHANGELOG.md b/packages/rstream-log/CHANGELOG.md index 3f27ca137d..f58fd3b18c 100644 --- a/packages/rstream-log/CHANGELOG.md +++ b/packages/rstream-log/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [1.0.49](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-log@1.0.48...@thi.ng/rstream-log@1.0.49) (2018-08-24) + + + + +**Note:** Version bump only for package @thi.ng/rstream-log + ## [1.0.48](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-log@1.0.47...@thi.ng/rstream-log@1.0.48) (2018-08-24) diff --git a/packages/rstream-log/package.json b/packages/rstream-log/package.json index 07fb685a23..08e5afef24 100644 --- a/packages/rstream-log/package.json +++ b/packages/rstream-log/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-log", - "version": "1.0.48", + "version": "1.0.49", "description": "Structured, multilevel & hierarchical loggers based on @thi.ng/rstream", "main": "./index.js", "typings": "./index.d.ts", @@ -31,8 +31,8 @@ "@thi.ng/api": "^4.1.0", "@thi.ng/checks": "^1.5.7", "@thi.ng/errors": "^0.1.6", - "@thi.ng/rstream": "^1.11.3", - "@thi.ng/transducers": "^2.0.0" + "@thi.ng/rstream": "^1.11.4", + "@thi.ng/transducers": "^2.0.1" }, "keywords": [ "ES6", diff --git a/packages/rstream-query/CHANGELOG.md b/packages/rstream-query/CHANGELOG.md index 708db97bad..3b7f15928c 100644 --- a/packages/rstream-query/CHANGELOG.md +++ b/packages/rstream-query/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.3.36](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-query@0.3.35...@thi.ng/rstream-query@0.3.36) (2018-08-24) + + + + +**Note:** Version bump only for package @thi.ng/rstream-query + ## [0.3.35](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-query@0.3.34...@thi.ng/rstream-query@0.3.35) (2018-08-24) diff --git a/packages/rstream-query/package.json b/packages/rstream-query/package.json index 33e2d6a79f..1fed827ca6 100644 --- a/packages/rstream-query/package.json +++ b/packages/rstream-query/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-query", - "version": "0.3.35", + "version": "0.3.36", "description": "@thi.ng/rstream based triple store & reactive query engine", "main": "./index.js", "typings": "./index.d.ts", @@ -29,13 +29,13 @@ }, "dependencies": { "@thi.ng/api": "^4.1.0", - "@thi.ng/associative": "^0.6.0", + "@thi.ng/associative": "^0.6.1", "@thi.ng/checks": "^1.5.7", "@thi.ng/equiv": "^0.1.7", "@thi.ng/errors": "^0.1.6", - "@thi.ng/rstream": "^1.11.3", - "@thi.ng/rstream-dot": "^0.2.36", - "@thi.ng/transducers": "^2.0.0" + "@thi.ng/rstream": "^1.11.4", + "@thi.ng/rstream-dot": "^0.2.37", + "@thi.ng/transducers": "^2.0.1" }, "keywords": [ "dataflow", diff --git a/packages/rstream/CHANGELOG.md b/packages/rstream/CHANGELOG.md index fc7355b6f0..53e626be94 100644 --- a/packages/rstream/CHANGELOG.md +++ b/packages/rstream/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [1.11.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream@1.11.3...@thi.ng/rstream@1.11.4) (2018-08-24) + + + + +**Note:** Version bump only for package @thi.ng/rstream + ## [1.11.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream@1.11.2...@thi.ng/rstream@1.11.3) (2018-08-24) diff --git a/packages/rstream/package.json b/packages/rstream/package.json index 00335485bf..07214d4910 100644 --- a/packages/rstream/package.json +++ b/packages/rstream/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream", - "version": "1.11.3", + "version": "1.11.4", "description": "Reactive multi-tap streams, dataflow & transformation pipeline constructs", "main": "./index.js", "typings": "./index.d.ts", @@ -29,12 +29,12 @@ }, "dependencies": { "@thi.ng/api": "^4.1.0", - "@thi.ng/associative": "^0.6.0", + "@thi.ng/associative": "^0.6.1", "@thi.ng/atom": "^1.4.7", "@thi.ng/checks": "^1.5.7", "@thi.ng/errors": "^0.1.6", "@thi.ng/paths": "^1.5.2", - "@thi.ng/transducers": "^2.0.0" + "@thi.ng/transducers": "^2.0.1" }, "keywords": [ "datastructure", diff --git a/packages/sax/CHANGELOG.md b/packages/sax/CHANGELOG.md index 1bd0161ab5..b77a2251b6 100644 --- a/packages/sax/CHANGELOG.md +++ b/packages/sax/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.3.15](https://github.com/thi-ng/umbrella/compare/@thi.ng/sax@0.3.14...@thi.ng/sax@0.3.15) (2018-08-24) + + + + +**Note:** Version bump only for package @thi.ng/sax + ## [0.3.14](https://github.com/thi-ng/umbrella/compare/@thi.ng/sax@0.3.13...@thi.ng/sax@0.3.14) (2018-08-24) diff --git a/packages/sax/package.json b/packages/sax/package.json index 0766781cac..52d927ee86 100644 --- a/packages/sax/package.json +++ b/packages/sax/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/sax", - "version": "0.3.14", + "version": "0.3.15", "description": "Transducer-based, SAX-like, non-validating, speedy & tiny XML parser", "main": "./index.js", "typings": "./index.d.ts", @@ -29,8 +29,8 @@ }, "dependencies": { "@thi.ng/api": "^4.1.0", - "@thi.ng/transducers": "^2.0.0", - "@thi.ng/transducers-fsm": "^0.2.13" + "@thi.ng/transducers": "^2.0.1", + "@thi.ng/transducers-fsm": "^0.2.14" }, "keywords": [ "ES6", diff --git a/packages/transducers-fsm/CHANGELOG.md b/packages/transducers-fsm/CHANGELOG.md index f792a5617b..7e2fcde8ef 100644 --- a/packages/transducers-fsm/CHANGELOG.md +++ b/packages/transducers-fsm/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.2.14](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-fsm@0.2.13...@thi.ng/transducers-fsm@0.2.14) (2018-08-24) + + + + +**Note:** Version bump only for package @thi.ng/transducers-fsm + ## [0.2.13](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-fsm@0.2.12...@thi.ng/transducers-fsm@0.2.13) (2018-08-24) diff --git a/packages/transducers-fsm/package.json b/packages/transducers-fsm/package.json index b14c8a38cc..d676a73f32 100644 --- a/packages/transducers-fsm/package.json +++ b/packages/transducers-fsm/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/transducers-fsm", - "version": "0.2.13", + "version": "0.2.14", "description": "Transducer-based Finite State Machine transformer", "main": "./index.js", "typings": "./index.d.ts", @@ -29,7 +29,7 @@ }, "dependencies": { "@thi.ng/api": "^4.1.0", - "@thi.ng/transducers": "^2.0.0" + "@thi.ng/transducers": "^2.0.1" }, "keywords": [ "ES6", diff --git a/packages/transducers-hdom/CHANGELOG.md b/packages/transducers-hdom/CHANGELOG.md index cb87b83d10..07ff96fd9b 100644 --- a/packages/transducers-hdom/CHANGELOG.md +++ b/packages/transducers-hdom/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.1.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-hdom@0.1.3...@thi.ng/transducers-hdom@0.1.4) (2018-08-24) + + + + +**Note:** Version bump only for package @thi.ng/transducers-hdom + ## [0.1.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-hdom@0.1.2...@thi.ng/transducers-hdom@0.1.3) (2018-08-24) diff --git a/packages/transducers-hdom/package.json b/packages/transducers-hdom/package.json index 4be9217b4b..764ee11430 100644 --- a/packages/transducers-hdom/package.json +++ b/packages/transducers-hdom/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/transducers-hdom", - "version": "0.1.3", + "version": "0.1.4", "description": "Transducer based UI updater for @thi.ng/hdom", "main": "./index.js", "typings": "./index.d.ts", @@ -29,8 +29,8 @@ }, "dependencies": { "@thi.ng/checks": "^1.5.7", - "@thi.ng/hdom": "^3.0.33", - "@thi.ng/transducers": "^2.0.0" + "@thi.ng/hdom": "^3.0.34", + "@thi.ng/transducers": "^2.0.1" }, "keywords": [ "diff", diff --git a/packages/transducers-stats/CHANGELOG.md b/packages/transducers-stats/CHANGELOG.md index f1775eb0ff..1033c6651d 100644 --- a/packages/transducers-stats/CHANGELOG.md +++ b/packages/transducers-stats/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.4.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-stats@0.4.0...@thi.ng/transducers-stats@0.4.1) (2018-08-24) + + + + +**Note:** Version bump only for package @thi.ng/transducers-stats + # [0.4.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-stats@0.3.4...@thi.ng/transducers-stats@0.4.0) (2018-08-24) diff --git a/packages/transducers-stats/package.json b/packages/transducers-stats/package.json index 2a907ca967..e3a5cb865a 100644 --- a/packages/transducers-stats/package.json +++ b/packages/transducers-stats/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/transducers-stats", - "version": "0.4.0", + "version": "0.4.1", "description": "Transducers for statistical / technical analysis", "main": "./index.js", "typings": "./index.d.ts", @@ -28,9 +28,9 @@ "typescript": "^3.0.1" }, "dependencies": { - "@thi.ng/dcons": "^1.1.0", + "@thi.ng/dcons": "^1.1.1", "@thi.ng/errors": "^0.1.6", - "@thi.ng/transducers": "^2.0.0" + "@thi.ng/transducers": "^2.0.1" }, "keywords": [ "ES6", diff --git a/packages/transducers/CHANGELOG.md b/packages/transducers/CHANGELOG.md index dd2d1c5729..7dc8879d0c 100644 --- a/packages/transducers/CHANGELOG.md +++ b/packages/transducers/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [2.0.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers@2.0.0...@thi.ng/transducers@2.0.1) (2018-08-24) + + + + +**Note:** Version bump only for package @thi.ng/transducers + # [2.0.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers@1.16.0...@thi.ng/transducers@2.0.0) (2018-08-24) diff --git a/packages/transducers/package.json b/packages/transducers/package.json index eb23621818..f517d30984 100644 --- a/packages/transducers/package.json +++ b/packages/transducers/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/transducers", - "version": "2.0.0", + "version": "2.0.1", "description": "Lightweight transducer implementations for ES6 / TypeScript", "main": "./index.js", "typings": "./index.d.ts", From 866f3cdd011188348ee0026d1158e40b02c3e2d2 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sat, 25 Aug 2018 01:16:09 +0100 Subject: [PATCH 05/60] refactor(cache): update iterator methods --- packages/cache/src/lru.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/cache/src/lru.ts b/packages/cache/src/lru.ts index f937a2d199..4c03175270 100644 --- a/packages/cache/src/lru.ts +++ b/packages/cache/src/lru.ts @@ -39,16 +39,16 @@ export class LRUCache implements ICache { return this.entries(); } - *entries(): IterableIterator]>> { - yield* map((e) => <[K, CacheEntry]>[e.k, e], this.items); + entries(): IterableIterator]>> { + return map((e) => <[K, CacheEntry]>[e.k, e], this.items); } - *keys(): IterableIterator> { - yield* map((e) => e.k, this.items); + keys(): IterableIterator> { + return map((e) => e.k, this.items); } - *values(): IterableIterator> { - yield* map((e) => e.v, this.items); + values(): IterableIterator> { + return map((e) => e.v, this.items); } copy(): ICache { From 80cae22d64d9915cd6d52954f7c452774083b320 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sat, 25 Aug 2018 11:28:48 +0100 Subject: [PATCH 06/60] chore: update make-module script --- scripts/make-module | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/make-module b/scripts/make-module index 9ce8e70bf2..431659b7db 100755 --- a/scripts/make-module +++ b/scripts/make-module @@ -55,7 +55,7 @@ cat << EOF > $MODULE/package.json "typescript": "^3.0.1" }, "dependencies": { - "@thi.ng/api": "^4.0.6" + "@thi.ng/api": "^4.1.0" }, "keywords": [ "ES6", From d0b1a1e4aee7d79e793ac3b1c39edd2227373420 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sat, 25 Aug 2018 17:57:01 +0100 Subject: [PATCH 07/60] feat(examples): add commit-table-ssr express server / git commit log demo --- examples/commit-table-ssr/.gitignore | 3 + examples/commit-table-ssr/README.md | 46 ++++++++++++ examples/commit-table-ssr/package.json | 23 ++++++ examples/commit-table-ssr/src/api.ts | 51 +++++++++++++ .../src/components/commit-link.ts | 5 ++ .../commit-table-ssr/src/components/header.ts | 6 ++ .../commit-table-ssr/src/components/link.ts | 4 + .../src/components/repo-table.ts | 29 +++++++ .../commit-table-ssr/src/components/table.ts | 27 +++++++ examples/commit-table-ssr/src/config.ts | 50 +++++++++++++ examples/commit-table-ssr/src/git.ts | 75 +++++++++++++++++++ examples/commit-table-ssr/src/html.ts | 38 ++++++++++ examples/commit-table-ssr/src/index.ts | 33 ++++++++ examples/commit-table-ssr/src/static.ts | 17 +++++ examples/commit-table-ssr/src/utils.ts | 13 ++++ examples/commit-table-ssr/tsconfig.json | 9 +++ 16 files changed, 429 insertions(+) create mode 100644 examples/commit-table-ssr/.gitignore create mode 100644 examples/commit-table-ssr/README.md create mode 100644 examples/commit-table-ssr/package.json create mode 100644 examples/commit-table-ssr/src/api.ts create mode 100644 examples/commit-table-ssr/src/components/commit-link.ts create mode 100644 examples/commit-table-ssr/src/components/header.ts create mode 100644 examples/commit-table-ssr/src/components/link.ts create mode 100644 examples/commit-table-ssr/src/components/repo-table.ts create mode 100644 examples/commit-table-ssr/src/components/table.ts create mode 100644 examples/commit-table-ssr/src/config.ts create mode 100644 examples/commit-table-ssr/src/git.ts create mode 100644 examples/commit-table-ssr/src/html.ts create mode 100644 examples/commit-table-ssr/src/index.ts create mode 100644 examples/commit-table-ssr/src/static.ts create mode 100644 examples/commit-table-ssr/src/utils.ts create mode 100644 examples/commit-table-ssr/tsconfig.json diff --git a/examples/commit-table-ssr/.gitignore b/examples/commit-table-ssr/.gitignore new file mode 100644 index 0000000000..9c418ce79f --- /dev/null +++ b/examples/commit-table-ssr/.gitignore @@ -0,0 +1,3 @@ +node_modules +yarn.lock +*.js diff --git a/examples/commit-table-ssr/README.md b/examples/commit-table-ssr/README.md new file mode 100644 index 0000000000..037f481af3 --- /dev/null +++ b/examples/commit-table-ssr/README.md @@ -0,0 +1,46 @@ +# commit-table-ssr + +[Rendered result](http://demo.thi.ng/umbrella/commit-table-ssr/) + +This example demonstrates +[@thi.ng/hiccup](https://github.com/thi-ng/umbrella/tree/master/packages/hiccup)-based +server-side rendering and uses a simple +[express](https://expressjs.com/) server to do so. Additionally, an +alternative is shown to generate a static file without requiring a +server setup. + +All of the UI components used will also work in the browser without +change, though that part of the example is still forthcoming. + +The example builds a large table (~670KB worth) of this repo's 1400+ +commits by shelling out to `git` to retrieve and transform the raw +history / log using +[transducer](https://github.com/thi-ng/umbrella/tree/master/packages/transducers) +pipelines. Since this process doesn't need to be performed for each +server request, the app uses a +[TLRUCache](https://github.com/thi-ng/umbrella/tree/master/packages/cache#tlru) +to cache the rendered HTML. Reloading the page will show the difference. + +To use another local repo on your hard drive, [update the settings +here](./src/config.ts#L24). + +```bash +git clone https://github.com/thi-ng/umbrella.git +cd umbrella/examples/commit-table-ssr +yarn install +yarn dev +``` + +To build the static version run: + +```bash +yarn build +``` + +## Authors + +- Karsten Schmidt + +## License + +© 2018 Karsten Schmidt // Apache Software License 2.0 diff --git a/examples/commit-table-ssr/package.json b/examples/commit-table-ssr/package.json new file mode 100644 index 0000000000..e08328487f --- /dev/null +++ b/examples/commit-table-ssr/package.json @@ -0,0 +1,23 @@ +{ + "name": "commit-table-ssr", + "version": "0.0.1", + "repository": "https://github.com/thi-ng/umbrella", + "author": "Karsten Schmidt ", + "license": "Apache-2.0", + "scripts": { + "build": "tsc && node static.js", + "dev": "tsc && node index.js" + }, + "devDependencies": { + "ts-loader": "^4.4.2", + "typescript": "^3.0.1", + "webpack": "^4.16.3", + "webpack-cli": "^3.1.0", + "webpack-dev-server": "^3.1.5" + }, + "dependencies": { + "express": "^4.16.3", + "@thi.ng/transducers": "latest", + "@types/express": "^4.16.0" + } +} \ No newline at end of file diff --git a/examples/commit-table-ssr/src/api.ts b/examples/commit-table-ssr/src/api.ts new file mode 100644 index 0000000000..d40578aa30 --- /dev/null +++ b/examples/commit-table-ssr/src/api.ts @@ -0,0 +1,51 @@ +/** + * Basic HTML document abstraction for hiccup serialization. + * See ./html.ts for usage + */ +export interface HTMLDoc { + lang?: string; + head?: Partial; + body: any[]; + /** + * This object will be passed to all component functions. + */ + ctx: AppContext; +} + +export interface HTMLHead { + title: string; + meta: any[]; + links: { rel: string, href: string }[]; + scripts: { src: string, [id: string]: string }[]; + styles: string[]; +} + +/** + * App context / config object. + * Contains repo information & component styles + */ +export interface AppContext { + repo: Repo; + ui: { + body: any; + link: any; + header: any; + table: any; + } +} + +export interface Repo { + name: string; + path: string; + url: string; +} + +export interface Commit { + sha: string; + date: string; + author: string; + msg: string; + files: number; + add: number; + del: number; +} diff --git a/examples/commit-table-ssr/src/components/commit-link.ts b/examples/commit-table-ssr/src/components/commit-link.ts new file mode 100644 index 0000000000..3638bdb0ad --- /dev/null +++ b/examples/commit-table-ssr/src/components/commit-link.ts @@ -0,0 +1,5 @@ +import { AppContext } from "../api"; +import { link } from "./link"; + +export const commitLink = (ctx: AppContext, sha: string, msg: string) => + [link, `${ctx.repo.url}/commit/${sha}`, msg]; diff --git a/examples/commit-table-ssr/src/components/header.ts b/examples/commit-table-ssr/src/components/header.ts new file mode 100644 index 0000000000..8b54cb395e --- /dev/null +++ b/examples/commit-table-ssr/src/components/header.ts @@ -0,0 +1,6 @@ +import { AppContext } from "../api"; + +export const header = (ctx: AppContext, title: string) => + ["section", ctx.ui.header.root, + ["h1", ctx.ui.header.title, title] + ]; diff --git a/examples/commit-table-ssr/src/components/link.ts b/examples/commit-table-ssr/src/components/link.ts new file mode 100644 index 0000000000..2c9d5d32ae --- /dev/null +++ b/examples/commit-table-ssr/src/components/link.ts @@ -0,0 +1,4 @@ +import { AppContext } from "../api"; + +export const link = (ctx: AppContext, href: string, body: string) => + ["a", { ...ctx.ui.link, href }, body]; diff --git a/examples/commit-table-ssr/src/components/repo-table.ts b/examples/commit-table-ssr/src/components/repo-table.ts new file mode 100644 index 0000000000..8e0eddae68 --- /dev/null +++ b/examples/commit-table-ssr/src/components/repo-table.ts @@ -0,0 +1,29 @@ +import { iterator, map, multiplex, comp, partitionBy, mapIndexed, repeat } from "@thi.ng/transducers"; +import { AppContext, Commit } from "../api"; +import { formatDate } from "../utils"; +import { table } from "./table"; +import { commitLink } from "./commit-link"; + +export const repoTable = (_: AppContext, commits: Iterable) => + [table, + ["15%", "15%", "55%", "5%", "5%", "5%"], + ["Date", "Author", "Description", "Files", "Adds", "Dels"], + iterator( + comp( + multiplex( + map((x: Commit) => formatDate(x.date)), + map((x: Commit) => x.author), + map((x: Commit) => [commitLink, x.sha, x.msg]), + map((x: Commit) => x.files), + map((x: Commit) => x.add ? ["span.green", `+${x.add}`] : null), + map((x: Commit) => x.del ? ["span.red", `-${x.del}`] : null), + ), + partitionBy((row) => row[0].split("-")[1]), + mapIndexed((i, month) => [ + i > 0 ? [month[0][0].substr(0, 7), ...repeat("", 5)] : null, + month + ]) + ), + commits + ) + ] \ No newline at end of file diff --git a/examples/commit-table-ssr/src/components/table.ts b/examples/commit-table-ssr/src/components/table.ts new file mode 100644 index 0000000000..936bf1eb7b --- /dev/null +++ b/examples/commit-table-ssr/src/components/table.ts @@ -0,0 +1,27 @@ +import { map } from "@thi.ng/transducers/xform/map"; + +import { AppContext } from "../api"; +import { mapcat } from "@thi.ng/transducers/xform/mapcat"; + +const thead = (ctx: AppContext, head: Iterable) => + ["thead", + [row, ctx.ui.table.head.row, + map((x) => ["th", ctx.ui.table.head.cell, x], head)]]; + +const row = (ctx: AppContext, attribs: any, body: Iterable) => + ["tr", { ...ctx.ui.table.row, ...attribs }, ...body]; + +export const table = (ctx: AppContext, layout: any[], head: Iterable, body: Iterable>) => + ["table", ctx.ui.table.root, + map((x) => ["col", { style: { width: x } }], layout || []), + [thead, head], + mapcat(([hd, rows]) => + [ + hd ? [thead, hd] : null, + ["tbody", + map((cols: any) => [row, null, map((x) => ["td", ctx.ui.table.cell, x], cols)], rows) + ] + ], + body + ) + ]; diff --git a/examples/commit-table-ssr/src/config.ts b/examples/commit-table-ssr/src/config.ts new file mode 100644 index 0000000000..1fc7a7c42f --- /dev/null +++ b/examples/commit-table-ssr/src/config.ts @@ -0,0 +1,50 @@ +import { HTMLDoc, AppContext } from "./api"; + +export const DEFAULT_DOC: HTMLDoc = { + head: { + meta: [ + { "http-equiv": "Content-Type", content: "text/html;charset=UTF-8" }, + { "http-equiv": "X-UA-Compatible", content: "ie=edge" } + ], + links: [ + { rel: "stylesheet", href: "https://unpkg.com/tachyons@4.11.1/css/tachyons.min.css" }, + { rel: "stylesheet", href: "https://fonts.googleapis.com/css?family=Inconsolata" } + ], + scripts: [], + styles: [], + title: "", + }, + ctx: null, + body: [], +}; + +/** + * Main app config. + */ +export const ctx: AppContext = { + repo: { + name: "thi.ng/umbrella", + path: ".", + url: "https://github.com/thi-ng/umbrella", + }, + ui: { + body: { class: "sans-serif vh-100" }, + link: { class: "link blue hover-light-blue" }, + header: { + root: { class: "bg-dark-gray white pa3 ma0 w-100 tc" }, + title: { class: "ma0 pa0 fw1" } + }, + table: { + root: { + class: "w-100 collapse ba br2 b--black-10 pv2 ph3 f7 f6-ns", + style: { "font-family": "Inconsolata, monospace" } + }, + head: { + row: { class: "tl bg-black white" }, + cell: { class: "pv1 pv2-ns ph2 ph3-ns" }, + }, + row: { class: "striped--light-gray" }, + cell: { class: "pv1 pv2-ns ph2 ph3-ns" } + } + } +}; diff --git a/examples/commit-table-ssr/src/git.ts b/examples/commit-table-ssr/src/git.ts new file mode 100644 index 0000000000..7c5f31e696 --- /dev/null +++ b/examples/commit-table-ssr/src/git.ts @@ -0,0 +1,75 @@ +import { + assocObj, + comp, + filter, + iterator, + map, + mapcat, + multiplex, + partitionBy, + transduce, + tuples +} from "@thi.ng/transducers"; +import { execSync } from "child_process"; +import { resolve } from "path"; + +import { Commit } from "./api"; + +/** + * Calls out to git to retrieve raw log string. + * + * @param repoPath + */ +const gitLog = (repoPath: string) => + execSync( + `git log --pretty=format:"%ad~~%an~~%h~~%s" --shortstat --date=iso-strict`, + { cwd: resolve(repoPath) } + ).toString().trim(); + +/** + * Transforms 1st line of a raw commit log into a partial commit + * object. + * + * @param log + */ +const parseLog = ([log]: string[]): Partial => { + const [date, author, sha, msg] = log.split("~~"); + return { date, author, sha, msg }; +}; + +/** + * Transforms 2nd line (if present) of a raw commit log into a partial + * commit object. + * + * @param log + */ +const parseStats = ([_, stats]: string[]): Partial => + stats ? + transduce( + map(([k, v]) => [k, parseInt(v)]), + assocObj(), + tuples(["files", "add", "del"], stats.split(",")) + ) : + null; + +/** + * Retrieves git log for given `repoPath` and transforms it into an + * iterable of `Commit` objects. + * + * @param repoPath + */ +export const repoCommits = (repoPath: string) => + iterator( + comp( + map(gitLog), + mapcat((x: string) => x.split("\n")), + partitionBy((x) => x.indexOf("Merge ") !== -1 ? 2 : x.length > 0 ? 1 : 0), + filter((x) => x[0].length > 0), + multiplex( + map(parseLog), + map(parseStats) + ), + map(([log, stats]) => { ...log, ...stats }) + ), + repoPath + ); diff --git a/examples/commit-table-ssr/src/html.ts b/examples/commit-table-ssr/src/html.ts new file mode 100644 index 0000000000..cc2f1fd2af --- /dev/null +++ b/examples/commit-table-ssr/src/html.ts @@ -0,0 +1,38 @@ +import { serialize } from "@thi.ng/hiccup"; +import { mergeDeepObj } from "@thi.ng/associative/merge-deep"; +import { map } from "@thi.ng/transducers/xform/map"; +import { HTMLDoc, AppContext } from "./api"; +import { DEFAULT_DOC } from "./config"; + +/** + * Takes a `HTMLDoc` object and serializes it into an HTML5 string. The + * `body` field of the document must contain elements in thi.ng/hiccup + * format, i.e. it's an array in which each element is a nested array, + * string or ES6 iterable, each encoding a part of the full DOM to be + * generated. The resulting HTML string will not contain any whitespace + * unless it's part of string values. + * + * See here for more reference: + * https://github.com/thi-ng/umbrella/tree/master/packages/hiccup + * + * @param doc + */ +export const html = (doc: HTMLDoc) => { + doc = mergeDeepObj(DEFAULT_DOC, doc); + return `${serialize( + ["html", { lang: doc.lang || "en" }, + ["head", + map((meta) => ["meta", meta], doc.head.meta), + ["title", doc.head.title], + map((link) => ["link", link], doc.head.links), + map((script) => ["script", script], doc.head.scripts), + map((css) => ["style", css], doc.head.styles), + ], + [body, ...doc.body] + ], + doc.ctx + )}`; +}; + +const body = (ctx: AppContext, ...body) => + ["body", ctx.ui.body, ...body]; diff --git a/examples/commit-table-ssr/src/index.ts b/examples/commit-table-ssr/src/index.ts new file mode 100644 index 0000000000..d2c6f51f3d --- /dev/null +++ b/examples/commit-table-ssr/src/index.ts @@ -0,0 +1,33 @@ +import { TLRUCache } from "@thi.ng/cache"; +import * as express from "express"; + +import { header } from "./components/header"; +import { repoTable } from "./components/repo-table"; +import { ctx } from "./config"; +import { repoCommits } from "./git"; +import { html } from "./html"; + +// building the repo commit table takes quite some time +// therefore we cache results in a cache with 1h expiry time +// (which is also the default) +const cache = new TLRUCache(null, { ttl: 60 * 60 * 1000 }); + +const app = express(); + +app.get('/', (_, res) => { + // retrieve rendered html from cache or + // (re)create if missing... + cache.getSet( + ctx.repo.path, + async () => + html({ + ctx, + body: [ + [header, ctx.repo.name], + [repoTable, repoCommits(ctx.repo.path)] + ] + }) + ).then((doc) => res.send(doc)); +}); + +app.listen(3000); diff --git a/examples/commit-table-ssr/src/static.ts b/examples/commit-table-ssr/src/static.ts new file mode 100644 index 0000000000..44ff293d7a --- /dev/null +++ b/examples/commit-table-ssr/src/static.ts @@ -0,0 +1,17 @@ +import { writeFileSync } from "fs"; +import { header } from "./components/header"; +import { repoTable } from "./components/repo-table"; +import { ctx } from "./config"; +import { repoCommits } from "./git"; +import { html } from "./html"; + +writeFileSync( + "index.html", + html({ + ctx, + body: [ + [header, ctx.repo.name], + [repoTable, repoCommits(ctx.repo.path)] + ] + }) +); diff --git a/examples/commit-table-ssr/src/utils.ts b/examples/commit-table-ssr/src/utils.ts new file mode 100644 index 0000000000..83b40ad3ea --- /dev/null +++ b/examples/commit-table-ssr/src/utils.ts @@ -0,0 +1,13 @@ +import { padLeft } from "@thi.ng/strings"; + +const Z2 = padLeft(2, "0"); + +/** + * Transforms ISO8601 string into `YYYY-MM-DD` UTC string. + * + * @param iso + */ +export const formatDate = (iso: string) => { + const d = new Date(Date.parse(iso)); + return `${d.getUTCFullYear()}-${Z2(d.getUTCMonth() + 1)}-${Z2(d.getUTCDate())}`; +}; diff --git a/examples/commit-table-ssr/tsconfig.json b/examples/commit-table-ssr/tsconfig.json new file mode 100644 index 0000000000..bd6481a5a6 --- /dev/null +++ b/examples/commit-table-ssr/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "." + }, + "include": [ + "./src/**/*.ts" + ] +} From 4be74baef7b46130ffb1bd4f3e26578132115542 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sat, 25 Aug 2018 18:25:47 +0100 Subject: [PATCH 08/60] fix(examples): commit log parsing, minor update html() --- examples/commit-table-ssr/src/git.ts | 2 +- examples/commit-table-ssr/src/html.ts | 7 ++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/examples/commit-table-ssr/src/git.ts b/examples/commit-table-ssr/src/git.ts index 7c5f31e696..a8f43d34d8 100644 --- a/examples/commit-table-ssr/src/git.ts +++ b/examples/commit-table-ssr/src/git.ts @@ -63,7 +63,7 @@ export const repoCommits = (repoPath: string) => comp( map(gitLog), mapcat((x: string) => x.split("\n")), - partitionBy((x) => x.indexOf("Merge ") !== -1 ? 2 : x.length > 0 ? 1 : 0), + partitionBy((x) => x.indexOf("~~Merge ") !== -1 ? 2 : x.length > 0 ? 1 : 0), filter((x) => x[0].length > 0), multiplex( map(parseLog), diff --git a/examples/commit-table-ssr/src/html.ts b/examples/commit-table-ssr/src/html.ts index cc2f1fd2af..360b7adc4a 100644 --- a/examples/commit-table-ssr/src/html.ts +++ b/examples/commit-table-ssr/src/html.ts @@ -1,7 +1,7 @@ import { serialize } from "@thi.ng/hiccup"; import { mergeDeepObj } from "@thi.ng/associative/merge-deep"; import { map } from "@thi.ng/transducers/xform/map"; -import { HTMLDoc, AppContext } from "./api"; +import { HTMLDoc } from "./api"; import { DEFAULT_DOC } from "./config"; /** @@ -28,11 +28,8 @@ export const html = (doc: HTMLDoc) => { map((script) => ["script", script], doc.head.scripts), map((css) => ["style", css], doc.head.styles), ], - [body, ...doc.body] + ["body", doc.ctx.ui.body, ...doc.body] ], doc.ctx )}`; }; - -const body = (ctx: AppContext, ...body) => - ["body", ctx.ui.body, ...body]; From ae383f8e25c0eb09f8d73a14acebddcfcd595e1f Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sat, 25 Aug 2018 18:31:24 +0100 Subject: [PATCH 09/60] refactor(examples): simplify date handling --- .../commit-table-ssr/src/components/repo-table.ts | 3 +-- examples/commit-table-ssr/src/utils.ts | 13 ------------- 2 files changed, 1 insertion(+), 15 deletions(-) delete mode 100644 examples/commit-table-ssr/src/utils.ts diff --git a/examples/commit-table-ssr/src/components/repo-table.ts b/examples/commit-table-ssr/src/components/repo-table.ts index 8e0eddae68..941d5f121b 100644 --- a/examples/commit-table-ssr/src/components/repo-table.ts +++ b/examples/commit-table-ssr/src/components/repo-table.ts @@ -1,6 +1,5 @@ import { iterator, map, multiplex, comp, partitionBy, mapIndexed, repeat } from "@thi.ng/transducers"; import { AppContext, Commit } from "../api"; -import { formatDate } from "../utils"; import { table } from "./table"; import { commitLink } from "./commit-link"; @@ -11,7 +10,7 @@ export const repoTable = (_: AppContext, commits: Iterable) => iterator( comp( multiplex( - map((x: Commit) => formatDate(x.date)), + map((x: Commit) => x.date.substr(0, 10)), map((x: Commit) => x.author), map((x: Commit) => [commitLink, x.sha, x.msg]), map((x: Commit) => x.files), diff --git a/examples/commit-table-ssr/src/utils.ts b/examples/commit-table-ssr/src/utils.ts deleted file mode 100644 index 83b40ad3ea..0000000000 --- a/examples/commit-table-ssr/src/utils.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { padLeft } from "@thi.ng/strings"; - -const Z2 = padLeft(2, "0"); - -/** - * Transforms ISO8601 string into `YYYY-MM-DD` UTC string. - * - * @param iso - */ -export const formatDate = (iso: string) => { - const d = new Date(Date.parse(iso)); - return `${d.getUTCFullYear()}-${Z2(d.getUTCMonth() + 1)}-${Z2(d.getUTCDate())}`; -}; From fca0b13db861402a2cdab758361651706c49f3f5 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sat, 25 Aug 2018 18:38:09 +0100 Subject: [PATCH 10/60] docs(examples): add more comments --- .../src/components/repo-table.ts | 23 +++++++++++-------- examples/commit-table-ssr/src/git.ts | 10 +++++++- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/examples/commit-table-ssr/src/components/repo-table.ts b/examples/commit-table-ssr/src/components/repo-table.ts index 941d5f121b..c45ed79f7b 100644 --- a/examples/commit-table-ssr/src/components/repo-table.ts +++ b/examples/commit-table-ssr/src/components/repo-table.ts @@ -1,4 +1,4 @@ -import { iterator, map, multiplex, comp, partitionBy, mapIndexed, repeat } from "@thi.ng/transducers"; +import { iterator, map, comp, partitionBy, mapIndexed, repeat } from "@thi.ng/transducers"; import { AppContext, Commit } from "../api"; import { table } from "./table"; import { commitLink } from "./commit-link"; @@ -9,15 +9,18 @@ export const repoTable = (_: AppContext, commits: Iterable) => ["Date", "Author", "Description", "Files", "Adds", "Dels"], iterator( comp( - multiplex( - map((x: Commit) => x.date.substr(0, 10)), - map((x: Commit) => x.author), - map((x: Commit) => [commitLink, x.sha, x.msg]), - map((x: Commit) => x.files), - map((x: Commit) => x.add ? ["span.green", `+${x.add}`] : null), - map((x: Commit) => x.del ? ["span.red", `-${x.del}`] : null), - ), - partitionBy((row) => row[0].split("-")[1]), + // convert commit into tuple, one value per table cell + map((x: Commit) => [ + x.date.substr(0, 10), + x.author, + [commitLink, x.sha, x.msg], + x.files, + x.add ? ["span.green", `+${x.add}`] : null, + x.del ? ["span.red", `-${x.del}`] : null, + ]), + // partition rows by month + partitionBy((row: any[]) => row[0].split("-")[1]), + // insert month headers (but not in 1st chunk) mapIndexed((i, month) => [ i > 0 ? [month[0][0].substr(0, 7), ...repeat("", 5)] : null, month diff --git a/examples/commit-table-ssr/src/git.ts b/examples/commit-table-ssr/src/git.ts index a8f43d34d8..a91ae829a5 100644 --- a/examples/commit-table-ssr/src/git.ts +++ b/examples/commit-table-ssr/src/git.ts @@ -61,15 +61,23 @@ const parseStats = ([_, stats]: string[]): Partial => export const repoCommits = (repoPath: string) => iterator( comp( + // get raw log map(gitLog), + // split into lines mapcat((x: string) => x.split("\n")), + // group related lines: + // normal commits have 2 lines + 1 empty + // merge commits have only 1 line partitionBy((x) => x.indexOf("~~Merge ") !== -1 ? 2 : x.length > 0 ? 1 : 0), + // remove empty lines filter((x) => x[0].length > 0), + // parse commit details multiplex( map(parseLog), map(parseStats) ), + // combine map(([log, stats]) => { ...log, ...stats }) ), - repoPath + [repoPath] ); From 0cd261cfc7f50f5bdde074b45535734b4bac65e8 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sat, 25 Aug 2018 19:38:23 +0100 Subject: [PATCH 11/60] docs(example): update example list --- examples/README.md | 49 +++++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/examples/README.md b/examples/README.md index cf3c9dcfbc..2bd57b37ba 100644 --- a/examples/README.md +++ b/examples/README.md @@ -4,27 +4,28 @@ This directory contains a growing number of standalone example projects, includi If you want to [contribute](../CONTRIBUTING.md) an example, please get in touch via PR, issue tracker, email or twitter! -| # | Name | Description | Packages of interest | Difficulty | -|----|----------------------------------------------|-----------------------------------------------------|-------------------------------------------------------------------|--------------| -| 1 | [async-effect](./async-effect) | Async side effect handling (JSON I/O) | atom, hdom, interceptors | intermediate | -| 2 | [cellular-automata](./cellular-automata) | Transducer based, customizable 2D cellular automata | hdom, hdom-components, transducers | basic | -| 3 | [crypto-chart](./crypto-chart) | Interactive rstream & transducer based SVG chart | hdom, hiccup-svg, rstream, transducers | advanced | -| 4 | [dashboard](./cellular-automata) | Barebones components w/ local state | hdom, transducers | basic | -| 5 | [devcards](./devcards) | Multiple app instances with/without shared state | atom, hdom | intermediate | -| 6 | [hdom-basics](./hdom-basics) | Hello world | hdom, hiccup | basic | -| 7 | [hdom-benchmark](./hdom-benchmark) | hdom rendering perf / stress test, FPS counter | hdom, rstream, transducers | intermediate | -| 8 | [hdom-theme-adr-0003](./hdom-theme-adr-0003) | hdom themed components proposal | hdom | intermediate | -| 9 | [interceptor-basics](./hdom-benchmark) | Event handling w/ interceptors and side effects | atom, hdom, interceptors | intermediate | -| 10 | [json-components](./json-components) | JSON->component transformation, live editor | hdom, transducers | intermediate | -| 11 | [login-form](./login-form) | Basic SPA without router | atom, hdom | intermediate | -| 12 | [pointfree-svg](./pointfree-svg) | Generate SVG using pointfree DSL | hiccup, hiccup-svg, pointfree-lang | intermediate | -| 13 | [router-basics](./router-basics) | Complete mini SPA | atom, hdom, interceptors, router | advanced | -| 14 | [rstream-dataflow](./rstream-dataflow) | Dataflow graph | atom, hdom, rstream, rstream-gestures, rstream-graph, transducers | intermediate | -| 15 | [rstream-grid](./rstream-grid) | Dataflow graph SVG grid | atom, hdom, hiccup-svg, interceptors, rstream-graph, transducers | advanced | -| 16 | [rstream-hdom](./rstream-hdom) | rstream based UI updates & state handling | hdom, rstream, transducers | intermediate | -| 17 | [svg-particles](./svg-particles) | hdom SVG generation / animation | hdom, transducers | basic | -| 18 | [svg-waveform](./svg-waveform) | hdom SVG generation / undo history | atom, hdom, hiccup-svg, interceptors, iterators | intermediate | -| 19 | [todo-list](./todo-list) | Canonical Todo list with undo/redo | atom, hdom, transducers | intermediate | -| 20 | [transducers-hdom](./transducers-hdom) | Transducer & rstream based hdom UI updates | hdom, rstream, transducers-hdom | basic | -| 21 | [triple-query](./triple-query) | Triple store query results & sortable table | atom, hdom, hdom-components, rstream-query, transducers | intermediate | -| 22 | [webgl](./webgl) | Canvas component handling | hdom, hdom-components | basic | +| # | Name | Description | Packages of interest | Difficulty | +|----|----------------------------------------------|----------------------------------------------------------|-------------------------------------------------------------------|--------------| +| 1 | [async-effect](./async-effect) | Async side effect handling (JSON I/O) | atom, hdom, interceptors | intermediate | +| 2 | [cellular-automata](./cellular-automata) | Transducer based, customizable 2D cellular automata | hdom, hdom-components, transducers | basic | +| 3 | [commit-table-ssr](./commit-table-ssr) | Server-side & static file rendering of hiccup components | hiccup, transducers | intermediate | +| 3 | [crypto-chart](./crypto-chart) | Interactive rstream & transducer based SVG chart | hdom, hiccup-svg, rstream, transducers | advanced | +| 4 | [dashboard](./dashboard) | Barebones components w/ local state | hdom, transducers | basic | +| 5 | [devcards](./devcards) | Multiple app instances with/without shared state | atom, hdom | intermediate | +| 6 | [hdom-basics](./hdom-basics) | Hello world | hdom, hiccup | basic | +| 7 | [hdom-benchmark](./hdom-benchmark) | hdom rendering perf / stress test, FPS counter | hdom, rstream, transducers | intermediate | +| 8 | [hdom-theme-adr-0003](./hdom-theme-adr-0003) | hdom themed components proposal | hdom | intermediate | +| 9 | [interceptor-basics](./hdom-benchmark) | Event handling w/ interceptors and side effects | atom, hdom, interceptors | intermediate | +| 10 | [json-components](./json-components) | JSON->component transformation, live editor | hdom, transducers | intermediate | +| 11 | [login-form](./login-form) | Basic SPA without router | atom, hdom | intermediate | +| 12 | [pointfree-svg](./pointfree-svg) | Generate SVG using pointfree DSL | hiccup, hiccup-svg, pointfree-lang | intermediate | +| 13 | [router-basics](./router-basics) | Complete mini SPA | atom, hdom, interceptors, router | advanced | +| 14 | [rstream-dataflow](./rstream-dataflow) | Dataflow graph | atom, hdom, rstream, rstream-gestures, rstream-graph, transducers | intermediate | +| 15 | [rstream-grid](./rstream-grid) | Dataflow graph SVG grid | atom, hdom, hiccup-svg, interceptors, rstream-graph, transducers | advanced | +| 16 | [rstream-hdom](./rstream-hdom) | rstream based UI updates & state handling | hdom, rstream, transducers | intermediate | +| 17 | [svg-particles](./svg-particles) | hdom SVG generation / animation | hdom, transducers | basic | +| 18 | [svg-waveform](./svg-waveform) | hdom SVG generation / undo history | atom, hdom, hiccup-svg, interceptors, iterators | intermediate | +| 19 | [todo-list](./todo-list) | Canonical Todo list with undo/redo | atom, hdom, transducers | intermediate | +| 20 | [transducers-hdom](./transducers-hdom) | Transducer & rstream based hdom UI updates | hdom, rstream, transducers-hdom | basic | +| 21 | [triple-query](./triple-query) | Triple store query results & sortable table | atom, hdom, hdom-components, rstream-query, transducers | intermediate | +| 22 | [webgl](./webgl) | Canvas component handling | hdom, hdom-components | basic | From 82db75b20115bb741c101cb38c2509cb6da42eb8 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sat, 25 Aug 2018 19:43:04 +0100 Subject: [PATCH 12/60] docs: fix example table --- examples/README.md | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/examples/README.md b/examples/README.md index 2bd57b37ba..544ba82f7f 100644 --- a/examples/README.md +++ b/examples/README.md @@ -9,23 +9,23 @@ If you want to [contribute](../CONTRIBUTING.md) an example, please get in touch | 1 | [async-effect](./async-effect) | Async side effect handling (JSON I/O) | atom, hdom, interceptors | intermediate | | 2 | [cellular-automata](./cellular-automata) | Transducer based, customizable 2D cellular automata | hdom, hdom-components, transducers | basic | | 3 | [commit-table-ssr](./commit-table-ssr) | Server-side & static file rendering of hiccup components | hiccup, transducers | intermediate | -| 3 | [crypto-chart](./crypto-chart) | Interactive rstream & transducer based SVG chart | hdom, hiccup-svg, rstream, transducers | advanced | -| 4 | [dashboard](./dashboard) | Barebones components w/ local state | hdom, transducers | basic | -| 5 | [devcards](./devcards) | Multiple app instances with/without shared state | atom, hdom | intermediate | -| 6 | [hdom-basics](./hdom-basics) | Hello world | hdom, hiccup | basic | -| 7 | [hdom-benchmark](./hdom-benchmark) | hdom rendering perf / stress test, FPS counter | hdom, rstream, transducers | intermediate | -| 8 | [hdom-theme-adr-0003](./hdom-theme-adr-0003) | hdom themed components proposal | hdom | intermediate | -| 9 | [interceptor-basics](./hdom-benchmark) | Event handling w/ interceptors and side effects | atom, hdom, interceptors | intermediate | -| 10 | [json-components](./json-components) | JSON->component transformation, live editor | hdom, transducers | intermediate | -| 11 | [login-form](./login-form) | Basic SPA without router | atom, hdom | intermediate | -| 12 | [pointfree-svg](./pointfree-svg) | Generate SVG using pointfree DSL | hiccup, hiccup-svg, pointfree-lang | intermediate | -| 13 | [router-basics](./router-basics) | Complete mini SPA | atom, hdom, interceptors, router | advanced | -| 14 | [rstream-dataflow](./rstream-dataflow) | Dataflow graph | atom, hdom, rstream, rstream-gestures, rstream-graph, transducers | intermediate | -| 15 | [rstream-grid](./rstream-grid) | Dataflow graph SVG grid | atom, hdom, hiccup-svg, interceptors, rstream-graph, transducers | advanced | -| 16 | [rstream-hdom](./rstream-hdom) | rstream based UI updates & state handling | hdom, rstream, transducers | intermediate | -| 17 | [svg-particles](./svg-particles) | hdom SVG generation / animation | hdom, transducers | basic | -| 18 | [svg-waveform](./svg-waveform) | hdom SVG generation / undo history | atom, hdom, hiccup-svg, interceptors, iterators | intermediate | -| 19 | [todo-list](./todo-list) | Canonical Todo list with undo/redo | atom, hdom, transducers | intermediate | -| 20 | [transducers-hdom](./transducers-hdom) | Transducer & rstream based hdom UI updates | hdom, rstream, transducers-hdom | basic | -| 21 | [triple-query](./triple-query) | Triple store query results & sortable table | atom, hdom, hdom-components, rstream-query, transducers | intermediate | -| 22 | [webgl](./webgl) | Canvas component handling | hdom, hdom-components | basic | +| 4 | [crypto-chart](./crypto-chart) | Interactive rstream & transducer based SVG chart | hdom, hiccup-svg, rstream, transducers | advanced | +| 5 | [dashboard](./dashboard) | Barebones components w/ local state | hdom, transducers | basic | +| 6 | [devcards](./devcards) | Multiple app instances with/without shared state | atom, hdom | intermediate | +| 7 | [hdom-basics](./hdom-basics) | Hello world | hdom, hiccup | basic | +| 8 | [hdom-benchmark](./hdom-benchmark) | hdom rendering perf / stress test, FPS counter | hdom, rstream, transducers | intermediate | +| 9 | [hdom-theme-adr-0003](./hdom-theme-adr-0003) | hdom themed components proposal | hdom | intermediate | +| 10 | [interceptor-basics](./interceptor-basics) | Event handling w/ interceptors and side effects | atom, hdom, interceptors | intermediate | +| 11 | [json-components](./json-components) | JSON->component transformation, live editor | hdom, transducers | intermediate | +| 12 | [login-form](./login-form) | Basic SPA without router | atom, hdom | intermediate | +| 13 | [pointfree-svg](./pointfree-svg) | Generate SVG using pointfree DSL | hiccup, hiccup-svg, pointfree-lang | intermediate | +| 14 | [router-basics](./router-basics) | Complete mini SPA | atom, hdom, interceptors, router | advanced | +| 15 | [rstream-dataflow](./rstream-dataflow) | Dataflow graph | atom, hdom, rstream, rstream-gestures, rstream-graph, transducers | intermediate | +| 16 | [rstream-grid](./rstream-grid) | Dataflow graph SVG grid | atom, hdom, hiccup-svg, interceptors, rstream-graph, transducers | advanced | +| 17 | [rstream-hdom](./rstream-hdom) | rstream based UI updates & state handling | hdom, rstream, transducers | intermediate | +| 18 | [svg-particles](./svg-particles) | hdom SVG generation / animation | hdom, transducers | basic | +| 19 | [svg-waveform](./svg-waveform) | hdom SVG generation / undo history | atom, hdom, hiccup-svg, interceptors, iterators | intermediate | +| 20 | [todo-list](./todo-list) | Canonical Todo list with undo/redo | atom, hdom, transducers | intermediate | +| 21 | [transducers-hdom](./transducers-hdom) | Transducer & rstream based hdom UI updates | hdom, rstream, transducers-hdom | basic | +| 22 | [triple-query](./triple-query) | Triple store query results & sortable table | atom, hdom, hdom-components, rstream-query, transducers | intermediate | +| 23 | [webgl](./webgl) | Canvas component handling | hdom, hdom-components | basic | \ No newline at end of file From 377188552e514ff1c8018de9ecc4c4ff27d12ecf Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sat, 25 Aug 2018 20:04:33 +0100 Subject: [PATCH 13/60] refactor(examples): further DRY & readme updates --- examples/commit-table-ssr/README.md | 4 ++++ examples/commit-table-ssr/src/common.ts | 14 ++++++++++++++ examples/commit-table-ssr/src/index.ts | 14 ++------------ examples/commit-table-ssr/src/static.ts | 17 ++--------------- 4 files changed, 22 insertions(+), 27 deletions(-) create mode 100644 examples/commit-table-ssr/src/common.ts diff --git a/examples/commit-table-ssr/README.md b/examples/commit-table-ssr/README.md index 037f481af3..463ec28d01 100644 --- a/examples/commit-table-ssr/README.md +++ b/examples/commit-table-ssr/README.md @@ -24,6 +24,8 @@ to cache the rendered HTML. Reloading the page will show the difference. To use another local repo on your hard drive, [update the settings here](./src/config.ts#L24). +## Building & running + ```bash git clone https://github.com/thi-ng/umbrella.git cd umbrella/examples/commit-table-ssr @@ -31,6 +33,8 @@ yarn install yarn dev ``` +Then open http://localhost:3000 in your browser. + To build the static version run: ```bash diff --git a/examples/commit-table-ssr/src/common.ts b/examples/commit-table-ssr/src/common.ts new file mode 100644 index 0000000000..4df36fbffa --- /dev/null +++ b/examples/commit-table-ssr/src/common.ts @@ -0,0 +1,14 @@ +import { header } from "./components/header"; +import { repoTable } from "./components/repo-table"; +import { ctx } from "./config"; +import { repoCommits } from "./git"; +import { html } from "./html"; + +export const buildRepoTableHTML = () => + html({ + ctx, + body: [ + [header, ctx.repo.name], + [repoTable, repoCommits(ctx.repo.path)] + ] + }); diff --git a/examples/commit-table-ssr/src/index.ts b/examples/commit-table-ssr/src/index.ts index d2c6f51f3d..9d892d6ec8 100644 --- a/examples/commit-table-ssr/src/index.ts +++ b/examples/commit-table-ssr/src/index.ts @@ -1,11 +1,8 @@ import { TLRUCache } from "@thi.ng/cache"; import * as express from "express"; -import { header } from "./components/header"; -import { repoTable } from "./components/repo-table"; import { ctx } from "./config"; -import { repoCommits } from "./git"; -import { html } from "./html"; +import { buildRepoTableHTML } from "./common"; // building the repo commit table takes quite some time // therefore we cache results in a cache with 1h expiry time @@ -19,14 +16,7 @@ app.get('/', (_, res) => { // (re)create if missing... cache.getSet( ctx.repo.path, - async () => - html({ - ctx, - body: [ - [header, ctx.repo.name], - [repoTable, repoCommits(ctx.repo.path)] - ] - }) + async () => buildRepoTableHTML() ).then((doc) => res.send(doc)); }); diff --git a/examples/commit-table-ssr/src/static.ts b/examples/commit-table-ssr/src/static.ts index 44ff293d7a..cbbb67cc87 100644 --- a/examples/commit-table-ssr/src/static.ts +++ b/examples/commit-table-ssr/src/static.ts @@ -1,17 +1,4 @@ import { writeFileSync } from "fs"; -import { header } from "./components/header"; -import { repoTable } from "./components/repo-table"; -import { ctx } from "./config"; -import { repoCommits } from "./git"; -import { html } from "./html"; +import { buildRepoTableHTML } from "./common"; -writeFileSync( - "index.html", - html({ - ctx, - body: [ - [header, ctx.repo.name], - [repoTable, repoCommits(ctx.repo.path)] - ] - }) -); +writeFileSync("index.html", buildRepoTableHTML()); From 318401c0fd7e4c6a807c83683322ecb6f58d8d8f Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sat, 25 Aug 2018 20:41:17 +0100 Subject: [PATCH 14/60] refactor(examples): update components, add docs --- examples/commit-table-ssr/src/api.ts | 3 ++ examples/commit-table-ssr/src/common.ts | 6 +++- .../src/components/commit-link.ts | 12 +++++-- .../commit-table-ssr/src/components/link.ts | 7 ++++ .../src/components/repo-table.ts | 9 ++++- .../commit-table-ssr/src/components/table.ts | 33 ++++++++++++++++++- examples/commit-table-ssr/src/git.ts | 11 +++---- examples/commit-table-ssr/src/static.ts | 1 + 8 files changed, 70 insertions(+), 12 deletions(-) diff --git a/examples/commit-table-ssr/src/api.ts b/examples/commit-table-ssr/src/api.ts index d40578aa30..3ae7887e18 100644 --- a/examples/commit-table-ssr/src/api.ts +++ b/examples/commit-table-ssr/src/api.ts @@ -40,6 +40,9 @@ export interface Repo { url: string; } +/** + * Data structure of a single commit. + */ export interface Commit { sha: string; date: string; diff --git a/examples/commit-table-ssr/src/common.ts b/examples/commit-table-ssr/src/common.ts index 4df36fbffa..93e5e5b54e 100644 --- a/examples/commit-table-ssr/src/common.ts +++ b/examples/commit-table-ssr/src/common.ts @@ -4,11 +4,15 @@ import { ctx } from "./config"; import { repoCommits } from "./git"; import { html } from "./html"; +/** + * Shared function used by both the server and for static file + * generation. Returns serialized HTML string of commit table. + */ export const buildRepoTableHTML = () => html({ ctx, body: [ [header, ctx.repo.name], - [repoTable, repoCommits(ctx.repo.path)] + [repoTable, repoCommits(ctx.repo.path)], ] }); diff --git a/examples/commit-table-ssr/src/components/commit-link.ts b/examples/commit-table-ssr/src/components/commit-link.ts index 3638bdb0ad..89d039a810 100644 --- a/examples/commit-table-ssr/src/components/commit-link.ts +++ b/examples/commit-table-ssr/src/components/commit-link.ts @@ -1,5 +1,13 @@ import { AppContext } from "../api"; import { link } from "./link"; -export const commitLink = (ctx: AppContext, sha: string, msg: string) => - [link, `${ctx.repo.url}/commit/${sha}`, msg]; +/** + * Link component which links to given SHA commit hash using the + * context's repo URL. + * + * @param ctx + * @param sha + * @param body + */ +export const commitLink = (ctx: AppContext, sha: string, body: string) => + [link, `${ctx.repo.url}/commit/${sha}`, body]; diff --git a/examples/commit-table-ssr/src/components/link.ts b/examples/commit-table-ssr/src/components/link.ts index 2c9d5d32ae..422e4fc0cf 100644 --- a/examples/commit-table-ssr/src/components/link.ts +++ b/examples/commit-table-ssr/src/components/link.ts @@ -1,4 +1,11 @@ import { AppContext } from "../api"; +/** + * Generic HTML link component. + * + * @param ctx + * @param href + * @param body + */ export const link = (ctx: AppContext, href: string, body: string) => ["a", { ...ctx.ui.link, href }, body]; diff --git a/examples/commit-table-ssr/src/components/repo-table.ts b/examples/commit-table-ssr/src/components/repo-table.ts index c45ed79f7b..9ebab20411 100644 --- a/examples/commit-table-ssr/src/components/repo-table.ts +++ b/examples/commit-table-ssr/src/components/repo-table.ts @@ -3,6 +3,13 @@ import { AppContext, Commit } from "../api"; import { table } from "./table"; import { commitLink } from "./commit-link"; +/** + * Git commit log table component. Consumes iterable of `Commit` objects + * and transforms each into a table row. + * + * @param _ + * @param commits + */ export const repoTable = (_: AppContext, commits: Iterable) => [table, ["15%", "15%", "55%", "5%", "5%", "5%"], @@ -28,4 +35,4 @@ export const repoTable = (_: AppContext, commits: Iterable) => ), commits ) - ] \ No newline at end of file + ]; diff --git a/examples/commit-table-ssr/src/components/table.ts b/examples/commit-table-ssr/src/components/table.ts index 936bf1eb7b..4a32cb6258 100644 --- a/examples/commit-table-ssr/src/components/table.ts +++ b/examples/commit-table-ssr/src/components/table.ts @@ -11,7 +11,38 @@ const thead = (ctx: AppContext, head: Iterable) => const row = (ctx: AppContext, attribs: any, body: Iterable) => ["tr", { ...ctx.ui.table.row, ...attribs }, ...body]; -export const table = (ctx: AppContext, layout: any[], head: Iterable, body: Iterable>) => +/** + * Generic HTML table component w/ column layout support & intermediate + * headers. The `body` iterable MUST contain groups of rows, each group + * with an optional new header row: + * + * ``` + * [table, + * // column layout + * ["25%", "25%", "50%"], + * // global header + * ["Price","Item","Description"], + * // body + * [ + * // row group #1 w/o header + * [null, [ + * [10.99, "Yaki Udon", "noodle dish"], + * [4.99, "Asahi", "beer"], + * ]], + * // row group #2 w/ header + * [["Subtotal", "VAT", "Total"], [ + * [15.98, "20%", 19.18] + * ]] + * ] + * ] + * ``` + * + * @param ctx + * @param layout column sizes + * @param head header cell values + * @param body row chunks + */ +export const table = (ctx: AppContext, layout: (string | number)[], head: Iterable, body: Iterable>) => ["table", ctx.ui.table.root, map((x) => ["col", { style: { width: x } }], layout || []), [thead, head], diff --git a/examples/commit-table-ssr/src/git.ts b/examples/commit-table-ssr/src/git.ts index a91ae829a5..ce8f7204ad 100644 --- a/examples/commit-table-ssr/src/git.ts +++ b/examples/commit-table-ssr/src/git.ts @@ -5,7 +5,6 @@ import { iterator, map, mapcat, - multiplex, partitionBy, transduce, tuples @@ -72,12 +71,10 @@ export const repoCommits = (repoPath: string) => // remove empty lines filter((x) => x[0].length > 0), // parse commit details - multiplex( - map(parseLog), - map(parseStats) - ), - // combine - map(([log, stats]) => { ...log, ...stats }) + map((commit) => { + ...parseLog(commit), + ...parseStats(commit) + }) ), [repoPath] ); diff --git a/examples/commit-table-ssr/src/static.ts b/examples/commit-table-ssr/src/static.ts index cbbb67cc87..f7605f2994 100644 --- a/examples/commit-table-ssr/src/static.ts +++ b/examples/commit-table-ssr/src/static.ts @@ -1,4 +1,5 @@ import { writeFileSync } from "fs"; import { buildRepoTableHTML } from "./common"; +// generate as file in example directory writeFileSync("index.html", buildRepoTableHTML()); From 80a5f300874b14e3c43025cd1b2726ef20af3fbc Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 26 Aug 2018 02:25:51 +0100 Subject: [PATCH 15/60] feat(examples): add client/browser version of commit-log - major restructure of example src folder - add /client/index.ts for browser/hdom version - add extra cache for raw commits - add JSON endpoint for client version - update imports (more finegrained) - update / rename build command (see readme) - update readme --- examples/commit-table-ssr/README.md | 69 +++++++--- examples/commit-table-ssr/package.json | 11 +- examples/commit-table-ssr/src/client/index.ts | 126 ++++++++++++++++++ examples/commit-table-ssr/src/common.ts | 18 --- .../commit-table-ssr/src/{ => common}/api.ts | 4 +- .../{ => common}/components/commit-link.ts | 2 +- .../src/{ => common}/components/header.ts | 0 .../src/{ => common}/components/link.ts | 4 +- .../src/{ => common}/components/repo-table.ts | 10 +- .../src/{ => common}/components/table.ts | 0 .../src/{ => common}/config.ts | 12 +- examples/commit-table-ssr/src/index.ts | 23 ---- .../src/server/build-table.ts | 18 +++ .../commit-table-ssr/src/{ => server}/git.ts | 4 +- .../commit-table-ssr/src/{ => server}/html.ts | 14 +- examples/commit-table-ssr/src/server/index.ts | 63 +++++++++ .../commit-table-ssr/src/server/static.ts | 8 ++ examples/commit-table-ssr/src/static.ts | 5 - examples/commit-table-ssr/tsconfig.json | 4 +- 19 files changed, 311 insertions(+), 84 deletions(-) create mode 100644 examples/commit-table-ssr/src/client/index.ts delete mode 100644 examples/commit-table-ssr/src/common.ts rename examples/commit-table-ssr/src/{ => common}/api.ts (91%) rename examples/commit-table-ssr/src/{ => common}/components/commit-link.ts (78%) rename examples/commit-table-ssr/src/{ => common}/components/header.ts (100%) rename examples/commit-table-ssr/src/{ => common}/components/link.ts (52%) rename examples/commit-table-ssr/src/{ => common}/components/repo-table.ts (78%) rename examples/commit-table-ssr/src/{ => common}/components/table.ts (100%) rename examples/commit-table-ssr/src/{ => common}/config.ts (79%) delete mode 100644 examples/commit-table-ssr/src/index.ts create mode 100644 examples/commit-table-ssr/src/server/build-table.ts rename examples/commit-table-ssr/src/{ => server}/git.ts (93%) rename examples/commit-table-ssr/src/{ => server}/html.ts (79%) create mode 100644 examples/commit-table-ssr/src/server/index.ts create mode 100644 examples/commit-table-ssr/src/server/static.ts delete mode 100644 examples/commit-table-ssr/src/static.ts diff --git a/examples/commit-table-ssr/README.md b/examples/commit-table-ssr/README.md index 463ec28d01..ee39157b5c 100644 --- a/examples/commit-table-ssr/README.md +++ b/examples/commit-table-ssr/README.md @@ -1,31 +1,36 @@ # commit-table-ssr -[Rendered result](http://demo.thi.ng/umbrella/commit-table-ssr/) +[Live version](http://demo.thi.ng/umbrella/commit-table-ssr/) -This example demonstrates +This example demonstrates isomorphic, [@thi.ng/hiccup](https://github.com/thi-ng/umbrella/tree/master/packages/hiccup)-based -server-side rendering and uses a simple -[express](https://expressjs.com/) server to do so. Additionally, an -alternative is shown to generate a static file without requiring a -server setup. +server-side rendering, static file generation and an extended +interactive browser version of a git repo commit log. The server is a +simple [express](https://expressjs.com/) app. -All of the UI components used will also work in the browser without -change, though that part of the example is still forthcoming. +All of the UI components used on the server side too work in the browser +without change, though the browser version has additional functionality +(i.e. interactive filtering of commits via user provided search filter). -The example builds a large table (~670KB worth) of this repo's 1400+ -commits by shelling out to `git` to retrieve and transform the raw -history / log using +The server example builds a large table (~700KB worth of HTML) of this +repo's 1460+ commits by shelling out to `git` to retrieve and transform +the raw history / log using [transducer](https://github.com/thi-ng/umbrella/tree/master/packages/transducers) pipelines. Since this process doesn't need to be performed for each -server request, the app uses a -[TLRUCache](https://github.com/thi-ng/umbrella/tree/master/packages/cache#tlru) -to cache the rendered HTML. Reloading the page will show the difference. +server request, the app uses +[TLRUCaches](https://github.com/thi-ng/umbrella/tree/master/packages/cache#tlru) +to cache both the raw commits and the rendered HTML. Reloading the page +will show the timing difference. To use another local repo on your hard drive, [update the settings -here](./src/config.ts#L24). +here](./src/common/config.ts#L24). ## Building & running +### Server-side rendering + +See [/src/server/index.ts](./src/server/index.ts) for details... + ```bash git clone https://github.com/thi-ng/umbrella.git cd umbrella/examples/commit-table-ssr @@ -33,12 +38,40 @@ yarn install yarn dev ``` -Then open http://localhost:3000 in your browser. +Then open http://localhost:3000/ssr in your browser. + +### Browser version + +The browser version uses the same UI components, but realizes them via +[@thi.ng/hdom](https://github.com/thi-ng/umbrella/tree/master/packages/hdom). + +In addition to the SSR version above, this version displays additional +repo stats and allows for interactive filtering of the commits. The +commits themselves are loaded as JSON and therefore also require the +server app. + +Furthermore, this version utilizes +[@thi.ng/rstream](https://github.com/thi-ng/umbrella/tree/master/packages/rstream) +to build a simple dataflow graph and handle app state changes via +various reactive stream constructs. Comments are included. + +See [/src/client/index.ts](./src/client/index.ts) for details... + +``` +yarn dev-client +``` + +Once you see a message that the server is running, open +http://localhost:3000 in your browser. + +### Static file generation + +The result will be saved to `table.html` in this example's root directory. -To build the static version run: +See [/src/server/static.ts](./src/server/static.ts) for details... ```bash -yarn build +yarn build-static ``` ## Authors diff --git a/examples/commit-table-ssr/package.json b/examples/commit-table-ssr/package.json index e08328487f..969a8198b3 100644 --- a/examples/commit-table-ssr/package.json +++ b/examples/commit-table-ssr/package.json @@ -5,8 +5,10 @@ "author": "Karsten Schmidt ", "license": "Apache-2.0", "scripts": { - "build": "tsc && node static.js", - "dev": "tsc && node index.js" + "build-static": "tsc && node build/server/static.js", + "build-client": "webpack --mode production --display-reasons --display-modules", + "dev": "tsc && node build/server/index.js", + "dev-client": "yarn build-client && yarn dev" }, "devDependencies": { "ts-loader": "^4.4.2", @@ -17,6 +19,11 @@ }, "dependencies": { "express": "^4.16.3", + "@thi.ng/associative": "latest", + "@thi.ng/cache": "latest", + "@thi.ng/hiccup": "latest", + "@thi.ng/resolve-map": "latest", + "@thi.ng/rstream": "latest", "@thi.ng/transducers": "latest", "@types/express": "^4.16.0" } diff --git a/examples/commit-table-ssr/src/client/index.ts b/examples/commit-table-ssr/src/client/index.ts new file mode 100644 index 0000000000..7fa0750e2b --- /dev/null +++ b/examples/commit-table-ssr/src/client/index.ts @@ -0,0 +1,126 @@ +import { resolve as resolveMap } from "@thi.ng/resolve-map"; +import { fromInterval } from "@thi.ng/rstream/from/interval"; +import { stream } from "@thi.ng/rstream/stream"; +import { sync } from "@thi.ng/rstream/stream-sync"; +import { resolve as resolvePromise } from "@thi.ng/rstream/subs/resolve"; +import { updateUI } from "@thi.ng/transducers-hdom"; +import { add } from "@thi.ng/transducers/rfn/add"; +import { conj } from "@thi.ng/transducers/rfn/conj"; +import { transduce } from "@thi.ng/transducers/transduce"; +import { map } from "@thi.ng/transducers/xform/map"; +import { pluck } from "@thi.ng/transducers/xform/pluck"; +import { throttleTime } from "@thi.ng/transducers/xform/throttle-time"; + +import { AppContext, Commit } from "../common/api"; +import { header } from "../common/components/header"; +import { link } from "../common/components/link"; +import { repoTable } from "../common/components/repo-table"; +import { ctx } from "../common/config"; + +// UI root component +const app = (state) => + ["div", + [header, ctx.repo.name], + [stats, state], + [repoTable, state.commits], + ]; + +// stats container component +const stats = (ctx: AppContext, state) => + ["div", ctx.ui.stats.root, + ["div.tl", ctx.ui.stats.col, + [searchFilter, state]], + ["div.tc", ctx.ui.stats.col, + ["div", `Authors: ${state.authors}`], + ["div", `Total adds: ${state.adds} (${state.avgAdds} avg / commit)`], + ["div", `Total dels: ${state.dels} (${state.avgDels} avg / commit)`] + ], + ["div.tr", ctx.ui.stats.col, + [link, { ...ctx.ui.stats.link, href: ctx.repo.url }, ctx.repo.url] + ] + ]; + +// search filter input component +const searchFilter = (ctx: AppContext, state) => + ["div", + "Filter:", + ["input", { + ...ctx.ui.search, + type: "text", + value: state.search, + // emit changes on `search` stream + oninput: (e) => search.next(e.target.value.toLowerCase()) + }], + `(${state.commits.length} commits)` + ]; + +// transformation function to filter commits with search string +// doesn't apply filter if search term is empty +const filterCommits = ({ commits, search }) => + ({ + search, + commits: search ? + commits.filter((x) => x.msg.toLowerCase().indexOf(search) !== -1) : + commits + }); + +// transformation function to compute stats of filtered commits +// uses `resolve-map` package to execute given functions in dependency order +const computeStats = (state) => resolveMap({ + ...state, + adds: ({ commits }) => transduce(map((x: Commit) => x.add || 0), add(), commits), + dels: ({ commits }) => transduce(map((x: Commit) => x.del || 0), add(), commits), + authors: ({ commits }) => transduce(pluck("author"), conj(), commits).size, + avgAdds: ({ commits, adds }) => (adds / commits.length) | 0, + avgDels: ({ commits, dels }) => (dels / commits.length) | 0 +}); + +// error stream & handler +const error = stream(); +error.subscribe({ next: (e) => alert(`An error occurred:\n${e}`) }); + +// commit log stream, reloads every 1h +const commits = fromInterval(60 * 60 * 1000) + // fetch commits from server + .transform( + map(() => fetch("./commits").then( + (res) => res.ok ? res.json() : error.next("error loading commits"), + (e) => error.next(e.message) + )) + ) + // the above transducer returns a promise + // this next subscription resolves it and only then + // passes the result downstream + .subscribe( + resolvePromise({ fail: (e) => error.next(e.message) }) + ); + +// stream of commit filter terms +const search = stream(); + +// stream combinator & transformation into UI / DOM update +sync({ + // streams to synchronize + src: { + commits, + // throttle search stream @ 10Hz (100ms) to minimize + // UI lag for fast typists + search: search.transform(throttleTime(100)), + }, +}) + // now transform the combined stream + // each value is an object tuple of: `{ commits, search }` + .transform( + map(filterCommits), + map(computeStats), + // apply root component + map(app), + // apply hdom tree to real DOM + updateUI("app", ctx) + ); + +// manual kick off is needed here, since the above stream sync construct +// will only execute once all of its inputs have delivered a value +// the other input `commits` is triggered automatically because it's +// tied to a timer +search.next(""); diff --git a/examples/commit-table-ssr/src/common.ts b/examples/commit-table-ssr/src/common.ts deleted file mode 100644 index 93e5e5b54e..0000000000 --- a/examples/commit-table-ssr/src/common.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { header } from "./components/header"; -import { repoTable } from "./components/repo-table"; -import { ctx } from "./config"; -import { repoCommits } from "./git"; -import { html } from "./html"; - -/** - * Shared function used by both the server and for static file - * generation. Returns serialized HTML string of commit table. - */ -export const buildRepoTableHTML = () => - html({ - ctx, - body: [ - [header, ctx.repo.name], - [repoTable, repoCommits(ctx.repo.path)], - ] - }); diff --git a/examples/commit-table-ssr/src/api.ts b/examples/commit-table-ssr/src/common/api.ts similarity index 91% rename from examples/commit-table-ssr/src/api.ts rename to examples/commit-table-ssr/src/common/api.ts index 3ae7887e18..294fb33501 100644 --- a/examples/commit-table-ssr/src/api.ts +++ b/examples/commit-table-ssr/src/common/api.ts @@ -16,7 +16,7 @@ export interface HTMLHead { title: string; meta: any[]; links: { rel: string, href: string }[]; - scripts: { src: string, [id: string]: string }[]; + scripts: { src: string, type?: string }[]; styles: string[]; } @@ -31,6 +31,8 @@ export interface AppContext { link: any; header: any; table: any; + stats: any; + search: any; } } diff --git a/examples/commit-table-ssr/src/components/commit-link.ts b/examples/commit-table-ssr/src/common/components/commit-link.ts similarity index 78% rename from examples/commit-table-ssr/src/components/commit-link.ts rename to examples/commit-table-ssr/src/common/components/commit-link.ts index 89d039a810..0015a8f304 100644 --- a/examples/commit-table-ssr/src/components/commit-link.ts +++ b/examples/commit-table-ssr/src/common/components/commit-link.ts @@ -10,4 +10,4 @@ import { link } from "./link"; * @param body */ export const commitLink = (ctx: AppContext, sha: string, body: string) => - [link, `${ctx.repo.url}/commit/${sha}`, body]; + [link, { ...ctx.ui.link, href: `${ctx.repo.url}/commit/${sha}` }, body]; diff --git a/examples/commit-table-ssr/src/components/header.ts b/examples/commit-table-ssr/src/common/components/header.ts similarity index 100% rename from examples/commit-table-ssr/src/components/header.ts rename to examples/commit-table-ssr/src/common/components/header.ts diff --git a/examples/commit-table-ssr/src/components/link.ts b/examples/commit-table-ssr/src/common/components/link.ts similarity index 52% rename from examples/commit-table-ssr/src/components/link.ts rename to examples/commit-table-ssr/src/common/components/link.ts index 422e4fc0cf..69f78e00bc 100644 --- a/examples/commit-table-ssr/src/components/link.ts +++ b/examples/commit-table-ssr/src/common/components/link.ts @@ -7,5 +7,5 @@ import { AppContext } from "../api"; * @param href * @param body */ -export const link = (ctx: AppContext, href: string, body: string) => - ["a", { ...ctx.ui.link, href }, body]; +export const link = (_: AppContext, attribs: any, body: string) => + ["a", attribs, body]; diff --git a/examples/commit-table-ssr/src/components/repo-table.ts b/examples/commit-table-ssr/src/common/components/repo-table.ts similarity index 78% rename from examples/commit-table-ssr/src/components/repo-table.ts rename to examples/commit-table-ssr/src/common/components/repo-table.ts index 9ebab20411..13a672c284 100644 --- a/examples/commit-table-ssr/src/components/repo-table.ts +++ b/examples/commit-table-ssr/src/common/components/repo-table.ts @@ -1,7 +1,13 @@ -import { iterator, map, comp, partitionBy, mapIndexed, repeat } from "@thi.ng/transducers"; +import { comp } from "@thi.ng/transducers/func/comp"; +import { repeat } from "@thi.ng/transducers/iter/repeat"; +import { iterator } from "@thi.ng/transducers/iterator"; +import { map } from "@thi.ng/transducers/xform/map"; +import { mapIndexed } from "@thi.ng/transducers/xform/map-indexed"; +import { partitionBy } from "@thi.ng/transducers/xform/partition-by"; + import { AppContext, Commit } from "../api"; -import { table } from "./table"; import { commitLink } from "./commit-link"; +import { table } from "./table"; /** * Git commit log table component. Consumes iterable of `Commit` objects diff --git a/examples/commit-table-ssr/src/components/table.ts b/examples/commit-table-ssr/src/common/components/table.ts similarity index 100% rename from examples/commit-table-ssr/src/components/table.ts rename to examples/commit-table-ssr/src/common/components/table.ts diff --git a/examples/commit-table-ssr/src/config.ts b/examples/commit-table-ssr/src/common/config.ts similarity index 79% rename from examples/commit-table-ssr/src/config.ts rename to examples/commit-table-ssr/src/common/config.ts index 1fc7a7c42f..a406e81c6e 100644 --- a/examples/commit-table-ssr/src/config.ts +++ b/examples/commit-table-ssr/src/common/config.ts @@ -31,8 +31,8 @@ export const ctx: AppContext = { body: { class: "sans-serif vh-100" }, link: { class: "link blue hover-light-blue" }, header: { - root: { class: "bg-dark-gray white pa3 ma0 w-100 tc" }, - title: { class: "ma0 pa0 fw1" } + root: { class: "bg-dark-gray white pa3 ma0 w-100" }, + title: { class: "tc ma0 pa0 fw1" } }, table: { root: { @@ -45,6 +45,12 @@ export const ctx: AppContext = { }, row: { class: "striped--light-gray" }, cell: { class: "pv1 pv2-ns ph2 ph3-ns" } - } + }, + stats: { + root: { class: "flex items-center pa2 bg-light-green dark-gray f7" }, + col: { class: "w-33" }, + link: { class: "link dark-gray" } + }, + search: { class: "pa1 mh2" } } }; diff --git a/examples/commit-table-ssr/src/index.ts b/examples/commit-table-ssr/src/index.ts deleted file mode 100644 index 9d892d6ec8..0000000000 --- a/examples/commit-table-ssr/src/index.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { TLRUCache } from "@thi.ng/cache"; -import * as express from "express"; - -import { ctx } from "./config"; -import { buildRepoTableHTML } from "./common"; - -// building the repo commit table takes quite some time -// therefore we cache results in a cache with 1h expiry time -// (which is also the default) -const cache = new TLRUCache(null, { ttl: 60 * 60 * 1000 }); - -const app = express(); - -app.get('/', (_, res) => { - // retrieve rendered html from cache or - // (re)create if missing... - cache.getSet( - ctx.repo.path, - async () => buildRepoTableHTML() - ).then((doc) => res.send(doc)); -}); - -app.listen(3000); diff --git a/examples/commit-table-ssr/src/server/build-table.ts b/examples/commit-table-ssr/src/server/build-table.ts new file mode 100644 index 0000000000..bf2f22765b --- /dev/null +++ b/examples/commit-table-ssr/src/server/build-table.ts @@ -0,0 +1,18 @@ +import { Commit } from "../common/api"; +import { header } from "../common/components/header"; +import { repoTable } from "../common/components/repo-table"; +import { ctx } from "../common/config"; +import { html } from "./html"; + +/** + * Shared function used by both the server and for static file + * generation. Returns serialized HTML string of commit table. + */ +export const buildRepoTableHTML = (commits: Iterable) => + html({ + ctx, + body: [ + [header, ctx.repo.name], + [repoTable, commits], + ] + }); diff --git a/examples/commit-table-ssr/src/git.ts b/examples/commit-table-ssr/src/server/git.ts similarity index 93% rename from examples/commit-table-ssr/src/git.ts rename to examples/commit-table-ssr/src/server/git.ts index ce8f7204ad..83d0ca0e27 100644 --- a/examples/commit-table-ssr/src/git.ts +++ b/examples/commit-table-ssr/src/server/git.ts @@ -12,7 +12,7 @@ import { import { execSync } from "child_process"; import { resolve } from "path"; -import { Commit } from "./api"; +import { Commit } from "../common/api"; /** * Calls out to git to retrieve raw log string. @@ -67,7 +67,7 @@ export const repoCommits = (repoPath: string) => // group related lines: // normal commits have 2 lines + 1 empty // merge commits have only 1 line - partitionBy((x) => x.indexOf("~~Merge ") !== -1 ? 2 : x.length > 0 ? 1 : 0), + partitionBy((x) => x.indexOf("~~Merge ") !== -1 ? Math.random() : x.length > 0 ? 1 : 0), // remove empty lines filter((x) => x[0].length > 0), // parse commit details diff --git a/examples/commit-table-ssr/src/html.ts b/examples/commit-table-ssr/src/server/html.ts similarity index 79% rename from examples/commit-table-ssr/src/html.ts rename to examples/commit-table-ssr/src/server/html.ts index 360b7adc4a..07781d8d94 100644 --- a/examples/commit-table-ssr/src/html.ts +++ b/examples/commit-table-ssr/src/server/html.ts @@ -1,8 +1,9 @@ -import { serialize } from "@thi.ng/hiccup"; import { mergeDeepObj } from "@thi.ng/associative/merge-deep"; +import { serialize } from "@thi.ng/hiccup"; import { map } from "@thi.ng/transducers/xform/map"; -import { HTMLDoc } from "./api"; -import { DEFAULT_DOC } from "./config"; + +import { AppContext, HTMLDoc } from "../common/api"; +import { DEFAULT_DOC } from "../common/config"; /** * Takes a `HTMLDoc` object and serializes it into an HTML5 string. The @@ -23,13 +24,16 @@ export const html = (doc: HTMLDoc) => { ["html", { lang: doc.lang || "en" }, ["head", map((meta) => ["meta", meta], doc.head.meta), - ["title", doc.head.title], + map((s) => script(null, s), doc.head.scripts), map((link) => ["link", link], doc.head.links), - map((script) => ["script", script], doc.head.scripts), map((css) => ["style", css], doc.head.styles), + ["title", doc.head.title], ], ["body", doc.ctx.ui.body, ...doc.body] ], doc.ctx )}`; }; + +export const script = (_: AppContext, script: { src: string, type?: string }) => + ["script", { type: "text/javascript", ...script }]; \ No newline at end of file diff --git a/examples/commit-table-ssr/src/server/index.ts b/examples/commit-table-ssr/src/server/index.ts new file mode 100644 index 0000000000..19850edd40 --- /dev/null +++ b/examples/commit-table-ssr/src/server/index.ts @@ -0,0 +1,63 @@ +import { TLRUCache } from "@thi.ng/cache"; +import * as express from "express"; + +import { Commit } from "../common/api"; +import { ctx } from "../common/config"; +import { buildRepoTableHTML } from "./build-table"; +import { repoCommits } from "./git"; +import { html, script } from "./html"; + +// building the repo commit table takes quite some time +// therefore we cache results with 1h expiry time +// (which is also the default) +const rawCache = new TLRUCache(null, { ttl: 60 * 60 * 1000 }); +const htmlCache = new TLRUCache(null, { ttl: 60 * 60 * 1000 }); + +const app = express(); + +app.use(express.static(".")); + +// route for browser version +// here we simply return a barebone html doc +// with a reference to the built client JS +app.get("/", (_, res) => { + res.send(html({ + ctx, + head: { + title: "commit-table-hdom", + }, + body: [ + ["div#app"], + [script, { src: "bundle.js" }] + ], + })); +}); + +// route for the client to retrieve the commit log as JSON +app.get("/commits", (_, res) => { + // retrieve rendered html from cache or + // (re)create if missing... + rawCache.getSet( + ctx.repo.path, + async () => [...repoCommits(ctx.repo.path)] + ).then( + (commits) => res.type("json").send(commits) + ) +}); + +// route for server-side rendering +// uses both caches +app.get("/ssr", (_, res) => { + htmlCache.getSet( + ctx.repo.path, + async () => buildRepoTableHTML( + await rawCache.getSet( + ctx.repo.path, + async () => [...repoCommits(ctx.repo.path)] + ) + ) + ).then((doc) => res.send(doc)) +}); + +console.log("starting server @ http://localhost:3000"); +app.listen(3000); diff --git a/examples/commit-table-ssr/src/server/static.ts b/examples/commit-table-ssr/src/server/static.ts new file mode 100644 index 0000000000..4170ca5191 --- /dev/null +++ b/examples/commit-table-ssr/src/server/static.ts @@ -0,0 +1,8 @@ +import { writeFileSync } from "fs"; + +import { ctx } from "../common/config"; +import { buildRepoTableHTML } from "./build-table"; +import { repoCommits } from "./git"; + +// generate as file in example directory +writeFileSync("table.html", buildRepoTableHTML(repoCommits(ctx.repo.path))); diff --git a/examples/commit-table-ssr/src/static.ts b/examples/commit-table-ssr/src/static.ts deleted file mode 100644 index f7605f2994..0000000000 --- a/examples/commit-table-ssr/src/static.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { writeFileSync } from "fs"; -import { buildRepoTableHTML } from "./common"; - -// generate as file in example directory -writeFileSync("index.html", buildRepoTableHTML()); diff --git a/examples/commit-table-ssr/tsconfig.json b/examples/commit-table-ssr/tsconfig.json index bd6481a5a6..9c5143a908 100644 --- a/examples/commit-table-ssr/tsconfig.json +++ b/examples/commit-table-ssr/tsconfig.json @@ -1,9 +1,9 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "outDir": "." + "outDir": "build" }, "include": [ "./src/**/*.ts" ] -} +} \ No newline at end of file From 9d542b920d0fc7606ddbce2ae5c7d02b422f7da9 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sun, 26 Aug 2018 02:55:29 +0100 Subject: [PATCH 16/60] minor(examples): fix/update comments --- examples/commit-table-ssr/src/client/index.ts | 2 +- examples/commit-table-ssr/src/server/git.ts | 8 +++++++- examples/commit-table-ssr/src/server/index.ts | 4 +++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/examples/commit-table-ssr/src/client/index.ts b/examples/commit-table-ssr/src/client/index.ts index 7fa0750e2b..35a5801ee7 100644 --- a/examples/commit-table-ssr/src/client/index.ts +++ b/examples/commit-table-ssr/src/client/index.ts @@ -120,7 +120,7 @@ sync({ ); // manual kick off is needed here, since the above stream sync construct -// will only execute once all of its inputs have delivered a value +// will only execute once all of its inputs have delivered a value. // the other input `commits` is triggered automatically because it's // tied to a timer search.next(""); diff --git a/examples/commit-table-ssr/src/server/git.ts b/examples/commit-table-ssr/src/server/git.ts index 83d0ca0e27..8120bcca59 100644 --- a/examples/commit-table-ssr/src/server/git.ts +++ b/examples/commit-table-ssr/src/server/git.ts @@ -67,7 +67,13 @@ export const repoCommits = (repoPath: string) => // group related lines: // normal commits have 2 lines + 1 empty // merge commits have only 1 line - partitionBy((x) => x.indexOf("~~Merge ") !== -1 ? Math.random() : x.length > 0 ? 1 : 0), + // pick a random number for merge commits + // in case there're successive ones + partitionBy( + (x) => x.indexOf("~~Merge ") !== -1 ? + Math.random() : + x.length > 0 ? 1 : 0 + ), // remove empty lines filter((x) => x[0].length > 0), // parse commit details diff --git a/examples/commit-table-ssr/src/server/index.ts b/examples/commit-table-ssr/src/server/index.ts index 19850edd40..302ed03339 100644 --- a/examples/commit-table-ssr/src/server/index.ts +++ b/examples/commit-table-ssr/src/server/index.ts @@ -35,7 +35,7 @@ app.get("/", (_, res) => { // route for the client to retrieve the commit log as JSON app.get("/commits", (_, res) => { - // retrieve rendered html from cache or + // retrieve raw commit log from cache or // (re)create if missing... rawCache.getSet( ctx.repo.path, @@ -48,6 +48,8 @@ app.get("/commits", (_, res) => { // route for server-side rendering // uses both caches app.get("/ssr", (_, res) => { + // retrieve rendered html from cache or + // (re)create if missing... htmlCache.getSet( ctx.repo.path, async () => buildRepoTableHTML( From 135d6f1bb3a007f5b33ce84151ef1560f2bb0ab6 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 27 Aug 2018 04:38:00 +0100 Subject: [PATCH 17/60] feat(hdom-components): add HDPI adaptation helper for canvas comps - add adaptDPI() and automatically call from init() --- packages/hdom-components/src/canvas.ts | 34 +++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/packages/hdom-components/src/canvas.ts b/packages/hdom-components/src/canvas.ts index b836455f5c..dac433161b 100644 --- a/packages/hdom-components/src/canvas.ts +++ b/packages/hdom-components/src/canvas.ts @@ -1,23 +1,28 @@ +export type CanvasContext = + CanvasRenderingContext2D | + WebGLRenderingContext | + WebGL2RenderingContext; + /** * User provided canvas life cycle methods. These differ from the usual * @thi.ng/hdom life cycle methods and are always passed at least the * canvas DOM element, canvas context and hdom user context. Not all * handlers need to be implemented. */ -export interface CanvasHandlers { +export interface CanvasHandlers { /** * user init handler (called only once when canvas first) */ - init: (el: HTMLCanvasElement, gl: T, hctx?: any, ...args: any[]) => void; + init: (el: HTMLCanvasElement, ctx: T, hctx?: any, ...args: any[]) => void; /** * update handler (called for each hdom update iteration) */ - update: (el: HTMLCanvasElement, gl: T, hctx?: any, time?: number, frame?: number, ...args: any[]) => void; + update: (el: HTMLCanvasElement, ctx: T, hctx?: any, time?: number, frame?: number, ...args: any[]) => void; /** * release handler (called only once when canvas element is removed * from DOM) */ - release: (el: HTMLCanvasElement, gl: T, hctx?: any, ...args: any[]) => void; + release: (el: HTMLCanvasElement, ctx: T, hctx?: any, ...args: any[]) => void; } /** @@ -35,6 +40,7 @@ const _canvas = (type, { init, update, release }: Partial>, return { init(_el: HTMLCanvasElement, hctx: any, ...args: any[]) { el = _el; + adaptDPI(el, el.width, el.height); ctx = el.getContext(type, opts); time = Date.now(); init && init(el, ctx, hctx, ...args); @@ -98,3 +104,23 @@ export const canvas2D = ( handlers: Partial>, opts?: Canvas2DContextAttributes) => _canvas("2d", handlers, opts); + +/** + * Sets the canvas size to given `width` & `height` and adjusts style to + * compensate for HDPI devices. Note: For 2D canvases, this will + * automatically clear any prior canvas content. + * + * @param canvas + * @param width uncompensated pixel width + * @param height uncompensated pixel height + */ +export const adaptDPI = (canvas: HTMLCanvasElement, width: number, height: number) => { + const dpr = window.devicePixelRatio || 1; + if (dpr != 1) { + canvas.style.width = `${width}px`; + canvas.style.height = `${height}px`; + } + canvas.width = width * dpr; + canvas.height = height * dpr; + return dpr; +}; From b5633b18c7bc95b5e8906b5202cf6604007a50c4 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 27 Aug 2018 04:38:59 +0100 Subject: [PATCH 18/60] feat(examples): add canvas-dial example (WIP) --- examples/canvas-dial/.gitignore | 3 + examples/canvas-dial/README.md | 20 +++++ examples/canvas-dial/index.html | 19 +++++ examples/canvas-dial/package.json | 28 +++++++ examples/canvas-dial/src/dial.ts | 112 +++++++++++++++++++++++++ examples/canvas-dial/src/index.ts | 63 ++++++++++++++ examples/canvas-dial/tsconfig.json | 9 ++ examples/canvas-dial/webpack.config.js | 18 ++++ 8 files changed, 272 insertions(+) create mode 100644 examples/canvas-dial/.gitignore create mode 100644 examples/canvas-dial/README.md create mode 100644 examples/canvas-dial/index.html create mode 100644 examples/canvas-dial/package.json create mode 100644 examples/canvas-dial/src/dial.ts create mode 100644 examples/canvas-dial/src/index.ts create mode 100644 examples/canvas-dial/tsconfig.json create mode 100644 examples/canvas-dial/webpack.config.js diff --git a/examples/canvas-dial/.gitignore b/examples/canvas-dial/.gitignore new file mode 100644 index 0000000000..9c418ce79f --- /dev/null +++ b/examples/canvas-dial/.gitignore @@ -0,0 +1,3 @@ +node_modules +yarn.lock +*.js diff --git a/examples/canvas-dial/README.md b/examples/canvas-dial/README.md new file mode 100644 index 0000000000..dca583f085 --- /dev/null +++ b/examples/canvas-dial/README.md @@ -0,0 +1,20 @@ +# canvas-dial + +[Live demo](http://demo.thi.ng/umbrella/canvas-dial/) + +Canvas-based dial widget / component. WIP - Interactive version forthcoming. + +```bash +git clone https://github.com/thi-ng/umbrella.git +cd umbrella/examples/canvas-dial +yarn install +yarn start +``` + +## Authors + +- Karsten Schmidt + +## License + +© 2018 Karsten Schmidt // Apache Software License 2.0 diff --git a/examples/canvas-dial/index.html b/examples/canvas-dial/index.html new file mode 100644 index 0000000000..62ff6957ad --- /dev/null +++ b/examples/canvas-dial/index.html @@ -0,0 +1,19 @@ + + + + + + + + canvas-dial + + + + + +
+ + + + \ No newline at end of file diff --git a/examples/canvas-dial/package.json b/examples/canvas-dial/package.json new file mode 100644 index 0000000000..de2be1f868 --- /dev/null +++ b/examples/canvas-dial/package.json @@ -0,0 +1,28 @@ +{ + "name": "canvas-dial", + "version": "0.0.1", + "repository": "https://github.com/thi-ng/umbrella", + "author": "Karsten Schmidt ", + "license": "Apache-2.0", + "scripts": { + "build": "webpack --mode production --display-reasons --display-modules", + "start": "webpack-dev-server --open --mode development --devtool inline-source-map" + }, + "devDependencies": { + "ts-loader": "^4.4.2", + "typescript": "^3.0.1", + "webpack": "^4.16.3", + "webpack-cli": "^3.1.0", + "webpack-dev-server": "^3.1.5" + }, + "dependencies": { + "@thi.ng/api": "latest", + "@thi.ng/checks": "latest", + "@thi.ng/hdom": "latest", + "@thi.ng/hdom-components": "latest", + "@thi.ng/rstream": "latest", + "@thi.ng/rstream-gestures": "latest", + "@thi.ng/strings": "latest", + "@thi.ng/transducers": "latest" + } +} \ No newline at end of file diff --git a/examples/canvas-dial/src/dial.ts b/examples/canvas-dial/src/dial.ts new file mode 100644 index 0000000000..873a4088ab --- /dev/null +++ b/examples/canvas-dial/src/dial.ts @@ -0,0 +1,112 @@ +import { Fn } from "@thi.ng/api/api"; +import { isString } from "@thi.ng/checks/is-string"; +import { canvas2D } from "@thi.ng/hdom-components/canvas"; +import { GestureEvent, gestureStream } from "@thi.ng/rstream-gestures"; +import { Subscription } from "@thi.ng/rstream/subscription"; + +export interface GradientDef { + from: number[]; + to: number[]; + stops: [number, string][]; +} + +export interface DialOpts { + cx: number; + cy: number; + r1: number; + r2: number; + base: number; + spread: number; + color: string | GradientDef; + bgColor: string | GradientDef; + label?: (x: number) => string; + labelYOffset?: number; + labelColor?: string; + font: string; + onchange: Fn; +} + +const PI = Math.PI; +const TAU = 2 * PI; + +export const dial = (opts: Partial) => { + opts = { + cx: 0.5, + cy: 0.5, + r1: 0.5, + r2: 0.99, + base: Math.PI * 0.5, + spread: PI * 0.1, + color: "black", + bgColor: "rgba(0,0,0,0.1)", + labelColor: "black", + labelYOffset: 0, + font: "10px sans-serif", + ...opts + }; + let events: Subscription; + let cx, cy; + const startTheta = opts.base + opts.spread / 2; + + const drawRing = (ctx: CanvasRenderingContext2D, amount: number, col: any) => { + const endTheta = startTheta + (TAU - opts.spread) * amount; + ctx.fillStyle = col; + ctx.beginPath(); + ctx.arc(cx, cy, opts.r2, startTheta, endTheta, false); + ctx.arc(cx, cy, opts.r1, endTheta, startTheta, true); + ctx.fill(); + }; + + const makeGradient = (el: HTMLCanvasElement, ctx: CanvasRenderingContext2D, def: GradientDef) => { + const g = ctx.createLinearGradient( + def.from[0] * el.width, def.from[1] * el.height, + def.to[0] * el.width, def.to[1] * el.height + ); + def.stops.forEach(([pos, col]) => g.addColorStop(pos, col)); + return g; + }; + + return canvas2D({ + + init: (el, ctx) => { + cx = el.width * opts.cx; + cy = el.height * opts.cy; + const scale = Math.min(cx, cy); + opts.r1 *= scale; + opts.r2 *= scale; + if (!isString(opts.bgColor)) { + opts.bgColor = makeGradient(el, ctx, opts.bgColor); + } + if (!isString(opts.color)) { + opts.color = makeGradient(el, ctx, opts.color); + } + if (opts.onchange) { + events = gestureStream(el).subscribe({ + next: () => { + // TODO + // opts.onchange.call(null, x); + } + }); + } + }, + + release: () => { + events && events.unsubscribe(); + }, + + update: (el, ctx, ...args: any[]) => { + ctx.strokeStyle = "none"; + ctx.font = opts.font; + ctx.textAlign = "center"; + ctx.textBaseline = "middle"; + const amount = args[4]; + ctx.clearRect(0, 0, el.width, el.height); + drawRing(ctx, 1, opts.bgColor); + drawRing(ctx, Math.max(amount, 0.005), opts.color); + if (opts.label) { + ctx.fillStyle = opts.labelColor; + ctx.fillText(opts.label(amount), cx, cy + opts.labelYOffset); + } + } + }); +}; diff --git a/examples/canvas-dial/src/index.ts b/examples/canvas-dial/src/index.ts new file mode 100644 index 0000000000..654b871b7c --- /dev/null +++ b/examples/canvas-dial/src/index.ts @@ -0,0 +1,63 @@ +import { fromRAF } from "@thi.ng/rstream/from/raf"; +import { sync } from "@thi.ng/rstream/stream-sync"; +import { percent } from "@thi.ng/strings/percent"; +import { updateUI } from "@thi.ng/transducers-hdom"; +import { comp } from "@thi.ng/transducers/func/comp"; +import { map } from "@thi.ng/transducers/xform/map"; +// import { stream } from "@thi.ng/rstream/stream"; + +import { dial } from "./dial"; + +export const ctx = { + // state: new Atom({ + // bass: 0 + // }) + ui: { + root: { class: "vh-100 flex justify-center items-center" }, + dial: { width: 100, height: 100, class: "mh1" }, + } +}; + +const sine = (freq: number) => + map((x: number) => 0.5 + 0.5 * Math.sin(x * freq)); + +const app = () => { + const dialA = dial({ + r1: 0.5, + color: { from: [0, 0], to: [1, 1], stops: [[0, "#075"], [1, "#6f9"]] }, + font: "20px Menlo", + label: (x) => percent(0)(x) + }); + const dialB = dial({ + r1: 0.66, + base: 0, + color: { from: [0, 0], to: [1, 0], stops: [[0, "#f60"], [1, "#ff0"]] }, + font: "20px Menlo", + label: (x) => percent(0)(x) + }); + const dialC = dial({ + r1: 0.75, + spread: Math.PI, + color: { from: [0, 0], to: [1, 0], stops: [[0, "#407"], [1, "#03f"]] }, + font: "20px Menlo", + label: (x) => percent(0)(x), + }); + return ({ a, b, c }) => + ["div", ctx.ui.root, + [dialA, ctx.ui.dial, a], + [dialB, ctx.ui.dial, b], + [dialC, ctx.ui.dial, c] + ]; +}; + +sync({ + src: { + a: fromRAF().transform(sine(0.1)), + b: fromRAF().transform(sine(0.07)), + c: fromRAF().transform(sine(0.04)), + }, + xform: comp( + map(app()), + updateUI("app") + ) +}); diff --git a/examples/canvas-dial/tsconfig.json b/examples/canvas-dial/tsconfig.json new file mode 100644 index 0000000000..bd6481a5a6 --- /dev/null +++ b/examples/canvas-dial/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "." + }, + "include": [ + "./src/**/*.ts" + ] +} diff --git a/examples/canvas-dial/webpack.config.js b/examples/canvas-dial/webpack.config.js new file mode 100644 index 0000000000..e2bf1e8d3a --- /dev/null +++ b/examples/canvas-dial/webpack.config.js @@ -0,0 +1,18 @@ +module.exports = { + entry: "./src/index.ts", + output: { + path: __dirname, + filename: "bundle.js" + }, + resolve: { + extensions: [".ts", ".js"] + }, + module: { + rules: [ + { test: /\.ts$/, use: "ts-loader" } + ] + }, + devServer: { + contentBase: "." + } +}; From 3f27acd7cc4f7b9e0a038c08d2963591650b7496 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 27 Aug 2018 12:02:27 +0100 Subject: [PATCH 19/60] docs(rstream): update merge() docs --- packages/rstream/src/stream-merge.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/packages/rstream/src/stream-merge.ts b/packages/rstream/src/stream-merge.ts index 3e5f7a24d8..feb2415c2a 100644 --- a/packages/rstream/src/stream-merge.ts +++ b/packages/rstream/src/stream-merge.ts @@ -47,6 +47,24 @@ export interface StreamMergeOpts extends IID { * // 20 * // 30 * ``` + * + * Use the `labeled()` transducer for each input to create a stream of + * labeled values and track their provenance: + * + * ``` + * merge({ + * src: [ + * fromIterable([1,2,3]).transform(labeled("a")), + * fromIterable([10,20,30]).transform(labeled("b")), + * ] + * }).subscribe(trace()); + * // ["a", 1] + * // ["b", 10] + * // ["a", 2] + * // ["b", 20] + * // ["a", 3] + * // ["b", 30] + * ``` */ export function merge(opts?: Partial>) { return new StreamMerge(opts); From b25edbecec1a02f3e796f3eadf1e89aa046b6c55 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 27 Aug 2018 12:03:58 +0100 Subject: [PATCH 20/60] fix(hdom-components): call canvas update from init() - previously update() was only called from 2nd frame onward --- packages/hdom-components/src/canvas.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/hdom-components/src/canvas.ts b/packages/hdom-components/src/canvas.ts index dac433161b..8e5adca876 100644 --- a/packages/hdom-components/src/canvas.ts +++ b/packages/hdom-components/src/canvas.ts @@ -44,6 +44,7 @@ const _canvas = (type, { init, update, release }: Partial>, ctx = el.getContext(type, opts); time = Date.now(); init && init(el, ctx, hctx, ...args); + update && update(el, ctx, hctx, time, frame++, ...args); }, render(hctx: any, ...args: any[]) { ctx && update && update(el, ctx, hctx, Date.now() - time, frame++, ...args); From ccc40a9dd741dbe6bbc0f105528bdea8db241aad Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 27 Aug 2018 13:49:35 +0100 Subject: [PATCH 21/60] feat(rstream-gestures): add options for local & scaled positions - add `local` and `scale` options & docs --- packages/rstream-gestures/src/index.ts | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/packages/rstream-gestures/src/index.ts b/packages/rstream-gestures/src/index.ts index 606be865e8..c7c2be9195 100644 --- a/packages/rstream-gestures/src/index.ts +++ b/packages/rstream-gestures/src/index.ts @@ -50,6 +50,17 @@ export interface GestureStreamOpts extends IID { * Scaling factor for zoom changes. Default: 1 */ smooth: number; + /** + * Local coordinate flag. If true (default), the elements position + * offset is subtracted. + */ + local: boolean; + /** + * If true (default: false), all positions and delta values are + * scaled by `window.devicePixelRatio`. Note: Only enable if `local` + * is true. + */ + scale: boolean; } /** @@ -80,7 +91,7 @@ export interface GestureStreamOpts extends IID { * @param el * @param opts */ -export function gestureStream(el: Element, opts?: Partial): StreamMerge { +export function gestureStream(el: HTMLElement, opts?: Partial): StreamMerge { let isDown = false, clickPos: number[]; opts = Object.assign({ @@ -91,8 +102,11 @@ export function gestureStream(el: Element, opts?: Partial): S smooth: 1, eventOpts: { capture: true }, preventDefault: true, + local: true, + scale: false, }, opts); let zoom = Math.min(Math.max(opts.zoom, opts.minZoom), opts.maxZoom); + const dpr = window.devicePixelRatio || 1; return merge({ id: opts.id, src: [ @@ -120,12 +134,18 @@ export function gestureStream(el: Element, opts?: Partial): S }[e.type]; evt = e; } - const pos = [evt.clientX | 0, evt.clientY | 0]; + const pos = opts.local ? + [(evt.clientX - el.offsetLeft) | 0, (evt.clientY - el.offsetTop) | 0] : + [evt.clientX | 0, evt.clientY | 0]; + if (opts.scale) { + pos[0] *= dpr; + pos[1] *= dpr; + } const body = { pos, zoom }; switch (type) { case GestureType.START: isDown = true; - clickPos = pos; + clickPos = [...pos]; break; case GestureType.END: isDown = false; From cfb2b747ae04027127e17b5aedc86f7fd586612c Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 27 Aug 2018 14:04:54 +0100 Subject: [PATCH 22/60] feat(vectors): add mix1(), minor cleanups --- packages/vectors/src/math.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/packages/vectors/src/math.ts b/packages/vectors/src/math.ts index 9f8d9fb182..c14330be94 100644 --- a/packages/vectors/src/math.ts +++ b/packages/vectors/src/math.ts @@ -48,7 +48,8 @@ export const eqDelta1 = (a: number, b: number, eps = EPS) => { * @param a * @param b */ -export const fmod1 = (a: number, b: number) => a - b * Math.floor(a / b); +export const fmod1 = (a: number, b: number) => + a - b * Math.floor(a / b); /** * Step/threshold function. @@ -57,7 +58,8 @@ export const fmod1 = (a: number, b: number) => a - b * Math.floor(a / b); * @param x test value * @returns 0, if `x < e`, else 1 */ -export const step1 = (edge: number, x: number) => x < edge ? 0 : 1; +export const step1 = (edge: number, x: number) => + x < edge ? 0 : 1; /** * GLSL-style smoothStep threshold function. @@ -72,7 +74,8 @@ export const smoothStep1 = (edge: number, edge2: number, x: number) => { return (3 - 2 * t) * t * t; }; -export const min2id = (a, b) => a <= b ? 0 : 1; +export const min2id = (a, b) => + a <= b ? 0 : 1; export const min3id = (a, b, c) => (a <= b) ? @@ -88,7 +91,8 @@ export const min4id = (a, b, c, d) => (b <= d ? 1 : 3) : (c <= d ? 2 : 3)); -export const max2id = (a, b) => a >= b ? 0 : 1; +export const max2id = (a, b) => + a >= b ? 0 : 1; export const max3id = (a, b, c) => (a >= b) ? @@ -114,6 +118,9 @@ export const max4id = (a, b, c, d) => export const clamp1 = (x: number, min: number, max: number) => x < min ? min : x > max ? max : x; +export const mix1 = (a: number, b: number, t: number) => + a + (b - a) * t; + export const fit1 = (x: number, a: number, b: number, c: number, d: number) => c + (d - c) * (x - a) / (b - a); From a0cbd2b8d42b3f18ff438780510a42b270df623f Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 27 Aug 2018 14:07:12 +0100 Subject: [PATCH 23/60] feat(atom): add .value accessor aliases (for deref()/reset()) --- packages/atom/src/atom.ts | 26 +++++++++++++++++--------- packages/atom/src/cursor.ts | 8 ++++++++ packages/atom/src/history.ts | 8 ++++++++ packages/atom/src/view.ts | 4 ++++ 4 files changed, 37 insertions(+), 9 deletions(-) diff --git a/packages/atom/src/atom.ts b/packages/atom/src/atom.ts index 90e7549118..888d2226cc 100644 --- a/packages/atom/src/atom.ts +++ b/packages/atom/src/atom.ts @@ -20,7 +20,7 @@ export class Atom implements IAtom, IEquiv { - protected value: T; + protected _value: T; protected valid: Predicate; protected _watches: any; @@ -28,12 +28,20 @@ export class Atom implements if (valid && !valid(val)) { illegalState("initial state value did not validate"); } - this.value = val; + this._value = val; this.valid = valid; } + get value() { + return this._value; + } + + set value(val: T) { + this.reset(val); + } + deref() { - return this.value; + return this._value; } equiv(o: any) { @@ -41,25 +49,25 @@ export class Atom implements } reset(val: T) { - const old = this.value; + const old = this._value; if (this.valid && !this.valid(val)) { return old; } - this.value = val; + this._value = val; this.notifyWatches(old, val); return val; } resetIn(path: Path, val: V) { - return this.reset(setIn(this.value, path, val)); + return this.reset(setIn(this._value, path, val)); } swap(fn: SwapFn, ...args: any[]) { - return this.reset(fn.apply(null, [this.value, ...args])); + return this.reset(fn.apply(null, [this._value, ...args])); } swapIn(path: Path, fn: SwapFn, ...args: any[]) { - return this.reset(updateIn(this.value, path, fn, ...args)); + return this.reset(updateIn(this._value, path, fn, ...args)); } // mixin stub @@ -84,7 +92,7 @@ export class Atom implements release() { delete this._watches; - delete this.value; + delete this._value; return true; } } diff --git a/packages/atom/src/cursor.ts b/packages/atom/src/cursor.ts index e873b7d3b4..04e74535d7 100644 --- a/packages/atom/src/cursor.ts +++ b/packages/atom/src/cursor.ts @@ -112,6 +112,14 @@ export class Cursor implements }); } + get value() { + return this.deref(); + } + + set value(val: T) { + this.reset(val); + } + deref() { return this.local.deref(); } diff --git a/packages/atom/src/history.ts b/packages/atom/src/history.ts index 97a1b9a52e..fe473c38ce 100644 --- a/packages/atom/src/history.ts +++ b/packages/atom/src/history.ts @@ -53,6 +53,14 @@ export class History implements this.clear(); } + get value() { + return this.deref(); + } + + set value(val: T) { + this.reset(val); + } + canUndo() { return this.history.length > 0; } diff --git a/packages/atom/src/view.ts b/packages/atom/src/view.ts index 20bfee3485..d0ae30f58c 100644 --- a/packages/atom/src/view.ts +++ b/packages/atom/src/view.ts @@ -88,6 +88,10 @@ export class View implements }); } + get value() { + return this.deref(); + } + /** * Returns view's value. If the view has a transformer, the * transformed value is returned. The transformer is only run once From d7235a3eb4bbdf68e127b8325a886de0cb162b5e Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 27 Aug 2018 14:39:02 +0100 Subject: [PATCH 24/60] feat(examples): add mouse & touch events for canvas-dial, refactor --- examples/canvas-dial/README.md | 3 +- examples/canvas-dial/src/dial.ts | 153 ++++++++++++++++++++++++------ examples/canvas-dial/src/index.ts | 63 +++++++----- 3 files changed, 165 insertions(+), 54 deletions(-) diff --git a/examples/canvas-dial/README.md b/examples/canvas-dial/README.md index dca583f085..d74977360d 100644 --- a/examples/canvas-dial/README.md +++ b/examples/canvas-dial/README.md @@ -2,7 +2,8 @@ [Live demo](http://demo.thi.ng/umbrella/canvas-dial/) -Canvas-based dial widget / component. WIP - Interactive version forthcoming. +Customizable canvas-based radial dial component with mouse & touch +support. ```bash git clone https://github.com/thi-ng/umbrella.git diff --git a/examples/canvas-dial/src/dial.ts b/examples/canvas-dial/src/dial.ts index 873a4088ab..139f8e4d8d 100644 --- a/examples/canvas-dial/src/dial.ts +++ b/examples/canvas-dial/src/dial.ts @@ -1,42 +1,126 @@ import { Fn } from "@thi.ng/api/api"; import { isString } from "@thi.ng/checks/is-string"; import { canvas2D } from "@thi.ng/hdom-components/canvas"; -import { GestureEvent, gestureStream } from "@thi.ng/rstream-gestures"; +import { GestureEvent, gestureStream, GestureType } from "@thi.ng/rstream-gestures"; import { Subscription } from "@thi.ng/rstream/subscription"; +import { peek } from "@thi.ng/transducers/func/peek"; +import { fitClamped1 } from "@thi.ng/vectors/math"; +import { heading2, sub2 } from "@thi.ng/vectors/vec2"; -export interface GradientDef { - from: number[]; - to: number[]; - stops: [number, string][]; -} - +/** + * Dial component options. + */ export interface DialOpts { + /** + * Dial center X (normalized) + * Default: 0.5 + */ cx: number; + /** + * Dial center Y (normalized) + * Default: 0.5 + */ cy: number; + /** + * Inner radius (normalized) + * Default: 0.5 + */ r1: number; + /** + * Outer radius (normalized) + * Default: 0.99 + */ r2: number; + /** + * Dial min value + * Default: 0 + */ + min: number; + /** + * Dial min value + * Default: 1 + */ + max: number; + /** + * Orientation / start angle (in radians) + * Default: PI/2 + */ base: number; - spread: number; + /** + * Angular gap between min / max values + * Default: PI/10 + */ + gap: number; + /** + * Fill color (or gradient) for value area + * Default: black + */ color: string | GradientDef; + /** + * Fill color (or gradient) for background ring + * Default: rgba(0,0,0,0.1) + */ bgColor: string | GradientDef; - label?: (x: number) => string; - labelYOffset?: number; - labelColor?: string; + /** + * Label formatter. No label will be displayed, if missing. + */ + label: (x: number) => string; + /** + * Label Y offset from `cy` + * Default: 0 + */ + labelYOffset: number; + /** + * Default: black + */ + labelColor: string; + /** + * Label font CSS string + * Default (10px sans-serif) + */ font: string; + /** + * Event callback (receives new dial value) + */ onchange: Fn; } +/** + * Multi-stop linear gradient definition. + */ +export interface GradientDef { + /** + * Start point (normalized) + */ + from: number[]; + /** + * End point (normalized) + */ + to: number[]; + /** + * Color stops (position normalized) + */ + stops: [number, string][]; +} + const PI = Math.PI; const TAU = 2 * PI; +/** + * HOF component. Returns pre-configured dial component. + * + * @param opts + */ export const dial = (opts: Partial) => { opts = { cx: 0.5, cy: 0.5, r1: 0.5, r2: 0.99, - base: Math.PI * 0.5, - spread: PI * 0.1, + min: 0, + max: 1, + base: PI * 0.5, + gap: PI * 0.1, color: "black", bgColor: "rgba(0,0,0,0.1)", labelColor: "black", @@ -46,10 +130,10 @@ export const dial = (opts: Partial) => { }; let events: Subscription; let cx, cy; - const startTheta = opts.base + opts.spread / 2; + const startTheta = opts.base + opts.gap / 2; const drawRing = (ctx: CanvasRenderingContext2D, amount: number, col: any) => { - const endTheta = startTheta + (TAU - opts.spread) * amount; + const endTheta = startTheta + (TAU - opts.gap) * amount; ctx.fillStyle = col; ctx.beginPath(); ctx.arc(cx, cy, opts.r2, startTheta, endTheta, false); @@ -71,6 +155,10 @@ export const dial = (opts: Partial) => { init: (el, ctx) => { cx = el.width * opts.cx; cy = el.height * opts.cy; + ctx.strokeStyle = "none"; + ctx.textAlign = "center"; + ctx.textBaseline = "middle"; + ctx.font = opts.font; const scale = Math.min(cx, cy); opts.r1 *= scale; opts.r2 *= scale; @@ -81,31 +169,40 @@ export const dial = (opts: Partial) => { opts.color = makeGradient(el, ctx, opts.color); } if (opts.onchange) { - events = gestureStream(el).subscribe({ - next: () => { - // TODO - // opts.onchange.call(null, x); - } - }); + // add interaction event stream (mouse & touch) + // configure stream to return scaled coords (devicePixelRatio) + events = gestureStream(el, { scale: true }) + .subscribe({ + next: (e) => { + if (e[0] === GestureType.START || e[0] === GestureType.DRAG) { + let theta = heading2(sub2(e[1].pos, [cx, cy])) - startTheta; + if (theta < 0) theta += TAU; + theta %= TAU; + opts.onchange.call( + null, + fitClamped1(Math.min(theta / (TAU - opts.gap)), 0, 1, opts.min, opts.max) + ); + } + } + }); } }, + // clean up gesture event stream when component is released release: () => { events && events.unsubscribe(); }, + // there're a few args we're not interested in here, so we use var args instead. + // the dial value is the last arg update: (el, ctx, ...args: any[]) => { - ctx.strokeStyle = "none"; - ctx.font = opts.font; - ctx.textAlign = "center"; - ctx.textBaseline = "middle"; - const amount = args[4]; + const val = peek(args); ctx.clearRect(0, 0, el.width, el.height); drawRing(ctx, 1, opts.bgColor); - drawRing(ctx, Math.max(amount, 0.005), opts.color); + drawRing(ctx, fitClamped1(val, opts.min, opts.max, 0.005, 1), opts.color); if (opts.label) { ctx.fillStyle = opts.labelColor; - ctx.fillText(opts.label(amount), cx, cy + opts.labelYOffset); + ctx.fillText(opts.label(val), cx, cy + opts.labelYOffset); } } }); diff --git a/examples/canvas-dial/src/index.ts b/examples/canvas-dial/src/index.ts index 654b871b7c..d30b653bce 100644 --- a/examples/canvas-dial/src/index.ts +++ b/examples/canvas-dial/src/index.ts @@ -1,46 +1,60 @@ -import { fromRAF } from "@thi.ng/rstream/from/raf"; +import { stream } from "@thi.ng/rstream/stream"; import { sync } from "@thi.ng/rstream/stream-sync"; import { percent } from "@thi.ng/strings/percent"; import { updateUI } from "@thi.ng/transducers-hdom"; import { comp } from "@thi.ng/transducers/func/comp"; import { map } from "@thi.ng/transducers/xform/map"; -// import { stream } from "@thi.ng/rstream/stream"; import { dial } from "./dial"; +// hdom context & app state object export const ctx = { - // state: new Atom({ - // bass: 0 - // }) + // streams to hold dial values + streams: { + a: stream(), + b: stream(), + c: stream(), + }, + // component styling ui: { root: { class: "vh-100 flex justify-center items-center" }, - dial: { width: 100, height: 100, class: "mh1" }, + dial: { width: 100, height: 100, class: "ma1" }, } }; -const sine = (freq: number) => - map((x: number) => 0.5 + 0.5 * Math.sin(x * freq)); - +/** + * This HOF (higher-order function) returns a mapping function which + * receives a tuple of object of all current stream values and returns a + * hdom root component. It will be used by the `sync()` construct + * further below. + * + * The dial components used here are HOFs themselves and therefore must + * be pre-initialized before use. + */ const app = () => { const dialA = dial({ r1: 0.5, color: { from: [0, 0], to: [1, 1], stops: [[0, "#075"], [1, "#6f9"]] }, font: "20px Menlo", - label: (x) => percent(0)(x) + label: (x) => percent(0)(x), + onchange: (x) => ctx.streams.a.next(x) }); const dialB = dial({ r1: 0.66, - base: 0, - color: { from: [0, 0], to: [1, 0], stops: [[0, "#f60"], [1, "#ff0"]] }, + base: -Math.PI / 2, + gap: Math.PI / 2, + color: { from: [0, 0], to: [1, 0.75], stops: [[0, "#00f"], [0.5, "#f60"], [1, "#ff0"]] }, font: "20px Menlo", - label: (x) => percent(0)(x) + label: (x) => percent(1)(x), + onchange: (x) => ctx.streams.b.next(x) }); const dialC = dial({ r1: 0.75, - spread: Math.PI, - color: { from: [0, 0], to: [1, 0], stops: [[0, "#407"], [1, "#03f"]] }, + gap: Math.PI, + color: { from: [0, 0], to: [1, 0], stops: [[0, "#407"], [1, "#09f"]] }, font: "20px Menlo", - label: (x) => percent(0)(x), + label: (x) => percent(2)(x), + onchange: (x) => ctx.streams.c.next(x) }); return ({ a, b, c }) => ["div", ctx.ui.root, @@ -50,14 +64,13 @@ const app = () => { ]; }; +// stream combinator & reactive DOM update sync({ - src: { - a: fromRAF().transform(sine(0.1)), - b: fromRAF().transform(sine(0.07)), - c: fromRAF().transform(sine(0.04)), - }, - xform: comp( - map(app()), - updateUI("app") - ) + src: ctx.streams, + xform: comp(map(app()), updateUI("app")) }); + +// seed dials with initial values +ctx.streams.a.next(0.66); +ctx.streams.b.next(1); +ctx.streams.c.next(0.75); From dee0476d09b3da6805120659de508da84cc2e94a Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 27 Aug 2018 14:45:11 +0100 Subject: [PATCH 25/60] docs(examples): update list of examples --- examples/README.md | 45 +++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/examples/README.md b/examples/README.md index 544ba82f7f..d00b0a0abf 100644 --- a/examples/README.md +++ b/examples/README.md @@ -7,25 +7,26 @@ If you want to [contribute](../CONTRIBUTING.md) an example, please get in touch | # | Name | Description | Packages of interest | Difficulty | |----|----------------------------------------------|----------------------------------------------------------|-------------------------------------------------------------------|--------------| | 1 | [async-effect](./async-effect) | Async side effect handling (JSON I/O) | atom, hdom, interceptors | intermediate | -| 2 | [cellular-automata](./cellular-automata) | Transducer based, customizable 2D cellular automata | hdom, hdom-components, transducers | basic | -| 3 | [commit-table-ssr](./commit-table-ssr) | Server-side & static file rendering of hiccup components | hiccup, transducers | intermediate | -| 4 | [crypto-chart](./crypto-chart) | Interactive rstream & transducer based SVG chart | hdom, hiccup-svg, rstream, transducers | advanced | -| 5 | [dashboard](./dashboard) | Barebones components w/ local state | hdom, transducers | basic | -| 6 | [devcards](./devcards) | Multiple app instances with/without shared state | atom, hdom | intermediate | -| 7 | [hdom-basics](./hdom-basics) | Hello world | hdom, hiccup | basic | -| 8 | [hdom-benchmark](./hdom-benchmark) | hdom rendering perf / stress test, FPS counter | hdom, rstream, transducers | intermediate | -| 9 | [hdom-theme-adr-0003](./hdom-theme-adr-0003) | hdom themed components proposal | hdom | intermediate | -| 10 | [interceptor-basics](./interceptor-basics) | Event handling w/ interceptors and side effects | atom, hdom, interceptors | intermediate | -| 11 | [json-components](./json-components) | JSON->component transformation, live editor | hdom, transducers | intermediate | -| 12 | [login-form](./login-form) | Basic SPA without router | atom, hdom | intermediate | -| 13 | [pointfree-svg](./pointfree-svg) | Generate SVG using pointfree DSL | hiccup, hiccup-svg, pointfree-lang | intermediate | -| 14 | [router-basics](./router-basics) | Complete mini SPA | atom, hdom, interceptors, router | advanced | -| 15 | [rstream-dataflow](./rstream-dataflow) | Dataflow graph | atom, hdom, rstream, rstream-gestures, rstream-graph, transducers | intermediate | -| 16 | [rstream-grid](./rstream-grid) | Dataflow graph SVG grid | atom, hdom, hiccup-svg, interceptors, rstream-graph, transducers | advanced | -| 17 | [rstream-hdom](./rstream-hdom) | rstream based UI updates & state handling | hdom, rstream, transducers | intermediate | -| 18 | [svg-particles](./svg-particles) | hdom SVG generation / animation | hdom, transducers | basic | -| 19 | [svg-waveform](./svg-waveform) | hdom SVG generation / undo history | atom, hdom, hiccup-svg, interceptors, iterators | intermediate | -| 20 | [todo-list](./todo-list) | Canonical Todo list with undo/redo | atom, hdom, transducers | intermediate | -| 21 | [transducers-hdom](./transducers-hdom) | Transducer & rstream based hdom UI updates | hdom, rstream, transducers-hdom | basic | -| 22 | [triple-query](./triple-query) | Triple store query results & sortable table | atom, hdom, hdom-components, rstream-query, transducers | intermediate | -| 23 | [webgl](./webgl) | Canvas component handling | hdom, hdom-components | basic | \ No newline at end of file +| 2 | [canvas-dial](./canvas-dial) | Canvas dial component w/ mouse & touch events | hdom, rstream, rstream-gestures, transducers, transducers-hdom | intermediate | +| 3 | [cellular-automata](./cellular-automata) | Transducer based, customizable 2D cellular automata | hdom, hdom-components, transducers | basic | +| 4 | [commit-table-ssr](./commit-table-ssr) | Server-side & static file rendering of hiccup components | hiccup, transducers | intermediate | +| 5 | [crypto-chart](./crypto-chart) | Interactive rstream & transducer based SVG chart | hdom, hiccup-svg, rstream, transducers | advanced | +| 6 | [dashboard](./dashboard) | Barebones components w/ local state | hdom, transducers | basic | +| 7 | [devcards](./devcards) | Multiple app instances with/without shared state | atom, hdom | intermediate | +| 8 | [hdom-basics](./hdom-basics) | Hello world | hdom, hiccup | basic | +| 9 | [hdom-benchmark](./hdom-benchmark) | hdom rendering perf / stress test, FPS counter | hdom, rstream, transducers | intermediate | +| 10 | [hdom-theme-adr-0003](./hdom-theme-adr-0003) | hdom themed components proposal | hdom | intermediate | +| 11 | [interceptor-basics](./interceptor-basics) | Event handling w/ interceptors and side effects | atom, hdom, interceptors | intermediate | +| 12 | [json-components](./json-components) | JSON->component transformation, live editor | hdom, transducers | intermediate | +| 13 | [login-form](./login-form) | Basic SPA without router | atom, hdom | intermediate | +| 14 | [pointfree-svg](./pointfree-svg) | Generate SVG using pointfree DSL | hiccup, hiccup-svg, pointfree-lang | intermediate | +| 15 | [router-basics](./router-basics) | Complete mini SPA | atom, hdom, interceptors, router | advanced | +| 16 | [rstream-dataflow](./rstream-dataflow) | Dataflow graph | atom, hdom, rstream, rstream-gestures, rstream-graph, transducers | intermediate | +| 17 | [rstream-grid](./rstream-grid) | Dataflow graph SVG grid | atom, hdom, hiccup-svg, interceptors, rstream-graph, transducers | advanced | +| 18 | [rstream-hdom](./rstream-hdom) | rstream based UI updates & state handling | hdom, rstream, transducers | intermediate | +| 19 | [svg-particles](./svg-particles) | hdom SVG generation / animation | hdom, transducers | basic | +| 20 | [svg-waveform](./svg-waveform) | hdom SVG generation / undo history | atom, hdom, hiccup-svg, interceptors, iterators | intermediate | +| 21 | [todo-list](./todo-list) | Canonical Todo list with undo/redo | atom, hdom, transducers | intermediate | +| 22 | [transducers-hdom](./transducers-hdom) | Transducer & rstream based hdom UI updates | hdom, rstream, transducers-hdom | basic | +| 23 | [triple-query](./triple-query) | Triple store query results & sortable table | atom, hdom, hdom-components, rstream-query, transducers | intermediate | +| 24 | [webgl](./webgl) | Canvas component handling | hdom, hdom-components | basic | \ No newline at end of file From 917d81d1e9b679660431a27970c846ab1c3e07a1 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 27 Aug 2018 14:46:24 +0100 Subject: [PATCH 26/60] Publish - @thi.ng/atom@1.5.0 - @thi.ng/cache@0.2.18 - @thi.ng/hdom-components@2.2.0 - @thi.ng/hdom@3.0.35 - @thi.ng/hiccup-svg@1.0.11 - @thi.ng/hiccup@2.0.11 - @thi.ng/interceptors@1.8.11 - @thi.ng/rstream-csp@0.1.99 - @thi.ng/rstream-dot@0.2.38 - @thi.ng/rstream-gestures@0.5.0 - @thi.ng/rstream-graph@2.1.23 - @thi.ng/rstream-log@1.0.50 - @thi.ng/rstream-query@0.3.37 - @thi.ng/rstream@1.11.5 - @thi.ng/transducers-hdom@0.1.5 - @thi.ng/vectors@0.3.0 --- packages/atom/CHANGELOG.md | 11 +++++++++++ packages/atom/package.json | 2 +- packages/cache/CHANGELOG.md | 8 ++++++++ packages/cache/package.json | 2 +- packages/hdom-components/CHANGELOG.md | 16 ++++++++++++++++ packages/hdom-components/package.json | 2 +- packages/hdom/CHANGELOG.md | 8 ++++++++ packages/hdom/package.json | 6 +++--- packages/hiccup-svg/CHANGELOG.md | 8 ++++++++ packages/hiccup-svg/package.json | 4 ++-- packages/hiccup/CHANGELOG.md | 8 ++++++++ packages/hiccup/package.json | 4 ++-- packages/interceptors/CHANGELOG.md | 8 ++++++++ packages/interceptors/package.json | 4 ++-- packages/rstream-csp/CHANGELOG.md | 8 ++++++++ packages/rstream-csp/package.json | 4 ++-- packages/rstream-dot/CHANGELOG.md | 8 ++++++++ packages/rstream-dot/package.json | 4 ++-- packages/rstream-gestures/CHANGELOG.md | 11 +++++++++++ packages/rstream-gestures/package.json | 4 ++-- packages/rstream-graph/CHANGELOG.md | 8 ++++++++ packages/rstream-graph/package.json | 4 ++-- packages/rstream-log/CHANGELOG.md | 8 ++++++++ packages/rstream-log/package.json | 4 ++-- packages/rstream-query/CHANGELOG.md | 8 ++++++++ packages/rstream-query/package.json | 6 +++--- packages/rstream/CHANGELOG.md | 8 ++++++++ packages/rstream/package.json | 4 ++-- packages/transducers-hdom/CHANGELOG.md | 8 ++++++++ packages/transducers-hdom/package.json | 4 ++-- packages/vectors/CHANGELOG.md | 11 +++++++++++ packages/vectors/package.json | 2 +- 32 files changed, 175 insertions(+), 30 deletions(-) diff --git a/packages/atom/CHANGELOG.md b/packages/atom/CHANGELOG.md index 5f933d0779..95d8d3780b 100644 --- a/packages/atom/CHANGELOG.md +++ b/packages/atom/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [1.5.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/atom@1.4.7...@thi.ng/atom@1.5.0) (2018-08-27) + + +### Features + +* **atom:** add .value accessor aliases (for deref()/reset()) ([a0cbd2b](https://github.com/thi-ng/umbrella/commit/a0cbd2b)) + + + + ## [1.4.7](https://github.com/thi-ng/umbrella/compare/@thi.ng/atom@1.4.6...@thi.ng/atom@1.4.7) (2018-08-24) diff --git a/packages/atom/package.json b/packages/atom/package.json index 38788878d4..43bb6a58ef 100644 --- a/packages/atom/package.json +++ b/packages/atom/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/atom", - "version": "1.4.7", + "version": "1.5.0", "description": "Mutable wrapper for immutable values", "main": "./index.js", "typings": "./index.d.ts", diff --git a/packages/cache/CHANGELOG.md b/packages/cache/CHANGELOG.md index f71c28c2f2..f3cd3aaa17 100644 --- a/packages/cache/CHANGELOG.md +++ b/packages/cache/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.2.18](https://github.com/thi-ng/umbrella/compare/@thi.ng/cache@0.2.17...@thi.ng/cache@0.2.18) (2018-08-27) + + + + +**Note:** Version bump only for package @thi.ng/cache + ## [0.2.17](https://github.com/thi-ng/umbrella/compare/@thi.ng/cache@0.2.16...@thi.ng/cache@0.2.17) (2018-08-24) diff --git a/packages/cache/package.json b/packages/cache/package.json index f0381899a5..95a5da6556 100644 --- a/packages/cache/package.json +++ b/packages/cache/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/cache", - "version": "0.2.17", + "version": "0.2.18", "description": "In-memory cache implementations with ES6 Map-like API and different eviction strategies", "main": "./index.js", "typings": "./index.d.ts", diff --git a/packages/hdom-components/CHANGELOG.md b/packages/hdom-components/CHANGELOG.md index 37b53729fb..ea6adc4939 100644 --- a/packages/hdom-components/CHANGELOG.md +++ b/packages/hdom-components/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [2.2.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom-components@2.1.13...@thi.ng/hdom-components@2.2.0) (2018-08-27) + + +### Bug Fixes + +* **hdom-components:** call canvas update from init() ([b25edbe](https://github.com/thi-ng/umbrella/commit/b25edbe)) + + +### Features + +* **hdom-components:** add HDPI adaptation helper for canvas comps ([135d6f1](https://github.com/thi-ng/umbrella/commit/135d6f1)) + + + + ## [2.1.13](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom-components@2.1.12...@thi.ng/hdom-components@2.1.13) (2018-08-24) diff --git a/packages/hdom-components/package.json b/packages/hdom-components/package.json index c6ebd07c01..1553a5e39b 100644 --- a/packages/hdom-components/package.json +++ b/packages/hdom-components/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/hdom-components", - "version": "2.1.13", + "version": "2.2.0", "description": "Raw, skinnable UI & SVG components for @thi.ng/hdom", "main": "./index.js", "typings": "./index.d.ts", diff --git a/packages/hdom/CHANGELOG.md b/packages/hdom/CHANGELOG.md index 204b12d3e3..d3e2d4f3ce 100644 --- a/packages/hdom/CHANGELOG.md +++ b/packages/hdom/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [3.0.35](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom@3.0.34...@thi.ng/hdom@3.0.35) (2018-08-27) + + + + +**Note:** Version bump only for package @thi.ng/hdom + ## [3.0.34](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom@3.0.33...@thi.ng/hdom@3.0.34) (2018-08-24) diff --git a/packages/hdom/package.json b/packages/hdom/package.json index de3a3af50c..f9e96fa785 100644 --- a/packages/hdom/package.json +++ b/packages/hdom/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/hdom", - "version": "3.0.34", + "version": "3.0.35", "description": "Lightweight vanilla ES6 UI component & virtual DOM system", "main": "./index.js", "typings": "./index.d.ts", @@ -20,7 +20,7 @@ "test": "rm -rf build && tsc -p test && nyc mocha build/test/*.js" }, "devDependencies": { - "@thi.ng/atom": "^1.4.7", + "@thi.ng/atom": "^1.5.0", "@types/mocha": "^5.2.5", "@types/node": "^10.5.5", "mocha": "^5.2.0", @@ -33,7 +33,7 @@ "@thi.ng/checks": "^1.5.7", "@thi.ng/diff": "^1.0.22", "@thi.ng/equiv": "^0.1.7", - "@thi.ng/hiccup": "^2.0.10" + "@thi.ng/hiccup": "^2.0.11" }, "keywords": [ "browser", diff --git a/packages/hiccup-svg/CHANGELOG.md b/packages/hiccup-svg/CHANGELOG.md index 6395ebf2d5..a1d4ef8789 100644 --- a/packages/hiccup-svg/CHANGELOG.md +++ b/packages/hiccup-svg/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [1.0.11](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-svg@1.0.10...@thi.ng/hiccup-svg@1.0.11) (2018-08-27) + + + + +**Note:** Version bump only for package @thi.ng/hiccup-svg + ## [1.0.10](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-svg@1.0.9...@thi.ng/hiccup-svg@1.0.10) (2018-08-24) diff --git a/packages/hiccup-svg/package.json b/packages/hiccup-svg/package.json index e7b8d23648..9791212072 100644 --- a/packages/hiccup-svg/package.json +++ b/packages/hiccup-svg/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/hiccup-svg", - "version": "1.0.10", + "version": "1.0.11", "description": "SVG element functions for @thi.ng/hiccup & @thi.ng/hdom", "main": "./index.js", "typings": "./index.d.ts", @@ -28,7 +28,7 @@ "typescript": "^3.0.1" }, "dependencies": { - "@thi.ng/hiccup": "^2.0.10" + "@thi.ng/hiccup": "^2.0.11" }, "keywords": [ "components", diff --git a/packages/hiccup/CHANGELOG.md b/packages/hiccup/CHANGELOG.md index 72b40acabe..6faeab98d4 100644 --- a/packages/hiccup/CHANGELOG.md +++ b/packages/hiccup/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [2.0.11](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup@2.0.10...@thi.ng/hiccup@2.0.11) (2018-08-27) + + + + +**Note:** Version bump only for package @thi.ng/hiccup + ## [2.0.10](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup@2.0.9...@thi.ng/hiccup@2.0.10) (2018-08-24) diff --git a/packages/hiccup/package.json b/packages/hiccup/package.json index 38636e955e..3125db76db 100644 --- a/packages/hiccup/package.json +++ b/packages/hiccup/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/hiccup", - "version": "2.0.10", + "version": "2.0.11", "description": "HTML/SVG/XML serialization of nested data structures, iterables & closures", "main": "./index.js", "typings": "./index.d.ts", @@ -20,7 +20,7 @@ "test": "rm -rf build && tsc -p test && nyc mocha build/test/*.js" }, "devDependencies": { - "@thi.ng/atom": "^1.4.7", + "@thi.ng/atom": "^1.5.0", "@types/mocha": "^5.2.5", "@types/node": "^10.5.5", "mocha": "^5.2.0", diff --git a/packages/interceptors/CHANGELOG.md b/packages/interceptors/CHANGELOG.md index 634c7cb218..1fd6e192ea 100644 --- a/packages/interceptors/CHANGELOG.md +++ b/packages/interceptors/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [1.8.11](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.8.10...@thi.ng/interceptors@1.8.11) (2018-08-27) + + + + +**Note:** Version bump only for package @thi.ng/interceptors + ## [1.8.10](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.8.9...@thi.ng/interceptors@1.8.10) (2018-08-24) diff --git a/packages/interceptors/package.json b/packages/interceptors/package.json index f7494db1b6..5feb96f74d 100644 --- a/packages/interceptors/package.json +++ b/packages/interceptors/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/interceptors", - "version": "1.8.10", + "version": "1.8.11", "description": "Interceptor based event bus, side effect & immutable state handling", "main": "./index.js", "typings": "./index.d.ts", @@ -29,7 +29,7 @@ }, "dependencies": { "@thi.ng/api": "^4.1.0", - "@thi.ng/atom": "^1.4.7", + "@thi.ng/atom": "^1.5.0", "@thi.ng/checks": "^1.5.7", "@thi.ng/errors": "^0.1.6", "@thi.ng/paths": "^1.5.2" diff --git a/packages/rstream-csp/CHANGELOG.md b/packages/rstream-csp/CHANGELOG.md index 541a716723..04492c9f1d 100644 --- a/packages/rstream-csp/CHANGELOG.md +++ b/packages/rstream-csp/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.1.99](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-csp@0.1.98...@thi.ng/rstream-csp@0.1.99) (2018-08-27) + + + + +**Note:** Version bump only for package @thi.ng/rstream-csp + ## [0.1.98](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-csp@0.1.97...@thi.ng/rstream-csp@0.1.98) (2018-08-24) diff --git a/packages/rstream-csp/package.json b/packages/rstream-csp/package.json index fc4c509944..dd83557141 100644 --- a/packages/rstream-csp/package.json +++ b/packages/rstream-csp/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-csp", - "version": "0.1.98", + "version": "0.1.99", "description": "@thi.ng/csp bridge module for @thi.ng/rstream", "main": "./index.js", "typings": "./index.d.ts", @@ -29,7 +29,7 @@ }, "dependencies": { "@thi.ng/csp": "^0.3.57", - "@thi.ng/rstream": "^1.11.4" + "@thi.ng/rstream": "^1.11.5" }, "keywords": [ "bridge", diff --git a/packages/rstream-dot/CHANGELOG.md b/packages/rstream-dot/CHANGELOG.md index efbb648b0b..e0e4bb2628 100644 --- a/packages/rstream-dot/CHANGELOG.md +++ b/packages/rstream-dot/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.2.38](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-dot@0.2.37...@thi.ng/rstream-dot@0.2.38) (2018-08-27) + + + + +**Note:** Version bump only for package @thi.ng/rstream-dot + ## [0.2.37](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-dot@0.2.36...@thi.ng/rstream-dot@0.2.37) (2018-08-24) diff --git a/packages/rstream-dot/package.json b/packages/rstream-dot/package.json index 1a3a57f88b..e9db75386e 100644 --- a/packages/rstream-dot/package.json +++ b/packages/rstream-dot/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-dot", - "version": "0.2.37", + "version": "0.2.38", "description": "Graphviz DOT conversion of @thi.ng/rstream dataflow graph topologies", "main": "./index.js", "typings": "./index.d.ts", @@ -28,7 +28,7 @@ "typescript": "^3.0.1" }, "dependencies": { - "@thi.ng/rstream": "^1.11.4" + "@thi.ng/rstream": "^1.11.5" }, "keywords": [ "conversion", diff --git a/packages/rstream-gestures/CHANGELOG.md b/packages/rstream-gestures/CHANGELOG.md index d6c1f5cbf3..b35f45f3b2 100644 --- a/packages/rstream-gestures/CHANGELOG.md +++ b/packages/rstream-gestures/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [0.5.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-gestures@0.4.18...@thi.ng/rstream-gestures@0.5.0) (2018-08-27) + + +### Features + +* **rstream-gestures:** add options for local & scaled positions ([ccc40a9](https://github.com/thi-ng/umbrella/commit/ccc40a9)) + + + + ## [0.4.18](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-gestures@0.4.17...@thi.ng/rstream-gestures@0.4.18) (2018-08-24) diff --git a/packages/rstream-gestures/package.json b/packages/rstream-gestures/package.json index 06e8283f1a..a3144c672b 100644 --- a/packages/rstream-gestures/package.json +++ b/packages/rstream-gestures/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-gestures", - "version": "0.4.18", + "version": "0.5.0", "description": "Unified mouse, mouse wheel & single-touch event stream abstraction", "main": "./index.js", "typings": "./index.d.ts", @@ -29,7 +29,7 @@ }, "dependencies": { "@thi.ng/api": "^4.1.0", - "@thi.ng/rstream": "^1.11.4", + "@thi.ng/rstream": "^1.11.5", "@thi.ng/transducers": "^2.0.1" }, "keywords": [ diff --git a/packages/rstream-graph/CHANGELOG.md b/packages/rstream-graph/CHANGELOG.md index 68bc412dad..0628fcad89 100644 --- a/packages/rstream-graph/CHANGELOG.md +++ b/packages/rstream-graph/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [2.1.23](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-graph@2.1.22...@thi.ng/rstream-graph@2.1.23) (2018-08-27) + + + + +**Note:** Version bump only for package @thi.ng/rstream-graph + ## [2.1.22](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-graph@2.1.21...@thi.ng/rstream-graph@2.1.22) (2018-08-24) diff --git a/packages/rstream-graph/package.json b/packages/rstream-graph/package.json index 7b0185b116..24fa506a0d 100644 --- a/packages/rstream-graph/package.json +++ b/packages/rstream-graph/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-graph", - "version": "2.1.22", + "version": "2.1.23", "description": "Declarative dataflow graph construction for @thi.ng/rstream", "main": "./index.js", "typings": "./index.d.ts", @@ -33,7 +33,7 @@ "@thi.ng/errors": "^0.1.6", "@thi.ng/paths": "^1.5.2", "@thi.ng/resolve-map": "^3.0.8", - "@thi.ng/rstream": "^1.11.4", + "@thi.ng/rstream": "^1.11.5", "@thi.ng/transducers": "^2.0.1" }, "keywords": [ diff --git a/packages/rstream-log/CHANGELOG.md b/packages/rstream-log/CHANGELOG.md index f58fd3b18c..ec33a1be0e 100644 --- a/packages/rstream-log/CHANGELOG.md +++ b/packages/rstream-log/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [1.0.50](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-log@1.0.49...@thi.ng/rstream-log@1.0.50) (2018-08-27) + + + + +**Note:** Version bump only for package @thi.ng/rstream-log + ## [1.0.49](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-log@1.0.48...@thi.ng/rstream-log@1.0.49) (2018-08-24) diff --git a/packages/rstream-log/package.json b/packages/rstream-log/package.json index 08e5afef24..1c667e4844 100644 --- a/packages/rstream-log/package.json +++ b/packages/rstream-log/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-log", - "version": "1.0.49", + "version": "1.0.50", "description": "Structured, multilevel & hierarchical loggers based on @thi.ng/rstream", "main": "./index.js", "typings": "./index.d.ts", @@ -31,7 +31,7 @@ "@thi.ng/api": "^4.1.0", "@thi.ng/checks": "^1.5.7", "@thi.ng/errors": "^0.1.6", - "@thi.ng/rstream": "^1.11.4", + "@thi.ng/rstream": "^1.11.5", "@thi.ng/transducers": "^2.0.1" }, "keywords": [ diff --git a/packages/rstream-query/CHANGELOG.md b/packages/rstream-query/CHANGELOG.md index 3b7f15928c..9d60464a7e 100644 --- a/packages/rstream-query/CHANGELOG.md +++ b/packages/rstream-query/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.3.37](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-query@0.3.36...@thi.ng/rstream-query@0.3.37) (2018-08-27) + + + + +**Note:** Version bump only for package @thi.ng/rstream-query + ## [0.3.36](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-query@0.3.35...@thi.ng/rstream-query@0.3.36) (2018-08-24) diff --git a/packages/rstream-query/package.json b/packages/rstream-query/package.json index 1fed827ca6..57c762f4f4 100644 --- a/packages/rstream-query/package.json +++ b/packages/rstream-query/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-query", - "version": "0.3.36", + "version": "0.3.37", "description": "@thi.ng/rstream based triple store & reactive query engine", "main": "./index.js", "typings": "./index.d.ts", @@ -33,8 +33,8 @@ "@thi.ng/checks": "^1.5.7", "@thi.ng/equiv": "^0.1.7", "@thi.ng/errors": "^0.1.6", - "@thi.ng/rstream": "^1.11.4", - "@thi.ng/rstream-dot": "^0.2.37", + "@thi.ng/rstream": "^1.11.5", + "@thi.ng/rstream-dot": "^0.2.38", "@thi.ng/transducers": "^2.0.1" }, "keywords": [ diff --git a/packages/rstream/CHANGELOG.md b/packages/rstream/CHANGELOG.md index 53e626be94..d8899af456 100644 --- a/packages/rstream/CHANGELOG.md +++ b/packages/rstream/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [1.11.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream@1.11.4...@thi.ng/rstream@1.11.5) (2018-08-27) + + + + +**Note:** Version bump only for package @thi.ng/rstream + ## [1.11.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream@1.11.3...@thi.ng/rstream@1.11.4) (2018-08-24) diff --git a/packages/rstream/package.json b/packages/rstream/package.json index 07214d4910..8e4a029ae7 100644 --- a/packages/rstream/package.json +++ b/packages/rstream/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream", - "version": "1.11.4", + "version": "1.11.5", "description": "Reactive multi-tap streams, dataflow & transformation pipeline constructs", "main": "./index.js", "typings": "./index.d.ts", @@ -30,7 +30,7 @@ "dependencies": { "@thi.ng/api": "^4.1.0", "@thi.ng/associative": "^0.6.1", - "@thi.ng/atom": "^1.4.7", + "@thi.ng/atom": "^1.5.0", "@thi.ng/checks": "^1.5.7", "@thi.ng/errors": "^0.1.6", "@thi.ng/paths": "^1.5.2", diff --git a/packages/transducers-hdom/CHANGELOG.md b/packages/transducers-hdom/CHANGELOG.md index 07ff96fd9b..37c2809d1b 100644 --- a/packages/transducers-hdom/CHANGELOG.md +++ b/packages/transducers-hdom/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.1.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-hdom@0.1.4...@thi.ng/transducers-hdom@0.1.5) (2018-08-27) + + + + +**Note:** Version bump only for package @thi.ng/transducers-hdom + ## [0.1.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-hdom@0.1.3...@thi.ng/transducers-hdom@0.1.4) (2018-08-24) diff --git a/packages/transducers-hdom/package.json b/packages/transducers-hdom/package.json index 764ee11430..a5544d104a 100644 --- a/packages/transducers-hdom/package.json +++ b/packages/transducers-hdom/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/transducers-hdom", - "version": "0.1.4", + "version": "0.1.5", "description": "Transducer based UI updater for @thi.ng/hdom", "main": "./index.js", "typings": "./index.d.ts", @@ -29,7 +29,7 @@ }, "dependencies": { "@thi.ng/checks": "^1.5.7", - "@thi.ng/hdom": "^3.0.34", + "@thi.ng/hdom": "^3.0.35", "@thi.ng/transducers": "^2.0.1" }, "keywords": [ diff --git a/packages/vectors/CHANGELOG.md b/packages/vectors/CHANGELOG.md index db644ea934..c2b4bad8bf 100644 --- a/packages/vectors/CHANGELOG.md +++ b/packages/vectors/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [0.3.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/vectors@0.2.1...@thi.ng/vectors@0.3.0) (2018-08-27) + + +### Features + +* **vectors:** add mix1(), minor cleanups ([cfb2b74](https://github.com/thi-ng/umbrella/commit/cfb2b74)) + + + + ## [0.2.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/vectors@0.2.0...@thi.ng/vectors@0.2.1) (2018-08-24) diff --git a/packages/vectors/package.json b/packages/vectors/package.json index 6320e44fb6..4786bed2e9 100644 --- a/packages/vectors/package.json +++ b/packages/vectors/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/vectors", - "version": "0.2.1", + "version": "0.3.0", "description": "Vector algebra for fixed & variable sizes, memory mapped, flexible layouts", "main": "./index.js", "typings": "./index.d.ts", From 34a97b476e2d5ed12b0b1f178f2e2a41ce01dec7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81=20Wachter?= Date: Mon, 27 Aug 2018 17:06:15 +0200 Subject: [PATCH 27/60] fix(rstream): Fix unbound this in method call expression --- packages/rstream/src/subs/resolve.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/rstream/src/subs/resolve.ts b/packages/rstream/src/subs/resolve.ts index ee1feac494..ee86cced37 100644 --- a/packages/rstream/src/subs/resolve.ts +++ b/packages/rstream/src/subs/resolve.ts @@ -57,7 +57,14 @@ export class Resolver extends Subscription, T> { DEBUG && console.log(`resolved value in ${State[this.state]} state (${x})`); } }, - (e) => (this.fail || this.error)(e) + (e) => { + if (this.fail) { + this.fail(e); + } + else { + this.error(e); + } + } ); } From 986e954f475f6127b76db689c315751782163459 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 27 Aug 2018 17:23:01 +0100 Subject: [PATCH 28/60] Publish - @thi.ng/rstream-csp@0.1.100 - @thi.ng/rstream-dot@0.2.39 - @thi.ng/rstream-gestures@0.5.1 - @thi.ng/rstream-graph@2.1.24 - @thi.ng/rstream-log@1.0.51 - @thi.ng/rstream-query@0.3.38 - @thi.ng/rstream@1.11.6 --- packages/rstream-csp/CHANGELOG.md | 8 ++++++++ packages/rstream-csp/package.json | 4 ++-- packages/rstream-dot/CHANGELOG.md | 8 ++++++++ packages/rstream-dot/package.json | 4 ++-- packages/rstream-gestures/CHANGELOG.md | 8 ++++++++ packages/rstream-gestures/package.json | 4 ++-- packages/rstream-graph/CHANGELOG.md | 8 ++++++++ packages/rstream-graph/package.json | 4 ++-- packages/rstream-log/CHANGELOG.md | 8 ++++++++ packages/rstream-log/package.json | 4 ++-- packages/rstream-query/CHANGELOG.md | 8 ++++++++ packages/rstream-query/package.json | 6 +++--- packages/rstream/CHANGELOG.md | 11 +++++++++++ packages/rstream/package.json | 2 +- 14 files changed, 73 insertions(+), 14 deletions(-) diff --git a/packages/rstream-csp/CHANGELOG.md b/packages/rstream-csp/CHANGELOG.md index 04492c9f1d..c1134fb06b 100644 --- a/packages/rstream-csp/CHANGELOG.md +++ b/packages/rstream-csp/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.1.100](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-csp@0.1.99...@thi.ng/rstream-csp@0.1.100) (2018-08-27) + + + + +**Note:** Version bump only for package @thi.ng/rstream-csp + ## [0.1.99](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-csp@0.1.98...@thi.ng/rstream-csp@0.1.99) (2018-08-27) diff --git a/packages/rstream-csp/package.json b/packages/rstream-csp/package.json index dd83557141..477b9096e1 100644 --- a/packages/rstream-csp/package.json +++ b/packages/rstream-csp/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-csp", - "version": "0.1.99", + "version": "0.1.100", "description": "@thi.ng/csp bridge module for @thi.ng/rstream", "main": "./index.js", "typings": "./index.d.ts", @@ -29,7 +29,7 @@ }, "dependencies": { "@thi.ng/csp": "^0.3.57", - "@thi.ng/rstream": "^1.11.5" + "@thi.ng/rstream": "^1.11.6" }, "keywords": [ "bridge", diff --git a/packages/rstream-dot/CHANGELOG.md b/packages/rstream-dot/CHANGELOG.md index e0e4bb2628..a015818594 100644 --- a/packages/rstream-dot/CHANGELOG.md +++ b/packages/rstream-dot/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.2.39](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-dot@0.2.38...@thi.ng/rstream-dot@0.2.39) (2018-08-27) + + + + +**Note:** Version bump only for package @thi.ng/rstream-dot + ## [0.2.38](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-dot@0.2.37...@thi.ng/rstream-dot@0.2.38) (2018-08-27) diff --git a/packages/rstream-dot/package.json b/packages/rstream-dot/package.json index e9db75386e..71e3ab1b7f 100644 --- a/packages/rstream-dot/package.json +++ b/packages/rstream-dot/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-dot", - "version": "0.2.38", + "version": "0.2.39", "description": "Graphviz DOT conversion of @thi.ng/rstream dataflow graph topologies", "main": "./index.js", "typings": "./index.d.ts", @@ -28,7 +28,7 @@ "typescript": "^3.0.1" }, "dependencies": { - "@thi.ng/rstream": "^1.11.5" + "@thi.ng/rstream": "^1.11.6" }, "keywords": [ "conversion", diff --git a/packages/rstream-gestures/CHANGELOG.md b/packages/rstream-gestures/CHANGELOG.md index b35f45f3b2..16ee4338c3 100644 --- a/packages/rstream-gestures/CHANGELOG.md +++ b/packages/rstream-gestures/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.5.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-gestures@0.5.0...@thi.ng/rstream-gestures@0.5.1) (2018-08-27) + + + + +**Note:** Version bump only for package @thi.ng/rstream-gestures + # [0.5.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-gestures@0.4.18...@thi.ng/rstream-gestures@0.5.0) (2018-08-27) diff --git a/packages/rstream-gestures/package.json b/packages/rstream-gestures/package.json index a3144c672b..5f3a51177f 100644 --- a/packages/rstream-gestures/package.json +++ b/packages/rstream-gestures/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-gestures", - "version": "0.5.0", + "version": "0.5.1", "description": "Unified mouse, mouse wheel & single-touch event stream abstraction", "main": "./index.js", "typings": "./index.d.ts", @@ -29,7 +29,7 @@ }, "dependencies": { "@thi.ng/api": "^4.1.0", - "@thi.ng/rstream": "^1.11.5", + "@thi.ng/rstream": "^1.11.6", "@thi.ng/transducers": "^2.0.1" }, "keywords": [ diff --git a/packages/rstream-graph/CHANGELOG.md b/packages/rstream-graph/CHANGELOG.md index 0628fcad89..82c850b6c4 100644 --- a/packages/rstream-graph/CHANGELOG.md +++ b/packages/rstream-graph/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [2.1.24](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-graph@2.1.23...@thi.ng/rstream-graph@2.1.24) (2018-08-27) + + + + +**Note:** Version bump only for package @thi.ng/rstream-graph + ## [2.1.23](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-graph@2.1.22...@thi.ng/rstream-graph@2.1.23) (2018-08-27) diff --git a/packages/rstream-graph/package.json b/packages/rstream-graph/package.json index 24fa506a0d..ed03b2fe0d 100644 --- a/packages/rstream-graph/package.json +++ b/packages/rstream-graph/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-graph", - "version": "2.1.23", + "version": "2.1.24", "description": "Declarative dataflow graph construction for @thi.ng/rstream", "main": "./index.js", "typings": "./index.d.ts", @@ -33,7 +33,7 @@ "@thi.ng/errors": "^0.1.6", "@thi.ng/paths": "^1.5.2", "@thi.ng/resolve-map": "^3.0.8", - "@thi.ng/rstream": "^1.11.5", + "@thi.ng/rstream": "^1.11.6", "@thi.ng/transducers": "^2.0.1" }, "keywords": [ diff --git a/packages/rstream-log/CHANGELOG.md b/packages/rstream-log/CHANGELOG.md index ec33a1be0e..19b2808f87 100644 --- a/packages/rstream-log/CHANGELOG.md +++ b/packages/rstream-log/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [1.0.51](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-log@1.0.50...@thi.ng/rstream-log@1.0.51) (2018-08-27) + + + + +**Note:** Version bump only for package @thi.ng/rstream-log + ## [1.0.50](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-log@1.0.49...@thi.ng/rstream-log@1.0.50) (2018-08-27) diff --git a/packages/rstream-log/package.json b/packages/rstream-log/package.json index 1c667e4844..e600f24537 100644 --- a/packages/rstream-log/package.json +++ b/packages/rstream-log/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-log", - "version": "1.0.50", + "version": "1.0.51", "description": "Structured, multilevel & hierarchical loggers based on @thi.ng/rstream", "main": "./index.js", "typings": "./index.d.ts", @@ -31,7 +31,7 @@ "@thi.ng/api": "^4.1.0", "@thi.ng/checks": "^1.5.7", "@thi.ng/errors": "^0.1.6", - "@thi.ng/rstream": "^1.11.5", + "@thi.ng/rstream": "^1.11.6", "@thi.ng/transducers": "^2.0.1" }, "keywords": [ diff --git a/packages/rstream-query/CHANGELOG.md b/packages/rstream-query/CHANGELOG.md index 9d60464a7e..18ea365f87 100644 --- a/packages/rstream-query/CHANGELOG.md +++ b/packages/rstream-query/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.3.38](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-query@0.3.37...@thi.ng/rstream-query@0.3.38) (2018-08-27) + + + + +**Note:** Version bump only for package @thi.ng/rstream-query + ## [0.3.37](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-query@0.3.36...@thi.ng/rstream-query@0.3.37) (2018-08-27) diff --git a/packages/rstream-query/package.json b/packages/rstream-query/package.json index 57c762f4f4..9a7000f702 100644 --- a/packages/rstream-query/package.json +++ b/packages/rstream-query/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-query", - "version": "0.3.37", + "version": "0.3.38", "description": "@thi.ng/rstream based triple store & reactive query engine", "main": "./index.js", "typings": "./index.d.ts", @@ -33,8 +33,8 @@ "@thi.ng/checks": "^1.5.7", "@thi.ng/equiv": "^0.1.7", "@thi.ng/errors": "^0.1.6", - "@thi.ng/rstream": "^1.11.5", - "@thi.ng/rstream-dot": "^0.2.38", + "@thi.ng/rstream": "^1.11.6", + "@thi.ng/rstream-dot": "^0.2.39", "@thi.ng/transducers": "^2.0.1" }, "keywords": [ diff --git a/packages/rstream/CHANGELOG.md b/packages/rstream/CHANGELOG.md index d8899af456..cc78b505b3 100644 --- a/packages/rstream/CHANGELOG.md +++ b/packages/rstream/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [1.11.6](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream@1.11.5...@thi.ng/rstream@1.11.6) (2018-08-27) + + +### Bug Fixes + +* **rstream:** Fix unbound this in method call expression ([34a97b4](https://github.com/thi-ng/umbrella/commit/34a97b4)) + + + + ## [1.11.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream@1.11.4...@thi.ng/rstream@1.11.5) (2018-08-27) diff --git a/packages/rstream/package.json b/packages/rstream/package.json index 8e4a029ae7..4408e87a68 100644 --- a/packages/rstream/package.json +++ b/packages/rstream/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream", - "version": "1.11.5", + "version": "1.11.6", "description": "Reactive multi-tap streams, dataflow & transformation pipeline constructs", "main": "./index.js", "typings": "./index.d.ts", From 39cced5fe9b58d77fca186fc7edaf026fb4aff6b Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Tue, 28 Aug 2018 16:36:03 +0100 Subject: [PATCH 29/60] minor(examples): add cursor css for dial --- examples/canvas-dial/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/canvas-dial/src/index.ts b/examples/canvas-dial/src/index.ts index d30b653bce..877fdedbee 100644 --- a/examples/canvas-dial/src/index.ts +++ b/examples/canvas-dial/src/index.ts @@ -18,7 +18,7 @@ export const ctx = { // component styling ui: { root: { class: "vh-100 flex justify-center items-center" }, - dial: { width: 100, height: 100, class: "ma1" }, + dial: { width: 100, height: 100, class: "pointer ma1" }, } }; From 4a373674f5eca291f550cd84e0d18bdab82cd8d5 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Tue, 28 Aug 2018 16:36:25 +0100 Subject: [PATCH 30/60] feat(bench): add opt prefix arg, update docs --- packages/bench/src/index.ts | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/packages/bench/src/index.ts b/packages/bench/src/index.ts index d1dfe22447..370d9109f4 100644 --- a/packages/bench/src/index.ts +++ b/packages/bench/src/index.ts @@ -1,29 +1,35 @@ /** * Calls function `fn` without args, prints elapsed time and returns - * fn's result. + * fn's result. The optional `prefix` will be displayed with the output, + * allowing to label different measurements. * * @param fn + * @param prefix */ -export function timed(fn: () => T) { +export function timed(fn: () => T, prefix = "") { const t0 = Date.now(); const res = fn(); - console.log(Date.now() - t0); + console.log(prefix + (Date.now() - t0) + "ms"); return res; } /** * Executes given function `n` times, prints elapsed time to console and - * returns last result from fn. + * returns last result from fn. The optional `prefix` will be displayed + * with the output, allowing to label different measurements. * * @param fn * @param n */ -export function bench(fn: () => T, n = 1e6) { +export function bench(fn: () => T, n = 1e6, prefix = "") { let res: T; - return timed(() => { - while (n-- > 0) { - res = fn(); - } - return res; - }); + return timed( + () => { + while (n-- > 0) { + res = fn(); + } + return res; + }, + prefix + ); } From cd834f823eef443889ff7325cbeec85d366c43ba Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Tue, 28 Aug 2018 21:34:36 +0100 Subject: [PATCH 31/60] feat(vectors): add more vec2/3 ops - vec2: angleBetween2, bisect2, rotateAroundPoint2 - vec3: angleBetween3, rotateAroundAxis3 --- packages/vectors/README.md | 116 ++++++++++++++++++----------------- packages/vectors/src/vec2.ts | 38 ++++++++++++ packages/vectors/src/vec3.ts | 41 +++++++++++++ 3 files changed, 139 insertions(+), 56 deletions(-) diff --git a/packages/vectors/README.md b/packages/vectors/README.md index 152d9d19d4..6666ed659e 100644 --- a/packages/vectors/README.md +++ b/packages/vectors/README.md @@ -85,62 +85,66 @@ zero-copy vector operations on sections of larger buffers. The default start index is 0, default stride 1. See examples below and [tests](https://github.com/thi-ng/umbrella/tree/master/packages/vectors/test/). -| Operation | Generic | 2D | 3D | 4D | -|---------------------------------|--------------|------------------|--------------------|------------------| -| Get vector (dense copy) | `get` | `get2` | `get3` | `get4` | -| Set vector components (vector) | `set` | `set2` | `set3` | `set4` | -| Set vector components (uniform) | `setN` | `setN2` | `setN3` | `setN4` | -| Set vector components (scalars) | | `setS2` | `setS3` | `setS4` | -| Swizzle vector components | | `swizzle2` | `swizzle3` | `swizzle4` | -| Equality (w/ epsilon) | `eqDelta` | `eqDelta2` | `eqDelta3` | `eqDelta4` | -| Vector addition | `add` | `add2` | `add3` | `add4` | -| Vector subtraction | `sub` | `sub2` | `sub3` | `sub4` | -| Vector multiplication | `mul` | `mul2` | `mul3` | `mul4` | -| Vector division | `div` | `div2` | `div3` | `div4` | -| Uniform scalar addition | `addN` | `addN2` | `addN3` | `addN4` | -| Uniform scalar subtraction | `subN` | `subN2` | `subN3` | `subN4` | -| Uniform scalar multiply | `mulN` | `mulN2` | `mulN3` | `mulN4` | -| Uniform scalar multiply | `divN` | `divN2` | `divN3` | `divN4` | -| Vector negation | `neg` | `neg2` | `neg3` | `neg4` | -| Multiply-add vectors | `madd` | `madd2` | `madd3` | `madd4` | -| Multiply-add scalar | `maddN` | `maddN2` | `maddN3` | `maddN4` | -| Linear interpolation (vector) | `mix` | `mix2` | `mix3` | `mix4` | -| Linear interpolation (uniform) | `mixN` | `mixN2` | `mixN3` | `mixN4` | -| Dot product | `dot` | `dot2` | `dot3` | `dot4` | -| Cross product | | `cross2` | `cross3` | | -| Magnitude | `mag` | `mag2` | `mag3` | `mag4` | -| Magnitude (squared) | `magSq` | `magSq2` | `magSq3` | `magSq4` | -| Normalize (w/ opt length) | `normalize` | `normalize2` | `normalize3` | `normalize4` | -| Limit to length | | `limit2` | `limit3` | `limit4` | -| Distance | `dist` | `dist2` | `dist3` | `dist4` | -| Distance (squared) | `distSq` | `distSq2` | `distSq3` | `distSq4` | -| Manhattan distance | | `distManhattan2` | `distManhattan3` | `distManhattan4` | -| Chebyshev distance | | `distChebyshev2` | `distChebyshev3` | `distChebyshev4` | -| Reflection | | `reflect2` | `reflect3` | `reflect4` | -| RotationX | | | `rotateX3` | | -| RotationY | | | `rotateY3` | | -| RotationZ | | `rotate2` | `rotateZ3` | | -| Heading XY | | `heading2` | `headingXY3` | | -| Heading XZ | | | `headingXZ3` | | -| Heading YZ | | | `headingYZ3` | | -| Cartesian -> Polar | | `toPolar2` | `toSpherical3` | | -| Polar -> Cartesian | | `toCartesian2` | `toCartesian3` | | -| Cartesian -> Cylindrical | | | `toCylindrical3` | | -| Cylindrical -> Cartesian | | | `fromCylindrical3` | | -| Minor axis | | `minorAxis2` | `minorAxis3` | `minorAxis4` | -| Major axis | | `majorAxis2` | `majorAxis3` | `majorAxis4` | -| Minimum | `min` | `min2` | `min3` | `min4` | -| Maximum | `max` | `max2` | `max3` | `max4` | -| Range clamping | `clamp` | `clamp2` | `clamp3` | `clamp4` | -| Step (like GLSL) | `step` | `step2` | `step3` | `step4` | -| SmoothStep (like GLSL) | `smoothStep` | `smoothStep2` | `smoothStep3` | `smoothStep4` | -| Absolute value | `abs` | `abs2` | `abs3` | `abs4` | -| Sign (w/ opt epsilon) | `sign` | `sign2` | `sign3` | `sign4` | -| Round down | `floor` | `floor2` | `floor3` | `floor4` | -| Round up | `ceil` | `ceil2` | `ceil3` | `ceil4` | -| Square root | `sqrt` | `sqrt2` | `sqrt3` | `sqrt4` | -| Power (vector) | `pow` | `pow2` | `pow3` | `pow4` | -| Power (uniform) | `powN` | `powN2` | `powN3` | `powN4` | +| Operation | Generic | 2D | 3D | 4D | +|---------------------------------|--------------|----------------------|---------------------|------------------| +| Get vector (dense copy) | `get` | `get2` | `get3` | `get4` | +| Set vector components (vector) | `set` | `set2` | `set3` | `set4` | +| Set vector components (uniform) | `setN` | `setN2` | `setN3` | `setN4` | +| Set vector components (scalars) | | `setS2` | `setS3` | `setS4` | +| Swizzle vector components | | `swizzle2` | `swizzle3` | `swizzle4` | +| Equality (w/ epsilon) | `eqDelta` | `eqDelta2` | `eqDelta3` | `eqDelta4` | +| Vector addition | `add` | `add2` | `add3` | `add4` | +| Vector subtraction | `sub` | `sub2` | `sub3` | `sub4` | +| Vector multiplication | `mul` | `mul2` | `mul3` | `mul4` | +| Vector division | `div` | `div2` | `div3` | `div4` | +| Uniform scalar addition | `addN` | `addN2` | `addN3` | `addN4` | +| Uniform scalar subtraction | `subN` | `subN2` | `subN3` | `subN4` | +| Uniform scalar multiply | `mulN` | `mulN2` | `mulN3` | `mulN4` | +| Uniform scalar multiply | `divN` | `divN2` | `divN3` | `divN4` | +| Vector negation | `neg` | `neg2` | `neg3` | `neg4` | +| Multiply-add vectors | `madd` | `madd2` | `madd3` | `madd4` | +| Multiply-add scalar | `maddN` | `maddN2` | `maddN3` | `maddN4` | +| Linear interpolation (vector) | `mix` | `mix2` | `mix3` | `mix4` | +| Linear interpolation (uniform) | `mixN` | `mixN2` | `mixN3` | `mixN4` | +| Dot product | `dot` | `dot2` | `dot3` | `dot4` | +| Cross product | | `cross2` | `cross3` | | +| Magnitude | `mag` | `mag2` | `mag3` | `mag4` | +| Magnitude (squared) | `magSq` | `magSq2` | `magSq3` | `magSq4` | +| Normalize (w/ opt length) | `normalize` | `normalize2` | `normalize3` | `normalize4` | +| Limit to length | | `limit2` | `limit3` | `limit4` | +| Distance | `dist` | `dist2` | `dist3` | `dist4` | +| Distance (squared) | `distSq` | `distSq2` | `distSq3` | `distSq4` | +| Manhattan distance | | `distManhattan2` | `distManhattan3` | `distManhattan4` | +| Chebyshev distance | | `distChebyshev2` | `distChebyshev3` | `distChebyshev4` | +| Reflection | | `reflect2` | `reflect3` | `reflect4` | +| RotationX | | | `rotateX3` | | +| RotationY | | | `rotateY3` | | +| RotationZ | | `rotate2` | `rotateZ3` | | +| Rotation around point | | `rotateAroundPoint2` | | | +| Rotation around axis | | | `rotateAroundAxis3` | | +| Heading XY | | `heading2` | `headingXY3` | | +| Heading XZ | | | `headingXZ3` | | +| Heading YZ | | | `headingYZ3` | | +| Angle between vectors | | `angleBetween2` | `angleBetween3` | | +| Bisector angle | | `bisect2` | | | +| Cartesian -> Polar | | `toPolar2` | `toSpherical3` | | +| Polar -> Cartesian | | `toCartesian2` | `toCartesian3` | | +| Cartesian -> Cylindrical | | | `toCylindrical3` | | +| Cylindrical -> Cartesian | | | `fromCylindrical3` | | +| Minor axis | | `minorAxis2` | `minorAxis3` | `minorAxis4` | +| Major axis | | `majorAxis2` | `majorAxis3` | `majorAxis4` | +| Minimum | `min` | `min2` | `min3` | `min4` | +| Maximum | `max` | `max2` | `max3` | `max4` | +| Range clamping | `clamp` | `clamp2` | `clamp3` | `clamp4` | +| Step (like GLSL) | `step` | `step2` | `step3` | `step4` | +| SmoothStep (like GLSL) | `smoothStep` | `smoothStep2` | `smoothStep3` | `smoothStep4` | +| Absolute value | `abs` | `abs2` | `abs3` | `abs4` | +| Sign (w/ opt epsilon) | `sign` | `sign2` | `sign3` | `sign4` | +| Round down | `floor` | `floor2` | `floor3` | `floor4` | +| Round up | `ceil` | `ceil2` | `ceil3` | `ceil4` | +| Square root | `sqrt` | `sqrt2` | `sqrt3` | `sqrt4` | +| Power (vector) | `pow` | `pow2` | `pow3` | `pow4` | +| Power (uniform) | `powN` | `powN2` | `powN3` | `powN4` | ### Matrices diff --git a/packages/vectors/src/vec2.ts b/packages/vectors/src/vec2.ts index bcb13cafb4..1c8f53bef6 100644 --- a/packages/vectors/src/vec2.ts +++ b/packages/vectors/src/vec2.ts @@ -12,8 +12,10 @@ import { atan2Abs, EPS, eqDelta1, + HALF_PI, max2id, min2id, + PI, smoothStep1, step1 } from "./math"; @@ -208,9 +210,32 @@ export const rotate2 = (a: Vec, theta: number, ia = 0, sa = 1) => { return setS2(a, x * c - y * s, x * s + y * c, ia, sa); }; +export const rotateAroundPoint2 = (a: Vec, b: Vec, theta: number, ia = 0, ib = 0, sa = 1, sb = 1) => { + const x = a[ia] - b[ib]; + const y = a[ia + sa] - b[ib + sb]; + const s = Math.sin(theta); + const c = Math.cos(theta); + return setS2( + a, + x * c - y * s + b[ib], + x * s + y * c + b[ib + sb], + ia, sa + ); +}; + export const heading2 = (a: ReadonlyVec, ia = 0, sa = 1) => atan2Abs(a[ia + sa], a[ia]); +export const angleBetween2 = (a: ReadonlyVec, b: ReadonlyVec, normalize = false, ia = 0, ib = 0, sa = 1, sb = 1): number => + normalize ? + angleBetween2(get2(a, ia, sa), get2(b, ib, sb)) : + Math.acos(dot2(a, b, ia, ib, sa, sb)); + +export const bisect2 = (a: ReadonlyVec, b: ReadonlyVec, ia = 0, ib = 0, sa = 1, sb = 1) => { + const theta = (heading2(a, ia, sa) + heading2(b, ib, sb)) / 2; + return theta <= HALF_PI ? theta : PI - theta; +} + export const toPolar2 = (a: Vec, ia = 0, sa = 1) => { const x = a[ia], y = a[ia + sa]; return setS2(a, Math.sqrt(x * x + y * y), atan2Abs(y, x), ia, sa); @@ -537,10 +562,23 @@ export class Vec2 implements return this; } + rotateAroundPoint(v: Readonly, theta: number) { + rotateAroundPoint2(this.buf, v.buf, theta, this.i, v.i, this.s, v.s); + return this; + } + heading() { return heading2(this.buf, this.i, this.s); } + angleBetween(v: Readonly, normalize = false) { + return angleBetween2(this.buf, v.buf, normalize, this.i, v.i, this.s, v.s); + } + + bisect(v: Readonly) { + return bisect2(this.buf, v.buf, this.i, v.i, this.s, v.s); + } + toPolar() { toPolar2(this.buf, this.i, this.s); return this; diff --git a/packages/vectors/src/vec3.ts b/packages/vectors/src/vec3.ts index b430a866d5..2fe5834427 100644 --- a/packages/vectors/src/vec3.ts +++ b/packages/vectors/src/vec3.ts @@ -282,6 +282,33 @@ export const rotateY3 = (a: Vec, theta: number, ia = 0, sa = 1) => export const rotateZ3 = rotate2; +export const rotateAroundAxis3 = (v: Vec, axis: Vec, theta: number, ia = 0, ib = 0, sa = 1, sb = 1) => { + const x = v[ia]; + const y = v[ia + sa]; + const z = v[ia + 2 * sa]; + const ax = axis[ib]; + const ay = axis[ib + sb]; + const az = axis[ib + 2 * sb]; + const ux = ax * x; + const uy = ax * y; + const uz = ax * z; + const vx = ay * x; + const vy = ay * y; + const vz = ay * z; + const wx = az * x; + const wy = az * y; + const wz = az * z; + const uvw = ux + vy + wz; + const s = Math.sin(theta); + const c = Math.cos(theta); + return setS3(v, + (ax * uvw + (x * (ay * ay + az * az) - ax * (vy + wz)) * c + (-wy + vz) * s), + (ay * uvw + (y * (ax * ax + az * az) - ay * (ux + wz)) * c + (wx - uz) * s), + (az * uvw + (z * (ax * ax + ay * ay) - az * (ux + vy)) * c + (-vx + uy) * s), + ia, sa + ); +} + export const headingXY3 = heading2; export const headingXZ3 = (a: ReadonlyVec, ia = 0, sa = 1) => @@ -290,6 +317,11 @@ export const headingXZ3 = (a: ReadonlyVec, ia = 0, sa = 1) => export const headingYZ3 = (a: ReadonlyVec, ia = 0, sa = 1) => atan2Abs(a[ia + 2 * sa], a[ia + sa]); +export const angleBetween3 = (a: ReadonlyVec, b: ReadonlyVec, normalize = false, ia = 0, ib = 0, sa = 1, sb = 1): number => + normalize ? + angleBetween3(get3(a, ia, sa), get3(b, ib, sb)) : + Math.acos(dot3(a, b, ia, ib, sa, sb)); + export const toSpherical3 = (a: Vec, ia = 0, sa = 1) => { const x = a[ia]; const y = a[ia + sa]; @@ -659,6 +691,11 @@ export class Vec3 implements return this; } + rotateAroundAxis(axis: Vec3, theta: number) { + rotateAroundAxis3(this.buf, axis.buf, theta, this.i, axis.i, this.s, axis.s); + return this; + } + headingXY() { return headingXY3(this.buf, this.i, this.s); } @@ -671,6 +708,10 @@ export class Vec3 implements return headingYZ3(this.buf, this.i, this.s); } + angleBetween(v: Readonly, normalize = false) { + return angleBetween3(this.buf, v.buf, normalize, this.i, v.i, this.s, v.s); + } + toSpherical() { toSpherical3(this.buf, this.i, this.s); return this; From f5795eee24b913b51a8ab5614080374acfa0b0c9 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Tue, 28 Aug 2018 22:02:54 +0100 Subject: [PATCH 32/60] Publish - @thi.ng/bench@0.2.0 - @thi.ng/vectors@0.4.0 --- packages/bench/CHANGELOG.md | 11 +++++++++++ packages/bench/package.json | 2 +- packages/vectors/CHANGELOG.md | 11 +++++++++++ packages/vectors/package.json | 2 +- 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/packages/bench/CHANGELOG.md b/packages/bench/CHANGELOG.md index 78a5a0e3e0..6b30f759bc 100644 --- a/packages/bench/CHANGELOG.md +++ b/packages/bench/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [0.2.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/bench@0.1.5...@thi.ng/bench@0.2.0) (2018-08-28) + + +### Features + +* **bench:** add opt prefix arg, update docs ([4a37367](https://github.com/thi-ng/umbrella/commit/4a37367)) + + + + ## [0.1.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/bench@0.1.4...@thi.ng/bench@0.1.5) (2018-08-01) diff --git a/packages/bench/package.json b/packages/bench/package.json index cfb9dabf21..63ede8a722 100644 --- a/packages/bench/package.json +++ b/packages/bench/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/bench", - "version": "0.1.5", + "version": "0.2.0", "description": "Basic benchmarking helpers", "main": "./index.js", "typings": "./index.d.ts", diff --git a/packages/vectors/CHANGELOG.md b/packages/vectors/CHANGELOG.md index c2b4bad8bf..5baa6d6327 100644 --- a/packages/vectors/CHANGELOG.md +++ b/packages/vectors/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [0.4.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/vectors@0.3.0...@thi.ng/vectors@0.4.0) (2018-08-28) + + +### Features + +* **vectors:** add more vec2/3 ops ([cd834f8](https://github.com/thi-ng/umbrella/commit/cd834f8)) + + + + # [0.3.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/vectors@0.2.1...@thi.ng/vectors@0.3.0) (2018-08-27) diff --git a/packages/vectors/package.json b/packages/vectors/package.json index 4786bed2e9..c45c313c4f 100644 --- a/packages/vectors/package.json +++ b/packages/vectors/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/vectors", - "version": "0.3.0", + "version": "0.4.0", "description": "Vector algebra for fixed & variable sizes, memory mapped, flexible layouts", "main": "./index.js", "typings": "./index.d.ts", From b82a22f5abcffb5034f7e8b2e03c777ceee49040 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Wed, 29 Aug 2018 16:10:58 +0100 Subject: [PATCH 33/60] refactor(vectors): simplify prop accessors (DRY) --- packages/vectors/src/common.ts | 14 ++++++++--- packages/vectors/src/vec2.ts | 25 ++++++------------- packages/vectors/src/vec3.ts | 35 ++++++-------------------- packages/vectors/src/vec4.ts | 45 +++++++--------------------------- 4 files changed, 35 insertions(+), 84 deletions(-) diff --git a/packages/vectors/src/common.ts b/packages/vectors/src/common.ts index e393990774..0211ce2b7a 100644 --- a/packages/vectors/src/common.ts +++ b/packages/vectors/src/common.ts @@ -75,11 +75,19 @@ export const eqDelta = (a: ReadonlyVec, b: ReadonlyVec, n: number, eps = EPS, ia return true; }; -export const declareIndices = (proto: any, indices: number[]) => +export const declareIndices = (proto: any, indices: number[]) => { + const get = (i: number) => function () { return this.buf[this.i + i * this.s]; }; + const set = (i: number) => function (n: number) { this.buf[this.i + i * this.s] = n; }; indices.forEach((i) => { Object.defineProperty(proto, i, { - get: function () { return this.buf[this.i + i * this.s]; }, - set: function (n: number) { this.buf[this.i + i * this.s] = n; }, + get: get(i), + set: set(i), + enumerable: true, + }); + Object.defineProperty(proto, "xyzw"[i], { + get: get(i), + set: set(i), enumerable: true, }); }); +}; diff --git a/packages/vectors/src/vec2.ts b/packages/vectors/src/vec2.ts index bcb13cafb4..8f22557283 100644 --- a/packages/vectors/src/vec2.ts +++ b/packages/vectors/src/vec2.ts @@ -272,6 +272,8 @@ export class Vec2 implements buf: Vec; i: number; s: number; + x: number; + y: number; [0]: number; [1]: number; @@ -282,28 +284,15 @@ export class Vec2 implements } *[Symbol.iterator]() { - yield this.x; - yield this.y; + yield* this.array(); } - get length() { - return 2; - } - - get x() { - return this.buf[this.i]; - } - - set x(x: number) { - this.buf[this.i] = x; - } - - get y() { - return this.buf[this.i + this.s]; + array() { + return get2(this.buf, this.i, this.s); } - set y(y: number) { - this.buf[this.i + this.s] = y; + get length() { + return 2; } copy() { diff --git a/packages/vectors/src/vec3.ts b/packages/vectors/src/vec3.ts index b430a866d5..f3d5d0be7b 100644 --- a/packages/vectors/src/vec3.ts +++ b/packages/vectors/src/vec3.ts @@ -369,6 +369,9 @@ export class Vec3 implements buf: Vec; i: number; s: number; + x: number; + y: number; + z: number; [0]: number; [1]: number; [2]: number; @@ -380,37 +383,15 @@ export class Vec3 implements } *[Symbol.iterator]() { - yield this.x; - yield this.y; - yield this.z; + yield* this.array(); } - get length() { - return 3; - } - - get x() { - return this.buf[this.i]; - } - - set x(x: number) { - this.buf[this.i] = x; - } - - get y() { - return this.buf[this.i + this.s]; - } - - set y(y: number) { - this.buf[this.i + this.s] = y; + array() { + return get3(this.buf, this.i, this.s); } - get z() { - return this.buf[this.i + 2 * this.s]; - } - - set z(z: number) { - this.buf[this.i + 2 * this.s] = z; + get length() { + return 3; } copy() { diff --git a/packages/vectors/src/vec4.ts b/packages/vectors/src/vec4.ts index 4f4c34fa25..dcacdb3fc9 100644 --- a/packages/vectors/src/vec4.ts +++ b/packages/vectors/src/vec4.ts @@ -321,6 +321,10 @@ export class Vec4 implements buf: Vec; i: number; s: number; + x: number; + y: number; + z: number; + w: number; [0]: number; [1]: number; [2]: number; @@ -333,46 +337,15 @@ export class Vec4 implements } *[Symbol.iterator]() { - yield this.x; - yield this.y; - yield this.z; - yield this.w; + yield* this.array(); } - get length() { - return 4; - } - - get x() { - return this.buf[this.i]; - } - - set x(x: number) { - this.buf[this.i] = x; - } - - get y() { - return this.buf[this.i + this.s]; - } - - set y(y: number) { - this.buf[this.i + this.s] = y; - } - - get z() { - return this.buf[this.i + 2 * this.s]; - } - - set z(z: number) { - this.buf[this.i + 2 * this.s] = z; + array() { + return get4(this.buf, this.i, this.s); } - get w() { - return this.buf[this.i + 3 * this.s]; - } - - set w(w: number) { - this.buf[this.i + 3 * this.s] = w; + get length() { + return 4; } copy() { From bdb5d3777b6c6672e9d1ac4849768f41d8e4f63f Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Wed, 29 Aug 2018 21:42:40 +0100 Subject: [PATCH 34/60] feat(vectors): consolidate vector consts, add toJSON() impls - only use ZERO4, ONE4, MIN4, MAX4 for vec2/3/4 - add toJSON() impls for all vector & matrix classes --- packages/vectors/src/api.ts | 7 +++++++ packages/vectors/src/gvec.ts | 6 +++++- packages/vectors/src/mat23.ts | 8 ++++++-- packages/vectors/src/mat33.ts | 8 ++++++-- packages/vectors/src/mat44.ts | 8 ++++++-- packages/vectors/src/vec2.ts | 25 ++++++++++++++++++------- packages/vectors/src/vec3.ts | 27 +++++++++++++++++++-------- packages/vectors/src/vec4.ts | 23 +++++++++++++++++------ 8 files changed, 84 insertions(+), 28 deletions(-) diff --git a/packages/vectors/src/api.ts b/packages/vectors/src/api.ts index 81efc2408a..ba7b832e47 100644 --- a/packages/vectors/src/api.ts +++ b/packages/vectors/src/api.ts @@ -13,3 +13,10 @@ export interface IVec { i: number; s: number; } + +const min = Number.NEGATIVE_INFINITY; +const max = Number.POSITIVE_INFINITY; +export const MIN4 = Object.freeze([min, min, min, min]); +export const MAX4 = Object.freeze([max, max, max, max]); +export const ONE4 = Object.freeze([1, 1, 1, 1]); +export const ZERO4 = Object.freeze([0, 0, 0, 0]); diff --git a/packages/vectors/src/gvec.ts b/packages/vectors/src/gvec.ts index aa68389d83..1926566698 100644 --- a/packages/vectors/src/gvec.ts +++ b/packages/vectors/src/gvec.ts @@ -196,7 +196,7 @@ export class GVec implements } copy() { - return new GVec(get(this.buf, this.n, this.i, this.s), this.n); + return new GVec(get(this.buf, this.n, this.i, this.s)); } equiv(v: any) { @@ -392,6 +392,10 @@ export class GVec implements return `[${get(this.buf, this.n, this.i, this.s).join(", ")}]`; } + toJSON() { + return get(this.buf, this.n, this.i, this.s); + } + protected ensureSize(v: Readonly) { this.n !== v.n && illegalArgs(`vector size: ${v.n} (needed ${this.n})`); } diff --git a/packages/vectors/src/mat23.ts b/packages/vectors/src/mat23.ts index b8ea298e45..62c3d340e9 100644 --- a/packages/vectors/src/mat23.ts +++ b/packages/vectors/src/mat23.ts @@ -214,8 +214,8 @@ export class Mat23 implements buf: Mat; i: number; - constructor(buf: Mat, i = 0) { - this.buf = buf; + constructor(buf?: Mat, i = 0) { + this.buf = buf || (new Array(6).fill(0)); this.i = i; } @@ -266,4 +266,8 @@ export class Mat23 implements const i = this.i; return `${b[i]} ${b[i + 2]} ${b[i + 4]}\n${b[i + 1]} ${b[i + 3]} ${b[i + 5]}`; } + + toJSON() { + return get23(this.buf, this.i); + } } diff --git a/packages/vectors/src/mat33.ts b/packages/vectors/src/mat33.ts index 75fe93863e..4546eb91e9 100644 --- a/packages/vectors/src/mat33.ts +++ b/packages/vectors/src/mat33.ts @@ -248,8 +248,8 @@ export class Mat33 implements buf: Mat; i: number; - constructor(buf: Mat, i = 0) { - this.buf = buf; + constructor(buf?: Mat, i = 0) { + this.buf = buf || (new Array(9).fill(0)); this.i = i; } @@ -305,4 +305,8 @@ export class Mat33 implements const i = this.i; return `${b[i]} ${b[i + 3]} ${b[i + 6]}\n${b[i + 1]} ${b[i + 4]} ${b[i + 7]}\n${b[i + 2]} ${b[i + 5]} ${b[i + 8]}`; } + + toJSON() { + return get33(this.buf, this.i); + } } diff --git a/packages/vectors/src/mat44.ts b/packages/vectors/src/mat44.ts index 0ef1aa0a31..0098bad8d9 100644 --- a/packages/vectors/src/mat44.ts +++ b/packages/vectors/src/mat44.ts @@ -438,8 +438,8 @@ export class Mat44 implements buf: Mat; i: number; - constructor(buf: Mat, i = 0) { - this.buf = buf; + constructor(buf?: Mat, i = 0) { + this.buf = buf || (new Array(16).fill(0)); this.i = i; } @@ -515,4 +515,8 @@ export class Mat44 implements const i = this.i; return `${b[i]} ${b[i + 4]} ${b[i + 8]} ${b[i + 12]}\n${b[i + 1]} ${b[i + 5]} ${b[i + 9]} ${b[i + 13]}\n${b[i + 2]} ${b[i + 6]} ${b[i + 10]} ${b[i + 14]}\n${b[i + 3]} ${b[i + 7]} ${b[i + 11]} ${b[i + 15]}`; } + + toJSON() { + return get44(this.buf, this.i); + } } diff --git a/packages/vectors/src/vec2.ts b/packages/vectors/src/vec2.ts index b5e1d3bb70..3d06adbda3 100644 --- a/packages/vectors/src/vec2.ts +++ b/packages/vectors/src/vec2.ts @@ -6,7 +6,15 @@ import { } from "@thi.ng/api/api"; import { isArrayLike } from "@thi.ng/checks/is-arraylike"; -import { IVec, ReadonlyVec, Vec } from "./api"; +import { + IVec, + MAX4, + MIN4, + ONE4, + ReadonlyVec, + Vec, + ZERO4 +} from "./api"; import { declareIndices } from "./common"; import { atan2Abs, @@ -20,9 +28,6 @@ import { step1 } from "./math"; -export const ZERO2 = Object.freeze([0, 0]); -export const ONE2 = Object.freeze([1, 1]); - export const op2 = (fn: (x: number) => number, a: Vec, ia = 0, sa = 1) => (a[ia] = fn(a[ia]), a[ia + sa] = fn(a[ia + sa]), a); @@ -241,7 +246,7 @@ export const toPolar2 = (a: Vec, ia = 0, sa = 1) => { return setS2(a, Math.sqrt(x * x + y * y), atan2Abs(y, x), ia, sa); }; -export const toCartesian2 = (a: Vec, b: ReadonlyVec = ZERO2, ia = 0, ib = 0, sa = 1, sb = 1) => { +export const toCartesian2 = (a: Vec, b: ReadonlyVec = ZERO4, ia = 0, ib = 0, sa = 1, sb = 1) => { const r = a[ia], theta = a[ia + sa]; return setS2( a, @@ -291,8 +296,10 @@ export class Vec2 implements return res; } - static ZERO = Object.freeze(new Vec2(ZERO2)); - static ONE = Object.freeze(new Vec2(ONE2)); + static readonly ZERO = Object.freeze(new Vec2(ZERO4)); + static readonly ONE = Object.freeze(new Vec2(ONE4)); + static readonly MIN = Object.freeze(new Vec2(MIN4)); + static readonly MAX = Object.freeze(new Vec2(MAX4)); buf: Vec; i: number; @@ -581,6 +588,10 @@ export class Vec2 implements toString() { return `[${this.buf[this.i]}, ${this.buf[this.i + this.s]}]`; } + + toJSON() { + return this.array(); + } } declareIndices(Vec2.prototype, [0, 1]); diff --git a/packages/vectors/src/vec3.ts b/packages/vectors/src/vec3.ts index ae373b2e8b..24bd8db621 100644 --- a/packages/vectors/src/vec3.ts +++ b/packages/vectors/src/vec3.ts @@ -6,7 +6,15 @@ import { } from "@thi.ng/api/api"; import { isArrayLike } from "@thi.ng/checks/is-arraylike"; -import { IVec, ReadonlyVec, Vec } from "./api"; +import { + IVec, + MAX4, + MIN4, + ONE4, + ReadonlyVec, + Vec, + ZERO4 +} from "./api"; import { declareIndices } from "./common"; import { atan2Abs, @@ -25,9 +33,6 @@ import { toPolar2 } from "./vec2"; -export const ZERO3 = Object.freeze([0, 0, 0]); -export const ONE3 = Object.freeze([1, 1, 1]); - export const op3 = (fn: (x: number) => number, a: Vec, ia = 0, sa = 1) => ( a[ia] = fn(a[ia]), a[ia + sa] = fn(a[ia + sa]), @@ -330,7 +335,7 @@ export const toSpherical3 = (a: Vec, ia = 0, sa = 1) => { return setS3(a, r, Math.asin(z / r), atan2Abs(y, x), ia, sa); }; -export const toCartesian3 = (a: Vec, b: ReadonlyVec = ZERO3, ia = 0, ib = 0, sa = 1, sb = 1) => { +export const toCartesian3 = (a: Vec, b: ReadonlyVec = ZERO4, ia = 0, ib = 0, sa = 1, sb = 1) => { const r = a[ia]; const theta = a[ia + sa]; const phi = a[ia + 2 * sa]; @@ -345,7 +350,7 @@ export const toCartesian3 = (a: Vec, b: ReadonlyVec = ZERO3, ia = 0, ib = 0, sa export const toCylindrical3 = toPolar2; -export const fromCylindrical3 = (a: Vec, b: ReadonlyVec = ZERO3, ia = 0, ib = 0, sa = 1, sb = 1) => { +export const fromCylindrical3 = (a: Vec, b: ReadonlyVec = ZERO4, ia = 0, ib = 0, sa = 1, sb = 1) => { toCartesian2(a, b, ia, ib, sa, sb); a[ia + 2 * sa] += b[ib + 2 * sb]; return a; @@ -395,8 +400,10 @@ export class Vec3 implements return new Vec3(orthoNormal3(a.buf, b.buf, c.buf, a.i, b.i, c.i, a.s, b.s, c.s)); } - static ZERO = Object.freeze(new Vec3(ZERO3)); - static ONE = Object.freeze(new Vec3(ONE3)); + static readonly ZERO = Object.freeze(new Vec3(ZERO4)); + static readonly ONE = Object.freeze(new Vec3(ONE4)); + static readonly MIN = Object.freeze(new Vec3(MIN4)); + static readonly MAX = Object.freeze(new Vec3(MAX4)); buf: Vec; i: number; @@ -716,6 +723,10 @@ export class Vec3 implements toString() { return `[${this.buf[this.i]}, ${this.buf[this.i + this.s]}, ${this.buf[this.i + 2 * this.s]}]`; } + + toJSON() { + return this.array(); + } } declareIndices(Vec3.prototype, [0, 1, 2]); diff --git a/packages/vectors/src/vec4.ts b/packages/vectors/src/vec4.ts index dcacdb3fc9..88994cb4d2 100644 --- a/packages/vectors/src/vec4.ts +++ b/packages/vectors/src/vec4.ts @@ -6,7 +6,15 @@ import { } from "@thi.ng/api/api"; import { isArrayLike } from "@thi.ng/checks/is-arraylike"; -import { IVec, ReadonlyVec, Vec } from "./api"; +import { + IVec, + MAX4, + MIN4, + ONE4, + ReadonlyVec, + Vec, + ZERO4 +} from "./api"; import { declareIndices } from "./common"; import { EPS, @@ -17,9 +25,6 @@ import { step1 } from "./math"; -export const ZERO4 = Object.freeze([0, 0, 0, 0]); -export const ONE4 = Object.freeze([1, 1, 1, 1]); - export const op4 = (fn: (x: number) => number, a: Vec, ia = 0, sa = 1) => ( a[ia] = fn(a[ia]), a[ia + sa] = fn(a[ia + sa]), @@ -315,8 +320,10 @@ export class Vec4 implements return res; } - static ZERO = Object.freeze(new Vec4(ZERO4)); - static ONE = Object.freeze(new Vec4(ONE4)); + static readonly ZERO = Object.freeze(new Vec4(ZERO4)); + static readonly ONE = Object.freeze(new Vec4(ONE4)); + static readonly MIN = Object.freeze(new Vec4(MIN4)); + static readonly MAX = Object.freeze(new Vec4(MAX4)); buf: Vec; i: number; @@ -573,6 +580,10 @@ export class Vec4 implements toString() { return `[${this.buf[this.i]}, ${this.buf[this.i + this.s]}, ${this.buf[this.i + 2 * this.s]}, ${this.buf[this.i + 3 * this.s]}]`; } + + toJSON() { + return this.array(); + } } declareIndices(Vec4.prototype, [0, 1, 2, 3]); From d5cec9488d7dd1afa9e8af4b8678aa20e7680b2f Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Thu, 30 Aug 2018 17:24:55 +0100 Subject: [PATCH 35/60] feat(vectors): update types, update GVec, add maths fns, swap impls - rename VecOp* types and add generics, add readonly versions - add GVec.getAt() / setAt() element accessors - add Vec2/3/4.swap() & fract() impls - add & rename various math fns (add "1" suffix) --- packages/vectors/src/api.ts | 23 +++++++++++++++++- packages/vectors/src/common.ts | 6 ++--- packages/vectors/src/gvec.ts | 30 +++++++++++++++++++++++- packages/vectors/src/math.ts | 43 ++++++++++++++++++++++++++-------- packages/vectors/src/vec2.ts | 29 +++++++++++++++++++---- packages/vectors/src/vec3.ts | 33 ++++++++++++++++++++++---- packages/vectors/src/vec4.ts | 27 ++++++++++++++++++++- 7 files changed, 166 insertions(+), 25 deletions(-) diff --git a/packages/vectors/src/api.ts b/packages/vectors/src/api.ts index ba7b832e47..1efb835d4b 100644 --- a/packages/vectors/src/api.ts +++ b/packages/vectors/src/api.ts @@ -6,10 +6,31 @@ export type ReadonlyVec = ArrayLike; export type Mat = NumericArray; export type ReadonlyMat = ArrayLike; -export type VecOp = (a: Vec, b: ReadonlyVec, ia: number, ib: number, sa: number, sb: number) => Vec; +/** + * A vector operation involving only a single vector. The vector might + * be modified. + */ +export type VecOp1 = (v: Vec, i: number, s?: number) => T; + +/** + * A vector operation involving two vectors. The first vector might be + * modified. + */ +export type VecOp2 = (a: Vec, b: ReadonlyVec, ia: number, ib: number, sa?: number, sb?: number) => T; + +/** + * A readonly vector operation involving only a single vector. + */ +export type ReadonlyVecOp1 = (v: ReadonlyVec, i: number, s?: number) => T; + +/** + * A readonly vector operation involving two vectors. + */ +export type ReadonlyVecOp2 = (a: ReadonlyVec, b: ReadonlyVec, ia: number, ib: number, sa?: number, sb?: number) => T; export interface IVec { buf: Vec; + length: number; i: number; s: number; } diff --git a/packages/vectors/src/common.ts b/packages/vectors/src/common.ts index 0211ce2b7a..c0cc5231a0 100644 --- a/packages/vectors/src/common.ts +++ b/packages/vectors/src/common.ts @@ -1,4 +1,4 @@ -import { ReadonlyVec, Vec, VecOp } from "./api"; +import { ReadonlyVec, Vec, VecOp2 } from "./api"; import { EPS, eqDelta1 } from "./math"; export const x = (v: ReadonlyVec, i = 0, _?: number) => v[i]; @@ -31,7 +31,7 @@ export const w = (v: ReadonlyVec, i = 0, s = 1) => v[i + 3 * s]; * @param csb component stride `b` * @param esa element stride `a` */ -export const transformVectors1 = (fn: VecOp, a: Vec, b: ReadonlyVec, num: number, ia: number, ib: number, csa: number, csb: number, esa: number) => { +export const transformVectors1 = (fn: VecOp2, a: Vec, b: ReadonlyVec, num: number, ia: number, ib: number, csa: number, csb: number, esa: number) => { for (; num > 0; num-- , ia += esa) { fn(a, b, ia, ib, csa, csb); } @@ -50,7 +50,7 @@ export const transformVectors1 = (fn: VecOp, a: Vec, b: ReadonlyVec, num: number * @param esa * @param esb */ -export const transformVectors2 = (fn: VecOp, a: Vec, b: ReadonlyVec, n: number, ia: number, ib: number, csa: number, csb: number, esa: number, esb: number) => { +export const transformVectors2 = (fn: VecOp2, a: Vec, b: ReadonlyVec, n: number, ia: number, ib: number, csa: number, csb: number, esa: number, esb: number) => { for (; n > 0; n-- , ia += esa, ib += esb) { fn(a, b, ia, ib, csa, csb); } diff --git a/packages/vectors/src/gvec.ts b/packages/vectors/src/gvec.ts index 1926566698..c15727b047 100644 --- a/packages/vectors/src/gvec.ts +++ b/packages/vectors/src/gvec.ts @@ -1,4 +1,9 @@ -import { ICopy, IEqualsDelta, IEquiv, ILength } from "@thi.ng/api/api"; +import { + ICopy, + IEqualsDelta, + IEquiv, + ILength +} from "@thi.ng/api/api"; import { isArrayLike } from "@thi.ng/checks/is-arraylike"; import { illegalArgs } from "@thi.ng/errors/illegal-arguments"; @@ -7,6 +12,7 @@ import { eqDelta, equiv } from "./common"; import { clamp1, EPS, + fract1, sign1, smoothStep1, step1 @@ -132,6 +138,9 @@ export const floor = (a: Vec, num = a.length, i = 0, s = 1) => export const ceil = (a: Vec, num = a.length, i = 0, s = 1) => opg1(Math.ceil, a, num, i, s); +export const fract = (a: Vec, num = a.length, i = 0, s = 1) => + opg1(fract1, a, num, i, s); + export const sin = (a: Vec, num = a.length, i = 0, s = 1) => opg1(Math.sin, a, num, i, s); @@ -195,6 +204,16 @@ export class GVec implements return this.n; } + getAt(i: number, safe = true) { + safe && this.ensureIndex(i); + return this.buf[this.i + i * this.s]; + } + + setAt(i: number, x: number, safe = true) { + safe && this.ensureIndex(i); + this.buf[this.i + i * this.s] = x; + } + copy() { return new GVec(get(this.buf, this.n, this.i, this.s)); } @@ -325,6 +344,11 @@ export class GVec implements return this; } + fract() { + fract(this.buf, this.n, this.i, this.s); + return this; + } + floor() { floor(this.buf, this.n, this.i, this.s); return this; @@ -399,4 +423,8 @@ export class GVec implements protected ensureSize(v: Readonly) { this.n !== v.n && illegalArgs(`vector size: ${v.n} (needed ${this.n})`); } + + protected ensureIndex(i: number) { + (i < 0 && i >= this.n) && illegalArgs(`index out of bounds: ${i}`); + } } diff --git a/packages/vectors/src/math.ts b/packages/vectors/src/math.ts index c14330be94..282ba4df39 100644 --- a/packages/vectors/src/math.ts +++ b/packages/vectors/src/math.ts @@ -8,10 +8,10 @@ export const RAD2DEG = 180 / PI; export let EPS = 1e-6; -export const absDiff = (x: number, y: number) => +export const absDiff1 = (x: number, y: number) => Math.abs(x - y); -export const atan2Abs = (y: number, x: number) => { +export const atan2Abs1 = (y: number, x: number) => { const theta = Math.atan2(y, x); return theta < 0 ? TAU + theta : theta; }; @@ -74,6 +74,14 @@ export const smoothStep1 = (edge: number, edge2: number, x: number) => { return (3 - 2 * t) * t * t; }; +export const expStep1 = (x: number, k: number, n: number) => + Math.exp(-k * Math.pow(x, n)); + +export const gain1 = (x: number, k: number) => + x < 0.5 ? + 0.5 * Math.pow(2 * x, k) : + 1 - 0.5 * Math.pow(2 - 2 * x, k); + export const min2id = (a, b) => a <= b ? 0 : 1; @@ -108,19 +116,28 @@ export const max4id = (a, b, c, d) => (b >= d ? 1 : 3) : (c >= d ? 2 : 3)); +export const smin1 = (a: number, b: number, k: number) => + -Math.log(Math.exp(-k * a) + Math.exp(-k * b)) / k; + +export const smax1 = (a: number, b: number, k: number) => + Math.log(Math.exp(a) + Math.exp(b)) / k; + /** - * Clamps value `x` to given closed interval. - * - * @param x value to clamp - * @param min lower bound - * @param max upper bound - */ +* Clamps value `x` to given closed interval. +* +* @param x value to clamp +* @param min lower bound +* @param max upper bound +*/ export const clamp1 = (x: number, min: number, max: number) => x < min ? min : x > max ? max : x; export const mix1 = (a: number, b: number, t: number) => a + (b - a) * t; +export const norm1 = (x: number, a: number, b: number) => + (x - a) / (b - a); + export const fit1 = (x: number, a: number, b: number, c: number, d: number) => c + (d - c) * (x - a) / (b - a); @@ -130,6 +147,9 @@ export const fitClamped1 = (x: number, a: number, b: number, c: number, d: numbe export const sign1 = (x: number, eps = EPS) => x > eps ? 1 : x < -eps ? -1 : 0; +export const fract1 = (x: number) => + x - Math.floor(x); + export const trunc1 = (x: number) => x < 0 ? Math.ceil(x) : Math.floor(x); @@ -143,7 +163,7 @@ export const roundTo1 = (x: number, prec = 1) => * @param min * @param max */ -export const inRange = (x: number, min: number, max: number) => +export const inRange1 = (x: number, min: number, max: number) => x >= min && x <= max; /** @@ -153,5 +173,8 @@ export const inRange = (x: number, min: number, max: number) => * @param min * @param max */ -export const inOpenRange = (x: number, min: number, max: number) => +export const inOpenRange1 = (x: number, min: number, max: number) => x > min && x < max; + +export const hash1 = (x: number) => + fract1(Math.sin(x) * 758.5453); diff --git a/packages/vectors/src/vec2.ts b/packages/vectors/src/vec2.ts index 3d06adbda3..dab7edd1fb 100644 --- a/packages/vectors/src/vec2.ts +++ b/packages/vectors/src/vec2.ts @@ -17,9 +17,10 @@ import { } from "./api"; import { declareIndices } from "./common"; import { - atan2Abs, + atan2Abs1, EPS, eqDelta1, + fract1, HALF_PI, max2id, min2id, @@ -49,7 +50,7 @@ export const setN2 = (a: Vec, n: number, ia = 0, sa = 1) => export const setS2 = (a: Vec, x: number, y: number, ia = 0, sa = 1) => (a[ia] = x, a[ia + sa] = y, a); -export const swizzle2 = (a: Vec, b: Vec, x: number, y: number, ia = 0, ib = 0, sa = 1, sb = 1) => { +export const swizzle2 = (a: Vec, b: ReadonlyVec, x: number, y: number, ia = 0, ib = 0, sa = 1, sb = 1) => { const xx = b[ib + x * sb]; const yy = b[ib + y * sb]; a[ia] = xx; @@ -57,6 +58,13 @@ export const swizzle2 = (a: Vec, b: Vec, x: number, y: number, ia = 0, ib = 0, s return a; }; +export const swap2 = (a: Vec, b: Vec, ia = 0, ib = 0, sa = 1, sb = 1) => { + let t = a[ia]; a[ia] = b[ib]; b[ib] = t; + ia += sa; ib += sb; + t = a[ia]; a[ia] = b[ib]; b[ib] = t; + return a; +}; + export const equiv2 = (a: ReadonlyVec, b: ReadonlyVec, ia = 0, ib = 0, sa = 1, sb = 1) => a[ia] === b[ib] && a[ia + sa] === b[ib + sb]; @@ -104,6 +112,9 @@ export const floor2 = (a: Vec, ia = 0, sa = 1) => export const ceil2 = (a: Vec, ia = 0, sa = 1) => op2(Math.ceil, a, ia, sa); +export const fract2 = (a: Vec, ia = 0, sa = 1) => + op2(fract1, a, ia, sa); + export const sin2 = (a: Vec, ia = 0, sa = 1) => op2(Math.sin, a, ia, sa); @@ -229,7 +240,7 @@ export const rotateAroundPoint2 = (a: Vec, b: Vec, theta: number, ia = 0, ib = 0 }; export const heading2 = (a: ReadonlyVec, ia = 0, sa = 1) => - atan2Abs(a[ia + sa], a[ia]); + atan2Abs1(a[ia + sa], a[ia]); export const angleBetween2 = (a: ReadonlyVec, b: ReadonlyVec, normalize = false, ia = 0, ib = 0, sa = 1, sb = 1): number => normalize ? @@ -243,7 +254,7 @@ export const bisect2 = (a: ReadonlyVec, b: ReadonlyVec, ia = 0, ib = 0, sa = 1, export const toPolar2 = (a: Vec, ia = 0, sa = 1) => { const x = a[ia], y = a[ia + sa]; - return setS2(a, Math.sqrt(x * x + y * y), atan2Abs(y, x), ia, sa); + return setS2(a, Math.sqrt(x * x + y * y), atan2Abs1(y, x), ia, sa); }; export const toCartesian2 = (a: Vec, b: ReadonlyVec = ZERO4, ia = 0, ib = 0, sa = 1, sb = 1) => { @@ -363,6 +374,11 @@ export class Vec2 implements return this; } + swap(v: Vec2) { + swap2(this.buf, v.buf, this.i, v.i, this.s, v.s); + return this; + } + add(v: Readonly) { add2(this.buf, v.buf, this.i, v.i, this.s, v.s); return this; @@ -428,6 +444,11 @@ export class Vec2 implements return this; } + fract() { + fract2(this.buf, this.i, this.s); + return this; + } + sqrt() { sqrt2(this.buf, this.i, this.s); return this; diff --git a/packages/vectors/src/vec3.ts b/packages/vectors/src/vec3.ts index 24bd8db621..659052034d 100644 --- a/packages/vectors/src/vec3.ts +++ b/packages/vectors/src/vec3.ts @@ -17,9 +17,10 @@ import { } from "./api"; import { declareIndices } from "./common"; import { - atan2Abs, + atan2Abs1, EPS, eqDelta1, + fract1, max3id, min3id, sign1, @@ -67,7 +68,7 @@ export const setN3 = (a: Vec, n: number, ia = 0, sa = 1) => ( export const setS3 = (a: Vec, x: number, y: number, z: number, ia = 0, sa = 1) => (a[ia] = x, a[ia + sa] = y, a[ia + 2 * sa] = z, a); -export const swizzle3 = (a: Vec, b: Vec, x: number, y: number, z: number, ia = 0, ib = 0, sa = 1, sb = 1) => { +export const swizzle3 = (a: Vec, b: ReadonlyVec, x: number, y: number, z: number, ia = 0, ib = 0, sa = 1, sb = 1) => { const xx = b[ib + x * sb]; const yy = b[ib + y * sb]; const zz = b[ib + z * sb]; @@ -77,6 +78,15 @@ export const swizzle3 = (a: Vec, b: Vec, x: number, y: number, z: number, ia = 0 return a; }; +export const swap3 = (a: Vec, b: Vec, ia = 0, ib = 0, sa = 1, sb = 1) => { + let t = a[ia]; a[ia] = b[ib]; b[ib] = t; + ia += sa; ib += sb; + t = a[ia]; a[ia] = b[ib]; b[ib] = t; + ia += sa; ib += sb; + t = a[ia]; a[ia] = b[ib]; b[ib] = t; + return a; +}; + export const equiv3 = (a: ReadonlyVec, b: ReadonlyVec, ia = 0, ib = 0, sa = 1, sb = 1) => a[ia] === b[ib] && a[ia + sa] === b[ib + sb] && @@ -142,6 +152,9 @@ export const floor3 = (a: Vec, ia = 0, sa = 1) => export const ceil3 = (a: Vec, ia = 0, sa = 1) => op3(Math.ceil, a, ia, sa); +export const fract3 = (a: Vec, ia = 0, sa = 1) => + op3(fract1, a, ia, sa); + export const sin3 = (a: Vec, ia = 0, sa = 1) => op3(Math.sin, a, ia, sa); @@ -317,10 +330,10 @@ export const rotateAroundAxis3 = (v: Vec, axis: Vec, theta: number, ia = 0, ib = export const headingXY3 = heading2; export const headingXZ3 = (a: ReadonlyVec, ia = 0, sa = 1) => - atan2Abs(a[ia + 2 * sa], a[ia]); + atan2Abs1(a[ia + 2 * sa], a[ia]); export const headingYZ3 = (a: ReadonlyVec, ia = 0, sa = 1) => - atan2Abs(a[ia + 2 * sa], a[ia + sa]); + atan2Abs1(a[ia + 2 * sa], a[ia + sa]); export const angleBetween3 = (a: ReadonlyVec, b: ReadonlyVec, normalize = false, ia = 0, ib = 0, sa = 1, sb = 1): number => normalize ? @@ -332,7 +345,7 @@ export const toSpherical3 = (a: Vec, ia = 0, sa = 1) => { const y = a[ia + sa]; const z = a[ia + 2 * sa]; const r = Math.sqrt(x * x + y * y + z * z); - return setS3(a, r, Math.asin(z / r), atan2Abs(y, x), ia, sa); + return setS3(a, r, Math.asin(z / r), atan2Abs1(y, x), ia, sa); }; export const toCartesian3 = (a: Vec, b: ReadonlyVec = ZERO4, ia = 0, ib = 0, sa = 1, sb = 1) => { @@ -469,6 +482,11 @@ export class Vec3 implements return this; } + swap(v: Vec3) { + swap3(this.buf, v.buf, this.i, v.i, this.s, v.s); + return this; + } + add(v: Readonly) { add3(this.buf, v.buf, this.i, v.i, this.s, v.s); return this; @@ -534,6 +552,11 @@ export class Vec3 implements return this; } + fract() { + fract3(this.buf, this.i, this.s); + return this; + } + sqrt() { sqrt3(this.buf, this.i, this.s); return this; diff --git a/packages/vectors/src/vec4.ts b/packages/vectors/src/vec4.ts index 88994cb4d2..aee1c17f92 100644 --- a/packages/vectors/src/vec4.ts +++ b/packages/vectors/src/vec4.ts @@ -19,6 +19,7 @@ import { declareIndices } from "./common"; import { EPS, eqDelta1, + fract1, max4id, min4id, smoothStep1, @@ -68,7 +69,7 @@ export const setS4 = (a: Vec, x: number, y: number, z: number, w: number, ia = 0 a ); -export const swizzle4 = (a: Vec, b: Vec, x: number, y: number, z: number, w: number, ia = 0, ib = 0, sa = 1, sb = 1) => { +export const swizzle4 = (a: Vec, b: ReadonlyVec, x: number, y: number, z: number, w: number, ia = 0, ib = 0, sa = 1, sb = 1) => { const xx = b[ib + x * sb]; const yy = b[ib + y * sb]; const zz = b[ib + z * sb]; @@ -80,6 +81,17 @@ export const swizzle4 = (a: Vec, b: Vec, x: number, y: number, z: number, w: num return a; }; +export const swap4 = (a: Vec, b: Vec, ia = 0, ib = 0, sa = 1, sb = 1) => { + let t = a[ia]; a[ia] = b[ib]; b[ib] = t; + ia += sa; ib += sb; + t = a[ia]; a[ia] = b[ib]; b[ib] = t; + ia += sa; ib += sb; + t = a[ia]; a[ia] = b[ib]; b[ib] = t; + ia += sa; ib += sb; + t = a[ia]; a[ia] = b[ib]; b[ib] = t; + return a; +}; + export const equiv4 = (a: ReadonlyVec, b: ReadonlyVec, ia = 0, ib = 0, sa = 1, sb = 1) => a[ia] === b[ib] && a[ia + sa] === b[ib + sb] && @@ -151,6 +163,9 @@ export const floor4 = (a: Vec, ia = 0, sa = 1) => export const ceil4 = (a: Vec, ia = 0, sa = 1) => op4(Math.ceil, a, ia, sa); +export const fract4 = (a: Vec, ia = 0, sa = 1) => + op4(fract1, a, ia, sa); + export const sin4 = (a: Vec, ia = 0, sa = 1) => op4(Math.sin, a, ia, sa); @@ -391,6 +406,11 @@ export class Vec4 implements return this; } + swap(v: Vec4) { + swap4(this.buf, v.buf, this.i, v.i, this.s, v.s); + return this; + } + add(v: Readonly) { add4(this.buf, v.buf, this.i, v.i, this.s, v.s); return this; @@ -456,6 +476,11 @@ export class Vec4 implements return this; } + fract() { + fract4(this.buf, this.i, this.s); + return this; + } + sqrt() { sqrt4(this.buf, this.i, this.s); return this; From d1b77cfeeae7ad727b5ab898a2d8719511231de4 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Thu, 30 Aug 2018 17:25:12 +0100 Subject: [PATCH 36/60] docs(vectors): update readme --- packages/vectors/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/vectors/README.md b/packages/vectors/README.md index 6666ed659e..29f964c9a7 100644 --- a/packages/vectors/README.md +++ b/packages/vectors/README.md @@ -46,7 +46,8 @@ All of the vector operations listed below are also available via class wrappers of strided buffer views. These vector classes (`Vec2/3/4`) are array-like themselves and provide array index and `.x`, `.y`, `.z`, `.w` property accessors (including `.length`). The `GVec` class wrapper only -provides `.length` read access. All classes are also iterable. +provides `.length` read access and element access via `getAt()` and +`setAt()`. All classes are iterable. ```ts buf = [0, 1, 0, 2, 0, 3]; @@ -92,6 +93,7 @@ start index is 0, default stride 1. See examples below and | Set vector components (uniform) | `setN` | `setN2` | `setN3` | `setN4` | | Set vector components (scalars) | | `setS2` | `setS3` | `setS4` | | Swizzle vector components | | `swizzle2` | `swizzle3` | `swizzle4` | +| Swap vectors | | `swap2` | `swap3` | `swap4` | | Equality (w/ epsilon) | `eqDelta` | `eqDelta2` | `eqDelta3` | `eqDelta4` | | Vector addition | `add` | `add2` | `add3` | `add4` | | Vector subtraction | `sub` | `sub2` | `sub3` | `sub4` | From 75d6409eb10cf0428fe9b772d8f802b51dce0ef6 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Thu, 30 Aug 2018 17:25:30 +0100 Subject: [PATCH 37/60] build: update yarn.lock --- yarn.lock | 407 +++++++++++++++++++++++++----------------------------- 1 file changed, 189 insertions(+), 218 deletions(-) diff --git a/yarn.lock b/yarn.lock index 37ca9107df..8e151c7470 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8,23 +8,23 @@ dependencies: "@babel/highlight" "7.0.0-beta.51" -"@babel/code-frame@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-rc.2.tgz#12b6daeb408238360744649d16c0e9fa7ab3859e" +"@babel/code-frame@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" dependencies: - "@babel/highlight" "7.0.0-rc.2" + "@babel/highlight" "^7.0.0" "@babel/core@^7.0.0-beta.46": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.0.0-rc.2.tgz#dcb46b3adb63e35b1e82c35d9130d9c27be58427" - dependencies: - "@babel/code-frame" "7.0.0-rc.2" - "@babel/generator" "7.0.0-rc.2" - "@babel/helpers" "7.0.0-rc.2" - "@babel/parser" "7.0.0-rc.2" - "@babel/template" "7.0.0-rc.2" - "@babel/traverse" "7.0.0-rc.2" - "@babel/types" "7.0.0-rc.2" + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.0.0.tgz#0cb0c0fd2e78a0a2bec97698f549ae9ce0b99515" + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.0.0" + "@babel/helpers" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" convert-source-map "^1.1.0" debug "^3.1.0" json5 "^0.5.0" @@ -43,11 +43,11 @@ source-map "^0.5.0" trim-right "^1.0.1" -"@babel/generator@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-rc.2.tgz#7aed8fb4ef1bdcc168225096b5b431744ba76bf8" +"@babel/generator@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0.tgz#1efd58bffa951dc846449e58ce3a1d7f02d393aa" dependencies: - "@babel/types" "7.0.0-rc.2" + "@babel/types" "^7.0.0" jsesc "^2.5.1" lodash "^4.17.10" source-map "^0.5.0" @@ -61,13 +61,13 @@ "@babel/template" "7.0.0-beta.51" "@babel/types" "7.0.0-beta.51" -"@babel/helper-function-name@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-rc.2.tgz#ad7bb9df383c5f53e4bf38c0fe0c7f93e6a27729" +"@babel/helper-function-name@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0.tgz#a68cc8d04420ccc663dd258f9cc41b8261efa2d4" dependencies: - "@babel/helper-get-function-arity" "7.0.0-rc.2" - "@babel/template" "7.0.0-rc.2" - "@babel/types" "7.0.0-rc.2" + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/template" "^7.0.0" + "@babel/types" "^7.0.0" "@babel/helper-get-function-arity@7.0.0-beta.51": version "7.0.0-beta.51" @@ -75,11 +75,11 @@ dependencies: "@babel/types" "7.0.0-beta.51" -"@babel/helper-get-function-arity@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-rc.2.tgz#323cb82e2d805b40c0c36be1dfcb8ffcbd0434f3" +"@babel/helper-get-function-arity@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" dependencies: - "@babel/types" "7.0.0-rc.2" + "@babel/types" "^7.0.0" "@babel/helper-split-export-declaration@7.0.0-beta.51": version "7.0.0-beta.51" @@ -87,19 +87,19 @@ dependencies: "@babel/types" "7.0.0-beta.51" -"@babel/helper-split-export-declaration@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-rc.2.tgz#726b2dec4e46baeab32db67caa6e88b6521464f8" +"@babel/helper-split-export-declaration@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" dependencies: - "@babel/types" "7.0.0-rc.2" + "@babel/types" "^7.0.0" -"@babel/helpers@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.0.0-rc.2.tgz#e21f54451824f55b4f5022c6e9d6fa7df65e8746" +"@babel/helpers@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.0.0.tgz#7213388341eeb07417f44710fd7e1d00acfa6ac0" dependencies: - "@babel/template" "7.0.0-rc.2" - "@babel/traverse" "7.0.0-rc.2" - "@babel/types" "7.0.0-rc.2" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" "@babel/highlight@7.0.0-beta.51": version "7.0.0-beta.51" @@ -109,9 +109,9 @@ esutils "^2.0.2" js-tokens "^3.0.0" -"@babel/highlight@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-rc.2.tgz#0af688a69e3709d9cf392e1837cda18c08d34d4f" +"@babel/highlight@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" dependencies: chalk "^2.0.0" esutils "^2.0.2" @@ -121,9 +121,9 @@ version "7.0.0-beta.51" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.0.0-beta.51.tgz#27cec2df409df60af58270ed8f6aa55409ea86f6" -"@babel/parser@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.0.0-rc.2.tgz#a98c01af5834e71d48a5108e3aeeee333cdf26c4" +"@babel/parser@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.0.0.tgz#697655183394facffb063437ddf52c0277698775" "@babel/template@7.0.0-beta.51": version "7.0.0-beta.51" @@ -134,13 +134,13 @@ "@babel/types" "7.0.0-beta.51" lodash "^4.17.5" -"@babel/template@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-rc.2.tgz#53f6be6c1336ddc7744625c9bdca9d10be5d5d72" +"@babel/template@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0.tgz#c2bc9870405959c89a9c814376a2ecb247838c80" dependencies: - "@babel/code-frame" "7.0.0-rc.2" - "@babel/parser" "7.0.0-rc.2" - "@babel/types" "7.0.0-rc.2" + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/types" "^7.0.0" "@babel/traverse@7.0.0-beta.51": version "7.0.0-beta.51" @@ -157,16 +157,16 @@ invariant "^2.2.0" lodash "^4.17.5" -"@babel/traverse@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-rc.2.tgz#6e54ebe82aa1b3b3cf5ec05594bc14d7c59c9766" - dependencies: - "@babel/code-frame" "7.0.0-rc.2" - "@babel/generator" "7.0.0-rc.2" - "@babel/helper-function-name" "7.0.0-rc.2" - "@babel/helper-split-export-declaration" "7.0.0-rc.2" - "@babel/parser" "7.0.0-rc.2" - "@babel/types" "7.0.0-rc.2" +"@babel/traverse@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0.tgz#b1fe9b6567fdf3ab542cfad6f3b31f854d799a61" + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.0.0" + "@babel/helper-function-name" "^7.0.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/types" "^7.0.0" debug "^3.1.0" globals "^11.1.0" lodash "^4.17.10" @@ -179,9 +179,9 @@ lodash "^4.17.5" to-fast-properties "^2.0.0" -"@babel/types@7.0.0-rc.2": - version "7.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-rc.2.tgz#8e025b78764cee8751823e308558a3ca144ebd9d" +"@babel/types@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0.tgz#6e191793d3c854d19c6749989e3bc55f0e962118" dependencies: esutils "^2.0.2" lodash "^4.17.10" @@ -230,8 +230,8 @@ resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.5.tgz#8a4accfc403c124a0bafe8a9fc61a05ec1032073" "@types/node@*", "@types/node@^10.5.5": - version "10.9.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.9.1.tgz#06f002136fbcf51e730995149050bb3c45ee54e6" + version "10.9.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.9.3.tgz#85f288502503ade0b3bfc049fe1777b05d0327d5" "@types/shelljs@0.7.8": version "0.7.8" @@ -412,6 +412,10 @@ add-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" +ajv-errors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.0.tgz#ecf021fa108fd17dfb5e6b383f2dd233e31ffc59" + ajv-keywords@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" @@ -437,6 +441,10 @@ amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" +ansi-colors@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.0.5.tgz#cb9dc64993b64fd6945485f797fc3853137d9a7b" + ansi-escapes@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" @@ -470,11 +478,11 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -append-transform@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" +append-transform@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab" dependencies: - default-require-extensions "^1.0.0" + default-require-extensions "^2.0.0" aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" @@ -525,13 +533,6 @@ array-ify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" -array-includes@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" - dependencies: - define-properties "^1.1.2" - es-abstract "^1.7.0" - array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -1040,7 +1041,7 @@ center-align@^0.1.1: chalk@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + resolved "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: ansi-styles "^2.2.1" escape-string-regexp "^1.0.2" @@ -1048,7 +1049,7 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1: +chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" dependencies: @@ -1170,14 +1171,14 @@ collection-visit@^1.0.0: object-visit "^1.0.0" color-convert@^1.9.0: - version "1.9.2" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.2.tgz#49881b8fba67df12a96bdf3f56c0aab9e7913147" + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" dependencies: - color-name "1.1.1" + color-name "1.1.3" -color-name@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689" +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" columnify@^1.5.4: version "1.5.4" @@ -1504,7 +1505,7 @@ cross-spawn@^5.0.1: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^6.0.5: +cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" dependencies: @@ -1540,12 +1541,6 @@ cyclist@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" -d@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" - dependencies: - es5-ext "^0.10.9" - dargs@^4.0.1: version "4.1.0" resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" @@ -1609,12 +1604,25 @@ deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" +default-gateway@^2.6.0: + version "2.7.2" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-2.7.2.tgz#b7ef339e5e024b045467af403d50348db4642d0f" + dependencies: + execa "^0.10.0" + ip-regex "^2.1.0" + default-require-extensions@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" dependencies: strip-bom "^2.0.0" +default-require-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7" + dependencies: + strip-bom "^3.0.0" + defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" @@ -1798,7 +1806,7 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.5.1, es-abstract@^1.7.0: +es-abstract@^1.5.1: version "1.12.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" dependencies: @@ -1816,29 +1824,6 @@ es-to-primitive@^1.1.1: is-date-object "^1.0.1" is-symbol "^1.0.1" -es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.46" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.46.tgz#efd99f67c5a7ec789baa3daa7f79870388f7f572" - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.1" - next-tick "1" - -es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-symbol@^3.1.1, es6-symbol@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - dependencies: - d "1" - es5-ext "~0.10.14" - escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -1897,6 +1882,18 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" +execa@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50" + dependencies: + cross-spawn "^6.0.0" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + execa@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" @@ -2267,7 +2264,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob@7.1.2, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2: +glob@7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -2278,6 +2275,17 @@ glob@7.1.2, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glo once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + global-modules-path@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/global-modules-path/-/global-modules-path-2.3.0.tgz#b0e2bac6beac39745f7db5c59d26a36a0b94f7dc" @@ -2348,10 +2356,6 @@ has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" -has-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -2588,11 +2592,12 @@ inquirer@^6.0.0: strip-ansi "^4.0.0" through "^2.3.6" -internal-ip@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c" +internal-ip@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-3.0.1.tgz#df5c99876e1d2eb2ea2d74f520e3f669a00ece27" dependencies: - meow "^3.3.0" + default-gateway "^2.6.0" + ipaddr.js "^1.5.2" interpret@^1.0.0, interpret@^1.1.0: version "1.1.0" @@ -2608,6 +2613,10 @@ invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + ip@^1.1.0, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" @@ -2616,6 +2625,10 @@ ipaddr.js@1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e" +ipaddr.js@^1.5.2: + version "1.8.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.1.tgz#fa4b79fa47fd3def5e3b159825161c0a519c9427" + is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -2834,7 +2847,7 @@ isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" -istanbul-lib-coverage@^1.1.2, istanbul-lib-coverage@^1.2.0: +istanbul-lib-coverage@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz#f7d8f2e42b97e37fe796114cb0f9d68b5e3a4341" @@ -2843,10 +2856,10 @@ istanbul-lib-coverage@^2.0.1: resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#2aee0e073ad8c5f6a0b00e0dfbf52b4667472eda" istanbul-lib-hook@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz#8538d970372cb3716d53e55523dd54b557a8d89b" + version "1.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.1.tgz#f614ec45287b2a8fc4f07f5660af787575601805" dependencies: - append-transform "^0.4.0" + append-transform "^1.0.0" istanbul-lib-instrument@^2.1.0: version "2.3.2" @@ -2861,10 +2874,10 @@ istanbul-lib-instrument@^2.1.0: semver "^5.5.0" istanbul-lib-report@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.3.tgz#2df12188c0fa77990c0d2176d2d0ba3394188259" + version "1.1.4" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz#e886cdf505c4ebbd8e099e4396a90d0a28e2acb5" dependencies: - istanbul-lib-coverage "^1.1.2" + istanbul-lib-coverage "^1.2.0" mkdirp "^0.5.1" path-parse "^1.0.5" supports-color "^3.1.2" @@ -3099,23 +3112,10 @@ lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" -log-symbols@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - dependencies: - chalk "^2.0.1" - loglevel@^1.4.1: version "1.6.1" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" -loglevelnext@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/loglevelnext/-/loglevelnext-1.0.5.tgz#36fc4f5996d6640f539ff203ba819641680d75a2" - dependencies: - es6-symbol "^3.1.1" - object.assign "^4.1.0" - long@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" @@ -3286,25 +3286,21 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -"mime-db@>= 1.34.0 < 2": +"mime-db@>= 1.34.0 < 2", mime-db@~1.36.0: version "1.36.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.36.0.tgz#5020478db3c7fe93aad7bbcc4dcf869c43363397" -mime-db@~1.35.0: - version "1.35.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.35.0.tgz#0569d657466491283709663ad379a99b90d9ab47" - mime-types@~2.1.17, mime-types@~2.1.18: - version "2.1.19" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.19.tgz#71e464537a7ef81c15f2db9d97e913fc0ff606f0" + version "2.1.20" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.20.tgz#930cb719d571e903738520f8470911548ca2cc19" dependencies: - mime-db "~1.35.0" + mime-db "~1.36.0" mime@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" -mime@^2.1.0: +mime@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" @@ -3386,7 +3382,7 @@ mixin-deep@^1.2.0: mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: minimist "0.0.8" @@ -3445,8 +3441,8 @@ mute-stream@0.0.7: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" nan@^2.9.2: - version "2.10.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" + version "2.11.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.0.tgz#574e360e4d954ab16966ec102c0c049fd961a099" nanomatch@^1.2.9: version "1.2.13" @@ -3480,13 +3476,9 @@ neo-async@^2.5.0: version "2.5.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.2.tgz#489105ce7bc54e709d736b195f82135048c50fcc" -next-tick@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - nice-try@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4" + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" node-forge@0.7.5: version "0.7.5" @@ -3631,7 +3623,7 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-keys@^1.0.11, object-keys@^1.0.12: +object-keys@^1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" @@ -3641,15 +3633,6 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - object.getownpropertydescriptors@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" @@ -4333,6 +4316,14 @@ schema-utils@^0.4.4, schema-utils@^0.4.5: ajv "^6.1.0" ajv-keywords "^3.1.0" +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -4807,13 +4798,12 @@ tempfile@^1.1.1: uuid "^2.0.1" test-exclude@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.1.tgz#dfa222f03480bca69207ca728b37d74b45f724fa" + version "4.2.2" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.2.tgz#8b67aa8408f84afc225b06669e25c510f8582820" dependencies: arrify "^1.0.1" - micromatch "^3.1.8" - object-assign "^4.1.0" - read-pkg-up "^1.0.1" + minimatch "^3.0.4" + read-pkg-up "^3.0.0" require-main-filename "^1.0.1" text-extensions@^1.0.0: @@ -4977,7 +4967,7 @@ typedoc@^0.11.1: typescript@2.7.2: version "2.7.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.7.2.tgz#2d615a1ef4aee4f574425cdff7026edf81919836" + resolved "http://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz#2d615a1ef4aee4f574425cdff7026edf81919836" typescript@^3.0.1: version "3.0.1" @@ -5129,7 +5119,7 @@ uuid@^2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" -uuid@^3.0.1, uuid@^3.1.0: +uuid@^3.0.1, uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" @@ -5190,24 +5180,23 @@ webpack-cli@^3.1.0: v8-compile-cache "^2.0.0" yargs "^12.0.1" -webpack-dev-middleware@3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.1.3.tgz#8b32aa43da9ae79368c1bf1183f2b6cf5e1f39ed" +webpack-dev-middleware@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.2.0.tgz#a20ceef194873710052da678f3c6ee0aeed92552" dependencies: loud-rejection "^1.6.0" memory-fs "~0.4.1" - mime "^2.1.0" + mime "^2.3.1" path-is-absolute "^1.0.0" range-parser "^1.0.3" url-join "^4.0.0" - webpack-log "^1.0.1" + webpack-log "^2.0.0" webpack-dev-server@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.5.tgz#87477252e1ac6789303fb8cd3e585fa5d508a401" + version "3.1.7" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.7.tgz#cbf8071cc092d9493732aee4f062f0e065994854" dependencies: ansi-html "0.0.7" - array-includes "^3.0.3" bonjour "^3.5.0" chokidar "^2.0.0" compression "^1.5.2" @@ -5218,12 +5207,13 @@ webpack-dev-server@^3.1.5: html-entities "^1.2.0" http-proxy-middleware "~0.18.0" import-local "^1.0.0" - internal-ip "1.2.0" + internal-ip "^3.0.1" ip "^1.1.5" killable "^1.0.0" loglevel "^1.4.1" opn "^5.1.0" portfinder "^1.0.9" + schema-utils "^1.0.0" selfsigned "^1.9.1" serve-index "^1.7.2" sockjs "0.3.19" @@ -5231,22 +5221,20 @@ webpack-dev-server@^3.1.5: spdy "^3.4.1" strip-ansi "^3.0.0" supports-color "^5.1.0" - webpack-dev-middleware "3.1.3" - webpack-log "^1.1.2" - yargs "11.0.0" + webpack-dev-middleware "3.2.0" + webpack-log "^2.0.0" + yargs "12.0.1" -webpack-log@^1.0.1, webpack-log@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-1.2.0.tgz#a4b34cda6b22b518dbb0ab32e567962d5c72a43d" +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" dependencies: - chalk "^2.1.0" - log-symbols "^2.1.0" - loglevelnext "^1.0.1" - uuid "^3.1.0" + ansi-colors "^3.0.0" + uuid "^3.3.2" webpack-sources@^1.0.1, webpack-sources@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54" + version "1.2.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.2.0.tgz#18181e0d013fce096faf6f8e6d41eeffffdceac2" dependencies: source-list-map "^2.0.0" source-map "~0.6.1" @@ -5419,23 +5407,6 @@ yargs-parser@^9.0.2: dependencies: camelcase "^4.1.0" -yargs@11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.0.0.tgz#c052931006c5eee74610e5fc0354bedfd08a201b" - dependencies: - cliui "^4.0.0" - decamelize "^1.1.1" - find-up "^2.1.0" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^9.0.2" - yargs@11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" @@ -5453,7 +5424,7 @@ yargs@11.1.0: y18n "^3.2.1" yargs-parser "^9.0.2" -yargs@^12.0.1: +yargs@12.0.1, yargs@^12.0.1: version "12.0.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.1.tgz#6432e56123bb4e7c3562115401e98374060261c2" dependencies: From 0673f0f4f021f960470c619e73e560a3b1ab3256 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Thu, 30 Aug 2018 17:46:31 +0100 Subject: [PATCH 38/60] fix(examples): fix #38, add missing dep --- examples/commit-table-ssr/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/commit-table-ssr/package.json b/examples/commit-table-ssr/package.json index 969a8198b3..5cf5e0f931 100644 --- a/examples/commit-table-ssr/package.json +++ b/examples/commit-table-ssr/package.json @@ -25,6 +25,7 @@ "@thi.ng/resolve-map": "latest", "@thi.ng/rstream": "latest", "@thi.ng/transducers": "latest", + "@thi.ng/transducers-hdom": "latest", "@types/express": "^4.16.0" } } \ No newline at end of file From 461adeefd0b16c44e4f7fa77cb60c6561a374eca Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Thu, 30 Aug 2018 18:05:48 +0100 Subject: [PATCH 39/60] docs(resolve-map): fix #35, update docs & tests --- packages/resolve-map/README.md | 22 ++++++++++++---------- packages/resolve-map/test/index.ts | 6 +++--- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/packages/resolve-map/README.md b/packages/resolve-map/README.md index a2b03a4751..7e1da6f9f2 100644 --- a/packages/resolve-map/README.md +++ b/packages/resolve-map/README.md @@ -58,9 +58,11 @@ Any function values are called using two possible conventions: 2) If no de-structure form is found in the function's arguments, the function is only called with `resolve` as argument. -**Important:** Since ES6 var names can't contain special characters, -destructured keys can ALWAYS only be looked up as siblings of the -currently processed key. +**Important:** ES6 destructuring can *only* be used for ES6 compile +targets and *will fail when transpiling to ES5*. If you're not sure, use +the 2nd (legacy) form. Also, since ES6 var names can't contain special +characters, destructured keys can ALWAYS only be looked up as siblings +of the currently processed key. The `resolve` function provided as arg to the user function accepts a path (**without `@` prefix**) to look up any other values in the root @@ -135,22 +137,22 @@ import * as tx from "@thi.ng/transducers"; // will be injected later as well const stats = { // sequence average - mean: ({src}) => tx.reduce(tx.mean(), src), + mean: ({ src }) => tx.mean(src), // sequence range - range: ({min,max}) => max - min, + range: ({ min, max }) => max - min, // computes sequence min val - min: ({src}) => tx.reduce(tx.min(), src), + min: ({ src }) => tx.min(src), // computes sequence max val - max: ({src}) => tx.reduce(tx.max(), src), + max: ({ src }) => tx.max(src), // sorted copy - sorted: ({src}) => [...src].sort((a, b) => a - b), + sorted: ({ src }) => [...src].sort((a, b) => a - b), // standard deviation - sd: ({src, mean})=> + sd: ({ src, mean })=> Math.sqrt( tx.transduce(tx.map((x) => Math.pow(x - mean, 2)), tx.add(), src) / (src.length - 1)), // compute 10th - 90th percentiles - percentiles: ({sorted}) => { + percentiles: ({ sorted }) => { return tx.transduce( tx.map((x) => sorted[Math.floor(x / 100 * sorted.length)]), tx.push(), diff --git a/packages/resolve-map/test/index.ts b/packages/resolve-map/test/index.ts index 94b02ab9a8..98ca8b5adb 100644 --- a/packages/resolve-map/test/index.ts +++ b/packages/resolve-map/test/index.ts @@ -73,13 +73,13 @@ describe("resolve-map", () => { it("destructure", () => { const stats = { // sequence average - mean: ({ src: a }) => tx.reduce(tx.mean(), a), + mean: ({ src: a }) => tx.mean(a), // sequence range range: ({ min, max }) => max - min, // computes sequence min val - min: ({ src }) => tx.reduce(tx.min(), src), + min: ({ src }) => tx.min(src), // computes sequence max val - max: ({ src }) => tx.reduce(tx.max(), src), + max: ({ src }) => tx.max(src), // sorted copy sorted: ({ src }) => [...src].sort((a, b) => a - b), // standard deviation From 80f291b5a723a8cbbdd0ae7985d0ff2caf78ec3a Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Thu, 30 Aug 2018 18:08:54 +0100 Subject: [PATCH 40/60] Publish - @thi.ng/resolve-map@3.0.9 - @thi.ng/rstream-graph@2.1.25 - @thi.ng/vectors@0.5.0 --- packages/resolve-map/CHANGELOG.md | 12 ++++++++++-- packages/resolve-map/package.json | 2 +- packages/rstream-graph/CHANGELOG.md | 8 ++++++++ packages/rstream-graph/package.json | 4 ++-- packages/vectors/CHANGELOG.md | 12 ++++++++++++ packages/vectors/package.json | 2 +- 6 files changed, 34 insertions(+), 6 deletions(-) diff --git a/packages/resolve-map/CHANGELOG.md b/packages/resolve-map/CHANGELOG.md index c9961caf93..017c1809a0 100644 --- a/packages/resolve-map/CHANGELOG.md +++ b/packages/resolve-map/CHANGELOG.md @@ -3,7 +3,15 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. - + +## [3.0.9](https://github.com/thi-ng/umbrella/compare/@thi.ng/resolve-map@3.0.8...@thi.ng/resolve-map@3.0.9) (2018-08-30) + + + + +**Note:** Version bump only for package @thi.ng/resolve-map + + ## [3.0.8](https://github.com/thi-ng/umbrella/compare/@thi.ng/resolve-map@3.0.7...@thi.ng/resolve-map@3.0.8) (2018-08-24) @@ -11,7 +19,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline **Note:** Version bump only for package @thi.ng/resolve-map - + ## [3.0.7](https://github.com/thi-ng/umbrella/compare/@thi.ng/resolve-map@3.0.6...@thi.ng/resolve-map@3.0.7) (2018-08-01) diff --git a/packages/resolve-map/package.json b/packages/resolve-map/package.json index e9328786a9..74f27f99ba 100644 --- a/packages/resolve-map/package.json +++ b/packages/resolve-map/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/resolve-map", - "version": "3.0.8", + "version": "3.0.9", "description": "DAG resolution of vanilla objects & arrays with internally linked values", "main": "./index.js", "typings": "./index.d.ts", diff --git a/packages/rstream-graph/CHANGELOG.md b/packages/rstream-graph/CHANGELOG.md index 82c850b6c4..61052fd6d1 100644 --- a/packages/rstream-graph/CHANGELOG.md +++ b/packages/rstream-graph/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [2.1.25](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-graph@2.1.24...@thi.ng/rstream-graph@2.1.25) (2018-08-30) + + + + +**Note:** Version bump only for package @thi.ng/rstream-graph + ## [2.1.24](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-graph@2.1.23...@thi.ng/rstream-graph@2.1.24) (2018-08-27) diff --git a/packages/rstream-graph/package.json b/packages/rstream-graph/package.json index ed03b2fe0d..efa38188a8 100644 --- a/packages/rstream-graph/package.json +++ b/packages/rstream-graph/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-graph", - "version": "2.1.24", + "version": "2.1.25", "description": "Declarative dataflow graph construction for @thi.ng/rstream", "main": "./index.js", "typings": "./index.d.ts", @@ -32,7 +32,7 @@ "@thi.ng/checks": "^1.5.7", "@thi.ng/errors": "^0.1.6", "@thi.ng/paths": "^1.5.2", - "@thi.ng/resolve-map": "^3.0.8", + "@thi.ng/resolve-map": "^3.0.9", "@thi.ng/rstream": "^1.11.6", "@thi.ng/transducers": "^2.0.1" }, diff --git a/packages/vectors/CHANGELOG.md b/packages/vectors/CHANGELOG.md index 5baa6d6327..4be147ea95 100644 --- a/packages/vectors/CHANGELOG.md +++ b/packages/vectors/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [0.5.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/vectors@0.4.0...@thi.ng/vectors@0.5.0) (2018-08-30) + + +### Features + +* **vectors:** consolidate vector consts, add toJSON() impls ([bdb5d37](https://github.com/thi-ng/umbrella/commit/bdb5d37)) +* **vectors:** update types, update GVec, add maths fns, swap impls ([d5cec94](https://github.com/thi-ng/umbrella/commit/d5cec94)) + + + + # [0.4.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/vectors@0.3.0...@thi.ng/vectors@0.4.0) (2018-08-28) diff --git a/packages/vectors/package.json b/packages/vectors/package.json index c45c313c4f..182f093c18 100644 --- a/packages/vectors/package.json +++ b/packages/vectors/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/vectors", - "version": "0.4.0", + "version": "0.5.0", "description": "Vector algebra for fixed & variable sizes, memory mapped, flexible layouts", "main": "./index.js", "typings": "./index.d.ts", From 0a806011956930f31ca954f4b2dd96d11e0cef1e Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Thu, 30 Aug 2018 21:02:44 +0100 Subject: [PATCH 41/60] refactor(vectors): update mulV*() arg order - align mulV*() arg order w/ rest of fns, i.e. value to be mutated comes first, in this case: vec, mat (before: mat, vec) --- packages/vectors/src/mat23.ts | 4 ++-- packages/vectors/src/mat33.ts | 4 ++-- packages/vectors/src/mat44.ts | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/vectors/src/mat23.ts b/packages/vectors/src/mat23.ts index 62c3d340e9..1878486903 100644 --- a/packages/vectors/src/mat23.ts +++ b/packages/vectors/src/mat23.ts @@ -118,7 +118,7 @@ export const concat23 = (a: Mat, ia: number, ...xs: (ReadonlyMat | [ReadonlyMat, a ); -export const mulV23 = (m: ReadonlyMat, v: Vec, im = 0, iv = 0, sv = 1) => +export const mulV23 = (v: Vec, m: ReadonlyMat, iv = 0, im = 0, sv = 1) => setS2( v, dot2(m, v, im, iv, 2, sv) + m[im + 4], @@ -248,7 +248,7 @@ export class Mat23 implements } mulV(v: Vec2) { - mulV23(this.buf, v.buf, this.i, v.i, v.s); + mulV23(v.buf, this.buf, v.i, this.i, v.s); return v; } diff --git a/packages/vectors/src/mat33.ts b/packages/vectors/src/mat33.ts index 4546eb91e9..40db3dfab0 100644 --- a/packages/vectors/src/mat33.ts +++ b/packages/vectors/src/mat33.ts @@ -137,7 +137,7 @@ export const concat33 = (a: Mat, ia: number, ...xs: (ReadonlyMat | [ReadonlyMat, a ); -export const mulV33 = (m: ReadonlyMat, v: Vec, im = 0, iv = 0, sv = 1) => +export const mulV33 = (v: Vec, m: ReadonlyMat, iv = 0, im = 0, sv = 1) => setS3( v, dot3(m, v, im, iv, 3, sv), @@ -282,7 +282,7 @@ export class Mat33 implements } mulV(v: Vec3) { - mulV33(this.buf, v.buf, this.i, v.i, v.s); + mulV33(v.buf, this.buf, v.i, this.i, v.s); return v; } diff --git a/packages/vectors/src/mat44.ts b/packages/vectors/src/mat44.ts index 0098bad8d9..f4ac55ad13 100644 --- a/packages/vectors/src/mat44.ts +++ b/packages/vectors/src/mat44.ts @@ -227,7 +227,7 @@ export const concat44 = (a: Mat, ia: number, ...xs: (ReadonlyMat | [ReadonlyMat, a ); -export const mulV344 = (m: ReadonlyMat, v: Vec, im = 0, iv = 0, sv = 1) => +export const mulV344 = (v: Vec, m: ReadonlyMat, iv = 0, im = 0, sv = 1) => setS3( v, dot3(m, v, im, iv, 4, sv) + m[12], @@ -236,7 +236,7 @@ export const mulV344 = (m: ReadonlyMat, v: Vec, im = 0, iv = 0, sv = 1) => iv, sv ); -export const mulV44 = (m: ReadonlyMat, v: Vec, im = 0, iv = 0, sv = 1) => +export const mulV44 = (v: Vec, m: ReadonlyMat, iv = 0, im = 0, sv = 1) => setS4( v, dot4(m, v, im, iv, 4, sv), @@ -475,12 +475,12 @@ export class Mat44 implements } mulV3(v: Vec3) { - mulV344(this.buf, v.buf, this.i, v.i, v.s); + mulV344(v.buf, this.buf, v.i, this.i, v.s); return v; } mulV(v: Vec4) { - mulV44(this.buf, v.buf, this.i, v.i, v.s); + mulV44(v.buf, this.buf, v.i, this.i, v.s); return v; } From b8d944ebf53e6560d6033c1dc4fdab8672acda01 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Fri, 31 Aug 2018 15:57:31 +0100 Subject: [PATCH 42/60] refactor(vectors): update matrices & types - update ReadonlyVec/Mat type aliases & uses - add Mat44 factories (perspective, frustum, ortho, lookAt) --- packages/vectors/src/api.ts | 4 +-- packages/vectors/src/gvec.ts | 2 +- packages/vectors/src/mat23.ts | 41 +++++++++++++---------- packages/vectors/src/mat33.ts | 45 ++++++++++++++----------- packages/vectors/src/mat44.ts | 62 +++++++++++++++++++++++------------ packages/vectors/src/vec2.ts | 2 +- packages/vectors/src/vec3.ts | 2 +- packages/vectors/src/vec4.ts | 2 +- 8 files changed, 96 insertions(+), 64 deletions(-) diff --git a/packages/vectors/src/api.ts b/packages/vectors/src/api.ts index 1efb835d4b..9b0f209618 100644 --- a/packages/vectors/src/api.ts +++ b/packages/vectors/src/api.ts @@ -1,10 +1,10 @@ import { NumericArray } from "@thi.ng/api/api"; export type Vec = NumericArray; -export type ReadonlyVec = ArrayLike; +export type ReadonlyVec = ArrayLike & Iterable; export type Mat = NumericArray; -export type ReadonlyMat = ArrayLike; +export type ReadonlyMat = ArrayLike & Iterable; /** * A vector operation involving only a single vector. The vector might diff --git a/packages/vectors/src/gvec.ts b/packages/vectors/src/gvec.ts index c15727b047..653287f499 100644 --- a/packages/vectors/src/gvec.ts +++ b/packages/vectors/src/gvec.ts @@ -222,7 +222,7 @@ export class GVec implements return v instanceof GVec && v.n === this.n ? equiv(this.buf, v.buf, this.n, this.i, v.i, this.s, v.s) : isArrayLike(v) && v.length === this.n ? - equiv(this.buf, v, this.n, this.i, 0, this.s, 1) : + equiv(this.buf, v, this.n, this.i, 0, this.s, 1) : false; } diff --git a/packages/vectors/src/mat23.ts b/packages/vectors/src/mat23.ts index 1878486903..d9078af2f0 100644 --- a/packages/vectors/src/mat23.ts +++ b/packages/vectors/src/mat23.ts @@ -1,6 +1,6 @@ import { ICopy, IEqualsDelta } from "@thi.ng/api/api"; import { isArrayLike } from "@thi.ng/checks/is-arraylike"; -import { Mat, ReadonlyMat, Vec } from "./api"; +import { Mat, ReadonlyMat, Vec, ReadonlyVec } from "./api"; import { eqDelta } from "./common"; import { EPS } from "./math"; import { @@ -11,9 +11,9 @@ import { } from "./vec2"; export const get23 = (a: Mat, i = 0) => - set23(new ((a.constructor))(6), a, 0, i); + a.slice(i, i + 6); -export const set23 = (a: Mat, b: Mat, ia = 0, ib = 0) => ( +export const set23 = (a: Mat, b: ReadonlyMat, ia = 0, ib = 0) => ( a[ia] = b[ib], a[ia + 1] = b[ib + 1], a[ia + 2] = b[ib + 2], @@ -38,15 +38,20 @@ export const set23 = (a: Mat, b: Mat, ia = 0, ib = 0) => ( * @param m21 * @param i */ -export const setS23 = (m: Mat, m00: number, m01: number, m10: number, m11: number, m20: number, m21: number, i = 0) => ( - m[i] = m00, - m[i + 1] = m01, - m[i + 2] = m10, - m[i + 3] = m11, - m[i + 4] = m20, - m[i + 5] = m21, - m -); +export const setS23 = ( + m: Mat, + m00: number, m01: number, + m10: number, m11: number, + m20: number, m21: number, + i = 0) => ( + m[i] = m00, + m[i + 1] = m01, + m[i + 2] = m10, + m[i + 3] = m11, + m[i + 4] = m20, + m[i + 5] = m21, + m + ); export const identity23 = (m?: Mat, i = 0) => setS23(m || [], 1, 0, 0, 1, 0, 0, i); @@ -57,7 +62,7 @@ export const rotation23 = (m: Mat, theta: number, i = 0) => { return setS23(m || [], c, s, -s, c, 0, 0, i); }; -export const rotationAroundPoint23 = (m: Mat, p: Vec, theta: number, im = 0, iv = 0, sv = 1) => +export const rotationAroundPoint23 = (m: Mat, p: ReadonlyVec, theta: number, im = 0, iv = 0, sv = 1) => concat23( translationV23(m || [], p, im, iv, sv), im, rotation23([], theta), @@ -73,14 +78,14 @@ export const scaleN23 = (m: Mat, n: number, i = 0) => export const scaleS23 = (m: Mat, sx: number, sy: number, i = 0) => setS23(m || [], sx, 0, 0, sy, 0, 0, i); -export const scaleWithCenter23 = (m: Mat, p: Vec, sx: number, sy: number, im = 0, iv = 0, sv = 1) => +export const scaleWithCenter23 = (m: Mat, p: ReadonlyVec, sx: number, sy: number, im = 0, iv = 0, sv = 1) => concat23( translationV23(m || [], p, im, iv, sv), im, scaleS23([], sx, sy), translationS23([], -p[iv], -p[iv + sv]) ); -export const translationV23 = (m: Mat, v: Vec, i = 0, iv = 0, sv = 1) => +export const translationV23 = (m: Mat, v: ReadonlyVec, i = 0, iv = 0, sv = 1) => translationS23(m, v[iv], v[iv + sv], i); export const translationS23 = (m: Mat, x: number, y: number, i = 0) => @@ -161,7 +166,7 @@ export class Mat23 implements return new Mat23(rotation23([], theta)); } - static rotationAroundPoint(p: Vec2, theta: number) { + static rotationAroundPoint(p: Readonly, theta: number) { return new Mat23(rotationAroundPoint23([], p.buf, theta, 0, p.i, p.s)); } @@ -176,11 +181,11 @@ export class Mat23 implements ); } - static scaleWithCenter(p: Vec2, sx: number, sy = sx) { + static scaleWithCenter(p: Readonly, sx: number, sy = sx) { return new Mat23(scaleWithCenter23([], p.buf, sx, sy, p.i, p.s)); } - static translation(v: Vec2): Mat23; + static translation(v: Readonly): Mat23; static translation(x: number, y: number): Mat23; static translation(x: any, y?: any) { return new Mat23( diff --git a/packages/vectors/src/mat33.ts b/packages/vectors/src/mat33.ts index 40db3dfab0..3cf65e3488 100644 --- a/packages/vectors/src/mat33.ts +++ b/packages/vectors/src/mat33.ts @@ -1,6 +1,6 @@ import { ICopy, IEqualsDelta } from "@thi.ng/api/api"; import { isArrayLike } from "@thi.ng/checks/is-arraylike"; -import { Mat, ReadonlyMat, Vec } from "./api"; +import { Mat, ReadonlyMat, Vec, ReadonlyVec } from "./api"; import { eqDelta } from "./common"; import { EPS } from "./math"; import { @@ -12,9 +12,9 @@ import { import { setS4 } from "./vec4"; export const get33 = (a: Mat, i = 0) => - set33(new ((a.constructor))(9), a, 0, i); + a.slice(i, i + 9); -export const set33 = (a: Mat, b: Mat, ia = 0, ib = 0) => ( +export const set33 = (a: Mat, b: ReadonlyMat, ia = 0, ib = 0) => ( a[ia] = b[ib], a[ia + 1] = b[ib + 1], a[ia + 2] = b[ib + 2], @@ -46,18 +46,23 @@ export const set33 = (a: Mat, b: Mat, ia = 0, ib = 0) => ( * @param m22 * @param i */ -export const setS33 = (m: Mat, m00: number, m01: number, m02: number, m10: number, m11: number, m12: number, m20: number, m21: number, m22: number, i = 0) => ( - m[i] = m00, - m[i + 1] = m01, - m[i + 2] = m02, - m[i + 3] = m10, - m[i + 4] = m11, - m[i + 5] = m12, - m[i + 6] = m20, - m[i + 7] = m21, - m[i + 8] = m22, - m -); +export const setS33 = ( + m: Mat, + m00: number, m01: number, m02: number, + m10: number, m11: number, m12: number, + m20: number, m21: number, m22: number, + i = 0) => ( + m[i] = m00, + m[i + 1] = m01, + m[i + 2] = m02, + m[i + 3] = m10, + m[i + 4] = m11, + m[i + 5] = m12, + m[i + 6] = m20, + m[i + 7] = m21, + m[i + 8] = m22, + m + ); export const identity33 = (m?: Mat, i = 0) => setS33(m || [], @@ -100,7 +105,7 @@ export const rotationZ33 = (m: Mat, theta: number, i = 0) => { ); }; -export const scaleV33 = (m: Mat, v: Vec, i = 0, iv = 0, sv = 1) => +export const scaleV33 = (m: Mat, v: ReadonlyVec, i = 0, iv = 0, sv = 1) => scaleS33(m, v[iv], v[iv + sv], v[iv + 2 * sv], i); export const scaleN33 = (m: Mat, n: number, i = 0) => @@ -204,7 +209,7 @@ export const transpose33 = (m: Mat, i = 0) => i ); -export const mat33to44 = (m44: Mat, m33: Mat, ia = 0, ib = 0) => ( +export const mat33to44 = (m44: Mat, m33: ReadonlyMat, ia = 0, ib = 0) => ( set3(m44, m33, ia, ib), set3(m44, m33, ia + 4, ib + 3), set3(m44, m33, ia + 8, ib + 6), @@ -229,7 +234,7 @@ export class Mat33 implements return new Mat33(rotationZ33([], theta)); } - static scale(v: Vec3): Mat33; + static scale(v: Readonly): Mat33; static scale(n: number): Mat33; static scale(x: number, y: number, z: number): Mat33; static scale(x: any, y = x, z = x) { @@ -271,7 +276,9 @@ export class Mat33 implements return this; } - setS(m00: number, m01: number, m02: number, m10: number, m11: number, m12: number, m20: number, m21: number, m22: number) { + setS(m00: number, m01: number, m02: number, + m10: number, m11: number, m12: number, + m20: number, m21: number, m22: number) { setS33(this.buf, m00, m01, m02, m10, m11, m12, m20, m21, m22, this.i); return this; } diff --git a/packages/vectors/src/mat44.ts b/packages/vectors/src/mat44.ts index f4ac55ad13..23cfee8ed7 100644 --- a/packages/vectors/src/mat44.ts +++ b/packages/vectors/src/mat44.ts @@ -1,6 +1,6 @@ import { ICopy, IEqualsDelta } from "@thi.ng/api/api"; import { isArrayLike } from "@thi.ng/checks/is-arraylike"; -import { Mat, ReadonlyMat, Vec } from "./api"; +import { Mat, ReadonlyMat, Vec, ReadonlyVec } from "./api"; import { eqDelta } from "./common"; import { Mat33 } from "./mat33"; import { EPS, rad } from "./math"; @@ -17,9 +17,9 @@ import { import { dot4, setS4, Vec4 } from "./vec4"; export const get44 = (a: Mat, i = 0) => - set44(new ((a.constructor))(16), a, 0, i); + a.slice(i, i + 16); -export const set44 = (a: Mat, b: Mat, ia = 0, ib = 0) => { +export const set44 = (a: Mat, b: ReadonlyMat, ia = 0, ib = 0) => { for (let i = 0; i < 16; i++) { a[ia + i] = b[ib + i]; } @@ -34,7 +34,9 @@ export const set44 = (a: Mat, b: Mat, ia = 0, ib = 0) => { * m03 m13 m23 m33 * ``` */ -export const setS44 = (m: Mat, m00: number, m01: number, m02: number, m03: number, +export const setS44 = ( + m: Mat, + m00: number, m01: number, m02: number, m03: number, m10: number, m11: number, m12: number, m13: number, m20: number, m21: number, m22: number, m23: number, m30: number, m31: number, m32: number, m33: number, @@ -103,7 +105,7 @@ export const rotationZ44 = (m: Mat, theta: number, i = 0) => { ); }; -export const scaleV44 = (m: Mat, v: Vec, i = 0, iv = 0, sv = 1) => +export const scaleV44 = (m: Mat, v: ReadonlyVec, i = 0, iv = 0, sv = 1) => scaleS44(m, v[iv], v[iv + sv], v[iv + 2 * sv], i); export const scaleN44 = (m: Mat, n: number, i = 0) => @@ -118,14 +120,14 @@ export const scaleS44 = (m: Mat, sx: number, sy: number, sz: number, i = 0) => i ); -export const scaleWithCenter44 = (m: Mat, p: Vec, sx: number, sy: number, sz: number, im = 0, iv = 0, sv = 1) => +export const scaleWithCenter44 = (m: Mat, p: ReadonlyVec, sx: number, sy: number, sz: number, im = 0, iv = 0, sv = 1) => concat44( translationV44(m || [], p, im, iv, sv), im, scaleS44([], sx, sy, sz), translationS44([], -p[iv], -p[iv + sv], -p[iv + 2 * sv]) ); -export const translationV44 = (m: Mat, v: Vec, i = 0, iv = 0, sv = 1) => +export const translationV44 = (m: Mat, v: ReadonlyVec, i = 0, iv = 0, sv = 1) => translationS44(m, v[iv], v[iv + sv], v[iv + 2 * sv], i); export const translationS44 = (m: Mat, x: number, y: number, z: number, i = 0) => @@ -181,18 +183,15 @@ export const ortho = (m: Mat, left: number, right: number, bottom: number, top: ); }; -export const lookAt = (m: Mat, eye: Vec, target: Vec, up: Vec, im = 0, ie = 0, it = 0, iu = 0, se = 1, st = 1, su = 1) => { - eye = get3(eye, ie, se); - target = get3(target, it, st); - up = get3(up, iu, su); - const z = normalize3(sub3([...eye], target)); - const x = normalize3(cross3(up, z)); +export const lookAt = (m: Mat, eye: ReadonlyVec, target: ReadonlyVec, up: ReadonlyVec, im = 0, ie = 0, it = 0, iu = 0, se = 1, st = 1, su = 1) => { + const z = normalize3(sub3(get3(eye, ie, se), get3(target, it, st))); + const x = normalize3(cross3(get3(up, iu, su), z)); const y = normalize3(cross3([...z], x)); return setS44(m || [], x[0], y[0], z[0], 0, x[1], y[1], z[1], 0, x[2], y[2], z[2], 0, - -dot3(eye, x), -dot3(eye, y), -dot3(eye, z), 1, + -dot3(eye, x, ie, 0, se), -dot3(eye, y, ie, 0, se), -dot3(eye, z, ie, 0, se), 1, im ); } @@ -279,7 +278,7 @@ const detCoeffs44 = (m: ReadonlyMat, i = 0) => { ]; }; -export const det44 = (m: Mat, i = 0) => { +export const det44 = (m: ReadonlyMat, i = 0) => { const d = detCoeffs44(m, i); return d[0] * d[11] - d[1] * d[10] + d[2] * d[9] + d[3] * d[8] - d[4] * d[7] + d[5] * d[6]; @@ -352,7 +351,7 @@ export const transpose44 = (m: Mat, i = 0) => i ); -export const normal44 = (a: Mat, b: Mat, ia = 0, ib = 0) => { +export const normal44 = (a: Mat, b: ReadonlyMat, ia = 0, ib = 0) => { const m00 = b[ib]; const m01 = b[ib + 1]; const m02 = b[ib + 2]; @@ -382,7 +381,7 @@ export const normal44 = (a: Mat, b: Mat, ia = 0, ib = 0) => { return a; }; -export const mat44to33 = (m33: Mat, m44: Mat, ia = 0, ib = 0) => ( +export const mat44to33 = (m33: Mat, m44: ReadonlyMat, ia = 0, ib = 0) => ( set3(m33, m44, ia, ib), set3(m33, m44, ia + 3, ib + 4), set3(m33, m44, ia + 6, ib + 8), @@ -405,7 +404,7 @@ export class Mat44 implements return new Mat44(rotationZ44([], theta)); } - static scale(v: Vec3): Mat44; + static scale(v: Readonly): Mat44; static scale(n: number): Mat44; static scale(x: number, y: number, z: number): Mat44; static scale(x: any, y = x, z = x) { @@ -416,11 +415,11 @@ export class Mat44 implements ); } - static scaleWithCenter(p: Vec3, sx: number, sy = sx, sz = sy) { + static scaleWithCenter(p: Readonly, sx: number, sy = sx, sz = sy) { return new Mat44(scaleWithCenter44([], p.buf, sx, sy, sz, p.i, p.s)); } - static translation(v: Vec3): Mat44; + static translation(v: Readonly): Mat44; static translation(x: number, y: number, z: number): Mat44; static translation(x: any, y?: any, z?: any) { return new Mat44( @@ -430,6 +429,27 @@ export class Mat44 implements ); } + static perspective(fov: number, aspect: number, near: number, far: number) { + return new Mat44(perspective([], fov, aspect, near, far)); + } + + static ortho(left: number, right: number, bottom: number, top: number, near: number, far: number) { + return new Mat44(ortho([], left, right, bottom, top, near, far)); + } + + static frustum(left: number, right: number, bottom: number, top: number, near: number, far: number) { + return new Mat44(frustum([], left, right, bottom, top, near, far)); + } + + static lookAt(eye: Readonly, target: Readonly, up: Readonly) { + return new Mat44(lookAt( + [], + eye.buf, target.buf, up.buf, + 0, eye.i, target.i, up.i, + eye.s, target.s, up.s + )); + } + static concat(m: Mat44, ...xs: Readonly[]) { concat44.apply(null, [m.buf, m.i, ...<[ReadonlyMat, number][]>xs.map((x) => [x.buf, x.i])]); return m; @@ -511,8 +531,8 @@ export class Mat44 implements } toString() { - const b = this.buf; const i = this.i; + const b = [...this.buf.slice(i, i+16)].map((x)=>x.toFixed(4)); return `${b[i]} ${b[i + 4]} ${b[i + 8]} ${b[i + 12]}\n${b[i + 1]} ${b[i + 5]} ${b[i + 9]} ${b[i + 13]}\n${b[i + 2]} ${b[i + 6]} ${b[i + 10]} ${b[i + 14]}\n${b[i + 3]} ${b[i + 7]} ${b[i + 11]} ${b[i + 15]}`; } diff --git a/packages/vectors/src/vec2.ts b/packages/vectors/src/vec2.ts index dab7edd1fb..26d117b03e 100644 --- a/packages/vectors/src/vec2.ts +++ b/packages/vectors/src/vec2.ts @@ -346,7 +346,7 @@ export class Vec2 implements return v instanceof Vec2 ? equiv2(this.buf, v.buf, this.i, v.i, this.s, v.s) : isArrayLike(v) && v.length === 2 ? - equiv2(this.buf, v, this.i, 0, this.s, 1) : + equiv2(this.buf, v, this.i, 0, this.s, 1) : false; } diff --git a/packages/vectors/src/vec3.ts b/packages/vectors/src/vec3.ts index 659052034d..48415fe0af 100644 --- a/packages/vectors/src/vec3.ts +++ b/packages/vectors/src/vec3.ts @@ -454,7 +454,7 @@ export class Vec3 implements return v instanceof Vec3 ? equiv3(this.buf, v.buf, this.i, v.i, this.s, v.s) : isArrayLike(v) && v.length === 3 ? - equiv3(this.buf, v, this.i, 0, this.s, 1) : + equiv3(this.buf, v, this.i, 0, this.s, 1) : false; } diff --git a/packages/vectors/src/vec4.ts b/packages/vectors/src/vec4.ts index aee1c17f92..c0c2303a0f 100644 --- a/packages/vectors/src/vec4.ts +++ b/packages/vectors/src/vec4.ts @@ -378,7 +378,7 @@ export class Vec4 implements return v instanceof Vec4 ? equiv4(this.buf, v.buf, this.i, v.i, this.s, v.s) : isArrayLike(v) && v.length === 4 ? - equiv4(this.buf, v, this.i, 0, this.s, 1) : + equiv4(this.buf, v, this.i, 0, this.s, 1) : false; } From 1b0deb22c02f3536d9507272cc7990c5486f71d0 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Fri, 31 Aug 2018 16:48:19 +0100 Subject: [PATCH 43/60] feat(hiccup): add optional support for spans & auto keying (#39) --- packages/hiccup/src/serialize.ts | 45 +++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/packages/hiccup/src/serialize.ts b/packages/hiccup/src/serialize.ts index 501d223177..16bafb87bf 100644 --- a/packages/hiccup/src/serialize.ts +++ b/packages/hiccup/src/serialize.ts @@ -6,6 +6,7 @@ import { isString } from "@thi.ng/checks/is-string"; import { TAG_REGEXP, VOID_TAGS } from "./api"; import { css } from "./css"; +import { escape } from "./escape"; /** * Recursively normalizes and serializes given tree as HTML/SVG/XML @@ -74,12 +75,24 @@ import { css } from "./css"; * strings, numbers, iterables or any type with a suitable `.toString()` * implementation). * + * If the optional `span` flag is true (default: false), all text + * content will be wrapped in elements (this is to ensure DOM + * compatibility with hdom). + * + * If the optional `keys` flag is true (default: false), all elements + * will have an autogenerated `key` attribute injected. If `span` is + * enabled, `keys` will be enabled by default too. + * * @param tree elements / component tree + * @param ctx arbitrary user context object * @param escape auto-escape entities + * @param span use spans for text content + * @param keys attach key attribs */ -export const serialize = (tree: any[], ctx?: any, escape = false) => _serialize(tree, ctx, escape); +export const serialize = (tree: any[], ctx?: any, escape = false, span = false, keys = span, path = [0]) => + _serialize(tree, ctx, escape, span, keys, path); -const _serialize = (tree: any, ctx: any, esc: boolean) => { +const _serialize = (tree: any, ctx: any, esc: boolean, span: boolean, keys: boolean, path: any[]) => { if (tree == null) { return ""; } @@ -89,10 +102,10 @@ const _serialize = (tree: any, ctx: any, esc: boolean) => { } let tag = tree[0]; if (isFunction(tag)) { - return _serialize(tag.apply(null, [ctx, ...tree.slice(1)]), ctx, esc); + return _serialize(tag.apply(null, [ctx, ...tree.slice(1)]), ctx, esc, span, keys, path); } if (implementsFunction(tag, "render")) { - return _serialize(tag.render.apply(null, [ctx, ...tree.slice(1)]), ctx, esc); + return _serialize(tag.render.apply(null, [ctx, ...tree.slice(1)]), ctx, esc, span, keys, path); } if (isString(tag)) { tree = normalize(tree); @@ -100,6 +113,9 @@ const _serialize = (tree: any, ctx: any, esc: boolean) => { let attribs = tree[1]; let body = tree[2]; let res = `<${tag}`; + if (keys && attribs.key === undefined) { + attribs.key = path.join("-"); + } for (let a in attribs) { if (attribs.hasOwnProperty(a)) { let v = attribs[a]; @@ -126,7 +142,7 @@ const _serialize = (tree: any, ctx: any, esc: boolean) => { } res += ">"; for (let i = 0, n = body.length; i < n; i++) { - res += _serialize(body[i], ctx, esc); + res += _serialize(body[i], ctx, esc, span, keys, [...path, i]); } return res += ``; } else if (!VOID_TAGS[tag]) { @@ -135,26 +151,31 @@ const _serialize = (tree: any, ctx: any, esc: boolean) => { return res += "/>"; } if (iter(tree)) { - return _serializeIter(tree, ctx, esc); + return _serializeIter(tree, ctx, esc, span, keys, path); } illegalArgs(`invalid tree node: ${tree}`); } if (isFunction(tree)) { - return _serialize(tree(ctx), ctx, esc); + return _serialize(tree(ctx), ctx, esc, span, keys, path); } if (implementsFunction(tree, "deref")) { - return _serialize(tree.deref(), ctx, esc); + return _serialize(tree.deref(), ctx, esc, span, keys, path); } if (iter(tree)) { - return _serializeIter(tree, ctx, esc); + return _serializeIter(tree, ctx, esc, span, keys, path); } - return esc ? escape(tree.toString()) : tree; + tree = esc ? escape(tree.toString()) : tree; + return span ? + `${tree}` : + tree; }; -const _serializeIter = (iter: Iterable, ctx: any, esc: boolean) => { +const _serializeIter = (iter: Iterable, ctx: any, esc: boolean, span: boolean, keys: boolean, path: any[]) => { const res = []; + const p = path.slice(0, path.length - 1); + let k = 0; for (let i of iter) { - res.push(_serialize(i, ctx, esc)); + res.push(_serialize(i, ctx, esc, span, keys, [...p, k++])); } return res.join(""); } From 1b97a25af50c0e792ea7b07d61afd9be2afd1680 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Fri, 31 Aug 2018 19:57:47 +0100 Subject: [PATCH 44/60] fix(hiccup): disable spans for certain element types - re-add NO_SPANS (moved from hdom) - update _serialize() --- packages/hiccup/src/api.ts | 6 ++++++ packages/hiccup/src/serialize.ts | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/hiccup/src/api.ts b/packages/hiccup/src/api.ts index f6b68d41f9..22d3c1c47c 100644 --- a/packages/hiccup/src/api.ts +++ b/packages/hiccup/src/api.ts @@ -21,4 +21,10 @@ export const ENTITIES = { "'": "'", }; +export const NO_SPANS = { + option: 1, + text: 1, + textarea: 1, +}; + export const ENTITY_RE = new RegExp(`[${Object.keys(ENTITIES)}]`, "g"); diff --git a/packages/hiccup/src/serialize.ts b/packages/hiccup/src/serialize.ts index 16bafb87bf..f09b856157 100644 --- a/packages/hiccup/src/serialize.ts +++ b/packages/hiccup/src/serialize.ts @@ -1,10 +1,10 @@ -import { illegalArgs } from "@thi.ng/errors/illegal-arguments"; import { implementsFunction } from "@thi.ng/checks/implements-function"; import { isFunction } from "@thi.ng/checks/is-function"; import { isPlainObject } from "@thi.ng/checks/is-plain-object"; import { isString } from "@thi.ng/checks/is-string"; +import { illegalArgs } from "@thi.ng/errors/illegal-arguments"; -import { TAG_REGEXP, VOID_TAGS } from "./api"; +import { NO_SPANS, TAG_REGEXP, VOID_TAGS } from "./api"; import { css } from "./css"; import { escape } from "./escape"; @@ -141,6 +141,7 @@ const _serialize = (tree: any, ctx: any, esc: boolean, span: boolean, keys: bool illegalArgs(`No body allowed in tag: ${tag}`); } res += ">"; + span = span && !NO_SPANS[tag]; for (let i = 0, n = body.length; i < n; i++) { res += _serialize(body[i], ctx, esc, span, keys, [...path, i]); } From 9f8010db5591ba27c20168329c1269a16896e23f Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Fri, 31 Aug 2018 20:01:54 +0100 Subject: [PATCH 45/60] feat(hdom): add DOM hydration support (SSR), update start() (#39) - add HDOMOpts interface - add hydrateDOM() - update start() to support hydration - re-use migrated NO_SPANS const from hiccup - switch all fn to arrow fns BREAKING CHANGE: start() args now as options object --- packages/hdom/src/api.ts | 26 +++++++++++++ packages/hdom/src/diff.ts | 19 +++++---- packages/hdom/src/dom.ts | 71 ++++++++++++++++++++++------------ packages/hdom/src/normalize.ts | 14 ++----- packages/hdom/src/start.ts | 41 +++++++++++++------- 5 files changed, 113 insertions(+), 58 deletions(-) diff --git a/packages/hdom/src/api.ts b/packages/hdom/src/api.ts index 7d32a1e5fd..6e71da9c97 100644 --- a/packages/hdom/src/api.ts +++ b/packages/hdom/src/api.ts @@ -16,4 +16,30 @@ export interface ComponentAttribs { [_: string]: any; } +export interface HDOMOpts { + /** + * Root element or ID + */ + parent: Element | string; + /** + * Arbitrary user context object + */ + ctx?: any; + /** + * If true (default), text content will be wrapped in `` + */ + span?: boolean; + /** + * If true (default false), the first frame will only be used to + * inject event listeners. + * + * *Important:* Enabling this option assumes that an equivalent DOM + * (minus listeners) already exists (i.e. generated via SSR) when + * hdom's `start()` function is called. Any other discrepancies + * between the pre-existing DOM and the hdom trees will cause + * undefined behavior. + */ + hydrate?: boolean; +} + export const DEBUG = false; diff --git a/packages/hdom/src/diff.ts b/packages/hdom/src/diff.ts index 9195b9fa2e..50f4df0dab 100644 --- a/packages/hdom/src/diff.ts +++ b/packages/hdom/src/diff.ts @@ -34,11 +34,10 @@ const isString = iss.isString; * @param prev previous tree * @param curr current tree */ -export function diffElement(root: Element, prev: any, curr: any) { +export const diffElement = (root: Element, prev: any, curr: any) => _diffElement(root, prev, curr, 0); -} -function _diffElement(parent: Element, prev: any, curr: any, child: number) { +const _diffElement = (parent: Element, prev: any, curr: any, child: number) => { const delta = diffArray(prev, curr, equiv, true); if (delta.distance === 0) { return; @@ -109,9 +108,9 @@ function _diffElement(parent: Element, prev: any, curr: any, child: number) { // DEBUG && console.log("call __init", curr); i.apply(curr, [el, ...(curr.__args)]); } -} +}; -function releaseDeep(tag: any) { +const releaseDeep = (tag: any) => { if (isArray(tag)) { if ((tag).__release) { // DEBUG && console.log("call __release", tag); @@ -122,9 +121,9 @@ function releaseDeep(tag: any) { releaseDeep(tag[i]); } } -} +}; -function diffAttributes(el: Element, prev: any, curr: any) { +const diffAttributes = (el: Element, prev: any, curr: any) => { let i, e, edits; const delta = diffObject(prev, curr); removeAttribs(el, delta.dels, prev); @@ -152,9 +151,9 @@ function diffAttributes(el: Element, prev: any, curr: any) { if (value !== SEMAPHORE) { setAttrib(el, "value", value, curr); } -} +}; -function extractEquivElements(edits: DiffLogEntry[]) { +const extractEquivElements = (edits: DiffLogEntry[]) => { let k, v, e, ek; const equiv = {}; for (let i = edits.length; --i >= 0;) { @@ -167,4 +166,4 @@ function extractEquivElements(edits: DiffLogEntry[]) { } } return equiv; -} +}; diff --git a/packages/hdom/src/dom.ts b/packages/hdom/src/dom.ts index d9706d9d20..0a64a7d569 100644 --- a/packages/hdom/src/dom.ts +++ b/packages/hdom/src/dom.ts @@ -23,7 +23,7 @@ const isString = iss.isString; * @param tag * @param insert */ -export function createDOM(parent: Element, tag: any, insert?: number) { +export const createDOM = (parent: Element, tag: any, insert?: number) => { if (isArray(tag)) { const t = tag[0]; if (isFunction(t)) { @@ -52,9 +52,35 @@ export function createDOM(parent: Element, tag: any, insert?: number) { return parent; } return createTextElement(parent, tag); -} +}; -export function createElement(parent: Element, tag: string, attribs?: any, insert?: number) { +export const hydrateDOM = (parent: Element, tree: any, i = 0) => { + if (isArray(tree)) { + const el = parent.children[i]; + if (isFunction(tree[0])) { + return hydrateDOM(parent, tree[0].apply(null, tree.slice(1)), i); + } + if ((tree).__init) { + (tree).__init.apply((tree).__this, [el, ...(tree).__args]); + } + const attr = tree[1]; + for (let a in attr) { + if (a.indexOf("on") === 0) { + el.addEventListener(a.substr(2), attr[a]); + } + } + for (let n = tree.length, i = 2; i < n; i++) { + hydrateDOM(el, tree[i], i - 2); + } + } else if (!isString(tree) && isIterable(tree)) { + for (let t of tree) { + hydrateDOM(parent, t, i); + i++; + } + } +}; + +export const createElement = (parent: Element, tag: string, attribs?: any, insert?: number) => { const el = SVG_TAGS[tag] ? document.createElementNS(SVG_NS, tag) : document.createElement(tag); @@ -69,9 +95,9 @@ export function createElement(parent: Element, tag: string, attribs?: any, inser setAttribs(el, attribs); } return el; -} +}; -export function createTextElement(parent: Element, content: string, insert?: number) { +export const createTextElement = (parent: Element, content: string, insert?: number) => { const el = document.createTextNode(content); if (parent) { if (insert === undefined) { @@ -81,21 +107,21 @@ export function createTextElement(parent: Element, content: string, insert?: num } } return el; -} +}; -export function cloneWithNewAttribs(el: Element, attribs: any) { +export const cloneWithNewAttribs = (el: Element, attribs: any) => { const res = el.cloneNode(true); setAttribs(res, attribs); el.parentNode.replaceChild(res, el); return res; -} +}; -export function setAttribs(el: Element, attribs: any) { +export const setAttribs = (el: Element, attribs: any) => { for (let k in attribs) { setAttrib(el, k, attribs[k], attribs); } return el; -} +}; /** * Sets a single attribute on given element. If attrib name is NOT @@ -118,7 +144,7 @@ export function setAttribs(el: Element, attribs: any) { * @param val * @param attribs */ -export function setAttrib(el: Element, id: string, val: any, attribs?: any) { +export const setAttrib = (el: Element, id: string, val: any, attribs?: any) => { const isListener = id.indexOf("on") === 0; if (!isListener && isFunction(val)) { val = val(attribs); @@ -146,9 +172,9 @@ export function setAttrib(el: Element, id: string, val: any, attribs?: any) { el[id] != null ? (el[id] = null) : el.removeAttribute(id); } return el; -} +}; -export function updateValueAttrib(el: HTMLInputElement, v: any) { +export const updateValueAttrib = (el: HTMLInputElement, v: any) => { switch (el.type) { case "text": case "textarea": @@ -166,9 +192,9 @@ export function updateValueAttrib(el: HTMLInputElement, v: any) { default: el.value = v; } -} +}; -export function removeAttribs(el: Element, attribs: string[], prev: any) { +export const removeAttribs = (el: Element, attribs: string[], prev: any) => { for (let i = attribs.length; --i >= 0;) { const a = attribs[i]; if (a.indexOf("on") === 0) { @@ -177,20 +203,17 @@ export function removeAttribs(el: Element, attribs: string[], prev: any) { el[a] ? (el[a] = null) : el.removeAttribute(a); } } -} +}; -export function setStyle(el: Element, styles: any) { - el.setAttribute("style", css(styles)); - return el; -} +export const setStyle = (el: Element, styles: any) => + (el.setAttribute("style", css(styles)), el); -export function clearDOM(el: Element) { +export const clearDOM = (el: Element) => el.innerHTML = ""; -} -export function removeChild(parent: Element, childIdx: number) { +export const removeChild = (parent: Element, childIdx: number) => { const n = parent.children[childIdx]; if (n !== undefined) { n.remove(); } -} +}; diff --git a/packages/hdom/src/normalize.ts b/packages/hdom/src/normalize.ts index cbda166bb5..725ce30e00 100644 --- a/packages/hdom/src/normalize.ts +++ b/packages/hdom/src/normalize.ts @@ -5,7 +5,7 @@ import * as isi from "@thi.ng/checks/is-iterable"; import * as iso from "@thi.ng/checks/is-plain-object"; import * as iss from "@thi.ng/checks/is-string"; import { illegalArgs } from "@thi.ng/errors/illegal-arguments"; -import { TAG_REGEXP } from "@thi.ng/hiccup/api"; +import { NO_SPANS, TAG_REGEXP } from "@thi.ng/hiccup/api"; const isArray = isa.isArray; const isFunction = isf.isFunction; @@ -38,7 +38,7 @@ const isString = iss.isString; * @param spec * @param keys */ -export function normalizeElement(spec: any[], keys: boolean) { +export const normalizeElement = (spec: any[], keys: boolean) => { let tag = spec[0], hasAttribs = isPlainObject(spec[1]), match, id, clazz, attribs; if (!isString(tag) || !(match = TAG_REGEXP.exec(tag))) { illegalArgs(`${tag} is not a valid tag name`); @@ -62,12 +62,6 @@ export function normalizeElement(spec: any[], keys: boolean) { } } return [match[1], attribs, ...spec.slice(hasAttribs ? 2 : 1)]; -} - -const NO_SPANS = { - option: 1, - text: 1, - textarea: 1, }; /** @@ -111,7 +105,7 @@ const NO_SPANS = { * @param keys * @param span */ -export function normalizeTree(tree: any, ctx?: any, path = [0], keys = true, span = true) { +export const normalizeTree = (tree: any, ctx?: any, path = [0], keys = true, span = true) => { if (tree == null) { return; } @@ -182,4 +176,4 @@ export function normalizeTree(tree: any, ctx?: any, path = [0], keys = true, spa return span ? ["span", keys ? { key: path.join("-") } : {}, tree.toString()] : tree.toString(); -} +}; diff --git a/packages/hdom/src/start.ts b/packages/hdom/src/start.ts index b513daf36d..5c90be7705 100644 --- a/packages/hdom/src/start.ts +++ b/packages/hdom/src/start.ts @@ -1,6 +1,9 @@ import { isString } from "@thi.ng/checks/is-string"; + +import { HDOMOpts } from "./api"; import { diffElement } from "./diff"; import { normalizeTree } from "./normalize"; +import { hydrateDOM } from "@thi.ng/hdom/src/dom"; /** * Takes a parent DOM element (or ID), hiccup tree (array, function or @@ -23,30 +26,40 @@ import { normalizeTree } from "./normalize"; * which then is diffed and applied against the previous tree kept as * usual. Any number of frames may be skipped this way. * - * Important: The parent element given is assumed to have NO children at - * the time when `start()` is called. Since hdom does NOT track the real - * DOM, the resulting changes will result in potentially undefined - * behavior if the parent element wasn't empty. + * **Important:** Unless the `hydrate` option is enabled, the parent + * element given is assumed to have NO children at the time when + * `start()` is called. Since hdom does NOT track the real DOM, the + * resulting changes will result in potentially undefined behavior if + * the parent element wasn't empty. Likewise, if `hydrate` is enabled, + * it is assumed that an equivalent DOM (minus listeners) already exists + * (i.e. generated via SSR) when `start()` is called. Any other + * discrepancies between the pre-existing DOM and the hdom trees will + * cause undefined behavior. * * Returns a function, which when called, immediately cancels the update * loop. * - * @param parent root element or ID * @param tree hiccup DOM tree - * @param ctx arbitrary user context object - * @param spans true (default), if text should be wrapped in `` + * @param opts options */ -export function start(parent: Element | string, tree: any, ctx?: any, spans = true) { +export const start = (tree: any, opts: HDOMOpts) => { let prev = []; let isActive = true; - parent = isString(parent) ? - document.getElementById(parent) : - parent; + let hydrate = opts.hydrate; + const spans = opts.span !== false; + const root = isString(opts.parent) ? + document.getElementById(opts.parent) : + opts.parent; function update() { if (isActive) { - const curr = normalizeTree(tree, ctx, [0], true, spans); + const curr = normalizeTree(tree, opts.ctx, [0], true, spans); if (curr != null) { - diffElement(parent, prev, curr); + if (hydrate) { + hydrateDOM(root, curr); + hydrate = false; + } else { + diffElement(root, prev, curr); + } prev = curr; } // check again in case one of the components called cancel @@ -55,4 +68,4 @@ export function start(parent: Element | string, tree: any, ctx?: any, spans = tr } requestAnimationFrame(update); return () => (isActive = false); -} +}; From d55d93035fc6f92a9d4913f0aeb19d533297ad9b Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Fri, 31 Aug 2018 21:23:40 +0100 Subject: [PATCH 46/60] refactor(hdom): minor update HDOMOpts & start() - rename `parent` option => `root` --- packages/hdom/src/api.ts | 2 +- packages/hdom/src/start.ts | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/hdom/src/api.ts b/packages/hdom/src/api.ts index 6e71da9c97..f7fda74bf1 100644 --- a/packages/hdom/src/api.ts +++ b/packages/hdom/src/api.ts @@ -20,7 +20,7 @@ export interface HDOMOpts { /** * Root element or ID */ - parent: Element | string; + root: Element | string; /** * Arbitrary user context object */ diff --git a/packages/hdom/src/start.ts b/packages/hdom/src/start.ts index 5c90be7705..669b49c276 100644 --- a/packages/hdom/src/start.ts +++ b/packages/hdom/src/start.ts @@ -42,14 +42,15 @@ import { hydrateDOM } from "@thi.ng/hdom/src/dom"; * @param tree hiccup DOM tree * @param opts options */ -export const start = (tree: any, opts: HDOMOpts) => { +export const start = (tree: any, opts?: Partial) => { + opts = { root: "app", span: true, ...opts }; let prev = []; let isActive = true; let hydrate = opts.hydrate; const spans = opts.span !== false; - const root = isString(opts.parent) ? - document.getElementById(opts.parent) : - opts.parent; + const root = isString(opts.root) ? + document.getElementById(opts.root) : + opts.root; function update() { if (isActive) { const curr = normalizeTree(tree, opts.ctx, [0], true, spans); From 26bc7e74a7f0e835d04cce467f9d890579b44080 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Fri, 31 Aug 2018 21:25:08 +0100 Subject: [PATCH 47/60] refactor(examples): update hdom start() call sites to new API --- examples/async-effect/src/index.ts | 2 +- examples/cellular-automata/src/index.ts | 32 ++++++++++++----------- examples/dashboard/src/index.ts | 2 +- examples/devcards/src/index.ts | 2 +- examples/hdom-basics/src/index.ts | 2 +- examples/hdom-benchmark/src/index.ts | 2 +- examples/hdom-dropdown-fuzzy/src/index.ts | 5 ++-- examples/hdom-dropdown/src/index.ts | 5 ++-- examples/hdom-theme-adr-0003/src/index.ts | 2 +- examples/interceptor-basics/src/index.ts | 2 +- examples/json-components/src/index.ts | 1 - examples/login-form/src/index.ts | 4 +-- examples/router-basics/src/app.ts | 13 +++++---- examples/rstream-dataflow/src/index.ts | 22 +++++++++------- examples/rstream-grid/src/app.ts | 3 +-- examples/svg-particles/src/index.ts | 2 +- examples/svg-waveform/src/app.ts | 3 +-- examples/todo-list/src/index.ts | 2 +- examples/triple-query/src/app.ts | 3 +-- examples/webgl/src/index.ts | 2 +- 20 files changed, 58 insertions(+), 53 deletions(-) diff --git a/examples/async-effect/src/index.ts b/examples/async-effect/src/index.ts index f7f1af5a9f..f60a8c5da1 100644 --- a/examples/async-effect/src/index.ts +++ b/examples/async-effect/src/index.ts @@ -88,4 +88,4 @@ const app = () => { } }; -start("app", app()); +start(app()); diff --git a/examples/cellular-automata/src/index.ts b/examples/cellular-automata/src/index.ts index 56d6e44f4b..996f69a46b 100644 --- a/examples/cellular-automata/src/index.ts +++ b/examples/cellular-automata/src/index.ts @@ -115,18 +115,20 @@ const isPreset = (id) => presets.findIndex((x) => x[0] === id) !== -1; applyRules(location.hash.length > 18 ? location.hash.substr(1) : presets[1][0]); // define & start main app component -start("app", () => { - const id = location.hash.substr(1); - return ["div", - ruleBoxes("birth", 0), - ruleBoxes("survive", 1), - ["div", - ["button", { onclick: () => randomizeRules() }, "randomize rules"], - ["button", { onclick: () => randomizeGrid() }, "reset grid"], - [dropdown, { onchange: (e) => applyRules(e.target.value) }, - presets, - isPreset(id) ? id : ""] - ], - ["pre", format(grid = convolve(grid, rules, W, H), W)] - ]; -}); +start( + () => { + const id = location.hash.substr(1); + return ["div", + ruleBoxes("birth", 0), + ruleBoxes("survive", 1), + ["div", + ["button", { onclick: () => randomizeRules() }, "randomize rules"], + ["button", { onclick: () => randomizeGrid() }, "reset grid"], + [dropdown, { onchange: (e) => applyRules(e.target.value) }, + presets, + isPreset(id) ? id : ""] + ], + ["pre", format(grid = convolve(grid, rules, W, H), W)] + ]; + } +); diff --git a/examples/dashboard/src/index.ts b/examples/dashboard/src/index.ts index b6aaac01bb..c024977d4d 100644 --- a/examples/dashboard/src/index.ts +++ b/examples/dashboard/src/index.ts @@ -31,4 +31,4 @@ const app = (() => { })(); // start update loop (RAF) -start("app", app); +start(app); diff --git a/examples/devcards/src/index.ts b/examples/devcards/src/index.ts index e169683e2f..0db3e0b898 100644 --- a/examples/devcards/src/index.ts +++ b/examples/devcards/src/index.ts @@ -48,7 +48,7 @@ function defcard(card: CardFn, state?: IAtom, title?: string, parent?: stri const root = card(state); // kick off hdom renderloop - start(parent, () => ["div.card", ["h3", title], ["div.body", root, ["pre", json]]]); + start(() => ["div.card", ["h3", title], ["div.body", root, ["pre", json]]], { root: parent }); } /** diff --git a/examples/hdom-basics/src/index.ts b/examples/hdom-basics/src/index.ts index 4733c606e2..d75a570397 100644 --- a/examples/hdom-basics/src/index.ts +++ b/examples/hdom-basics/src/index.ts @@ -18,7 +18,7 @@ const app = () => { }; // start update loop (browser only, see diagram below) -hdom.start(document.body, app()); +hdom.start(app()); // alternatively apply DOM tree only once // (stateful components won't update though) diff --git a/examples/hdom-benchmark/src/index.ts b/examples/hdom-benchmark/src/index.ts index ea124cdad6..e8bcc63db4 100644 --- a/examples/hdom-benchmark/src/index.ts +++ b/examples/hdom-benchmark/src/index.ts @@ -98,4 +98,4 @@ const app = () => { }; }; -start("app", app(), null, false); +start(app(), { span: false }); diff --git a/examples/hdom-dropdown-fuzzy/src/index.ts b/examples/hdom-dropdown-fuzzy/src/index.ts index 9298463047..890bac3535 100644 --- a/examples/hdom-dropdown-fuzzy/src/index.ts +++ b/examples/hdom-dropdown-fuzzy/src/index.ts @@ -23,7 +23,7 @@ const ctx = { const dd = dropdown("theme.dd"); const input = cancelableInput("theme.input"); -start("app", +start( (ctx) => { ctx.bus.processQueue(); return ["div", ctx.theme.root, @@ -39,6 +39,7 @@ start("app", ], ]; }, - ctx); + { ctx } +); // window["ctx"] = ctx; diff --git a/examples/hdom-dropdown/src/index.ts b/examples/hdom-dropdown/src/index.ts index cbb567aced..a33829c656 100644 --- a/examples/hdom-dropdown/src/index.ts +++ b/examples/hdom-dropdown/src/index.ts @@ -11,7 +11,7 @@ bus.instrumentWith([trace]); const dd = dropdown("theme.dd"); -start("app", +start( (ctx) => { bus.processQueue(); return ["div", ctx.theme.root, @@ -29,4 +29,5 @@ start("app", }]], ]; }, - { bus, theme }); + { ctx: { bus, theme } } +); diff --git a/examples/hdom-theme-adr-0003/src/index.ts b/examples/hdom-theme-adr-0003/src/index.ts index feaef66d73..17f9fada5f 100644 --- a/examples/hdom-theme-adr-0003/src/index.ts +++ b/examples/hdom-theme-adr-0003/src/index.ts @@ -144,4 +144,4 @@ const app = (ctx) => ["p", [link, "https://github.com/thi-ng/umbrella/blob/develop/examples/hdom-theme-adr-0003", "Source"]] ]; -start("app", app, ctx); +start(app, { ctx }); diff --git a/examples/interceptor-basics/src/index.ts b/examples/interceptor-basics/src/index.ts index 75a6ca2558..7027aeb40c 100644 --- a/examples/interceptor-basics/src/index.ts +++ b/examples/interceptor-basics/src/index.ts @@ -134,4 +134,4 @@ const app = () => { }; // kick off hdom render loop -start("app", app()); +start(app()); diff --git a/examples/json-components/src/index.ts b/examples/json-components/src/index.ts index 9bd9790bb4..728ae931aa 100644 --- a/examples/json-components/src/index.ts +++ b/examples/json-components/src/index.ts @@ -95,7 +95,6 @@ const editor = (() => { // start UI start( - document.getElementById("app"), () => ["div#container", ["div", editor], diff --git a/examples/login-form/src/index.ts b/examples/login-form/src/index.ts index cb1242cb48..089be68615 100644 --- a/examples/login-form/src/index.ts +++ b/examples/login-form/src/index.ts @@ -76,8 +76,8 @@ const currView = db.addView( // app root component const app = () => - ["div#app", + ["div", currView, ["footer", "Made with @thi.ng/atom and @thi.ng/hdom"]]; -start(document.body, app); +start(app); diff --git a/examples/router-basics/src/app.ts b/examples/router-basics/src/app.ts index 4969d52691..c046f68e70 100644 --- a/examples/router-basics/src/app.ts +++ b/examples/router-basics/src/app.ts @@ -110,11 +110,14 @@ export class App { */ start() { this.router.start(); - start(this.config.domRoot, () => { - if (this.ctx.bus.processQueue()) { - return this.rootComponent(); - } - }, this.ctx); + start( + () => { + if (this.ctx.bus.processQueue()) { + return this.rootComponent(); + } + }, + { root: this.config.domRoot, ctx: this.ctx } + ); } /** diff --git a/examples/rstream-dataflow/src/index.ts b/examples/rstream-dataflow/src/index.ts index 07cce78ace..d402f326d4 100644 --- a/examples/rstream-dataflow/src/index.ts +++ b/examples/rstream-dataflow/src/index.ts @@ -144,16 +144,18 @@ const graph = initGraph(db, { }); // start @thi.ng/hdom update loop -start("app", () => - ["div", - ["pre.absolute.top-1.left-1.pa0.ma0.z-2.f7", - JSON.stringify(db.deref(), null, 2)], - // note: direct embedding of result stream below. this works - // since all @thi.ng/rstream subscriptions implement the - // @thi.ng/api/IDeref interface (like several other types, e.g. - // @thi.ng/atom's Atom, Cursor, View etc.) - graph.circle.node - ]); +start( + () => + ["div", + ["pre.absolute.top-1.left-1.pa0.ma0.z-2.f7", + JSON.stringify(db.deref(), null, 2)], + // note: direct embedding of result stream below. this works + // since all @thi.ng/rstream subscriptions implement the + // @thi.ng/api/IDeref interface (like several other types, e.g. + // @thi.ng/atom's Atom, Cursor, View etc.) + graph.circle.node + ] +); // create a GraphViz DOT file of the entire dataflow graph // copy the output from the console into a new text file and then run: diff --git a/examples/rstream-grid/src/app.ts b/examples/rstream-grid/src/app.ts index b042e6d88e..8a8d10b1fe 100644 --- a/examples/rstream-grid/src/app.ts +++ b/examples/rstream-grid/src/app.ts @@ -82,14 +82,13 @@ export class App { const root = this.config.rootComponent(this.ctx); let firstFrame = true; start( - this.config.domRoot, () => { if (this.ctx.bus.processQueue({ history: this.history }) || firstFrame) { firstFrame = false; return root(); } }, - this.ctx + { root: this.config.domRoot, ctx: this.ctx } ); } diff --git a/examples/svg-particles/src/index.ts b/examples/svg-particles/src/index.ts index 98b644f188..0e6cf49940 100644 --- a/examples/svg-particles/src/index.ts +++ b/examples/svg-particles/src/index.ts @@ -40,4 +40,4 @@ const app = () => { return ["svg", { width, height }, particles]; }; -start(document.body, app); \ No newline at end of file +start(app); \ No newline at end of file diff --git a/examples/svg-waveform/src/app.ts b/examples/svg-waveform/src/app.ts index e5093fbf67..2e5bbf4c2a 100644 --- a/examples/svg-waveform/src/app.ts +++ b/examples/svg-waveform/src/app.ts @@ -71,14 +71,13 @@ export class App { const root = this.config.rootComponent(this.ctx); let firstFrame = true; start( - this.config.domRoot, () => { if (this.ctx.bus.processQueue({ history: this.history }) || firstFrame) { firstFrame = false; return root(); } }, - this.ctx + { root: this.config.domRoot, ctx: this.ctx } ); } diff --git a/examples/todo-list/src/index.ts b/examples/todo-list/src/index.ts index 246b06df30..f539dd9e96 100644 --- a/examples/todo-list/src/index.ts +++ b/examples/todo-list/src/index.ts @@ -83,4 +83,4 @@ const app = () => { }; // kick off UI w/ root component function -start("app", app()); +start(app()); diff --git a/examples/triple-query/src/app.ts b/examples/triple-query/src/app.ts index 4fc6785f9c..06a9aba1e5 100644 --- a/examples/triple-query/src/app.ts +++ b/examples/triple-query/src/app.ts @@ -76,14 +76,13 @@ export class App { const root = this.config.rootComponent(this.ctx); let firstFrame = true; start( - this.config.domRoot, () => { if (this.ctx.bus.processQueue({ store: this.ctx.store }) || firstFrame) { firstFrame = false; return root(); } }, - this.ctx + { root: this.config.domRoot, ctx: this.ctx } ); } diff --git a/examples/webgl/src/index.ts b/examples/webgl/src/index.ts index 0288559c74..3899b07843 100644 --- a/examples/webgl/src/index.ts +++ b/examples/webgl/src/index.ts @@ -41,4 +41,4 @@ const app = () => { [c3, attribs, 400, 0.05]]; }; -start("app", app()); +start(app()); From 0d34bb7d059f8e6cbd604b20400b1da5096964b8 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Fri, 31 Aug 2018 21:25:46 +0100 Subject: [PATCH 48/60] feat(examples): add hydrate-basics example --- examples/hydrate-basics/.gitignore | 3 + examples/hydrate-basics/README.md | 18 +++++ examples/hydrate-basics/index.html | 19 +++++ examples/hydrate-basics/package.json | 24 +++++++ examples/hydrate-basics/src/index.ts | 84 +++++++++++++++++++++++ examples/hydrate-basics/tsconfig.json | 9 +++ examples/hydrate-basics/webpack.config.js | 18 +++++ 7 files changed, 175 insertions(+) create mode 100644 examples/hydrate-basics/.gitignore create mode 100644 examples/hydrate-basics/README.md create mode 100644 examples/hydrate-basics/index.html create mode 100644 examples/hydrate-basics/package.json create mode 100644 examples/hydrate-basics/src/index.ts create mode 100644 examples/hydrate-basics/tsconfig.json create mode 100644 examples/hydrate-basics/webpack.config.js diff --git a/examples/hydrate-basics/.gitignore b/examples/hydrate-basics/.gitignore new file mode 100644 index 0000000000..9c418ce79f --- /dev/null +++ b/examples/hydrate-basics/.gitignore @@ -0,0 +1,3 @@ +node_modules +yarn.lock +*.js diff --git a/examples/hydrate-basics/README.md b/examples/hydrate-basics/README.md new file mode 100644 index 0000000000..735b99eefb --- /dev/null +++ b/examples/hydrate-basics/README.md @@ -0,0 +1,18 @@ +# hydrate-basics + +[Live demo](http://demo.thi.ng/umbrella/hydrate-basics/) + +```bash +git clone https://github.com/thi-ng/umbrella.git +cd umbrella/examples/hydrate-basics +yarn install +yarn start +``` + +## Authors + +- Karsten Schmidt + +## License + +© 2018 Karsten Schmidt // Apache Software License 2.0 diff --git a/examples/hydrate-basics/index.html b/examples/hydrate-basics/index.html new file mode 100644 index 0000000000..710f580a78 --- /dev/null +++ b/examples/hydrate-basics/index.html @@ -0,0 +1,19 @@ + + + + + + + + hydrate-basics + + + + + +
+ + + + \ No newline at end of file diff --git a/examples/hydrate-basics/package.json b/examples/hydrate-basics/package.json new file mode 100644 index 0000000000..9fefbe8437 --- /dev/null +++ b/examples/hydrate-basics/package.json @@ -0,0 +1,24 @@ +{ + "name": "hydrate-basics", + "version": "0.0.1", + "repository": "https://github.com/thi-ng/umbrella", + "author": "Karsten Schmidt ", + "license": "Apache-2.0", + "scripts": { + "build": "webpack --mode production --display-reasons --display-modules", + "start": "webpack-dev-server --open --mode development --devtool inline-source-map" + }, + "devDependencies": { + "ts-loader": "^4.4.2", + "typescript": "^3.0.1", + "webpack": "^4.16.3", + "webpack-cli": "^3.1.0", + "webpack-dev-server": "^3.1.5" + }, + "dependencies": { + "@thi.ng/api": "latest", + "@thi.ng/hdom": "latest", + "@thi.ng/rstream": "latest", + "@thi.ng/transducers": "latest" + } +} diff --git a/examples/hydrate-basics/src/index.ts b/examples/hydrate-basics/src/index.ts new file mode 100644 index 0000000000..403df7976a --- /dev/null +++ b/examples/hydrate-basics/src/index.ts @@ -0,0 +1,84 @@ +import { Atom } from "@thi.ng/atom"; +import { serialize } from "@thi.ng/hiccup"; +import { start } from "@thi.ng/hdom"; +import { canvas2D } from "@thi.ng/hdom-components/canvas"; +import { dropdown } from "@thi.ng/hdom-components/dropdown"; + +// basic state container +const state = new Atom({ + bg: "red", + freq: 0.01 +}); + +// state updates +const setBg = (x: string) => state.resetIn("bg", x); +const setFreq = (x: number) => state.resetIn("freq", x); + +// root component with different types of child components +const app = () => { + // HOF canvas component w/ life cycle methods see for further + // reference: + // https://github.com/thi-ng/umbrella/blob/master/packages/hdom-components/src/canvas.ts + // + // when serializing to html only the component's `render` method + // will be invoked. the component's `init` is invoked later when + // hydrating the DOM the `update` fn given here is canvas specific + const canvas = canvas2D({ + update: (el, ctx, _, time, __, ___, bg, freq) => { + const y = el.height / 2; + ctx.fillStyle = bg; + ctx.fillRect(0, 0, el.width, el.height); + ctx.strokeStyle = "white"; + ctx.lineWidth = 3; + ctx.beginPath(); + ctx.moveTo(0, y + y * Math.sin(time * freq)); + for (let x = 5; x < el.width; x += 5) { + ctx.lineTo(x, y + y * Math.sin((time + x) * freq)); + } + ctx.stroke(); + } + }); + // when serializing to HTML all event attributes w/ function values + // will be excluded, however the event listeners will be attached + // during hydration (1st frame of hdom update loop) + + // btw. the class names are for tachyons css + return (state) => { + state = state.deref(); + return ["div#root.w-50-ns.flex.ma2.sans-serif", + ["div.w-50-ns", + [canvas, { width: 200, height: 200 }, state.bg, state.freq]], + ["div.w-50-ns", + ["label.db.mb3", { for: "#bg" }, "Background color", + [dropdown, + { + id: "bg", + class: "w-100", + onchange: (e) => setBg(e.target.value) + }, + [["", "Choose..."], ["red", "Red"], ["green", "Green"], ["blue", "Blue"]], + state.bg + ]], + ["label.db.mb3", { for: "#freq" }, "Frequency", + ["input", { + id: "freq", + class: "w-100", + type: "range", + min: 0.001, + max: 0.02, + step: 0.001, + value: state.freq, + oninput: (e) => setFreq(parseFloat(e.target.value)) + }]] + ], + ]; + }; +}; + +// emulate SSR by serializing to HTML +const html = serialize(app()(state), null, false, true); +document.getElementById("app").innerHTML = html; +console.log(html); + +// ..then start hdom update loop w/ hydrate enabled +start(app(), { parent: "app", hydrate: true, ctx: state }); diff --git a/examples/hydrate-basics/tsconfig.json b/examples/hydrate-basics/tsconfig.json new file mode 100644 index 0000000000..bd6481a5a6 --- /dev/null +++ b/examples/hydrate-basics/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "." + }, + "include": [ + "./src/**/*.ts" + ] +} diff --git a/examples/hydrate-basics/webpack.config.js b/examples/hydrate-basics/webpack.config.js new file mode 100644 index 0000000000..e2bf1e8d3a --- /dev/null +++ b/examples/hydrate-basics/webpack.config.js @@ -0,0 +1,18 @@ +module.exports = { + entry: "./src/index.ts", + output: { + path: __dirname, + filename: "bundle.js" + }, + resolve: { + extensions: [".ts", ".js"] + }, + module: { + rules: [ + { test: /\.ts$/, use: "ts-loader" } + ] + }, + devServer: { + contentBase: "." + } +}; From e7607f53eb1c2429bebc9742a4bb853e86577a07 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Fri, 31 Aug 2018 21:33:23 +0100 Subject: [PATCH 49/60] docs(examples): update readmes --- examples/README.md | 29 +++++++++++++++-------------- examples/hydrate-basics/README.md | 3 +++ 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/examples/README.md b/examples/README.md index d00b0a0abf..e18bb82346 100644 --- a/examples/README.md +++ b/examples/README.md @@ -16,17 +16,18 @@ If you want to [contribute](../CONTRIBUTING.md) an example, please get in touch | 8 | [hdom-basics](./hdom-basics) | Hello world | hdom, hiccup | basic | | 9 | [hdom-benchmark](./hdom-benchmark) | hdom rendering perf / stress test, FPS counter | hdom, rstream, transducers | intermediate | | 10 | [hdom-theme-adr-0003](./hdom-theme-adr-0003) | hdom themed components proposal | hdom | intermediate | -| 11 | [interceptor-basics](./interceptor-basics) | Event handling w/ interceptors and side effects | atom, hdom, interceptors | intermediate | -| 12 | [json-components](./json-components) | JSON->component transformation, live editor | hdom, transducers | intermediate | -| 13 | [login-form](./login-form) | Basic SPA without router | atom, hdom | intermediate | -| 14 | [pointfree-svg](./pointfree-svg) | Generate SVG using pointfree DSL | hiccup, hiccup-svg, pointfree-lang | intermediate | -| 15 | [router-basics](./router-basics) | Complete mini SPA | atom, hdom, interceptors, router | advanced | -| 16 | [rstream-dataflow](./rstream-dataflow) | Dataflow graph | atom, hdom, rstream, rstream-gestures, rstream-graph, transducers | intermediate | -| 17 | [rstream-grid](./rstream-grid) | Dataflow graph SVG grid | atom, hdom, hiccup-svg, interceptors, rstream-graph, transducers | advanced | -| 18 | [rstream-hdom](./rstream-hdom) | rstream based UI updates & state handling | hdom, rstream, transducers | intermediate | -| 19 | [svg-particles](./svg-particles) | hdom SVG generation / animation | hdom, transducers | basic | -| 20 | [svg-waveform](./svg-waveform) | hdom SVG generation / undo history | atom, hdom, hiccup-svg, interceptors, iterators | intermediate | -| 21 | [todo-list](./todo-list) | Canonical Todo list with undo/redo | atom, hdom, transducers | intermediate | -| 22 | [transducers-hdom](./transducers-hdom) | Transducer & rstream based hdom UI updates | hdom, rstream, transducers-hdom | basic | -| 23 | [triple-query](./triple-query) | Triple store query results & sortable table | atom, hdom, hdom-components, rstream-query, transducers | intermediate | -| 24 | [webgl](./webgl) | Canvas component handling | hdom, hdom-components | basic | \ No newline at end of file +| 11 | [hydrate-basics](./hydrate-basics) | hiccup / hdom DOM hydration | hiccup, hdom | intermediate | +| 12 | [interceptor-basics](./interceptor-basics) | Event handling w/ interceptors and side effects | atom, hdom, interceptors | intermediate | +| 13 | [json-components](./json-components) | JSON->component transformation, live editor | hdom, transducers | intermediate | +| 14 | [login-form](./login-form) | Basic SPA without router | atom, hdom | intermediate | +| 15 | [pointfree-svg](./pointfree-svg) | Generate SVG using pointfree DSL | hiccup, hiccup-svg, pointfree-lang | intermediate | +| 16 | [router-basics](./router-basics) | Complete mini SPA | atom, hdom, interceptors, router | advanced | +| 17 | [rstream-dataflow](./rstream-dataflow) | Dataflow graph | atom, hdom, rstream, rstream-gestures, rstream-graph, transducers | intermediate | +| 18 | [rstream-grid](./rstream-grid) | Dataflow graph SVG grid | atom, hdom, hiccup-svg, interceptors, rstream-graph, transducers | advanced | +| 19 | [rstream-hdom](./rstream-hdom) | rstream based UI updates & state handling | hdom, rstream, transducers | intermediate | +| 20 | [svg-particles](./svg-particles) | hdom SVG generation / animation | hdom, transducers | basic | +| 21 | [svg-waveform](./svg-waveform) | hdom SVG generation / undo history | atom, hdom, hiccup-svg, interceptors, iterators | intermediate | +| 22 | [todo-list](./todo-list) | Canonical Todo list with undo/redo | atom, hdom, transducers | intermediate | +| 23 | [transducers-hdom](./transducers-hdom) | Transducer & rstream based hdom UI updates | hdom, rstream, transducers-hdom | basic | +| 24 | [triple-query](./triple-query) | Triple store query results & sortable table | atom, hdom, hdom-components, rstream-query, transducers | intermediate | +| 25 | [webgl](./webgl) | Canvas component handling | hdom, hdom-components | basic | \ No newline at end of file diff --git a/examples/hydrate-basics/README.md b/examples/hydrate-basics/README.md index 735b99eefb..4fcad46175 100644 --- a/examples/hydrate-basics/README.md +++ b/examples/hydrate-basics/README.md @@ -2,6 +2,9 @@ [Live demo](http://demo.thi.ng/umbrella/hydrate-basics/) +This example demonstrates how to hydrate a pre-created HTML DOM (e.g. +server-side rendering) client-side. + ```bash git clone https://github.com/thi-ng/umbrella.git cd umbrella/examples/hydrate-basics From 52417e37bc11adb4c5154cdf13d2810777aa2b44 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Fri, 31 Aug 2018 21:37:39 +0100 Subject: [PATCH 50/60] fix(examples): minor update hydrate demo --- examples/hydrate-basics/src/index.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/hydrate-basics/src/index.ts b/examples/hydrate-basics/src/index.ts index 403df7976a..0faa1b3e45 100644 --- a/examples/hydrate-basics/src/index.ts +++ b/examples/hydrate-basics/src/index.ts @@ -1,6 +1,6 @@ import { Atom } from "@thi.ng/atom"; -import { serialize } from "@thi.ng/hiccup"; -import { start } from "@thi.ng/hdom"; +import { serialize } from "@thi.ng/hiccup/serialize"; +import { start } from "@thi.ng/hdom/start"; import { canvas2D } from "@thi.ng/hdom-components/canvas"; import { dropdown } from "@thi.ng/hdom-components/dropdown"; @@ -81,4 +81,4 @@ document.getElementById("app").innerHTML = html; console.log(html); // ..then start hdom update loop w/ hydrate enabled -start(app(), { parent: "app", hydrate: true, ctx: state }); +start(app(), { hydrate: true, ctx: state }); From 1e8b4efae1a9f89c406a05e389419d509e44880d Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Fri, 31 Aug 2018 22:33:26 +0100 Subject: [PATCH 51/60] fix(hiccup): serialize() args --- packages/hiccup/src/serialize.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/hiccup/src/serialize.ts b/packages/hiccup/src/serialize.ts index f09b856157..9d8aeffe9a 100644 --- a/packages/hiccup/src/serialize.ts +++ b/packages/hiccup/src/serialize.ts @@ -83,13 +83,13 @@ import { escape } from "./escape"; * will have an autogenerated `key` attribute injected. If `span` is * enabled, `keys` will be enabled by default too. * - * @param tree elements / component tree + * @param tree hiccup elements / component tree * @param ctx arbitrary user context object * @param escape auto-escape entities * @param span use spans for text content * @param keys attach key attribs */ -export const serialize = (tree: any[], ctx?: any, escape = false, span = false, keys = span, path = [0]) => +export const serialize = (tree: any, ctx?: any, escape = false, span = false, keys = span, path = [0]) => _serialize(tree, ctx, escape, span, keys, path); const _serialize = (tree: any, ctx: any, esc: boolean, span: boolean, keys: boolean, path: any[]) => { From 5e74a9c005dc95d5177aa9696ca84e97eafa149a Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Fri, 31 Aug 2018 22:38:00 +0100 Subject: [PATCH 52/60] feat(hdom): update HDOMOpts & start() - add `normalize` option - simplify `start()` --- packages/hdom/src/api.ts | 11 +++++++++-- packages/hdom/src/start.ts | 16 ++++++++-------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/packages/hdom/src/api.ts b/packages/hdom/src/api.ts index f7fda74bf1..461285df3d 100644 --- a/packages/hdom/src/api.ts +++ b/packages/hdom/src/api.ts @@ -18,11 +18,12 @@ export interface ComponentAttribs { export interface HDOMOpts { /** - * Root element or ID + * Root element or ID (default: "app"). */ root: Element | string; /** - * Arbitrary user context object + * Arbitrary user context object, passed to all component functions + * embedded in the tree. */ ctx?: any; /** @@ -40,6 +41,12 @@ export interface HDOMOpts { * undefined behavior. */ hydrate?: boolean; + /** + * If true (default), the hdom component tree will be first + * normalized before diffing (using `normalizeTree()`). Unless you + * know what you're doing, it's best to leave this enabled. + */ + normalize?: boolean; } export const DEBUG = false; diff --git a/packages/hdom/src/start.ts b/packages/hdom/src/start.ts index 669b49c276..d40f7ce45b 100644 --- a/packages/hdom/src/start.ts +++ b/packages/hdom/src/start.ts @@ -43,21 +43,21 @@ import { hydrateDOM } from "@thi.ng/hdom/src/dom"; * @param opts options */ export const start = (tree: any, opts?: Partial) => { - opts = { root: "app", span: true, ...opts }; + opts = { root: "app", span: true, normalize: true, ...opts }; let prev = []; let isActive = true; - let hydrate = opts.hydrate; - const spans = opts.span !== false; const root = isString(opts.root) ? document.getElementById(opts.root) : opts.root; - function update() { + const update = () => { if (isActive) { - const curr = normalizeTree(tree, opts.ctx, [0], true, spans); + const curr = opts.normalize ? + normalizeTree(tree, opts.ctx, [0], true, opts.span) : + tree; if (curr != null) { - if (hydrate) { + if (opts.hydrate) { hydrateDOM(root, curr); - hydrate = false; + opts.hydrate = false; } else { diffElement(root, prev, curr); } @@ -66,7 +66,7 @@ export const start = (tree: any, opts?: Partial) => { // check again in case one of the components called cancel isActive && requestAnimationFrame(update); } - } + }; requestAnimationFrame(update); return () => (isActive = false); }; From 0f396948bdf6cacd03fa0dfe682f9dfd7b8f0253 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Fri, 31 Aug 2018 22:41:49 +0100 Subject: [PATCH 53/60] feat(transducers-hdom): add DOM hydration support, rename (#39) - replace args with HDOMOpts - add support for `hydrate` - reflect same logic as w/ hdom `start()` re: null values BREAKING CHANGE: rename transducer: `updateUI` => `updateDOM`, new API --- packages/transducers-hdom/README.md | 23 +++++++++----- packages/transducers-hdom/src/index.ts | 43 +++++++++++++++++++------- 2 files changed, 47 insertions(+), 19 deletions(-) diff --git a/packages/transducers-hdom/README.md b/packages/transducers-hdom/README.md index b555ccc4c5..6e2f223c66 100644 --- a/packages/transducers-hdom/README.md +++ b/packages/transducers-hdom/README.md @@ -17,7 +17,7 @@ This project is part of the ## About -This package provides a single `updateUI` function, a side-effecting & +This package provides a single `updateDOM` function, a side-effecting & stateful transducer which receives [@thi.ng/hdom](https://github.com/thi-ng/umbrella/tree/master/packages/hdom) component trees, diffs each against the previous value and applies any @@ -25,14 +25,23 @@ required changes to the browser DOM, starting at given root element. By default, incoming values are first normalized using @thi.ng/hdom's `normalizeTree()` function. +If the `hydrate` option is given, the first received tree is only used +to inject event listeners and initialize components with lifecycle +`init()` methods and expects an otherwise identical pre-existing DOM. +All succeeding trees are diffed then as usual. + This transducer is primarily intended for [@thi.ng/rstream](https://github.com/thi-ng/umbrella/tree/master/packages/rstream)-based -dataflow graphs, where this transducer can be used as final leaf -subscription / transformer to reflect UI changes back to the user, -without using the standard RAF update loop used by @thi.ng/hdom by -default. In this setup, UI updates will only be performed if the stream -this transducer is attached to receives new values (i.e. hdom component -trees). +dataflow graphs, where it can be used as final leaf subscription / +stream transformer to reflect UI changes back to the user, without using +the usual RAF update loop used by @thi.ng/hdom by default. In this +setup, DOM updates will only be performed if the stream this transducer +is attached to receives new values (i.e. hdom component trees). + +Please also see the following hdom references for further details: + +- [start()](https://github.com/thi-ng/umbrella/tree/master/packages/hdom/src/start.ts) +- [HDOMOpts](https://github.com/thi-ng/umbrella/tree/master/packages/hdom/src/api.ts#L19) ## Installation diff --git a/packages/transducers-hdom/src/index.ts b/packages/transducers-hdom/src/index.ts index f2d49efb19..0d7aa6c5a3 100644 --- a/packages/transducers-hdom/src/index.ts +++ b/packages/transducers-hdom/src/index.ts @@ -1,5 +1,7 @@ import { isString } from "@thi.ng/checks/is-string"; +import { HDOMOpts } from "@thi.ng/hdom/api"; import { diffElement } from "@thi.ng/hdom/diff"; +import { hydrateDOM } from "@thi.ng/hdom/dom"; import { normalizeTree } from "@thi.ng/hdom/normalize"; import { Transducer } from "@thi.ng/transducers/api"; import { reducer } from "@thi.ng/transducers/reduce"; @@ -14,27 +16,44 @@ import { scan } from "@thi.ng/transducers/xform/scan"; * `normalizeTree()` function and the given (optional) `ctx` object is * provided to all embedded component functions in the tree. * + * If the `hydrate` option is given, the first received tree is only + * used to inject event listeners and initialize components with + * lifecycle `init()` methods and expects an otherwise identical, + * pre-existing DOM. All succeeding trees are diffed then as usual. + * * This transducer is primarily intended for @thi.ng/rstream dataflow - * graph based applications, where this transducer can be used as final - * leaf subscription to reactively reflect UI changes back to the user, - * without using the standard RAF update loop used by hdom by default. - * In this setup, UI updates will only be performed when the stream this + * graph based applications, where it can be used as final leaf + * subscription to reactively reflect UI changes back to the user, + * without using the usual RAF update loop used by hdom by default. In + * this setup, DOM updates will only be performed when the stream this * transducer is attached to emits new values (i.e. hdom component * trees). * - * @param root root element (or ID) - * @param ctx hdom user context - * @param normalize + * Please see here for further details: + * https://github.com/thi-ng/umbrella/blob/master/packages/hdom/src/start.ts + * + * @param opts hdom options */ -export const updateUI = (root: string | Element, ctx?: any, normalize = true): Transducer => { - root = isString(root) ? document.getElementById(root) : root; +export const updateDOM = (opts?: Partial): Transducer => { + opts = { root: "app", span: true, normalize: true, ...opts }; + const root = isString(opts.root) ? + document.getElementById(opts.root) : + opts.root; return scan( reducer( () => [], (prev, curr) => { - normalize && (curr = normalizeTree(curr, ctx)); - diffElement(root, prev, curr); - return curr; + opts.normalize && (curr = normalizeTree(curr, opts.ctx, [0], opts.span)); + if (curr != null) { + if (opts.hydrate) { + hydrateDOM(root, curr); + opts.hydrate = false; + } else { + diffElement(root, prev, curr); + } + return curr; + } + return prev; } ) ); From 1a6741a10c7787fb38941af9e80197cf9a0b5493 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Fri, 31 Aug 2018 22:42:34 +0100 Subject: [PATCH 54/60] refactor(examples): update `updateDOM()` transducer call sites --- examples/canvas-dial/src/index.ts | 4 +-- examples/commit-table-ssr/src/client/index.ts | 4 +-- examples/rstream-hdom/src/index.ts | 28 ++++++++++--------- examples/transducers-hdom/src/index.ts | 6 ++-- 4 files changed, 22 insertions(+), 20 deletions(-) diff --git a/examples/canvas-dial/src/index.ts b/examples/canvas-dial/src/index.ts index 877fdedbee..b3fe03cc38 100644 --- a/examples/canvas-dial/src/index.ts +++ b/examples/canvas-dial/src/index.ts @@ -1,7 +1,7 @@ import { stream } from "@thi.ng/rstream/stream"; import { sync } from "@thi.ng/rstream/stream-sync"; import { percent } from "@thi.ng/strings/percent"; -import { updateUI } from "@thi.ng/transducers-hdom"; +import { updateDOM } from "@thi.ng/transducers-hdom"; import { comp } from "@thi.ng/transducers/func/comp"; import { map } from "@thi.ng/transducers/xform/map"; @@ -67,7 +67,7 @@ const app = () => { // stream combinator & reactive DOM update sync({ src: ctx.streams, - xform: comp(map(app()), updateUI("app")) + xform: comp(map(app()), updateDOM()) }); // seed dials with initial values diff --git a/examples/commit-table-ssr/src/client/index.ts b/examples/commit-table-ssr/src/client/index.ts index 35a5801ee7..453fa9887d 100644 --- a/examples/commit-table-ssr/src/client/index.ts +++ b/examples/commit-table-ssr/src/client/index.ts @@ -3,7 +3,7 @@ import { fromInterval } from "@thi.ng/rstream/from/interval"; import { stream } from "@thi.ng/rstream/stream"; import { sync } from "@thi.ng/rstream/stream-sync"; import { resolve as resolvePromise } from "@thi.ng/rstream/subs/resolve"; -import { updateUI } from "@thi.ng/transducers-hdom"; +import { updateDOM } from "@thi.ng/transducers-hdom"; import { add } from "@thi.ng/transducers/rfn/add"; import { conj } from "@thi.ng/transducers/rfn/conj"; import { transduce } from "@thi.ng/transducers/transduce"; @@ -116,7 +116,7 @@ sync({ // apply root component map(app), // apply hdom tree to real DOM - updateUI("app", ctx) + updateDOM({ ctx }) ); // manual kick off is needed here, since the above stream sync construct diff --git a/examples/rstream-hdom/src/index.ts b/examples/rstream-hdom/src/index.ts index a0f45120af..ca7f079685 100644 --- a/examples/rstream-hdom/src/index.ts +++ b/examples/rstream-hdom/src/index.ts @@ -3,7 +3,7 @@ import { fromRAF } from "@thi.ng/rstream/from/raf"; import { sync } from "@thi.ng/rstream/stream-sync"; import { sidechainPartition } from "@thi.ng/rstream/subs/sidechain-partition"; import { Subscription, subscription } from "@thi.ng/rstream/subscription"; -import { updateUI } from "@thi.ng/transducers-hdom"; +import { updateDOM } from "@thi.ng/transducers-hdom"; import { peek } from "@thi.ng/transducers/func/peek"; import { vals } from "@thi.ng/transducers/iter/vals"; import { reducer } from "@thi.ng/transducers/reduce"; @@ -25,31 +25,33 @@ const ctx = { }; /** - * Takes a `parent` DOM element, a stream of `root` component values and - * an arbitrary user context object which will be implicitly passed to - * all component functions embedded in the root component. Subscribes to - * `root` stream & performs DOM diffs / updates using incoming values - * (i.e. UI components). Additionally, a RAF side chain stream is used - * here to synchronize DOM updates to be processed during RAF. + * Takes a `root` DOM element, a stream of `tree` component values and + * an (optional) arbitrary user context object which will be implicitly + * passed to all component functions embedded in the root component. + * Subscribes to `root` stream & performs DOM diffs / updates using + * incoming values (i.e. UI components). Additionally, a RAF side chain + * stream is used here to synchronize DOM update requests to be only + * processed during RAF. If multiple updates are triggered per frame, + * this also ensures that the DOM is only updated once per frame. * * Without RAF synchronization, the following would be sufficient: * * ``` - * root.transform(updateUI(parent, ctx)) + * root.transform(updateDOM({root, ctx})) * ``` * * Returns stream of hdom trees. * - * @param parent root DOM element - * @param root root hdom component stream + * @param root root DOM element + * @param tree hdom component stream * @param ctx user context object */ -const domUpdate = (parent: HTMLElement, root: ISubscribable, ctx?: any) => - root +const domUpdate = (root: HTMLElement, tree: ISubscribable, ctx?: any) => + tree .subscribe(sidechainPartition(fromRAF())) .transform( map(peek), - updateUI(parent, ctx) + updateDOM({ root, ctx }) ); /** diff --git a/examples/transducers-hdom/src/index.ts b/examples/transducers-hdom/src/index.ts index 399b5c8776..8ae55763e1 100644 --- a/examples/transducers-hdom/src/index.ts +++ b/examples/transducers-hdom/src/index.ts @@ -1,7 +1,7 @@ import { fromInterval } from "@thi.ng/rstream/from/interval"; import { stream } from "@thi.ng/rstream/stream"; import { sync } from "@thi.ng/rstream/stream-sync"; -import { updateUI } from "@thi.ng/transducers-hdom"; +import { updateDOM } from "@thi.ng/transducers-hdom"; import { count } from "@thi.ng/transducers/rfn/count"; import { map } from "@thi.ng/transducers/xform/map"; import { scan } from "@thi.ng/transducers/xform/scan"; @@ -41,8 +41,8 @@ sync({ // transform into hdom component map(app), // apply hdom tree to real DOM - updateUI("app") + updateDOM() ); // kick off -clickStream.next(0); \ No newline at end of file +clickStream.next(0); From 473aadc145d954e6a982add32e9ca842b98eb592 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Fri, 31 Aug 2018 22:45:19 +0100 Subject: [PATCH 55/60] refactor(examples): update crypto-chart to use `updateDOM` xform --- examples/crypto-chart/src/index.ts | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/examples/crypto-chart/src/index.ts b/examples/crypto-chart/src/index.ts index 0039ac4aa2..773266a98c 100644 --- a/examples/crypto-chart/src/index.ts +++ b/examples/crypto-chart/src/index.ts @@ -1,6 +1,4 @@ import { dropdown, DropDownOption } from "@thi.ng/hdom-components/dropdown"; -import { diffElement } from "@thi.ng/hdom/diff"; -import { normalizeTree } from "@thi.ng/hdom/normalize"; import { group } from "@thi.ng/hiccup-svg/group"; import { line } from "@thi.ng/hiccup-svg/line"; import { polygon } from "@thi.ng/hiccup-svg/polygon"; @@ -16,6 +14,7 @@ import { sync } from "@thi.ng/rstream/stream-sync"; import { resolve as resolvePromise } from "@thi.ng/rstream/subs/resolve"; import { trace } from "@thi.ng/rstream/subs/trace"; import { padLeft } from "@thi.ng/strings/pad-left"; +import { updateDOM } from "@thi.ng/transducers-hdom"; import { ema } from "@thi.ng/transducers-stats/ema"; import { hma } from "@thi.ng/transducers-stats/hma"; import { sma } from "@thi.ng/transducers-stats/sma"; @@ -23,7 +22,6 @@ import { wma } from "@thi.ng/transducers-stats/wma"; import { comp } from "@thi.ng/transducers/func/comp"; import { pairs } from "@thi.ng/transducers/iter/pairs"; import { range } from "@thi.ng/transducers/iter/range"; -import { reducer } from "@thi.ng/transducers/reduce"; import { max } from "@thi.ng/transducers/rfn/max"; import { min } from "@thi.ng/transducers/rfn/min"; import { push } from "@thi.ng/transducers/rfn/push"; @@ -33,7 +31,6 @@ import { map } from "@thi.ng/transducers/xform/map"; import { mapIndexed } from "@thi.ng/transducers/xform/map-indexed"; import { mapcat } from "@thi.ng/transducers/xform/mapcat"; import { pluck } from "@thi.ng/transducers/xform/pluck"; -import { scan } from "@thi.ng/transducers/xform/scan"; // this example demonstrates how to use @thi.ng/rstream & // @thi.ng/transducer constructs to create a basic cryptocurrency candle @@ -404,16 +401,7 @@ sync({ ] ), // perform hdom update / diffing - scan( - reducer( - () => [], - (prev, curr) => { - curr = normalizeTree(curr, {}); - diffElement(document.getElementById("app"), prev, curr); - return curr; - } - ) - ) + updateDOM() ) }); From 1060b2a3ec422593229946d262f1350cb92f6547 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Fri, 31 Aug 2018 23:23:00 +0100 Subject: [PATCH 56/60] docs(hdom): update readme, add hydrate docs --- packages/hdom/README.md | 146 ++++++++++++++++++++++++--------------- packages/hdom/src/dom.ts | 12 ++++ 2 files changed, 104 insertions(+), 54 deletions(-) diff --git a/packages/hdom/README.md b/packages/hdom/README.md index 85f7a5ba30..2667e86f9e 100644 --- a/packages/hdom/README.md +++ b/packages/hdom/README.md @@ -8,7 +8,8 @@ This project is part of the - [About](#about) - - [Minimal example](#minimal-example) + - [Minimal example #1: Local state, RAF update](#minimal-example-1-local-state-raf-update) + - [Minimal example #2 (reactive state & transducer update)](#minimal-example-2-reactive-state--transducer-update) - [Component tree translation](#component-tree-translation) - [Event & state handling options](#event--state-handling-options) - [Reusable components](#reusable-components) @@ -19,6 +20,7 @@ This project is part of the - [User context injection](#user-context-injection) - [Component objects & life cycle methods](#component-objects--life-cycle-methods) - [Example projects](#example-projects) + - [Realtime crypto chart](#realtime-crypto-chart) - [Interactive SVG grid generator](#interactive-svg-grid-generator) - [Interactive additive waveform visualization](#interactive-additive-waveform-visualization) - [Dataflow graph SVG components](#dataflow-graph-svg-components) @@ -27,11 +29,7 @@ This project is part of the - [Multiple apps with & without shared state](#multiple-apps-with--without-shared-state) - [Interceptor based event handling](#interceptor-based-event-handling) - [Todo list](#todo-list) - - [Cellular automata](#cellular-automata) - [SVG particles](#svg-particles) - - [JSON based components](#json-based-components) - - [@thi.ng/rstream dataflow graph](#thingrstream-dataflow-graph) - - [Basic usage patterns](#basic-usage-patterns) - [Benchmark](#benchmark) - [Authors](#authors) - [License](#license) @@ -40,7 +38,7 @@ This project is part of the ## About -Lightweight reactive DOM components & VDOM implementation using only +Lightweight reactive DOM components & VDOM-ish implementation using only vanilla JS data structures (arrays, objects with life cycle functions, closures, iterators), based on [@thi.ng/hiccup](https://github.com/thi-ng/umbrella/tree/master/packages/hiccup). @@ -52,19 +50,23 @@ closures, iterators), based on - [Supports SVG](https://github.com/thi-ng/umbrella/tree/master/packages/hiccup-svg), arbitrary elements, attributes, events +- Suitable for server side rendering (by passing the same data structure + to @thi.ng/hiccup's `serialize()`) and then "hydrating" listeners and + components with life cycle methods - Less verbose than HTML / JSX, resulting in smaller file sizes - Static components can be distributed as JSON (or [transform JSON into components](https://github.com/thi-ng/umbrella/tree/master/examples/json-components)) - Optional user context injection (an arbitrary object passed to all component functions) -- auto-deref of embedded value wrappers which implement the +- CSS conversion from JS objects for `style` attribs +- Auto-deref of embedded value wrappers which implement the [@thi.ng/api/IDeref](https://github.com/thi-ng/umbrella/tree/master/packages/api/api) interface (e.g. atoms, cursors, derived views, streams etc.) -- CSS conversion from JS objects for `style` attribs -- Suitable for server side rendering (by passing the same data structure - to @thi.ng/hiccup's `serialize()`) - Fairly fast (see benchmark example below) -- Only ~4.4KB gzipped +- Only ~5KB gzipped + +hdom is *very* flexible and supports different workflows and means to +update a DOM... In addition to the descriptions in this file, [further information and examples are available in the @@ -74,7 +76,7 @@ Also see the [work-in-progress ADRs](https://github.com/thi-ng/umbrella/tree/master/packages/hdom-components/adr/) for component configuration. -### Minimal example +### Minimal example #1: Local state, RAF update ```ts import * as hdom from "@thi.ng/hdom"; @@ -97,7 +99,7 @@ const app = () => { }; // start update loop (browser only, see diagram below) -hdom.start(document.body, app()); +hdom.start(app(), { root: document.body }); // alternatively apply DOM tree only once // (stateful components won't update though) @@ -118,11 +120,52 @@ console.log(serialize(app())); //

hello world

``` -No template engine & no pre-compilation steps needed, just use the full -expressiveness of ES6/TypeScript to define your DOM tree. Using -TypeScript gives the additional benefit of making UI components strongly -typed, and since they're just normal functions, can use generics, -overrides, varargs etc. +### Minimal example #2 (reactive state & transducer update) + +This example uses the +[@thi.ng/transducers-hdom](https://github.com/thi-ng/umbrella/tree/master/packages/transducers-hdom) +support library to perform reactive DOM updates (instead of regular +diffing via RAF). + +```ts +import * as rs from "@thi.ng/rstream/stream"; +import * as tx from "@thi.ng/rstream/transducers"; +import { updateDOM } from "@thi.ng/rstream/transducers-hdom"; + +// root component function +const app = ({ ticks, clicks }) => + ["div", + `${ticks} ticks & `, + ["a", + { href: "#", onclick: () => clickStream.next(0)}, + `${clicks} clicks`] + ]; + +// click stream (click counter) +const clickStream = rs.stream().transform(tx.scan(tx.count(-1))); + +// stream combinator +// waits until all inputs have produced at least one value, +// then updates whenever any input has changed +sync({ + // streams to synchronize + src: { + ticks: rs.fromInterval(1000), + clicks: clickStream, + }, +}).transform( + // transform tuple into hdom component + tx.map(app), + // apply hdom tree to real DOM + updateDOM({ root: document.body }) +); + +// kick off +clickStream.next(0); +``` + +[Live demo](https://demo.thi.ng/umbrella/transducers-hdom/) | +[standalone example](https://github.com/thi-ng/umbrella/tree/master/examples/transducers-hdom) ### Component tree translation @@ -164,9 +207,8 @@ provided by these packages: ## Status The overall "API" is stable, but there's further work planned on -generalizing the approach beyond standard browser DOM use cases (planned -for v4.0.0). The project has been used for several projects in -production since 2016. +generalizing the approach beyond standard browser DOM use cases. The +project has been used for several projects in production since 2016. ## Installation @@ -194,7 +236,6 @@ yarn start - [@thi.ng/diff](https://github.com/thi-ng/umbrella/tree/master/packages/diff) - [@thi.ng/equiv](https://github.com/thi-ng/umbrella/tree/master/packages/equiv) - [@thi.ng/hiccup](https://github.com/thi-ng/umbrella/tree/master/packages/hiccup) -- [@thi.ng/iterators](https://github.com/thi-ng/umbrella/tree/master/packages/iterators) ## Usage @@ -205,7 +246,7 @@ reference to learn about the basics of the approach and syntax used. Both projects started in early 2016, have somewhat evolved independently, however should be considered complementary. -#### `start(parent: Element | string, tree: any, ctx?: any, path?: number[], keys?: boolean, span?: boolean): () => boolean` +#### `start(tree: any, opts?: Partial): () => any` Main user function of this package. For most use cases, this function should be the only one required in user code. It takes a parent DOM @@ -229,10 +270,14 @@ previous DOM tree is kept around until the root function returns a tree again, which then is diffed and applied against the previous tree kept as usual. Any number of frames may be skipped this way. -**Important:** The parent element given is assumed to have NO children at -the time when `start()` is called. Since hdom does NOT track the real -DOM, the resulting changes will result in potentially undefined behavior -if the parent element wasn't empty. +**Important:** Unless the `hydrate` option is enabled, the parent +element given is assumed to have NO children at the time when `start()` +is called. Since hdom does NOT track the real DOM, the resulting changes +will result in potentially undefined behavior if the parent element +wasn't empty. Likewise, if `hydrate` is enabled, it is assumed that an +equivalent DOM (minus listeners) already exists (i.e. generated via SSR) +when `start()` is called. Any other discrepancies between the +pre-existing DOM and the hdom trees will cause undefined behavior. Returns a function, which when called, immediately cancels the update loop. @@ -290,6 +335,14 @@ of elements, if the provided tree is an iterable. Creates DOM text nodes for non-component values. Returns `parent` if tree is `null` or `undefined`. +#### `hydrateDOM(parent: Element, tag: any)` + +Takes a DOM root element and normalized hdom tree, then walks tree and +initializes any event listeners and components with lifecycle init +methods. Assumes that an equivalent DOM (minus listeners) already exists +(e.g. generated via SSR) when called. Any other discrepancies between +the pre-existing DOM and the hdom tree will cause undefined behavior. + ### User context injection Since v3.0.0 hdom offers support for an arbitrary "context" object @@ -349,7 +402,7 @@ const root = [ ]; // start hdom update loop -start("app", root, ctx); +start(root, { ctx }); ``` ### Component objects & life cycle methods @@ -421,8 +474,8 @@ const canvas = () => { // usage scenario #1: static component // inline initialization is okay here... start( - document.body, - [canvas(), { width: 100, height: 100 }, "Hello world"] + [canvas(), { width: 100, height: 100 }, "Hello world"], + { root: document.body } ); @@ -445,12 +498,12 @@ const app = () => { ]; }; -start(document.body, app()); +start(app(), { root: document.body }); ``` ## Example projects -Most of the +Most of the 25 [examples](https://github.com/thi-ng/umbrella/tree/master/examples) included in this repo are using this package in one way or another. Please check them out to learn more. Each is heavily commented, incl. @@ -458,6 +511,11 @@ best practice notes. Non-exhaustive list: +### Realtime crypto chart + +[Source](https://github.com/thi-ng/umbrella/tree/master/examples/crypto-chart) | +[Live version](https://demo.thi.ng/umbrella/crypto-chart/) + ### Interactive SVG grid generator [Source](https://github.com/thi-ng/umbrella/tree/master/examples/rstream-grid) | @@ -504,30 +562,10 @@ A fully documented, obligatory todo list app with undo / redo. [Source](https://github.com/thi-ng/umbrella/tree/master/examples/todo-list) | [Live version](https://demo.thi.ng/umbrella/todo-list/) -### Cellular automata - -[Source](https://github.com/thi-ng/umbrella/tree/master/examples/cellular-automata) | [Live version](https://demo.thi.ng/umbrella/cellular-automata/) - ### SVG particles [Source](https://github.com/thi-ng/umbrella/tree/master/examples/svg-particles) | [Live version](https://demo.thi.ng/umbrella/svg-particles/) -### JSON based components - -[Source](https://github.com/thi-ng/umbrella/tree/master/examples/json-components) | [Live version](https://demo.thi.ng/umbrella/json-components/) - -### @thi.ng/rstream dataflow graph - -A small, interactive dataflow graph example: - -[Source](https://github.com/thi-ng/umbrella/tree/master/examples/rstream-dataflow) | [Live version](https://demo.thi.ng/umbrella/rstream-dataflow) - -### Basic usage patterns - -The code below is also available as standalone project in: [/examples/dashboard](https://github.com/thi-ng/umbrella/tree/master/examples/dashboard) - -[Source](https://github.com/thi-ng/umbrella/tree/master/examples/dashboard) | [Live version](https://demo.thi.ng/umbrella/dashboard/) - ### Benchmark A stress test benchmark is here: @@ -540,8 +578,8 @@ Twitter](https://twitter.com/toxi/status/959246871339454464), performance should be more than acceptable for even quite demanding UIs. In the 192 / 256 cells configurations **this stress test causes approx. 600 / 800 DOM every single frame**, very unlikely for a typical web app. -In Chrome 64 on a MBP2016 this still runs at a stable 60fps (192 cells) -/ 32fps (256 cells). Both FPS readings based the 50 frame +In Chrome 68 on a MBP2016 this still runs at a stable 60fps (192 cells) +/ 37fps (256 cells). Both FPS readings based the 50 frame [SMA](https://en.wikipedia.org/wiki/Moving_average#Simple_moving_average). ## Authors diff --git a/packages/hdom/src/dom.ts b/packages/hdom/src/dom.ts index 0a64a7d569..bc06b5b1ea 100644 --- a/packages/hdom/src/dom.ts +++ b/packages/hdom/src/dom.ts @@ -54,6 +54,18 @@ export const createDOM = (parent: Element, tag: any, insert?: number) => { return createTextElement(parent, tag); }; +/** + * Takes a DOM root element and normalized hdom tree, then walks tree + * and initializes any event listeners and components with lifecycle + * `init` methods. Assumes that an equivalent DOM (minus listeners) + * already exists (e.g. generated via SSR) when called. Any other + * discrepancies between the pre-existing DOM and the hdom tree will + * cause undefined behavior. + * + * @param parent + * @param tree + * @param i + */ export const hydrateDOM = (parent: Element, tree: any, i = 0) => { if (isArray(tree)) { const el = parent.children[i]; From 7fa3852a332c2a05d771952c150020333a42d02a Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Fri, 31 Aug 2018 23:25:43 +0100 Subject: [PATCH 57/60] Publish - @thi.ng/hdom@4.0.0 - @thi.ng/hiccup-svg@1.0.12 - @thi.ng/hiccup@2.1.0 - @thi.ng/transducers-hdom@1.0.0 - @thi.ng/vectors@0.5.1 --- packages/hdom/CHANGELOG.md | 17 +++++++++++++++++ packages/hdom/package.json | 4 ++-- packages/hiccup-svg/CHANGELOG.md | 8 ++++++++ packages/hiccup-svg/package.json | 4 ++-- packages/hiccup/CHANGELOG.md | 17 +++++++++++++++++ packages/hiccup/package.json | 2 +- packages/transducers-hdom/CHANGELOG.md | 16 ++++++++++++++++ packages/transducers-hdom/package.json | 4 ++-- packages/vectors/CHANGELOG.md | 8 ++++++++ packages/vectors/package.json | 2 +- 10 files changed, 74 insertions(+), 8 deletions(-) diff --git a/packages/hdom/CHANGELOG.md b/packages/hdom/CHANGELOG.md index d3e2d4f3ce..4a507c26f7 100644 --- a/packages/hdom/CHANGELOG.md +++ b/packages/hdom/CHANGELOG.md @@ -3,6 +3,23 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [4.0.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom@3.0.35...@thi.ng/hdom@4.0.0) (2018-08-31) + + +### Features + +* **hdom:** add DOM hydration support (SSR), update start() ([#39](https://github.com/thi-ng/umbrella/issues/39)) ([9f8010d](https://github.com/thi-ng/umbrella/commit/9f8010d)) +* **hdom:** update HDOMOpts & start() ([5e74a9c](https://github.com/thi-ng/umbrella/commit/5e74a9c)) + + +### BREAKING CHANGES + +* **hdom:** start() args now as options object + + + + ## [3.0.35](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom@3.0.34...@thi.ng/hdom@3.0.35) (2018-08-27) diff --git a/packages/hdom/package.json b/packages/hdom/package.json index f9e96fa785..21a1815c4c 100644 --- a/packages/hdom/package.json +++ b/packages/hdom/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/hdom", - "version": "3.0.35", + "version": "4.0.0", "description": "Lightweight vanilla ES6 UI component & virtual DOM system", "main": "./index.js", "typings": "./index.d.ts", @@ -33,7 +33,7 @@ "@thi.ng/checks": "^1.5.7", "@thi.ng/diff": "^1.0.22", "@thi.ng/equiv": "^0.1.7", - "@thi.ng/hiccup": "^2.0.11" + "@thi.ng/hiccup": "^2.1.0" }, "keywords": [ "browser", diff --git a/packages/hiccup-svg/CHANGELOG.md b/packages/hiccup-svg/CHANGELOG.md index a1d4ef8789..8c6264826e 100644 --- a/packages/hiccup-svg/CHANGELOG.md +++ b/packages/hiccup-svg/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [1.0.12](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-svg@1.0.11...@thi.ng/hiccup-svg@1.0.12) (2018-08-31) + + + + +**Note:** Version bump only for package @thi.ng/hiccup-svg + ## [1.0.11](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-svg@1.0.10...@thi.ng/hiccup-svg@1.0.11) (2018-08-27) diff --git a/packages/hiccup-svg/package.json b/packages/hiccup-svg/package.json index 9791212072..b31197f38b 100644 --- a/packages/hiccup-svg/package.json +++ b/packages/hiccup-svg/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/hiccup-svg", - "version": "1.0.11", + "version": "1.0.12", "description": "SVG element functions for @thi.ng/hiccup & @thi.ng/hdom", "main": "./index.js", "typings": "./index.d.ts", @@ -28,7 +28,7 @@ "typescript": "^3.0.1" }, "dependencies": { - "@thi.ng/hiccup": "^2.0.11" + "@thi.ng/hiccup": "^2.1.0" }, "keywords": [ "components", diff --git a/packages/hiccup/CHANGELOG.md b/packages/hiccup/CHANGELOG.md index 6faeab98d4..fdded8e71e 100644 --- a/packages/hiccup/CHANGELOG.md +++ b/packages/hiccup/CHANGELOG.md @@ -3,6 +3,23 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [2.1.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup@2.0.11...@thi.ng/hiccup@2.1.0) (2018-08-31) + + +### Bug Fixes + +* **hiccup:** disable spans for certain element types ([1b97a25](https://github.com/thi-ng/umbrella/commit/1b97a25)) +* **hiccup:** serialize() args ([1e8b4ef](https://github.com/thi-ng/umbrella/commit/1e8b4ef)) + + +### Features + +* **hiccup:** add optional support for spans & auto keying ([#39](https://github.com/thi-ng/umbrella/issues/39)) ([1b0deb2](https://github.com/thi-ng/umbrella/commit/1b0deb2)) + + + + ## [2.0.11](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup@2.0.10...@thi.ng/hiccup@2.0.11) (2018-08-27) diff --git a/packages/hiccup/package.json b/packages/hiccup/package.json index 3125db76db..bafe767581 100644 --- a/packages/hiccup/package.json +++ b/packages/hiccup/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/hiccup", - "version": "2.0.11", + "version": "2.1.0", "description": "HTML/SVG/XML serialization of nested data structures, iterables & closures", "main": "./index.js", "typings": "./index.d.ts", diff --git a/packages/transducers-hdom/CHANGELOG.md b/packages/transducers-hdom/CHANGELOG.md index 37c2809d1b..dac2ce8ef7 100644 --- a/packages/transducers-hdom/CHANGELOG.md +++ b/packages/transducers-hdom/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [1.0.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-hdom@0.1.5...@thi.ng/transducers-hdom@1.0.0) (2018-08-31) + + +### Features + +* **transducers-hdom:** add DOM hydration support, rename ([#39](https://github.com/thi-ng/umbrella/issues/39)) ([0f39694](https://github.com/thi-ng/umbrella/commit/0f39694)) + + +### BREAKING CHANGES + +* **transducers-hdom:** rename transducer: `updateUI` => `updateDOM`, new API + + + + ## [0.1.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-hdom@0.1.4...@thi.ng/transducers-hdom@0.1.5) (2018-08-27) diff --git a/packages/transducers-hdom/package.json b/packages/transducers-hdom/package.json index a5544d104a..67e94084c6 100644 --- a/packages/transducers-hdom/package.json +++ b/packages/transducers-hdom/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/transducers-hdom", - "version": "0.1.5", + "version": "1.0.0", "description": "Transducer based UI updater for @thi.ng/hdom", "main": "./index.js", "typings": "./index.d.ts", @@ -29,7 +29,7 @@ }, "dependencies": { "@thi.ng/checks": "^1.5.7", - "@thi.ng/hdom": "^3.0.35", + "@thi.ng/hdom": "^4.0.0", "@thi.ng/transducers": "^2.0.1" }, "keywords": [ diff --git a/packages/vectors/CHANGELOG.md b/packages/vectors/CHANGELOG.md index 4be147ea95..9e93a41664 100644 --- a/packages/vectors/CHANGELOG.md +++ b/packages/vectors/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.5.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/vectors@0.5.0...@thi.ng/vectors@0.5.1) (2018-08-31) + + + + +**Note:** Version bump only for package @thi.ng/vectors + # [0.5.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/vectors@0.4.0...@thi.ng/vectors@0.5.0) (2018-08-30) diff --git a/packages/vectors/package.json b/packages/vectors/package.json index 182f093c18..116ae8f7cc 100644 --- a/packages/vectors/package.json +++ b/packages/vectors/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/vectors", - "version": "0.5.0", + "version": "0.5.1", "description": "Vector algebra for fixed & variable sizes, memory mapped, flexible layouts", "main": "./index.js", "typings": "./index.d.ts", From 208e57d2ecc0126d762e6e24805934f415e6f17d Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sat, 1 Sep 2018 01:06:28 +0100 Subject: [PATCH 58/60] docs: update various readme's, add/move screenshots --- assets/screenshots/canvas-dial.png | Bin 0 -> 48658 bytes assets/screenshots/commit-table-ssr.png | Bin 0 -> 321238 bytes assets/{ => screenshots}/crypto-chart.png | Bin assets/screenshots/estuary.jpg | Bin 0 -> 227587 bytes assets/{ => screenshots}/iges.png | Bin assets/screenshots/rstream-grid.png | Bin 0 -> 245754 bytes assets/screenshots/svg-waveform.png | Bin 0 -> 216433 bytes examples/crypto-chart/README.md | 2 +- packages/associative/README.md | 2 +- packages/cache/README.md | 3 +- packages/compose/README.md | 6 + packages/dcons/README.md | 1 + packages/dgraph/README.md | 2 +- packages/hdom-components/README.md | 2 +- packages/hdom/README.md | 191 ++++++++++++---------- packages/iges/README.md | 9 +- packages/memoize/README.md | 4 + packages/rle-pack/README.md | 1 + packages/router/README.md | 6 +- packages/rstream-gestures/README.md | 11 +- packages/sax/README.md | 1 + packages/strings/README.md | 5 + packages/transducers-fsm/README.md | 1 + packages/transducers-hdom/README.md | 10 +- packages/transducers-stats/README.md | 9 +- packages/transducers/README.md | 2 + packages/vectors/README.md | 7 + 27 files changed, 180 insertions(+), 95 deletions(-) create mode 100644 assets/screenshots/canvas-dial.png create mode 100644 assets/screenshots/commit-table-ssr.png rename assets/{ => screenshots}/crypto-chart.png (100%) create mode 100644 assets/screenshots/estuary.jpg rename assets/{ => screenshots}/iges.png (100%) create mode 100644 assets/screenshots/rstream-grid.png create mode 100644 assets/screenshots/svg-waveform.png diff --git a/assets/screenshots/canvas-dial.png b/assets/screenshots/canvas-dial.png new file mode 100644 index 0000000000000000000000000000000000000000..b0503c2ac98e2090e2222c087e123db9d689e8ca GIT binary patch literal 48658 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 literal 0 HcmV?d00001 diff --git a/assets/screenshots/commit-table-ssr.png b/assets/screenshots/commit-table-ssr.png new file mode 100644 index 0000000000000000000000000000000000000000..17bb736c5a988aaddfa1937f3a100b04ea858e64 GIT binary patch literal 321238 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%0DLZ9JLhs)%?j!;J-0%Mkf_$Jd*H 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

Y)Abeza1#Tb+4QGB0F_LAT5JGS?Z$SWj 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�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

cClU*)_fDaXODq7tR7lxARZvh65>>YONcD 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

@wIvoEx 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

Egik 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�lc7;Y&Doimepf-@2|d5F(U(s%*fRbHy};&vBJos7pTs=AY@9e{}-0tLJO?{ zRr;Fa1#Eu^W&a-L^6%=Prs5E6%4ozLWo-O=og*Y_dkHxx!i|{2_boI0fwa-zdjtbW z)Jlgr)t5cM@s4qQW2ve52{c>&W(0rV5m%XkgX1G$`~jj#IHaoaS80Oj1~ik1@1ZE~ z!Q1_{y*iiOmkD1;J&_1(Oo#_av@%6$$MR8__955&&+T0yDF=gCpcKC4Hp))jF#QZK z%0ra+b-BuJ=-`(7BO9lvk57|vQW=e?>d4AAfCXkRx)L;YPd385MEY)AQ~iH$D9hl8 zh7KmJr0W)p7;1Z}!a1Q7B|?`H@qWf#2h!+G$(bcJYct3290 z9Tq1SdH?M+Y`LgHe!1w4T1>cj1iOmz0i$+>0(qG%H(mru3Ym80M|Kj0?OPGXEF>w# zSLBD}nIfXqKBXU>+64$!iSvukcZgbaz29G1+XX0Hw@c#MAJ1R$!~34K-Sctb;U?eR zZ)1k8L@p^|oDLO+Wf2;zoXMeK}>{2 zjH_H1ON#>eDHS!f8RIXfX4PkDRB(`2fsGQPn{#qAIi{m~%V15pv!TYq3cDJq)vl>`ee*pFc%K!vY( zE%Y!No~rH(S7TS+#K_kvdA9`FF%w_&#(iaR1(huP1~102 zkql@fLGJoLKcpC>1_Rw-Qu3w0zX&?#6NE<1me5K#-{d&e(ibJTf-Y3`Ryuc0!O>^$ znxxWM)Qz-$f4IqKL=5UHX<@)cpL%twh6U4-%VdeBk<(E&x3fK$p@Ny$OQ0JO#4IR zQkU&BD%x&s4vzU>&dWBc+JOtl$Hu-CCJMHflm17P`EtMyR=9y)*2&ql%a#1!7vMiO zmAnUV^0Mnt2nmT@d`F@Cl3$$lS&h>-a zNtcv2Sbj8SU-%vd?|cT6g=fu#V!&g-iBXh;E6FQ+JE%ru5Fe0W5>`;-WnNK#3+owv z_0JD1Y}$Ch%z~Ltg!*xg0dgA!Z@i~as8q2PRKfSl#`Ci$1`Ef#+xoy12T8wznF*{z zK|gpoD+X6M5o9mOFhT=yXjFjx$3om788W>8EaU6o3wQBcl6)@-0oVWb2@?!C>9WBr zx9`2-kT>>1GIAsGvWR4{wIEYc1U_X~N%~UlR-f8bvA{@x2MSr0K%%$ak}ZK%5_Ab` z3B|_3LP2GOg_0{D(1V>@i2+E2<}*o%yd~DdMIaP;-!Y_j;R4Yfh$10KT@YC|tZ)$J zjSmRo_5nsuu3q7Eq#C#A%xnHst6;_F-gTe!Kkqe`Kq-0Q^#{gOwMm$Pxk4UaQKD|G z6PhAOZu$mg+TFcCp{8xSa5s8Wa2E^uRDRNx#Iz74t{IJfd5 zRva$HapPSqRNN)m@s|)mluQ8N!;S{Q6&Db$7O4E)CY3Yrc@7h_i%&0g1ezxMu*lUw z;~32E+5>L}t}@njEgINXm_wo;NJtNm^v#O-#AUisv*0;QD?b#cJ-|v=dS8ub$Kw^a z<2o&nprIbIgRX;OC`|=eKbv8nBj;WrX*3I<#q3RfJv@a}ceJf2bC<$iK3VhFm->75O!zh;Y|FcZM19!-x zP3RAxZb-No9tV_L7=0=-gIIV58-EDYGxO!{xx=>zLT&&MHH2MxCoPNqEm5)#;w95B zta*6ObCSu7)BBufxmn0nfd@!yq=9H9MYFFF(bcr8+0OuQFl64P_GC_T*l6fNRRSiO z5FjD^4}q?Mi%-;GF^Ur>J!X<(T@a393URkz9{u32{2ijd%x&b`5cxBS=nZ*bp-#@} zq8P5M2|+y1z+*?5P$h7~m$uG?_44ABx{QS1w>prZ+?Xaad#Z!3dcH=-XVyBOM*hFnomg-L^GZ_|A+Q2d{$k=}U#(qz0gqa~!DG6Fv^udl2k12<^%=nFT=hEJ>3K zOb4$sO1DRiEhH74950mQ;7;zg9G(L3=D?uYa}Ih7FD>ce0#aB;l5NLR&Ij9|m(k;z z8vQEMf^h~3PbhT28I(J@6KV`W>m*@_hJ_!>f1Kv8alGzKZpLSNQ|ns)1w53F)>g*|Vf zr^Zj8&x0>)EF;#w^D0BAXK`ZCta(ZNtf-K0dPYX}q>_#Zoun^S2RLR@^*F~jW7h7h zGc(YH(WQ&9in~cze(AV`EPOBIR-tdA{*>TK6W!#&q(h5tvX9y+gESU~TJMNzIylPk;Ui)xA60#YhPwzvk zl2HBztvD^LBptUkxQr^JkFh|1iwC+O1rNnm@zBt7aGs4&+H>6TE8){dPGwnAUK&*0 z;aVMO_~vua&B3#&T>LycQ}B6WYwmA;aUZ?+<+Z22gW{)-`xmG*AVx~zg_>N@Wdktn z9D9tN;XTQQo;#4>C-Rw}WA&07RS7n+wc%^(4ZPnhC;UVIIf=|%E!3zIA3h7(ff$Cn z{pVn?YwZ=tuol-nV}T1qKpzuA1=n~=jkLc9&^RJc%iF3u(yG&L-$Tx!-4v>hg7%n9 zQm@X;-^X8qS@*tqt@~!uITS_1hp!NLSJ?^xbPX25WQzRq(+#V}JYMH}yJ>(*428y` z7jKi*GrVxK1DILd5(g^;#=A?==kX?gtPK@1TTb2|`Ng?cpQ@Xqqt3T+U-qdcf9VPX z?u!P^cb9VkOY2MT8W|YeZqo_=hyu`{=FLsLjbbu^){oY@)D6=-OT{iL;PCXWIlQ^U zr-*zROpNv!y|3CD1($;P#r*O;AX#8YSbeHN?(5*OeSyI~&|J%1GXZiF6FIfRP&04OyP}c+sO)~7Baho86 z0cz4wH(+dm*o>824AGfzs$51>?#D+!2>t@crDDi+0{m^Z@e#!eg=$IBG_YUO8R!hh zg3B|RFd_=;U!Pf%8$fGNWvI-u)KMW&XFJ0a?k1jba_CIU`^86O$l=eco($sdU^wyQ zGGSwJL?tgNR&=r!ZoSsKMd#AmA0KbwZ1`Bmee{74F-pL7Oy6-gFZ*suw$LtSW~K|Y zfKNmg%^A~A&%~-r0Xm|wX&O5zT z@9M?Bi9orZcN+@Tyb%8$g?FfHX?^B%nevL{+JulrzQ4| zPOQj5yvi63R_!k-h|k!EsT8popb_RK06Sk_#_hKOQ`1D3U+^yMzE56Ok1e(yj&ze)=AeDTg+(?oJoX2$rW8ftM!9g1JOT+se4`Ivds)5Jrl56? z460wpUN6Kkb%Q!c$Tej|DFWsHR`E4ON^FFdAsR_@Oh~b!Jl$);*WY}-9LMK$*c_a6 z17|x2BD@4q_!={vj{Z{!<~BH&pW&)51431TnsqtbLgdJN#*9R4o%&XguW zD6izmbko~I)zBQgT9)E7Fhqa}>IRog>XLNmT!FYKzw4V3rMD1Nh;)jP9nZk5x)}4r74D-M6j|CKjX{bRHkhCB0L-%hadvWDp^O993r<@>veB z3*0y4JNuqk$_E^5^7TLeDjl^we@b#ilHuej)Gz*C!FMZtQ135+mh}A@HL-{?#7? ziOFmjVGeX2;tLgs7e*$jX;`KB_jd220l>5j z==#PNmLlzV$!D*lA4A-h+wHjL0~uPNZQ5sUws4T?O7e3A5{BG6)kF@w2GI944-yia z^F*iP@xTEDgN!|QIlWPE2}PqAsTQKyaFN~>D6QH8a_NzkOJqNvBXxq4C{|5WQL_a| zMM9FE(yk6g9^5U_WuMOu^IfzL`-wWiBFw=n$j>kw%U84k495(6RM1|75hNJb+hl1~o6${WNhF$+UIcvbJP!c{{j_^?3$~b%_}op3f&dM|K-T z**v}*U;iF)cxa28dEc7ME9H?DJ$Azc$h5XXnx#nkDpQKVeI>QgM0(#c*laWo;!_@@kFTS6Vg5_qLB zGzU(D!xs_A@8jS-{@{?of#-{375vobqf9y5IXEC)po@G+Kd?-}Q0LJ(-YH3U=4me( z+}L!COjh;FC+8JNq0IWX>h)P5c?5YPWUpyfFBHpOpx&QAKhh1-iV#`Ix#F* zv%kJa*ub(GCaL?(3&1#lKAMke6MRud4NA|+L=Z5NtV0Z+yoF%QhcT1Q6|KLl@gS`n zAruP)eMr$~D}Xp{v_EH%+7SD@$8u5vOMbKme;=N64?c%M=?dumoxgN-;R_{IFBY1N zs|qIX92D)jo!s=kSiO++3F%3Q@>h31rDnn9nDMV8+D8fS24#nT-RF zZ;&_~6TTcHj}70lpE~OK6o0pb+_e3WZdQse9t|k_sup~50s_MqF`QvqAuJN*%p33f zz<}Z64sP80Kwd% zyr_z-5PKXfmT~r3DM*um-&obiq|b=FYMAsUios3M^6!8A^DY;N5S2r~T7iQnErlA= znfUL|J7$^sc@Usb{?$$+X$1QnzLB%2c#Aybk;1w}ei-<%uCzlk8nPDkUUT93f0ie* zPTvwIceNmeaD5nbr3cM3+Gvnpx88s!(jmW9^}h>=XeNUsX4a{=be`hh3i#i*;r-hx z{^|Zl9ge9^qr4pCiglD|i#Z^gzmE`jiM)k~;v@te2kWZ@EXZe!AZ3T4AEZ0?Airp> z(kA@pbN=)1P-1qNE5qDs=v#&3V&Cau?del%!+%~lMcQ-0dtLwIhyUG|o~F0;YdCSg z=Ntb#$oro5zuyFT1A$;e3KSO6C~z?@aA9}iL9YG~7fQl_*gV)D|87*Q99-a}RYFzs zZ<~gM;jj4Ro=8!@VCQx~)F(d=$ctyh92Ul|->&UC@~L&leGb0T$E*3?lseFw`wK z2mk*k+95SDn1@N4$Uk58sC29%a$z5P|9gk< z*B=qXncWN$oOesDDY?!Fv3nna$*@fUj_1_N;e;89YL2MK&JU&g_WrL!kvLmI#`RWD*$B(wDLhg=fvn@6mb2!lU!>ist#`{(KUl8S)X94zn= z05k)a5vn>yXSsyG%drYqgapNYvtpb}7o&rJ%4RcqV0Y=$4FbMeKQZC);jD*q>1Y>{ z(DV9N`gl#CcFr^D}3^cLYY8nh=C-D86mLdU&A!>C{XPyH7Hg;8>{O@)WMQdPC zFAcvJd*=4lujDx0IoA2Td-Y`PJik=;B%>z#psC(khRUKgv&&{YE+Y%ey>P=!r!_Hk zp>Ah~j%iZunK${LjH_?ER+-Gii`;wEz4GR>2P_7gJ2~%+XZS>a<;6Sp1sf;3AKxu$ zSl(Dj+~=6H%`z5?t2Pvf6CXX>u;5AhLycHOouN?H#W;xjcVIOBRCzVWC}F8;M;vpD z*2(;#%2gvU)Tpk~Q0UOuP1F5nZ4Hx{u!)p-k&=2m8MKb8`cS_)*G_y@RYT+1tLsIL zLg=iEUeFQ+#_7rLex| z61nu8;>T_!)8hOq!@)y;PtS?dEz(7v%@|u@cf%^u%2}nbhl8gdbNWIPEZ=|D*fz}! zJvfQetI+bfr4;HnK7*IJ(94|3jeqd-)(o~yGAR?0I{MISxZDP^nZw;rcb#1AI-k5a zH^||?o0Noshtd{x*pvh7kw?2o{Q8@jWzvijR)!=!i_>`+eDPEWdJkUoLqF;#x@YE96Hq+^YC$+E7hn4~Hk>0Z`!lCj~1hL5!O9So!m zzr;N|OC>py>8WUEI+8ek*ni;zYkXV_&v&U5v)m-oN@j+R)~ zzs#k%(ns-~K{_h5OjY^DP_gsxwHD)FHR&5pbB#;altyCrIk~fRPq#GuX9g{fQ-*!H zyv!x@n3*Oopbty0&WYFiDp-}$6I!rd;@0NXxfD_A)h4N(e*#cPx0tq?VZ4n=+fPaI)F>A+X*KNyE z53;Lz1%Sg3B6oAY%O}n2(?aLA0t-+YY8OZsU%xE?f;Uw47shTYNoqiM?~Jn_j8wlR zhJi0hIL{0eu}*atC!bi~6Z8VHr?GK~Hsbhw*!Ep;ZQx8MJo!p_FG2I_Nas&2phMpm z?}8D+w_}P|w+7;olSpCmHTrDdpNZc^pIV(f0!z5PigweeadxPltBSHzjGysXe!Hm> zMk8IjQQP>HYiu~{XSvRt2K|lE2tM1Ubeo#xr#h>LkJdIl<9_YBpBzmN^3Prs_AoJg zb<4vxQP`p5Q`Fl;fypMX5lOL>ld~r{8eb-AEhj(nWm0xsw7q8Q+#iKaJ1$Z*SpHh_ z(xSNSkjim1jc92nwJ2Xt5T)1v57XpB^x4=@>hIHAv_T(FZE1#P25gqS#LW_#du_UR zsoqZobc}qBU`CEzGa7=wl@~TH6n76mJz~!g-*Cn^;{nWpp%D$1&Iz{Xr+E>XBFL!v z!xj{*iRv`vrS_0VDU|>_We12AaJWI{J|Yn}Ab5V>*xG+K`P%Wr1D&U<@hxUgLvA4i1ON)%Uu&nLGxl94k^d_v-$}P ziSZAvQiiNd7(E|Xu;-4s{GkG}jPh_9vObriFT0};UwgX58E;JZ#p8)O{IHvyKkhDM zGdHQ+rT0|&5kf8E@L=R|q>7+HwD|GphAw4lCKmI@vs8C9PbbC8Ei_%@njE&zWPI6E zqe#$^?G{=3_>=Fo=ThFM&P+y-D2`A8FolAw`b>g3sDDtB|HJ*L9(|SR>i7()4A_XUGYqN-)W}1l1 zB&>Nikk>q}KE-zh_(W!+>$x!AH4Kh*4^b%bP_38r70r_guK>lZMVNSfRb%fYYPr<# z-sd5>KwAB{>a`|4QdP)wnP)cX(*Lx3$Dvi zFv&b-|Iz$(RF0ri3mH6)$uOM5@^t`dxzxu@}44i9TCAMbV~_HL1~8PiBQSc2;) z|A7%kLe^w$EJ71@(4GoEdB%$9+>lC5wptZwN~z@Npv{f(FE-0xhc$OSTz+gOxP{S; z$BDU37evsW$+F6v*b@toXv;+F|vYrTFC}A*5 z{XRgydnsrhH<`@GtZCG)mbPaTVofqNp!CAlM$33i&d_erU>W*FyLMUb0H#l^BW&)g z@h4w;{e9;R+$Ec_ap?GWSxPv_SZ|~>wFeMT7bSit<{^Qx(-^eP&)lsssYmhwwyH-)|9pXkAuhfZ1aV=>FIm+v?v+|8oR`IYylpO(j{>Phph$Ro#c_gfhkNbZjJ z<_&RNPr8_|sc&Cw+J8l*rfZX|_0M(-r^dd7Cc&gJ$>dOC^HYAoR^6(NMJklbCV6dv z*#|g_SGF`e+asTzBvwjBQD%w_dMVU-U@n~0xb5bPmwqxXS(w>BoBt@6ysGy^rJnxkz@c+y@GAi&vOQqCwxq&TPXDa5toLRUhpkQIG1AyE`Jw&V z5k`2>zk!+R?fNj2Xo)BB@|#G9ccggUt|EUDr#D%RyF&h~^if;+loPbDV8Hh}@;A&g z#!bQyltR!ow1v22l7zzDu>nV~(3#+^;N~lX*|95cwUbJh{@CE@?$e4mh^QT$;<<&T zuij{naPA9Ey7@)cA#~t%(GlarJIPveQ4^j!4L0{`I9qy+INV0wO1oUOTRfO^=ujqj z;vtl|NycfMsTU*UzteFdVSWCyVeT0w6JejbzYj~ZW1?pkPKF<}TfzIqw5_(cFYqjoWJfH{38i+e0`n?aKn9 z#=GamIW@>`o|PWk2}tJN1w1OpR1aW5fQ(VmDKU%;`yQja)KIKH9`~g_j>A=Obz#&9HuUE_Oh5*K~EbzpJsV!} zG=7VCaopCH*b$koT9b$X{&xS8Qm%rXIw7O;nBtVP-+S^{#w=yP`zEsVTUWoFm?k3p z5y|;&)1PM}jD?IcqqQZC9H`u;)}do5&ZjEtgir5%xfUM$_M!5-^06QIY&@0s?sE%= zq3I4K+7P3KGIjYKKe(dV^4GVS_sQp{GZAX_-C(C5{*KK%tFojKe4 zVoIEbl=}9c<;|bzV%tlDwb?p}4>GINKHcRMZPdf|+84GtJt;1J;d!d5Hu_oVKpOj6 zcEx8*pW2h?oKg0f*5F(!8qL#r3(Y056G`!FnrLa2H*tyVc=ppB8(!Z^?3^6LyX(0Y zakl?Lf8>#FN%`oPW}i=p|D`ANoB}#BBoou1)3`cOJ=)`MNn?bDCg};_p6pt&<6EIo zO2xOacM0#5qEaU$O%3I7`uwNIU^oHdGX+(W<`WYkFN(^W@GI|g-H`B(Suksl7?Mn%iTFCGa zo>>d4x5KQ6D=$Hy2c4H_1SC|UiHm=xEp8I4C|`NQ-_pgbuah!n{z21irCSeP=1Acyn$@A?jxB&v$;O8VS{o z<0mu8B2@slq z7Gst{Sza)mV{jve{mdbt*O|9%O%2EDZg;a~4pRc@DnZKog<$`aT_TeQmtL8h=DtUt?^GY3 zZ|VlD$3mh?8wqZK+Dxof-jp%ZQ}o}oj+n&$3$FdhSDZtFxZ{nZ+<7BUg*JD#Txrga z14(MSM~-9tUh4}AAmngr`D$xzwJqxS(9yQS&$)Y!uf z4=XdE>aNbvX-+p}TWhvCpOh5o@MUE!!|uWlTZhHqDt29m51dqjk0-vU9KUSVP{a#e z)stBHJ~!N|Anwax@bQ+?ryd5#3!bQ>72sVIee7S9rW zOKL0rY1g&!Fz(_wly>jzzUO*9P6iIsaZ&=kpZm*8TzA2ervG?B76+GMUH0KFc%<05 zeuBwt^5rl-JpeYJBV#wIq&HeX`DjY*V(+c!pM=3Jq0IA}K-`0-)w4VNNA+5>l@qz4Yz#>U!-ejv6Swj|@7qNv z-sxXHB@t=eo3Xf&$XCLb9cR{`f4Z2a6n(PREtfATXHw7aVUbSLz0rO2)UkVWky+_P zczbq(xgCcvw%E4pr;+QDuMG#kTgbcn4r?7BHMWeA23HUz+Byg37FA^#a+gJi z1>8V?4NjJ$Nyw-|3OJ2y>9KZP3PzbXPe2M1jEQ^;SuQ9|#JLs(qt5%CvNv=+5oBVL zXSg2ANE}(by$K_>5Jiu{(>Y?d7JOMD83t^} zEDP7#R0n@I4OnAcr}E8@d7gIx($ncc837h=jXopc2g6;S+ZvU}PiHy2S_s-6NHv|7 z|IYQN4jgyZenz7bc_3-bo(Rf$f$fB|SMJRRJfn=?1EJoISlU&~H=m3TiakdXKOW=o zNY~6w4ro@0vu))(-F)lUM__q5Jx^e!?M6-ZpM>TMEM~K=Te~6r54nW<$2pea@z{IU zO{*}I*S;Ogx|cB9lqSAAtE~F1@agf$Sx(K0lYXwDxXq*RXurre%eq&7=iu5qo_0n1 zzbf1Rd2=!3pIAE`SqE6YP@J)+`cZqYdx%Rdn<00f>c>wJ@}9q`cecLsIDApX^8ULI ziE^5ligl2WqbPYo_7J!X7b^?9#5BFXXq^{U0`3Mfc8extU86{`oX<=nmLmoHu=3rz zv8-(kj(ko_x3_8l*w7RpRQk-H?yf}wn?3kSLLT-ra*vbMoqeyKpeyRj-4e^LZUyE5 z25&m@!{2(z$oy2EKLG)>`j}v7-lD`xEjGq3;%L76b2yUlRwy^Y*^*SYUb|VS(8;YYV?S1*3x*%FUsR=T^i!uHU7M*}+wmEE5)ZmytdR3kpu ze71!%Ht}TN!>;-3AeqEAoBDKx(!5vU;;cS1i45L6D=WDYj$otaChNtg?t;SKg@5`k{O(fEq?!^=K`pwrpDj>M0XXBr@mm+`iJ&SL!3b zH0#{yfTrx?v)`Oad*-L<^^MxkFg+Ba-?#R>b~C$Z_qGgAnHi1Q1~>aphj+F&uZEQ6 z9!zZoWuf+OwDnyLOgh%r#1>CoIW;kJH2inyV)_ylS_+h%Dc$WKpIQ$AML^?A7!w!r z5O)|P{+hhZf;qoAoS&&^gxOEp95QfJ)zNFf>fA_V^Tfs0>q`+U46lO@OLqp1tzymr zi)GM3RJ)+u^q;~PKX(A`$T)GU#{J;yK~PKr6$x(B)T4|hHF?@aQ)*lmHnv;q@5Otw zE5+sgIV9S->2rL~3EdF$tO83~(KrWWdQgii@Du{mElfNvD*Xekl+9=a%}LGrz-d=U z@}6;8ecRns(PtV|y}SD^Iq1xbnY84r^m|*@r+IyWBCac2Q;j&9)!a9^_lxH}y}psu z)-`_QB|<Q5<1%6j5rj)hEK)O&Q{pw=R zrUs(XtgK3JU>g=iTQvW|pvs`kR)^qQ4BFP_W#DJ(x@;+~l|W%e!7J=`w)d0hmR{CM z)`09k^ji!}|3Dgd`Nq4+U%vFfLKAJy<9h#TUhKM?4R{sif7w)>_>!rRCn46r**^9^ z!YHmy7q-wfu0068KbyK))4&XCblmE3sC36hj{w5-Du|&xSEDx>KTB{pXT}arNIWo=v5fziUp$L9 zX8%Z~s$MH-Fm9X>z#)7;Qt!%%F`9}DeYM0cmJT3HrRX|&W0hYWb4&z+bH%tf_b?`E zd6Iao@UZ|p=(tBdG7@P*xYV}S3Oc4mpi`O7uNuvMe>rG%C7u>Vw%G}EcY&+JS=T=j z?%bI)eWqDYm?$)xo#t9>HOS4v0(>wdo))Ucy&}Ajs+4zS@A`UV zF4vgt*x=Z>^3Wfh*Nx$Xw=yPMfbT$nQ7bLkKj&#rZ{*mk0Ov&^HQl2op&)4w$f(?B zm}ljV&)_#o2oL=#AOJtvm7bI{UWLiK=670KrZ^rU*!LFPa%t2g#W`e3N+gaULj@(2 z4BU{f6UVelLhUDTfq3m*{0l=n?XxNuocbPK8Dtdp)00qm)SLX=Vd2w*sY@(2`(Vaa zbIY3H5NH&`q~5ikAiL5ZZ8;+TGL=p`-O>ESuFb4X0A~@}O}7ArbRNO7#m(&mLZZu7T2N#O~ut96DQo z4TI}*o}JPw@kXr-3yW!4nrT3laA~LGUbtmgdD*qq5wB|wj7foil8|XW@Vw8Y4fb)% z)2|lkJT%SE=y(0n_#rX1M5VYg4exUB%-y8YamVU9~Vn zlF-x>iSG5iPtx5{r7$Xvc4nMj?a*Hxbup3qWF-{23DyH*^ zC{$?fg4neLV{*l&5Z@Y{dvrAZj~_pd7_AH31a-K{*P2&eI>@9;&!9R5(zfi$g!6MS z+)OQW4+)+9@b+n>+$mZ--o5p+Eq%~(p%hIc<``5)q%q$U@>^U@3KXQ z4;VCI%EpL7H-$S22fsA-mT(%B0!>)0hVsd+Tf1>M9QAIA)S>Du{W1U~LD&@;uCjUO zl+5{t-Ww02>WySb8sR(qw}5mG1*k-#0Ur|Y!X>fPPC7avt@=CICdIT`f&a2S%wMXT zUzlC%JKgx9&~B~$UAd0!4*wOESZ4{P5GnWcCKHV3l(2w zP?ECpZW?RqrDIg#zZ=WA=dSeyF9!dW635aM`_tQ86)$mVhSOHC3k>xSWH{uv1z_st^pkfPR#x(S=7xT=#-vY8tt%1i20PI5qk77EAJBdIxDiE7IJt~$_Vl2z5Ax_Be`6zkl z%TW-sPz5?me$}cN-4j0(W@B5rbc|7JIoq}Pt@T!M{MtaUos9}HWc)!@%`8j10ZK=K zB3>Ve;tI1TaTH8(bHZO3gYCJ%LZk7gRs$)wX|^T@($EGWlBqP3(3kGM5xaE(x6gsB z^h}t%2h*CmB+`f=foEmmfstqsg%=Zk(X8H%5i%Sx_?+(UJN%lmsS29|07@$xyr_58Caqk6iXL;1@)?3 z1<$Dg*Qm~A_Qudvm^VhxTR)%>dGn~P`z*Pkx2+;gwsZ=jc2rkl$dB=7ZJ~?wdoVoQ z_=jakyytnmJz1I16#J3+g}^jf>R&_pI~IUuM>g65)KxMs8>^v)=ps8Z@zREI*ZR&w zt6J!p64D$sXauAc33e1>L$*=_u)|!gy?QCxRoa%~&DPb-zBA%~WaS>z>J~R>r4T$_ zxq8SCTU%}wt+|=?NJ32L781uzf?$9BLksd22FS`}h*RVnrb!R9$h9Xz5lV}>AH!qB zt%rCc6UHA1{nQ#BSOXEZP-z_kt{L9UFt!a~lhpV7rS)86d-$$Yv>%_?hGyZl`J0Eh z=hPkrB#*of@*9t33_4-%_P64@p|cpv*t9dKx>z$ti5@Qu ze`brLXjlP~A>HAZ9R1}iU9JoL53S-h_M5rsUrx-Fm!(_0#DChd(Z%?wA@rKs0sarX z`*i82FWSn@tH15r-`1f{b(<|}=Vr$DzDiP}iO`J@t{Wb#7{ekWJ~>z?s<6BCRBm}d z8xX_jUA6!?o$DSVtuAlr9*#=2t)Nc^sgu+X)6i&7zp$!J( zV4E8E$-%44%pR!uiV}8iYM(yT8~{0Wg?sOMx&`QjDiU0#acaJ(Yv{W8;qNVhI96_# z1tsxw)2Rr}m%RAF`_Au!ckSsFChix|0ZT~~dg*; zJ?bwj6ZrmtV!`RwsE_pgL;&c9QhH*=OB|$&7Lh|tv%BvE(Oxrc0?$CBsz)r3yON~o zr)V9OSCq?IQe433!6Jt-{Ea4@ZFC?oE7C!{qokE8j|Y3;*WHUUO#Bc_np|$`70L1Y zMVMgY~V7fQEMtzo|$6;sJeiu3V7kp_Kca)u+)+Q2;C9#wUpA-P` z51Jpv9Cb9NhPnx<*#vQwtv?B+Q>2QIS8_}$f=NejufOoXX5lV)&R9%|)&2MM=hQI0 zP9xRl(uWA?h4C|`MOWelDI?U?X+PLzPl|eCGjN;8VO>pIRSOyr2VrAHj>C+*5NsRd zAK3qSfXqt~y%bh$!e1e{GpfbjD?Rx2Kd(<2f4dNPUpC-!TU#4YO@g{d3Mge@(m;JS zlXw3!nZDqZNBaPE?Pi3!ZaN)wcKQ(2uzDawJeFO`hUx=ayuwAi`ne%x%$OGi3Zj0x}zC)E>?+YOwD;0rcvvm8NW8dUu-Sf+i^v z-`yXp2}~NVe~{j>Q9r{*1LISP!v?JkSk$so1}>3}KCSN`ys%_|9J7r0CaTVclgSOv zv8xQpDDSgG-~FMKwnwjIt`6qYb2m(?k2zysbmKGI9}M|wUf7mN*-)$VI3WDt33Ou9 zPNU4TtS^Mi1lmOiOj(aK_dj0Rop{nht1P6y{VbLK9G6}WrLQdceU`L#SqCvbzVb}a z^UnDVWFWWbUFk$aD?z#SMw0D9KWdd4>z->7T{i@y!Gf`qgxWNX)Uq;?x+~S-1EudO zDJb^MhkM!FsVDp~(j+A$RZi@6*zI*fO3i8BcGbD3kku4aA0#@s7K!{>na%+d?0$s{ zxxxh7VOi_31&++D(J)!)%Q0RHSCic{mCw?13kV}~W4iFOwcvvrD!>lXeUu9H4E;m?J| z?(pci@`@>u{^rz^Zg)85CQ`>6p!^n_B*?k zetbsm26eM(pZ9MFmm4lbB2=^{`@Y7{LcETCw^xB+7v`OplJjT`u(Mk~9jz>;zh0(* z2rppW+2;6dET1emg;U66W6>MCxjX_8Ti4+2n!-OO^VC(3K}psR44XP?6+@JkVGj8?ih& z`EMlX#Vch9%C$aJ=o#~q?S&fIkEbJBV(!MRKL`0)(s1yGW+ny4p2M0CB?{N%_iK5~ za#k9*#UYC6JgI%O3C^pFoI4QhwO)wny%3QOU5@F&EpgACE&xYC(2X(y-H^qX=V9Er z0*TXo*)*N+c}8)XGK;QfX95mLW%qSdq&I?+HSkmaShEMGPvW?_0Y=3i%nry@;I4NSTqVmP>(T4gP%m?ovr*48ZwLqIOy zeShg&Dr9}}TVA9ZQ8yFBoG&C1yONP%%e+bwD^^retf$GJ1IE&WEmJi)Qi5%E zIFxMxDPb1G9R|w zg5za?S}P4*c8pW*I%v>}jue8_+iYRsUc2#&BlTA7PYbar2)id9SuB4#1fd-9{tbC? z0c{~Rkxx0xP1xcf=VRzRT7FP2#M{@VyAZ=(7;oDqEQX8l_g%3GwXcZEGY*iiw@paXZTpwYv5W~^T)R6fKo(q~-hUoq4 zR=|;9i!Dw(7*I27N7vlljeRu6S5uWL=PMWJKGhS;cq4w1*~Z$DNMPZo>oV8v23T=y zzn=`&0NHPLWK_~vsweo`-|Hs!~236gEZ@}mVk&y20GC)E~1f;tW1?iM7>5%RQr9(obq+3u*LZy-J1_dbz zC7!kK-*f)w&6zXf3!MSkeB-m$y4Dp$aVuP`of=O(qgt+cp}3!Lqv(gXox`sg2EDjVwEUq&-|6%X}ZVQPukw zKx{Y!wcVFCS%C_T^lSp!Fd>-^{9H?UV1h*cMYHYi8puli3wo`O(EA0um8}wp(}mC? z*cwLC-pW;>qYI z4c_%+mNZLDB4U`od6o;=q`}=XIwT~-_$c;hwaE(lwe9`;Ody)=|3i9#Sxgy}oM9ZV z!OriNGu=!S&i}Z}AHNI3kHuB8^D|3lO5a%ZEaF3h@y*9Vwu1`upZt8J^KnRHBAxCp zv}A?v0JZMR)m`?16VeNYfZhfifv1+V8QG$9^BT^Y@52jGtE# zvqpdk#2A?9`0EPX+oKc+WVPq4!dVqxBeLO8aPC_FJFcbH2AlK_swr<@$fYg}Prj3- z0G4#4Fh`qqD#V%*njA=m-kP>)c>n1AK38P*pc>fc+`~>zDx%7I&Vr_KiAnvOUVjw3*q1u-hc9%7H0`}%P=`?%VA2uVQT06){BG4) zJ)T1n2yflkIVE8cTwHlY#g$jb@%36u7@^)*ZVPu8Bc{U&@-1{iRy%!xS^7y4htU1q zH#i4cm7qxcuE^$qkq{Fp;dyK2isV5vpd1Dz3NtDVF1cwq#L77jn#`*`tMjFd%BRV6arrjRc6JmQkYEx&U^PEeL@tRW&g&pA zhOO6sijijo@Mw^JV_=qMV8c|WCE=%Vw8q?j^9no{eCy*PNijW$keNIc_slcyf4*>W z4V>C>=v3JKqKLnYT9Z#3$hz?SZA1QpBfovT_cXU37K)|AoYo88IWtxsp2^OH0@kA} zu75NN=6f`K^ml>2U1s)osblz@PYUyVywd0zp4uf^A^$7if}HY=fy~;MtRcTVt43Bg zg>qe=VDRUqTXHh3OgxE}30OzY_7`K#FJBZ$s!gr>B>kMgYvB8p@N>Lm3^KNY`JFa| z?tP29A9eXRzxmg%WfiOAiH80sMnX1#QXzrz$(OPG6d|S?oEg$ zuLt^e+$2|Tc&+j{ti01-&NV?4?SJoqNl9$0&5ygO-!leuz-xwC+pv#V(1u8_DZ%+@ z7yW^^y+|GV$S1&CN0OYeW>GqFkgU1!yHUFQ@DDs{#2b|pOTsisUC^vNG3^Zi+-=DD>fbsmc^_sCM zF)Es#QK0p@`{eKGZ-1~54oh>)%9S+P25wj^E@o4Mvqw*lzFo#m?LG4Q`V==7{LhZT z4JC})p$h8>j;m5+s2rV_^q#SlQa=WL2{0SWxn18-Q`MFvHif3l;@UD&Bkh1lke<7J z=rGv+?~eyzv342Rp95ch_IV3kd0X)2(Y2`yv&&CL!PNKJtuO4mDU>J0j>*tEsE0kI zVYg2q>}myr>N z^}o^DwGm8tZRLd*J5iSh#$hl+H>V;U6_o9^=?vP_RU|hod!zp@e5g$ro0ddg{!elS z_nc|T2DNX52`_H5@5fV19=w~G$j+}=*geHzWltPJPjf-35A^V!`R`qs-2K53*R8N6 zT;})iDFZjP1=lf^*A#9a^G0fagId!)p3IkpqN#+CH(%40CA<5i9_cLjO~~L? z1r}}N%10^NKwi7I@)**mPE)2Gs>sfx?`oGebr5;XfNq0{4{gpmQ=<%Qc48`?0TC5i zw8y(Z9ykIW!j~T35}R45!c%F{D#%diwb6G<_B(US4j4ETOU*R)?1YS_T`rFvn%c!^ zgM=A;TD4xy>5ZA_4M8CJ8fT^jjGh7W$i6wV>hJ%Fa`%Y>LI1u7IaFcg0SC)j;y7dt};!cBMtZf0I+Sa!lv6g>v?b4PNQ_kRPA_Z$JJ5lYz_`^!tfyzbK>CD1?FY*PqPZ z8#X(ra0n&bIKCCFAecu^)uuB93ygcOgZTF+4(LR^mwJ&JqsH&U+ReB8=qI$N zx(CTu1+uX#Mwx%(10C*c^FXIFl@MI{q=ZODfB#2Md&?AGD0_}4lVyYVRLE`PM&w~- z@$N>B%dSMJSM40A(cyX^RqqVX;i5*6dBy(6!vF8VypM{7g~bxge6n-Dwx-q+^xJDz zQ2KsP^N*k7pzZ%-&S3G|$5H3Kl62>G{1DUI`d1GKV10xWF5x<#0nZ{-#2IOqdf#`M zN~Ij}=Pyvjuo4Oj3;%m>e4SP=Q)BcZ{zy*Vv&>mzEV4c?0pz)w`L4&_T*|4PZFpgD zD^MgG@bU)XGKwHE&iMOT|8uKBzS~u42%C}dtNJFb%#U61!DniAXU=xAZ<_xB&l#C` znI6A$s)Yt;J!k~LZ^(5gApF{ALidFz1Zsfa>ES+&oj|q_6VZ+U{)+mkNWb&!L%uY@ z@Q#0KBWF{PqdoNrD7y>#80_W12FmsNdkOfaDh`>H8Hi@~K~eAtNQ7_pcJ*YUA> zvwCarWO@ccCzqqcM)@BBA9)Rpxlo8g4z7GurI4yip5!{)->5HsWq&;m&!u|? z;?*_i{uwP)?bn@3)2!^FX zS1{WXhkHHj^FJLiQcAplwRHM>{$t}N3o{%lC*ZNsD;w94>?rYMsoy?T%oB41oKwhl zt{JI3w@9@8A$8mhu8L2eWw;8`6cL=uR`%bz<9LAHbmh8Kr#hcDyH_?B@Se5pMmT0D z(gs1|C1)3}d7p=yJhO-!@>bAH>~=)LKCV}GfB|0aW@O_=AAJZ6Fo!7vHBX`6Q$VHj zDSj9!i(~>rIYh3Muu#y@THJScKJ>4g_QnURM#IYxT)!1;^m2gTp{hGu;O*_u3X&bo zJ-(p?ZCEnD3o!#A0@r}_SuAYaj?$)a$6yNwE=@f@4k@#LK`|!h&>^5ET`ke|>%tYJ zU?q6GI|-dmA9H+n&+|vkHo$dS#qZ>`_$u_!YR$~=@Ai8*0Drj1scMQwh~pq7-C^X< zwEj=%+n0m*x^zaUjy3eDB=h;wWv-}CLng;z7$8m7IrLNp?O5)@!&Qj_266D-m&yAd#3nu6uj&HpQj z$!K7X<_ZUp2BLlKk4B3fm`4MvqGqR+@{5}8a{oJi^g~EuU0tLzdn6~LM^oV_F1e=IatG$)c#MLIN^D?r6=cQ2j`mAC)bmb& zMc$L35Zi$naL8GFBzA#MKP<7D!6$cX=0CraIglSCPAe1t#|8fH-3~?c2ZK4T>~(L- zg8ffdKwpMLj$(NKDI>0ATou^YMKv*OSX#W_ zQG&Nt7AwnsxpgZ1YABLED(p*-Q8HPl22!|+f|c+pdhcYK{gt`_&XnwbUY_lEsNkUW zUf2q()_1q&K8Yp100W?!t6^TnCb$>ly~)O|+zuC%YPT3iH9M$0e|o}b(1#4F*0X$M z&8hYo2txhHl2Znr@KAD)R(C3wz2c1|!P$_mU}r~F23bKJbiVaGRrdu{0_U#Nrguz; z^8@A^zgHkDTXRCt{jOw`h!I;PXQ*}{XN+@K;)FVZdf z7CqR~H3FSZSR1qkib6KcQXJFB9Sfu_hFdM=X*C7ELnk(EI|~y7T;=ua*97*hE>ZY< zzMIoFlWAEmja z_@(DP(yVK0S_@hhCpNlV`v~S0zWCT?51|8M>X+5lWPlJ&LHQ+uD%O8_sy{%NnZj?} z2&X&k_H}jj1PZ&=n1tdNBv}&a!dT*;*>VYMyF0dp>kU|yEu?`I|5?uN`Qu29jL#_` z<@-+OMJY3gQaOv28e4h;IV z9Je_`aFCI@E8DYsT$?TQqY#V3ey)jUHYLZ3+q{q9=><@M_e1IjsTIV8RvuSZx7C0? zc+1=RgH&s@`c*o=Em?lXe>Dy|fa2Bsb-V^cFeGLiS3wCd#&s28K(PT=_MF^+7Y05~ zU?$fUjvtR}z%?nEV!}jFi*}3RI#2Ay_m$!9IYq=`8)LkGM33wGgznc01e)g(g})*x z=5Qh&JTcv(fzW`0?R@xIfYW9Pxacyt(VmvQpg>q$f{pR!AirC%Hl}Pm<%1sXr;UaI zheKezJ%^a67hv$)nE3I)67+Upf7p^zON}!N%u!&yM4gj@@{tf zqi;_h$U3)GVK8AF2FZ!-KXfdz;I?OCrR|q{-FF-uxUkR@LKFMDRbWgXxDhvIBD7i> zOO3hT&U29F61-l6WXfox$Ax|?Lk6PD4hp)Yibe+i*q5Qi6P zs5>z14yugT+fBJ%B%Hng-J7umdJn&q&|uk)%=0%r)Y((dgK+R61yOLvhr zmhe)?m$5OJnPwuAF5!pOn#H-6c_Z8d>I>9F-G99;6_a78KoY7KVUo}J=J9GZRuD!_ zB5H?6?2C?oKOsprln>4aQwo^NuYe5;9Q2{XoPtrtmJ|4Ee7f(8M-+$0z=F-B6@4`K z0%mmJy}k3@B$&E`{>ZEchshWDD3jc5J8)3)73%gD1uv^D=1{A*S}0gZ8~*;D$i?C@&`Z%K7?!tQ%?gvemH(HkVdWY*S&$-BLv$>y=%hN%prM$ zyF+vR!CW5Qql4DJ86PpFRhKq09Z&R2$#t)vaOgCNd zV#{r$9gvvs**?;* zix{OYxTN?ThQk-adm}~%S0H>&;|`G9ZJf2s3f^M=5+){utb%>F8mTip{u#A;9>7@k z4~8}`k6YU*THApcqAm4ff#%+URNo;g5bL*vaD|Z+F^p{RXdw-3TheC->EOo!2Yj~0 zt!x%2SriW69A>asUTUWNYK&}^|6^vJu_OpO8eSL~zK*$V^hrb!ua69BG?&=qV0Sq% zvtw&ipa4eNuC5Vvcd#p`5l|<8cvfi$gJCjcCjVFenlIEIUyjG+(C!g8&I5u`h)#_9 z4{Cj+`5a6Z)cLW`R1a|cfw&C7_#SC+cHfX+ zOU?wV#Sor#9^uq8>(8#+nn|)M-%pW7pwLC%eNr4SJKw$Tu0L9$#ZJ0+ z3pb@6nM)kwkk0z5=hLm%?f_TOwD_|RCH?!|oFS@us0+v$Olit7utV4dZBg3rHdsyD zuDDbhNtUF6cH3JOVGN5`-z%!N`nFFxHAZk~-$%WPb7jSqV{k9;)eS;VFnKv|uiXwG zyb)VsR>9nE*1Hs38t`+2AsEI98g?h}Y(@s57pW1je}tsSyNgrvT2*+tBYKW)Zm^_7 zs=?U1(6I%#T=;CpF_W|O$sJ=ux#i&lDbIz1e_RJhb2`jR~ zVSRfE*pEi8Z>UK6VJaIyqD96(Frg6~iL6iMPK4V!t>B$Q{S&qt_w^deHGcUP`NFLg z5$I5|s)8l4!&$~+tJh09{v18jUL09mbZObij1wT_7TO`)_ok|YG3hmYiL*UViLMk) z^dil^ng0-np6Dn4r2eYGFC-+~?uHiA@?-Aka?I_vMFK9Gymr+NF`w;YSBK#Kol$R8 z5%(Cel5#;wQFsJAquSveicc2)nY>saH~fkfV*+>kgykl4>s~w|7omIY`F((M7;Nb-Ke|W>MTM+``P8}IyUBD+20u&F=Kh2~7K#77A9?OG zG*7L6eG|PRt9*r;1(uCP)7#JdQJa2a`Df_tDPIjkb6Z_v9lPSrZ40UW*=EE?1i!E3D^D_dkIb;v3e!fd}lla?aezKP8?yDU5=~x}=QTqv#l^pawks(5SaPJC&&LlR31;D8 z1#{{*ahGWeC#f!hAi~^j%TR_?QKAoSmj*WPByQ>cr;4+3fhaEg;PU z%O$DnW}lTm$T%@8QBTpfIWYZ~W*|W+aNwWGb(_%5^B#XlSe4NZ*p~V3CLir{`+~o< z(FlAR;`los%QZg3;bq7WkeuN+Hu1`-sjw03!NZO>fo-497;x_)#VucAjS(D)x{xh- z?lM;-nSqzR*Z?XsbOGpSTeF%3Z=6W5Xd;Z!>J%{;13rZ}@05%`S(*vJ@z|Y_;UTT5 zrG0f#;8zXwg8;VexABNj|LH~(R|9}MkUV2FGx>lIaM1_JFW#O>KV^60W?tPF(zL_e zqcpIcAMR&3=r^MSk{SaR-8%_M|ekEbVMfSdqMK3{`pm`9BPrHNlrNfmWd7eFFD$k22 z6*aRMjg^Hz6>nI~ALEx&jyFA)WZ4e(;$&W!7=5Q zmH9?KH!IziWO#Ts9Nig}W*q(gPKex;AQKVO89nV74&?s69XFP&`~#=8?I5!V94o`3 zNJLL9S4?#x_x)(F`J5zI)I)v>hbg;tg60v2Pv@4O?9)A6o34piZb3C#xS{d|VkRkdwL&ef@_c)rm1x>2xvbol^xq@w&g? z5Z|WqxIBEP1Cw~RAc;%ut6SX*guDk(n0J8EeK>4V1c2p3;sFATLz&?cB*DbY(U~)g z@Q1_zC)!|<(|2*6Foe{*qiU<)i2v6MK=BO?rX1mMlAO?Se%d$Z3(_R)6CmN)0KN(;2zL*!S>}N>N^JFzml@ow_#-o(2J+xfZgUG zJMHV3pm%;?Q`OmA5125YaeDyxc|F=^5#+%hONEs!GuTDwwK~`aP-RBy&GNAtfH5F} z9NPDr2xJ`*GA%4Y?jj=*@l-E|if>PsnE*JHuZ&>lUo@LPF&Jd?ksoDYoJnU<@vTJW zxt|eB2=|~25J)R^3f{rfOVY5t{~N_V7tZw%weNvWBnt^3YzSTLzqR;_!nWT9sX6Ut z_Jl!dIkndu%PPJ&;scOam}|XQd&v4`wqYO+dVVUKN=?}a_E}+$Sg59;ZmRwW^QX)F z3?o^nb}>M&BlSgou(JaTGP?Xt<@W%;x*q5KwZC8Hv*EDx}Y#yezpVO%n0nrEa?- z)ohy}tdBgf9k3WnZUv|>ENh(Y*Xc29afdo>NB4&Tk75FTpCF#RS48wQ@^>;QMzm9_ zB&xvoF{cb)`j!%i!1QG_k-oFtBq(E7{9h2JJAQBbBLco*O0QgQZm-o$_aXf;XR)dr zvt1%OK8^L9901|UeP_J?6N}0m${E9Vp6s^2D2alUa%D%%s^eqS?vpq7`E*Tk7}= zn!CG2dQlzNa0yK58v5tpJw9I}9(($wD--~$(n!5bCEzLZjQKWUz}9?Krvv{bF^(T; zt~9chQek*b4m5Gz<5pKd%E4omi9i7nU`x1_AgL>j{T9il;w4&2G<|-~ei@ijtprwo zOa%YXnl7i==s*0n)1W6OUx2Vih0(f;N?y$~WKM@XTUrIB=^#Dre%mY@e)7su=e7#V zT=3JxUGwmf)Bt6_ePbM?JAS7IKqa`M33;{P!e&^t>`H@*tQ-%Y(cy0a6})gDU`V z)Wb?HFP5YVS0phti`dwaSB>Q>sqEE{pqdb8JgqTu$lGZ*h~K+F(qEXkc+quuY(@US zqV*iSItIyJmHv6odx!V5pF=jEF=@fG5VipHfoxAq0S>X~Kk|YOLLQNR3|`5>E%P3oOm;haBSJyLGoL28BaB;+O8f zFTbbuxIhcSwMF+PG4K5aXJ(WUCkOjdOoo1o@v!n;FEP8>hFB`Z!8yy&EtWCDy*E`^%=4FP8eKXnyBR6{(-p^ilAXZTFX2V~e0HoLqj2|w@7IUKN z)uY}Eh21GKT1}QcF6aW5O4KHP3~0wA`44^1xKHcVUJVpej@YR2kvNc~M5Lf>^sKMe zK)~?pEpCtIivMKoRhWhB-(|0uzt8)BTgt*F1=wxw{~Ebd>ZVm zUHQEJ?vn57`4Vi$zQ2ktZ>kZM-1rnaC(rpCY(qk>Ec`Q}J^uPWIFzhM_L-Wvf}eM!hS#3xFqpd*7bGK%EqT_6hWxH}Ufs6=@!UXSRiN&t#ro74G4u)+9XlDRY zAXnRis=_&4B))T-sDJGpRmO81L8Pq~sG8l01Y!pht-gY3wZn1g@Gh2Ibuii+FC&%7 z;n=Q+(e$?#pN9C50CD!7eN*Q1Mu*t4Z^a#R!LYwHrfwX;ma1d-Af0x8!Z8&>lCPWg zK7v&Q{$sGd#;^4g;bX2$&m7-kyGs|3Bm(A9kx<_^lrEyaV!M%=3p{< zU37M484_~681xS15ml&`zg25hmHpKs4>Q^#1c8HHJ_#&*5KlDy3XA)B{Qk>S|N%ir#Q{2q1HI*EZ5 zz|uj8+Cdp^_~4CaSMH7GMtqTd#GU13BhzBm#nDWD+py54hgF;|>7FOV-!lb&gRmq< zeRyt|Lw}0m13F8m^E=9#*mf+zXg`lAklOwuNcViXeEWKvf%Fh!LYH6K4ZlTkxO1&_ zaN-SKj?%)hY_Xa+DY%*fGU~oJA15#zh59mGo8i#kc2rgLhU?0|Ffr->Nyrd#Rfl1)Nu>N1c_7$fW$=aW6UF!MVpE1xDd^q&N)$!#u@qB2wTfXEK+9|HW3;M&uP5kxQ4_ zsC3JGpyLQQg-Y|$^pXW3BUGdIInM!Egv=Bf&dbrSwU*)uM^7qLN~ zxoFn)9Hf?u1HzCpTV%4m1oj4Xm4paQ;g;YsffTDSRyvUAQ_KzZlFPx!TZ5~E+c#7; zJ5857?(>$;PcSLnXK8#o#qv|9LbQ`M8;L z2E>J`A@<55{a6M^D2adUvS=iF!;WvJ%&PC_tet{q*5t(chFS@=LsMYJD8xcJQRB)@ zxA=w4HNvDTW2n(g$g(73IZgCtuG$?yg((>{?T)AhYBzp zMq&k$U1I*a;SeGfm;OTiE*FK*%1Q&AqjMgtq~tjKscH|NmDjPvDvsZlA%38!(ZPO` zrxTN0nTPtrZ~Pk%Ji^kK2VedEzSt}Gd(J22^kT5hW65vm{Ig~Y!>dF##g&n&aIq#H zx*aEyeD#J=oIvzJ@YS8ueSr4Lu)P1KTIeWDSz)qYS7NnN=;0oZ!HeOSi&JO>iXB-Aa@| z^GMuIs_-T?vGc5Bv??%kaAfj~Um_@?#zN49jJCPr;!z3zD@NB0nnP^yR9@Sf7J`FJKV=8OX;h9@Q z;_MUNT^d%(576?+F;$G`D}r+!+&b}ZPZejUP1uGpaB`=FhlhkriHw!#@7?kZUAB)D ze3;`PB8@&k2cfgPq7<#>lgSZmrCk~V3TG(zcak#JHa1pN_R)xqHZaZl2JcU-5v?Vgo z@+6$T-8XEdu*C{xr*-ET#|b1J^Bzb5Y>;x0`PYqhBJ1#2Nln@g_Bfdg%y5b)IzhMn z?d-}8ZWgEv?;jj=tULw5^1aSyR{4c#N=_13tx4B-0q7Hws@AI+0L~ z<49CtMD5EH?|60%Gp~qFg`mkX@=2AeodurW=(cB&#{1)i(fc4vveNGT)Yq^}nyJmg zSIIxyIID?hI#&jXhBU$p_763}ec?MG$_ES0mFMKl>&7uoyQ{SxiRTdzG z$7=D>z42HM4$ow%LWnrxps|=PmYE1b0m?uSK~~=((VZ}np}tF7j(lc9W@~h~c0UP? z5$%6AUNbYH5UFz`+A{;tS^XRxQ*AybG!o$PM{0(|P?^GnZ zI02v&fg&`TRO2VHixS7FbCbR3PX^=EPb5F%B2Hz1pvf}imeT%hM&T6-zx|rpa?wL@@=>1ei) z`xqD_;C877!S=>P5HZ2P^Akaq5eNaneHPUP2@^DC}>KyonCj` zWm8=t4O|la^a&Un)-S$rsHANMC{gft`s{?zd)Dz|JtkNPJBxowY*yT*F_jjyRiF}d zy5eOzj}Z7MKCSFadgpaFP8^*mm647ncbGr|0;`D>1sySG)ACS<$cY>k2hsFR`DGT1 zF<~I|ccv(J=1gFfUQ>)R{jAeQf&(FkiRQq3(Sz6fwaIyPpSpwuy=Vd_FckB~(y94R zeksV?Bqk!t0g>{iuy}SKnJvp7KB=b_`dFJEiB(2jaVJUnq_`*Hq>?Dr;dtON8$yqW z)}w9C?jWWixa@4%hK5UV*#Lu`P14y3w@bi8Nb%)^G#{s{3on+Suua06vyBP2*hA#6 z`l57k%~Q{m{}^O+jG-eXT^dzr4a-mY7)`i(p0ki4*$CARR2nvD$=y$!+jyN$KZDqA zspP4D=SeCUvM_A0hbGz_4y|s7g~st<@iAQ82<7Q@eNkozkV+_`^}}Tbf!-P{Svm`%{Wr+n<$Ke8iZP;kcWb;cc@ptVn`^exeK;L7wU7T#$CEh5n zTRwp!fz$3iK(Iy2xOPL3(zgIz_+_xxj!Z@bTKmh8H-&wvx3eW|J2k3s$L!lI`(S;F zv{3I{k3CR)krr2nR((I#vJWJ0OKe@Qu;r+X^SRuFZuyYxZ&VvTKzsa~u^C&_f3?Cr znh2-yE3;DHwNj`5Am##E!>^!SYyKe8iQf#NZNUn}f?T_E}bb zW@~)73}r-3YVPNn`fhAO_lX!#sEOJg-w4>nswBd*#EoK=SP9OzKMM>zV~WDV-n^Nf zo|f;jZAsIr=nO`4X;d;nM9m1(VtWr&fft^u$J8ba7pkA z4P0DYlv7Dwl2US64rXEDC;Hfg6%%$mz;nEF6~VZ%#Oqm+c!QYQwLE^m!=<%@!51He z2P0lmc-|yZ^hA5S?3tP{n>9z^N8)&QU*8M(FU#j{y>%cy_y9d(lRcA_xVmF$0$U*L z&z7U9XZf9^Z1zxQ=@_!`1^g9 zco8q*A-sm@Kd_@<5Q&?%H8lx&%FI7~fX0gowjxdpE)QBXZNt#e(M^Nw@+ndMZ`Tzv zMlpS~2)0yzpiA;kgr#0w$BJW5s!zB5vDLi+0`q?${|*Y3Ub8ok_Qh9hU{C^XdF9-O=yT?x;I9rFBvQYbh-l~ZZgf8-m1mHf^%Rh z7@qW#w_gPm0?@LQ15gm`YKV{QD9wcO3JQU7(y&itWaku|HCQw}`&lh>15fPi)|uUHt`CGAbi|ABsfh!q-m#|Dg>KM1-wwH`LsD+V~K~lbca3 zgy5!t!wkzZ#we;kIIS`=GLGs~+P@4qw5bArI(Rhq>2e%?F0M@pp)$JleOy+FGp{<7 zTt1vwQHevF$E+(`Tx+;&!!aV5GGX|b?K@@H0xpz3AyWER?kfoR9qeS_chE~Tf5gJ@ z7}XG^Lk;7y_oGACM(obqr>vJpIcJQXHyiwRA}8Yc9cStey2MV&H}sp&4)Z9cDd_ z;}Xh4LYI_2o{;9M0FtuiW%8awr+Xhd=WD?79Ac3>&*kOv-f-_~(C&#y`*DxxaM-oc z5Rj!YuN?s)Jzv*H=bOL>#sCrAVG}8FRocU9vE|-KVs`hvxpScPJXkXuXq_s#?|VEo z9_oikbC5>08^v}&I#0{F*TnWIKX8~6a;m~Y6OcsqSSiQ?$m>upgUZXUF391s5pp#o zGIB9O_JPiEq*bP@%3(g&yKpq}_t4xOM{^UY_bQZxgomEdMSc7yxz~JtbziiGLOgDr z4-M2V8nx&eTF4o^K(uQVPUB-Wk)V`+{|kUU19cEZ0H1cP!L7#g;J}$1e4hw!h}ZSN zkym~nX){jtF2fNMGG7pUQoxNwi^Ok=T^f~{aJctTdZrehPDZbyH@j6WqL}R^;R*Qe zn@i0-WA^Jzy2bK&{DnRB;U#us-l#ehaTfn}1Ru6`Jr#(^JqKKnhJe7>;!(K+KI+cJ z(Nqt{qF{rq4rOcj-6h!RCQQp1mhllx(m?MC5~y8?H2eRWDNm?v5ihsG0Aod?ikCU*Nfc7&IHo zQ4l{tONb=FmIu^U>N*i^Q}Y95kVWA>n@$NOFJvG9Zl@AtR;WOQ3J88rjo)|vPQ*lc zc1YiM@S3ky)-iNo#>MauQfI$Vw++)t-!}sy51c^j`by^w2Zx89Gfv9FIks+MdeI+3 zEB?ZwUTB`|hO4+t$cw6Q{Fkw@V#5J7O>*XEI(1fr`ORdFORuBOP9z3x-n$N{!V@nq zE)S19BQ9NXfF8jX@5U}W-4inWdIsyUe@gDY25*aJ>kuM1OK$P9{vKEOIw;ERO6zlRg`~y@>o(g+_WPtp9*2){5JFz4Q{cLmg-D_P zJzcwbygk;36Z6D}mp&FdW3fnu+A6I0ODN|UP9PUW5LoLmZUqtFF_p(Was4@gOGjV- zH`yYC5rmD~la;yVW6M$POZR0UqpTb;h4D7-uMW4}8rc=R1T2|Tb3ug7PH%wr#w#R5 z;pozh;7~e4kzm{^RT7}Bz#htOmgNtQq^HGSm9_ojLDa zbm`X7L8b5C=LXcKNQ|a3r4n;fDEwLUJRk0#U+wOAmyW;Rv-~~xTF1y!R_Dn} zUqL|=Ey;=vvys4OsVIc6-bAZ;-LCmOpOvOD%A$H+hlP)Sm#RQh!}Dyci7(JeUwrdw zi0}5^yp(Q2V%5=X&^`*G*p7P?^}VBbO}F*lfsa}w{5SrcVjXa_ls}mlB0W{8Y51I< zY-r;5&%>H{$)LU|LNf2~`znS_$-}F&kX6~R-+79Q`VakN8|i)sbxMY@!Qep1>%Rk?PCnTwd+N(veKH6uz}dkD0o` zS2Fa6TC!@h#!hjq!g8{w_EAisAFo7hdzp;hr?yt;t? zcztax?T6U7@e)&r(Ny_!j$ityo)tiH$dpPtNpf3t#Fz#+8lyFm|`O2E@eYnT~ zAL7=&nmj0VSni08A;aG#Sa|%{Z!;>*Je!N$;;eXDRL|RX2GV!NgGR@`Ra#7?rI>8S zcgr{`j_Tu*x@$Z#qCo8La9b+Ji>oNes4iQEs+}E~#Qq7@u9Jz1H};ZjjZ<(7euPHu zV;Ef_*y6>(!>ppkUZ*!?yqKg`U&-=*ccNuU&kYm1RO@+_`^g}Vg=hHT)_hq`-6NSF z0wNqu&I&47=PbHo#m~M)L^8J&r@jRLT6J$vZ$X@24>`D7pZ(on<+;NuftlSgF`%S4 zILfD`$zSY8zKa&PaPWHRh2*zYEzL%EL(M4TDk?KiV^);P6Nw#)%)9p#Rxjl;r*m00 zJm{Vu8+!`g`cN#-`}!6`RbqV0DRy|$IL40uOZ<0aC-$ZPJh3Z}($M4s(AE?YN%aYL zJi*llX_~y=rI{(y*FBWMkF9tB#2}ds^n*@R!0!uAjcjUlD?}lb7@1xOSkBU+l8Opx zGby6qm=Ry{w|}$eyQgpAApnMcHgG+k8To}y#mgVbLeBN?&+<=4@1Uo93b|J=I)EW5 zP-e5w$`SjRWB<6ay-2LFct0Ye&jBJhI5>EGd7Rw0Bzh7UOaIu=oE*NfgUS2)-2>XX z5H$IvSK$o%R8)T&KAjp(RlhgteqFp2b?Xc5n+~_$&YE|}eFt2XUyY6Rg?YF#p zL-L9_|LLu^>kRCS;2!&by~^8_k#{ja-oB7CHt5Q!#lUR6794vq6x(I-hOx1v=wRiB z1T!l+@92FJo3Eby1ozc%VGdJO?pu=;-YHT?<0~z>eEmv9n?&>v!5*d^0rzRw-#v}L z3;y=>n8}`kv@P6s%j=Amjd2I{b-g?9cBXuzqqeKEdRlOOch?<8A6uNsg^>?Dl=Q}O=eTkyGM{l23NIu>VOl7hsm zSB9^yRI=~p;C8uY{X_qLD@T+^ziQ#3|Is*wfj0dOH$^qdDiKx{J-zK&`C4jm!r`xS zRk`BZ)CB4?xAK7(D>xgH__+)Ts=9i0-DURZ2y+6EJU zNp1b7Mp0T)$jNcIMW47%a(7;VP%n1t8~k1Patp46OH zN__3M9?MUTb`QMmNA>rN9|z~!ajkCj5&P;ta}zJRWF#!~jX>z-1`f@D&O?V3@xX65 zMk_Z0o46aSAnyrj)mrpYKwO%Fb=fcBEW#=W3spiw0ye#Yzqz=%hh6(NVUf~~N4Gc6 zgQE2}H4L9VE}I@;vO_6+QS;6jAo)vel|X04_H{q08;juqw*ZPbJ^Du!<;M-6?8xM^ z)&#CPix^YJiy#EA_>zhkxY>O#0yNC>ynfP93eSXCMPYvw#`t|=W?wC$x>z>kSjdSY zCyxk47aTooOaEl&s~qYOPbq@UN2pHnYQ*#=j_RyV`Vcy%GYxV;L6+ zKPCRX_?dp;cA^rAg_vo2I{r4kRhT%*77TIU2PgieS6gv7@wES21ZsXdZp=msW5Ay! zq}!d2&J?T@JRqVNBo4L8gff7Vfd~59<_k|1sp&%zW?j^&xmvLEF76h8um&_cbU-lh zil}1DUkr0}Rn^fiyPMxcW-}lc%r$O|R{{XefyAo(7i&%;IZB9EenA1KgX8^DJd>%F z&jJllVHx*kvS~jqsAmM|_v;n{A6Q{>@$>qT5rPb+$8D)$M zFW?>*xgwf8A1&4!n3xxLa%N^`5YOMP9FaK3SX4QzNuPk>r|AYt zpyPr=7wIcoAAudp^TqpO86IcZYgU+1-*5kYKKQ)fRwv~M4XYjb5u_$|5 zuJidJ4{O_gPD|5^t%MN)EZjGD4+cY4?m zO`%oP;>4}J3L?LBTo@~PAo-ET#T;GmZoe% zm=f1;9+LA`CGot*=3-IROSLP`PI~#u-iZ2_kJKIWUwM6MN->X387zV1KL1%a5dJY{871lh+mY_u`%Q8COle)SD|W z{TjxZ9Lamyo5{Gl)_r0`xqi|@`m|yyxv?>Jx(pZAI0FAf^0j1j(tA~z5;AkND0Et9 zyR`n<)_mf;ySzbt8J#h7laf8!p|x(c|50PuU>v2s>qqZ1(b%=Lp=bJWz9Ta)xmvSd76N2V`9dQ$4NBtuIdFrUM^fif>}@9;B^+ z$5P?DcP1y*9p4rg7bzR6)IJi6iy<&SN(j?C9=5iMm|uw_+V|RK>TYllNDyHMGldB3 zhR6PQHnXCI3|cGgM3*H0`x19NIF_-~5+qvY{qN?Iqj4(TCHB$S>NR=tYt|y30t*qp z8$M!{9PY{YE;DXo2#gE&ktXzgF1KSTE^V(?}U3SP;Mu`7?>Uo~;@Bez8r&o_SKIc8|_x--^>%J~sLL5PE{>ett zWbNWRDP{RBDKu}7-EPdxuhfNW79(z^y{Hg=cE2q&QQXE?_6aJv&G$%_4I? zsC2_-ztZgR$|bm+FsS5H5YqJbWp$!gWw*YlMVXevb>1pE?ZM2SsR@AxoSiO&yq<%Y5}9x zAC%VC0YGB_zlFUv?m&(#v3P7nB80f~_B<4l3m*~{w0k{DG=pB5wKMvbvK46CL0-JMBgBX`Nwc~#Vbd3Ho^ht)d_X0utN!?Tudn#3sn!ZMqWYo_ zt37f#!68?)cIoy-uY_$`Jc1HkT10(HR=~t8iNxCI!M+^n7D^_R*|08x?{oMjMZll4 z=i+6Q|C+M0va3{k-}=0K(%g2u8X0ptvBYdD*cRgTgsO!V4m7f$huIe~54w|uZj5U7JQ=tW=hNC{WjAKTf_gnBy2aNQd#<9^-7%FfPX z)?#cbJaPw)yE^9CLWbBa#;Em`LUnxmikY6BEP{7B+b974O!CZ_qyetgqeHB;|o zP!#a?>c;U4rW0>5k!pET9-H6ULyuG*RWzjdt>?)~`&pb!_k=hEjjGf860o5Xzs6j> z>ZWSk{ENECK2jyJ@#^g*#UMe--Wa1NyhTCBO_bVKsgrhZ%02e+Y*b4hsj_={d$mfjd-1B<0A_N zZ{bp2X{Mx4kILb*y1RJT)6?@&*=O=qCdOR8!}BWMCHwRP-=?U{yKf6M2DY`#a?Fg3 zTJqkt|KPOkyuqtVQWoGc>E&T?(Me{>kQW-zvpH2 zaParYlPuIf$%%DIbh>Td`KprbKKnt6YS2gD@Pm((khUp@N^&(^dr%d?J3H; ziCI9j|L*A^d-i10y}R!v*H_2fKUJ@URQ8!N!+xvDgRWJ-t4D(G(h%) zrf!3Q4wTUxe-5?ee|>b*VqUBh|1caq0@Eq2AdwLi6g2wUY^w!N)a`$RfHPPs;%d)EHls5iu+Ba6T3C0m?JFYxOZ@>7tzaD{5oSw(KLr(=YEEJ;f4gZV&g+ zexxSlW9mo$T~haG?ZL8$t;&aC&pnPpm0!%-MlFYh+dB6WI8WV9F4+;-pLri-Ng31? zJ#ly?Zp(GXTlVw`dxUAB(Ungt71k%I+^)mLufJuUROD3&oKZxYo|@efV)@l%&fYY2 zo^Dz}#FvzWU$EZV3mLgg6C<8j5qz0dY1VDN^Y-IkHqHenRrnWD)@Jr^ew+EY7z&vN zL(&trdVLkef?mxyBa((HQG?sQv1fm7(c)w%_B~)~(vy-Vr09QB{X*yC+K(>z{(a4+ zVF?HbWFvfz_npRQ=@oCnc_N2J%ZQPu^F^COMRF}r-j;YjGHxadIaaSJlOik6g5~_J z{bAL^(XN+FEIj;|t5sL;1UMpB3`O`)E13_XOja`rgt%)ut1QNQSB`eFIxnBOi(jt1`E%JAuN4T33rb8SvGVm78LR^ImC)p#LH&v?JYh)8Oi^2*raIdZzA}_ z>vW4^98{)SLr^scHmmrk1V51kLP<3l;5XZBfcAMzgu4QZ6Ow zgeOm!q9c=vIxnEda@H0L@PyETSp(A1WG*n{ z(pd>49)CV8F6m@4Of z*Rd!4#~)g(?L_U;nJwz_{-KvYb<1MUTwY81M1FPn*Xpe9z3Unm^D>5xZtH4VA2@!x zrE8GWE0vW0JI`xzr1I8?iTB*jWRc>FbLY7aqH2ohUIaH)=l{MF9%oNi_S@Ju@ewPJ z@&{dG-^XWtQ8HaSozV-)smAe1WLZg;%Ic$kB3K<0D%uqUcK*Rab)aXqj#>m)<^LO< zH3{hT*gRTT#DfZtaS#fV6-7>+b>njKXQGdLr<~3&ySX?UM-9R&TDi;IzqW=)*XMDS zrWj3>tDd1=Ouky6v31epXEb{;azl3h)#DvQu>zup^~qE}@?~_D=BQ5xsqU-J*Mw2q z2`_XThbRa>BH+oxGu~*pJRI^uE;L2JWAse_)2(X(u8Oy7k9Eqi9oQA}2?W@v9P?)# zPpZ|scF$9lXuDNbU(B`X~)Xwgp%uwGu-;SUS3$NKtRE{33i z^7fp1;I*?@jWzLwCs<>NZC~U*e|CHOh2*-A{JrF%gfb^SX_o8v4m&f_SPKb4%L$Xp z#T_}u>7FLCtmNG@e|!G6%bG!slcAr-YexOqk+DqP>%B^ig-+L`7ZmB_U*{W>JRDS4 z{ah4Ks%50R9CRAqE*E$sCDLEHg)KaJmSdlQ`%f%k#6|-7-f66ij@9z)m*R2FW$X?+%s=Dw&uBGZ zp;g6BjM1L9?wpkp=zkN9YV`-Uf`|2t6h@ouz)6!t(#-(3mDs!aml-~AjNNr6CQS0g zlrs|93*44&`lfQz!t}xSoJGf@Y*hnJ%*n7CJ3LQswOF0}t36WBR1&=Wro$aaG_cA{ zu2I~r(k*a=n^HK(F~4Kzo*Ns9vK>rT@N^l3T&+`R+g(o8b>TD)iSA*=AP| zGKPfSVd$TA)PQnhI*Uy(d`w{`NPIr0rlwkSgiYiL{VhTN^YLeukU$1qn|XWoxmcfW z;>z)#rND_Vs(|cKVKK}=zt`WFabPR(twAGTFCroWZejXV#NGczWErHhJlYo=&0%jo zbG|kQ$5j1!ATJr;<+)Dw-%(~rG7j<^R&kQGcR$b@8mO|ME2ICuWEjQ7j-WCBhAeu? zRkE}qQ0p(F!JF@&Pu-K*iq=2*xxx?TbAWO61wgCw|3;)=5-g9lV;fUk96#U9D zR(J=8K~D7X@b^I({m~Aw0YH}kg`KPZy7qr=MSsV%o;&d8&!2^b9A#6kQ#2?{U{_q& zE;MeaobHx6{!_pOf4@h+^S#0t{`_AW*6xoVKnm&rvEJ8E20PSGQy9KFMRvHH^+_9*%NOj7>y2r>XEC&gI|dTOz54LK$%VJKEbp z07qX#+w=iG5*(*f;d%x)fDN+TImTWlsJMgyRVPI^BE=*KLH`{XQ^rl+AK4T-WE15P zs}Ip6DVJ@x-knNS64WknOQVS;2Q3zC`*bp39jITgS@aeK6qKYN4G1}o0O}sk{kl{iJ653@GMEo&Ilm9D0lPSu_Q*u<449~Gu z{AXrhe#|2gC&6fWk%)+%zP@X>W5=vj(Y+?oF)_bEV39BA)2C0fv$Mc>fB!&Gu!$B4 za&@vVT-3yROM%pcFAaiD#u{{{$=rcx(w_1mtY_#jk@DW21={VrOl@w?+)KPxQVCG~ zgYF~j(D-+_al!&esjpfc+}KfGhtSIu@Ow}HI&o0#pBy9z1MwB>e~-t=gmh&B$rmdq zN|9AQemNe27{x~S<)?KqQi0##AvC7j-o5LfvD<2chi(Iam7F$bZEY>HN*K$^!}6K$ z{*o7%hBLz1OIv2Ma*n)SxX9cjz^@)EJQ=hMFXZ|z>t*@XV@b{g}M@;49 zg8GQUG2vKpHA1Q(*K2h@1U^M^UN9#!*UvPGjlr5mp?4;e5ZVgcV|`q^=+>LIh%c5A z2EWmo>8;v@B9qX~3`ClufZs>lcdCaPJL7iQP{u%ZjJ?r*caG!~nAo7s0^Ka(VPU?0 zeuTU`2BTOYLKZt-YHAq=NhzEamcRIr($M;VD#2A+5W*_=Sp(dVw|FI#OA0_vXXxRC z%AioF52F{-%zuxfrT$lO{`7LfJ`5%b;f2^1{xA7w#JEC+%0q-;Gx9RtT(Eok42yBC z`r)tL{(iOKJrW9(Ii9tAA+=?E+`5LP95fU9A8eWgCtDdI=$#^v)J?rlD_Kw(l0847 zTT5m8n0|zYFl=95qojp4H?Gji z%uMI@!S;5!JZuFwbF0i77d(BGb+9TcD}|k>BNEHmOXPS~ z;^X5%{>zFm;<05Dt3MLzsNDLa_7K)1wgEv=I_k&?eTmOyTpu6Br^YgW8-fEhX*O1T zG<(!b2>20ft^R42$`!P*e;4rqscHH34d@)7%1n%Q_lIRLvA|DJ)jK5Tg41l;<`ugz zMk3VBm+-#Z+uK9UJ(|0WBo{A&2Z11eEwd70ARd%l^Pm&kvbQSw6W;9aXhlEJcUk)8 zDMQZ3&rd35?p+P~$xJnYL-hPuBpGzqY@=23uhwk?+`zaVCMlD;dAzlp*5?+eT!Hwy zi0*Z&O;C-b9AQU?G(Kh2i~{@4HuL{tvJwh0N>+RC^Y`31sV69I!8QqG{O>@V9@v{V z^@3GNIYV=(Eq(DDdPWWU+pvHYeF(D@wM9Ou1+Bwv&Irk0-aFjoc^B|!Kc0dUQs)Oc ziJtMLAMY<`iGH+w;6#lf@k;ll+7-^|;t2h<-@Bl0O8jzxz6t9Yyi7p`jsmGwHXX;w;2mFy^V0`Fxq1oBQ(R?l*&m zQy;NNny5iv1WulTjYHUAH*mDw9V(jK@t=#{N6H$yoAr$^Vdi@;-x>VM&BzBGd!X!` zZnU#JFa2%Q(r1~h_0?HnVd1sAgQ8zehsD^+rEsM`Wu0SJ$tFY&)1}g~-4GjZ>OBqJe)!XeJXd9sENUp6L$cPQu z^YjTc?oKOU8zcNM)hKEyLv}R@O7^Gn%l}Bgtz<+c zwLs%vT`PDU6-a?*3^_p^BI81F6C8+ePk~MBT@wHIGKCbnLh-;iMB3lez-jc)jWZ*I7edD z@t5An)YqWL@Dt81g(I_w_TpPt6Fe*S%i)M;Cag-mfoJ}v!Uc0D6V8OC}PlzSiHCaYYIf{}%# zgo#AX3d>m<@DFQ#Hz&?-W))3eN(-4)|BxvOauB5&-;JDma82Jq+NW2flRuqoC=-N* z#KcTU#CCBDc{oeQGbXpV4p5N>NPhNlzefT&Awz7)`QA`=px7eIH+7yGrXl)2;RQ{g z3pVh60$jSU(0mbpaPrX?*g!f+DJdy9dI<6HuSm9?Eh%P0Lm+R{Hd6SDrPCqgd(Lu( z^{^9QDuAF{vnZl;$5;h{)TLr#==WZ=$2=pZ7FdMhJ9xUp20BQv;UdTP0})Q3 zX+XN$mg_Vh{sG>z)a)(2hV^x#DB(-&i2Jo549qy__4~+EP2|>Fq7+>YuoS9%_{+^Z zK89k}XZ1oWtJJ}?yLb2*P^MDvuhOUyqVvXVW1u=FMnz!5G%PB%c5a#P(hzY&LguQE zbQNUW*#c(aGzCgE<`~RAP&bJ5$lKkqa;So>j3C;MXi7V6lWF!wAOtX4-4{1DO3(kI zf<}+$=1?b#r%d=*Z}&m%P{9n2R<>Te{!4Xx+Amj4V%~^<>MCZ@zy?uY~ z>N~45O5qL2meoxcUews&d;9vLJ?SF8Lgx#6(1Fd`?jPc@Qar30vghP!a7dbSLq1=^ z)^h|apNtVvFpTaCSK_>iF=Zcwf!xNk(ulDKeP>}JQ#s7f-YS_`*`#M+kq&1T`u;S> zSnl?4bvWOZo2lor#0RTqWWckeQauc`BN_J1jaE}stlGn4WPoEOV!_fvG&y{&NZP`P z*lmCN<7hDZOdL#|oH>1kWEELJk5^MQpoXoX(5W=r{L4FeK3f>#skatu@q%rjnAoPRoT*Fcg1`XJtLKOG0xzQ7*ZE%;6 zy>^590`UL|t!64826E&He|*?@G{Wt~(h7GtppeayWH<1V8YuNSjbhL|A;Wm|=#g5T z*c`4cEvd26S)J3Ao{I1=VODD~eDoldFpRH>d8{g%9fgF%UkN0kuB32Wz-0zv_SgpP2 zfM30~wiYFFoh-oo4Jo8NHw6RHPu0)pY6cXS0gk~J=#!ff7ipk-1^1dg3p%nSa1DfIN7XyVcSRN+MuCyfZ+xy6%ksu}G&iQDpX<$Mk>VK@eud^~b zAh#(8G9_u`hAZi@V=iiD!?`p4orykWT6G>HJVk3WH~Y6Go;jPSZhaKS(j}Yhv*0g? zGJeX~7skjT*N#Er<`9OZQOiGvzbg+ci|2h=&2Su#hr(ui(AKMfK29{z$B7cjy|aMv z{|}8|!y?($hPDH$Sr90G>$R21R$6`@Jq)7gt$IFWpbR~W=m4*nU@HxyRm%zzXW@{7 z`uX@wRBG4$cN<3Exg3x{=3i{>!HrKzQM}G*G-BfiKO)Qy6CV>;c^xMH3ZzXk1XVIL z=xJcqf+GMrR&jB0({D$Gq66B$ujg{v(3=bg@ewf8pms!pa|jQZVTmISbQ8uvH`uFM zJj|5noxp(J2_ko^Q?aJg5w~W67NHnTHTRWD6vFwx8BzQN4Av7g`~hi9Y$+lh^Ns&; z?emg?Qg}RPdH8g7&+eU1#F~B#A9_=8ik1_<9vKKBnd?q<1T~9^1mJAr3}IK+U(x%MxTIfzDD+Kff)Uov4|H%kxt@&;4?K@| ztIXJ^H}MK&{TK9~=l?fo@E2AUM6no{Y+m1!LamLxR{f-shK92P;DmF1dwn@Vx%C|6 zXtOv^`1<5 zEAabum|#9{*#*9jpz%j7p${5&89#?AMMPjsxA;#@P*yyG-zS33uhTUo!qt&w>hRWM znP#!ESjMQ?VLkNs2V^PGAMt&$wJUPx56Cwj_Xp$? zEZ&3cCGB=*=$EGmJ)ujqqFW4*hd?A8&&a*PxQmd!^O))!!P#ilz}Apnru^yGN4QpZ zz2@`y5FX6py4zYcw#sCr`6jsS)_|SVq6UhHvz9QJ5tBw~< zhp|*u&7DT`%>Wt#U(0x%RX%M>!w+MhEfcgc3 z3Q&tU!0W8R2ht?s!tZgbIJ5*nnWRqad6z9%3vri(2;TgFdm9$BEK)vUZ}f&IGJbn{C>KQjt)?jb^xqHW8m=n0)X^PNJtoS zahZbp0*Vzpfz}~@#qmRdT?&*w0P{-P@wR)Tj5Hudi&zH*Asu&~iF-K%dJ3toLnRJx zZ)z(@>p;qol$G@eG9A!Mx~ZV>74n0wg`Cwc{MpA{-*;s z;2OJ!;qu7Of@e&`hDArX?F~Sli1G2S-=7cpMnr5JhA>?Kg6c=2WiTOHnX20Y@G;d> zuj7UoF1X>$z@#yahG0{|qIeQ(fu>{we+r_NuX`^knve76r4)-u_Of`FuTzxx+=l&J z`{daNsbjU*c%u|@^$$Rs%)qwL>oL&f5T`SsbeNc-djq>1Rr96 zvL%5G7@r@3=mt-?W-_m6c%k(?@j7Bib$tg2D$;wObfLAvSU7JK`b<@Ig23!2oDEw;~D%1|+~u;i}a&P<@g;39n&ISYW|yX+-sr-XL(X=n;1 z`bvaTyq%YbFSC#P;zB$^z>d`|eBK7Tfht(vN9O@n{4({b5#xg1sM|CqTp7Oul&`0! zH&HCXB94rhQ-3D#E_Frv>ozE?_XB+!aud$RoQ9@0xcA=y8C%#gJ5JyPaXW>97gy;| z)PWYD%|EUo45Xy|5QJd|Jmct69lnfs_ekOk zD5i;6TouM;oa+X48MVYYHbauux(9$&;_L3zc8@Z!o&XU#8ZfU#F67+Y+&BT>-+*;@ zq7{8zHco=oT_#pVd-1>3&5CE<_63}=*eoKiE65y~MSmwe3086(g7PB-E%&s$hWMnd zH#!=4yRxCbdKE4+H!SXjMYORE2q@uR)meE2djM_;Vje5;g1B*RQugEOc+XgIIjx{I$kzOINN-+?=>BCDe=fz!bg39u2p^_hj|n zJIs_Z-X}{*v(~C}{t{n#3h3HkO;&UIP4m-}Uj}0? zdKBae5Am*lt>ElI!&nF;*zFxbms$L4>?t7$2?^REmOnk7PLOTX?}M${f2oNE3t~)q znnPpl>x44Z*sAq)>|NYbjLB&m55okwzaiEWheOW+ibJf8GOKP zI|Yd`FnCcr*~Gw&8_Z~wCquVPz*hVd{oL-7(?UPn|5b(fHo?)> zX%oa`0C)_otbBdNLL9)INq&IDfln-(hth*(B-q=BB$$29xecj9xKBdm7;||;k&&DG z90Aj4HSs_^G~WVmat*T1(dv#j=NZdE;R$4xC(}~?7dR+@>{+=4#?+&X$l5o8d!kv1pj_8u007#vmsdPp9s_c62f7aPsrU-{|$32yB1Wv z*C)dmra#gdjWJ+h0bd&I5JrV^QDgRiH~`EHY@Bj*+wcVp(LEhqU8ZSk|6_DlIXShznt$++r<%e9o~`FtESBA8=8Fw?ep6cULFbBb zDBJ*9p<>U8)$ueTG0IvBj1~M#j*$m(vRo2HOy=u@AIV94%$Ix>5}M2Zp#M}Xe0D>O zT!Byzyk1(}x@%g(d;(pw(dT-ne+)fQAZP?IPQGPy`VE(h3)0}`_=}r_nwlQ~tYacF zA5gKVDT9@&c$1oBjl(&t?qPqg%Hn*Lu0rppgMf~vkhj6n84P?fq zPOB>b%5*!H%(z7+RuvA1uCD z2XR6;WPXEIGM!0?IrOg;>cj)5*ZSf<1rj{229SIyRw{( zww_RA@VPmNvzI=7^aT;I!Q{QQv=l1*?&qLDEGw$q-`m?8mOB6xAbb!jnCTA_EsDOW z4K8g}Hq*E-2q0!Fb)9nqsTX9Ekws2zRp-ZMk0})ZK~cyJZH# z+57dgtF?*?!!8&4)Jb+_3l)B|*9my@{@xjugN3{XNt?N(e62YO#V^8xiNG=6NkpM4 z#1*w}d}6{xyx^-q130DlvtC;(D|Uxtj$g|Cr-G%)`@A=%6z{J^@V9>W3d)#(wO?a@x08UvwzlCNMScZ#b_8&coPz4Zi} z@h#fp%ZjcJMkk&JZK2z3Jcd@p=!|8Mj#Z=~7H!v#FF)AdPmXnptwNE{lX#^{rV?0S(H&b2%Vt@>_o(IoN>Z6(f-)UjiSvj;t=#|zFlhb158i3$`PHB z-$v)Rudb~v-lzVvWfmVNJUr;yq;)?BngPa^T$+FbNn(_E#YRRxF=;pA>JOh7U3&|j z;#pa7=9tN^YFuVa38DmZqA@md6BEhDVFvmm zu=S6j);9_6G*`;oeYZiSL!0~YDJX;~@zE|RsSFXd=^Lwf*iQ!9ER#kyLL};lk6|!9$ZsZAfL{%h= z)>P-iHKA^zDH70G*&^)hmy=StV|Yfjf#35%T)<3>z8LQK6ukU3_7BZ{WPzUfQ}5q z9F^yX5=1Jg<42TAwAiB6g@JfLU__u=wF<-HF97#{YsN7(k#=pMhs0}$s#v9VoS(e_ zO1W@Li76lxH!p#@Ks#|$7aSm1@97**UB@|y9^}=F)poD$+opy$~=roV&T3g8`UK zsD+t0EBlexd#sWLSSjM%xxD$TwXzK&VX~)hyJy6^Ql-qt(M9`IjX$SuIfOxxqJ0%} zhG3pqZ}Q>K743)b0E*36150h`pmbd4yVz<)G5?|q0j=UhHyP7ePh^^K`Q03k(UqgBu*agEaK7!e zBz>AI1S-qIezN1KkKYCP2hQs!<+t03{fzqdA(Ycq>@*}ZeGJO4d|4P-Uw(t=mGZ0 z?9`Jq$Q8Dpf}f663XVkkHmxBq8Fr{;PbUilN>@;RFiZMuw~x0&#EB%E9A^HU`?xZw ztyLaQs$9dmBjX+PJfAwql}qAnm!2dDDlg4#KHtVnV>-+yI(FOkD5j_=X&51qf9K}7 zez_yP2|({rK^s|C}I$aZGJ7|5#>cl)YJ~?#6G-JM-3Ld8i zz=J8Am3iJ_;uY)u4k$NL9_tecN4$2#+RC7b6|hU~&|r3Cpr?F2ApxK2|j>;6g5x`=daq<(6T`fyLRI zqu<}jkJo(f^yYM29u{z?@VunoBOb56P}HiI!?Y2UcI%^yb^*OK70^4?a6TBho=x{k zd2Jre;9Sm;+e>TN^Dp+sdvkQ{^2T(HfJk6AN@d5jPiES3vQfj8v~GkusnT{s>~wF9 zBXr<<@|Bh>mLIK9?J2Lyd+Oy8Z)1g=r!FYGGtCRL(} zigFGXK>oC#vi@z+`Tu_288A%8JPDHRf~GdF4xcPSG)Hvv8St;CeZuo6~#GGo~m? z&ma1D#T+Mh%Z$himzytAYSmqluu3)T88-}`l)PtNcSobQAVKv3RaxFP1HZ#VMfsZO z#N}0HWY=`PWq{NOTcMcf{n<3GFYa%$j$$%rey_5BPgn8gT}>VixOAzx)It7c!@xeZ zHCNMIT^^kP1iP0`eZaztgBHYkV1{%2oAXn`TF`z zgah&1ZY!mqpQm~Fg9@B&bc^y2F4+dXDR?@VBWlwVLk|H9cw~6I6 zuryp3dnmN0g`yZOs{zZ#TbWv7RMeE6`=$V=LI{uaxGyF}Ym=6=@LGC5fr(kq(PocpqI&#fIcZbJj>m#okA>k3SLI=eX|otJbNkWD&T2$o zf}`@H2TQtSfN(HtY-+MeB~iPTL1s_}7-MVeG4`>A_shbbPGxs}yV_UV;QI*MNslp$ z0B7>nz1L$!TE;R4HxsTOe32a6dxcL}I7OcMk<)m0$6)>W$EU&!JYS=-ujHu2q+3rP z$5}pe_!ez?v~*n^n_e_kCUiH?(yQdTl3 zfAz9WH_5`+N95x54>nsCe_kQ;1!GyyLUdk6x0g?f9Nht>mGIM@tqqckn%3`eS z>zL=v{Ah6MzJbO?r=ReSk%x!JPhCw(Y-(!1DfWqd{u8*%gLo&=m7r2H{&NZQfB+NI zijv^&)9-@75t^Uda&d*uf&np%9raeeQ-mkw$@bj5Ply@u3z^ZWXtrP8)o^0_uccqD z3k9AK6f_=tkiMwt?7Xo;Zei%rz}6~8hizXw8D{~` z6x?x-c`_8+&Byf1#$}3iN~+RKhK`W%VmVv8FH3?@9&j)YO;OJi_e!5RV@T7qW^f0* z;qM!dCZnb{6ds6MjWzyuwWSC`Li9!6T771W`o8EWG}W*?6(x^E$gM@*^6x);T4S@f z+-0);t@>Gm$O9$gw637%i{}WX`aV7ElL9rw>+g<9Z#4NDfdvj|DT*T~}HqF`gmQl?JGuU-W)X zdWK4iX)9*eu#|7!`~IGNGUb%5(2s>AsHWLK(CKN+C4=T;C?m9)IJ~W}>YeTFe&y=k zh;j^47j*64&=*?*i2HGjz<5e9CRax7FrQjmp>{5S{1*C>1cy7MlY%0zLee_}cxgEs zu9qA^`G#pdR)QKzXEiOlP38&TF}DbAXqLJRm=hin$Pcv#nGjy&HT76VAk6iO^|;yD zagO-nYpaw8aqKv;v9T@m1KXZezE_s`g!h$kCb*##bO6cmmI#8LO_fCV)`22BQx=#- z=Yo&!DDIYxplccwzO<52js6&wm?$; zAL2*JYVqHD8_uy5IDB*I6Dj&2^ikWB=u)K}!D1fK*~f`pGcJN#)9aGAO-C!ZbuF<8 zq_Z}!?@VW#D`^$Q`qOecIu89z`eKyKp|aBO^sHe8Mki~s^G}8>- ze2Q^GkDc=vfVi8cxpLnn@MbzNnGLJv9tYE7KX2c@VqVcOuo0r^4&XecAR&G>c-MN^u!HCZb@(i#k50Ip)`SeIeyH z-TKWMm6ZZj~Zy0>@0)_(>G#dQ||(aF!D89C9A2k-7ml@nfn|fnJiE&7vk-X zk|t$=;6aLM0H7M&_;3bDID?s8hgd!k2pcelM@rJOt=~ZnJ;f%=o- zkZ3%-x<_EGFsgW?T=M)JR=;S=rS*!-ZttPFDTOON2(9ZnV|a)Yo|xt5+sb+SRmd{9 z8E3&=7@I5r`r$_eo`4J-E3jrq%f7iT9*U?LKE2{w@d#TTN8g6xY*uQ@vH$qH!@hV%7@ndt~DiRW$xZ>ShDI2}Z&tIZ2X zBa0{H_egd8R(!d3=;NEV$pebD#5A=o96as>Nc7pMFc-rYe(Ao86);h_MXmym&tip*R+RARO5xZ z<@Bpw6%w*IA~Hw_ufDOSXj-dv{t{Wj6eqD8v46l63o5TWzqd7txjwz_bv7n>@bhsHl54;%-D4tK8&3vt#` zoHpZPe;$2Z;y50#t~>cu+IGSu|JD?B+zk?ryT?B7^)N`!ty1h1j`;sHXlv*HBE=?RR8Jc3s>S=OqS7)&Y zJK0aa@pR~nAl0%8XKz%$a|(`P<;QJElZ(>Q($)!{ACiLEd*pQx&rIg}YaT~n>Cws; zVmx>9d}Jwk2sMLFLIno}f{*E7R54|(l_tCtfcD)D(V3O4`aEo3LJ)3?H~L~SlIYS2 zfE5E2s{kXlw*#FaHBjyP?{Kq#IhAbRjv_N4o0L$O?uF1DRV z#%O}Q@d30o$7m7IGxR5{M;ElgAuxI&ULPToBYLTk>3V_P_*tstgPB>WJ0@qJK1pB& zy|$xSJ-UV358hXzKJ@U~C@^~D5a+W&`u>kfH2g2dqVb1krKNnS*8G>NfSoi{T**TIm(^GuS3OLI3Jgx*7ts}zrVL%B5Qx|8}>-uJxl~$*8Uj& z`PMhNM&AaZUf#0371XeG#^FrHdFx{%+pS6QGF!IhsRHtwG2!CL^j9l~cRTm;irW6k z%M3|SIAY0XeeJhm5)5$9@d|&c6S`~dfy$r$OAuejFCSlr>b=})PtbR*(~5A@2JB>| zDgxTj+B@UL^yt8I8X9goUztc5V*iVovEi_2@Y7z#9X`=mE`dWdLhZHl<`w zVKVJPIU<$A_K56~Y^5QgsWaX@b5!GM*Oy;c1uYzzxAQF`zUV_O^Kie(eL419UIQ*3 zlfgcFw}=uLTlH@Y`uAEn)t3rS73Iu{Uu4RHiuw4ZFuZk(sTV@rR3%ZaT$iPmN{-d8uj^p2>! z!TqH-azI~9GwL~a>HhH@M@-H%<=OGBhJ*`HIT5uVPHdprCkVA{^m;U`f6GdU`+28> zk5AhE@3l+Qi0p>Je}*%K4TasljrNsRH)RPK+yYd3$)+l^hDr{4qKFx!O1w<_6}d>d zHgWM3Bd&09VV;HBsEo8L7#|+Ow<`ULAdjl0TL6M7E-}3X$Yn!0#BfL;Ia&VmWKiVx zsXW^RJvA3MpF+^>@>??k z+D5?yL=(yj@$wK&T8TZ>eKko#*1fn4nppO%2AvL9!hx|{&WLwgzKTPhQh_?(?SY4i*iI0sNEqA1JII@@5Qt%A9^@uQ;eYA)% zu3NP)>Yuizm-sT`-q09R*>^rNQYX6+EiB$Hdfe`W3!Go)T@xGpl?x=k9YyiB#K%hhVSrd*(Qf8^dU~5wS}X37 zznrH16;Yj7g-o|(i) zJaC-Fo`MqRPVpeHaKj{cD93|ue}x9OCTxl?dA-0_0i!;9J-#ku0U%dwjaMuHK>F^H z*{snqxFYk{u@LqagKWH#wLX%P%C_Jt(0J(N8k_|T#QCkOSQ*WbZ%kcrqZjOKze@gg zb~YJv-uise^kQ-;UA3E>*Brik?CowTqg-x=TLqEf!*xZY2~Eqn@;JW} zPrlcvG#&!vd=Obk7$){4{7#0ACQ%M zEpyGD21{d~eNWw~sr16Mi{s^tNd>7}vdQKfS$=h~@3LEXSe+B6$B*3cHr0_OPBw2jb*y~cIEdaimNN+ z1IiPm4SKU@TVFow7ZuK59M_(*`9AH5>#`bF>8A4lf2%_F1MaHetI|F+G7qm`q%r|b z;F;d;&dNKIz)L#(>)R`$% zWy)6Sve@)q=6ZU`709kZsEHAOb#ifWvBLJIC)^<2x=)4MX_v5#iTug#+j&vs`KJ_K zGhyv6`V@fL!Gd-o_x|JR2J81^M7qpfLqzbYyDyNudA~8*Sg9c%I2Q21FTp`dI{9Fk z`?Fb{fF}L(pIyd*shSaw=tfL+Z5qcYLla$A+vH~o@-x&_#WNnPH%by75gQ&ob7gvz zwM@^gGXLr)A$74jX0~YU{iD1AT=%jWooU@KZys)rqz0-U5UBYT`8~b5(t;$4#~!k)_#WY~GtZziv%c%kk$M z?Myz(cRBbNWVE%C#-v-DXJe-SMYr&@U%b}6$hkCN!>19CY4@*As~RE-7broW|Ja`Ox0I;k?I^jt^plp?$#Ntr~F`3DeUbz?u!dE|j{>!pr+X z;Ihy@KitPh3<@NOk>1A>S4M*In@H|;=pk;DoJ*D^ySUS?)lRwHWj9uqu}u^gidCL6 zxMR3kk$~5C1&B(g;K7X_^O4qSNx(DlFll#DlP2W+4>kM$>4-J znX5UIUcAux*;G5)WY_W>@!nmVMy6|4af6?Y`==Y(-CnmPi}U!(W+QToS}_Yq3x}N# zv(M?OJSx_VkxZrdRFmTz@ogo!A;^j0l4`hu%i5&YkD?XEA64TGS*y=KK3oyyVK3yk zbL(ffh=<+Vr0xfW|BtS>j;eCq-ar@Ku;^|Sq&uV=L=Y4eP*S9%OG>&MQ4|Cu6;x2V zJ0%nlq>&a7aM6gwoony&+xPx+$MBpn_BrTYe&2fEIp;Hcg+^zuzBw9H}#EJY!84HhRvz1y)TDvUCxQbBg!*`(2b?nSaGDoM@N}>OA%0RMGjZ zT^V|Pbove{ug9LkQicVfH$^&?S5fSCbv>WxzZ%02tpZ=ePXRqQbGtC@TvG&8fg z=O~bd#mUzSuVPHV!k&Gm&Gq)HX^Svik{mJBHoFHi$?a~y$3xB1@y!SC=|7)zvMvCXBRe zQp@e&%p&fu|se=5jAWJ(LXps_ zUZD5Iw%V(Iti0v%qrDvdU$l|mxRXhC)0gTDHZrKRt>^j6YMuCIs1YM#jT zwq(4y1gLv(`8B5?-51p2n(BDBuQto5_;Wl`-FSHWIqwvsroZ-4k%|G|)xiz3yT^E5 zOjn&(yKB{%Up+JK`S{`6lfIs~%iuT0Rm3#nzu7k!H?{7hhNSw}r7k(R5g){v`~p4Y zYQE_tilk{;OEr&t)13;d=;`U9ac*^~v-=4>(PTvrN>HA%sr7e~6E^;zmpn_WFOnB)d8_v92V=1{Keu|_>m;Gk^NxAJ4+Jfhua?VNdPn?d;vK*4Iol+VLs@j=L#URkoS zYDRY6ri3CS@&YCOfDhrlsl3nnR5t?{5`I#%M9rI_VPTgZKD7@^FzxaPe^FQVUJkex zsG!3y*n;oe&z4f7b!u}i7rzW;$ViS!t4)4>$0kN6!>Y9QUhI`Od9{yl>$r>s3vF!j z(i!Kbe>j`ej0&3MMHW6=h~y}|c`e=gEJ#>XY@j<+%;QTYNJs;n#eO#S?**E#63czv zJ7+mV)~edEU{idUDfHk}l;xJXu)&bq!BJ>Fm%zk49sF4}%RG~Hj`OFE)?=@fn$C3% zMI+aV;q~ax-#Hp0cia2&hY<~(+vW18y$6r){}Gzw?fokwbtJ{bPj$}rH*JrohM8K^{4H{OL;5V`c_7{82|Re@;=f17x5rx}_o8umx?OG{x%-oOH1;M=d&o}xoe zlMFJEe;$7-$QpC{CY81HMz{wHK4JNX8cM68g!oN=rZ;XQ8msq??Lco}I+MyI`ta0F zc1kES!GELpEt;kwf$BQ|%8$zPUcOthuc>0#q+bNjhws_MHo@dHoGtI4ebwt)8O?|= zG!K*bK1+A!2m?cuz4zWeyjK+#Gr#+hmT7+evQVlL0cN!67~%fM+lvf8{-wCv#ULoc zb2TAYL-AOZ73)ONWC}m`k;pm${zkOtE?kg=8+q@$ql>{!@w)w7kYfn`Z$&?47HmP` zdVJv>n&?e z4|{Xwh(7wx|IhCbZMqO9KKSXD101FmNKj8K;yt{2O>l{p(eHw~L0LQ=+xjxwYwY9! zqNV?rLd(ULfhg}yA!DJZzv74e(KB2D*L|YPx3$UYlgefFL2c_6jyfauL!O~{=&f>< ziZDqiEh!2tTx-#()*L4r1w_1-cKP8x>7ozyPbgwhS0|;(`#XB)voiL#fb%wbU%MR>kGxv9YSjLlA=aA1^6G_4T9rq3Nk$C^uBO{k z*}YV`-u@8}z#ppIcLm75O%FA)u6o%FymSNpg?~T7Z7&cC-0|Y7cU*pt8CQ-rFp}-u z@73|ZC;#`?4z~WG69il66VNJ#OZjm`JprtI?xpdphxgi$a?@_JXpZK}?Nd86p+j`w zQU?`k35+_(ab7=ssgrPvEipQ_0hy?uzjH?tyc(!dh_|b#Y5HrXW6!VLdD1m9deathi>s^{o&ftFJc)yiO04*AMzKQ^c0*6^jY4hytjg|u z!|&z>82vR#M!lG;kN|a>6<(wEN*8!r1=2X38#i8fXvD0xN1dQaGC#BZxfsl`I#!pL zb8Lv;$v?6X2nh*6Isfn)H)Sx2Q`1o*r+tGTZSfbp>pQ!;V%FAX1(V&T8y@>d# zH^w!z-_MA5_~E}N3jW(C0r3E{I)hXdYTh=Ld zYZ!tAgPX+A6BK49LkENe1O_RCqOUSCGGcvR4y0ZaH+6J$G&Fps7WU}D1ZWp8j=<}v z+r$h~;>X4|Q&QzNS{$R_{ zMBi=bUu>));03|7sJJ`$GdCUh$i(EfWF&9$El>8>#jHBPxr66r0K|e1Qm$yE`+V)+W^yEkQx3Vj_!*+<Ojaa zX7%aRTVYn0^e=5%CbW-bvtcQ+xTmy$bk zo@>1Fvw-2{d#I$qC3Bgrud4qZ+8I=E@n|W(L~s|}sz+7e6IN|fZT%$ni{co>DBbb& z9xHv+4UfmX$fM-+zc+v<&xYtdy+=EBbMRvTRq_8Upcss}Mg~&=6xa5@ppb)fkY6C$ zNn}9Pn_?ny1GejaBJY*^-z}px`1$~_M;=6u5fR#OCwLsqLp>14!T8@9Qo@`=e;Oc1 zg7NwKWGTMmc*UG<0{51k{MbkH9|l-v zQB=emSSexpm`LO+X*Z5+ZWUR-8u>tWP>?qK?=B+b&ME(y(QZE?_us1@BS)*>Kzld( zuzENt3=;tlhTuB~E0dn(C8NCSjOaoHO=FSHm2Yy&cW%EkB;fW32I%FY7o`l~`=uoI z))FMc;-G;tb$UJ2^#u%~;QWqhbR82=UiRFcG3LQItGw85_zj7A#R*Mm9^+t=u|s4D z;=tw1(X%?V!Ab-Xt$V{P_h)h~rD-6n4jrDmd;Rw;zu+s;GcjQ56FmN|<$ILeRrjEW zbY-&8Gw!PQrZfx~h4@y(ZY>@3F^N`m;Blj0`Mi{# zmVqI5KWMv((gf`}TJ1EAHpN08p!Yx+J04!~mYw-MtMUH zV~3TTxoLU@C|4Z>h~HDKlW-XsD#KyA?MRvM-(f-tV{nm?(u-oBD6+8JU0i_J!{q$I z0R{4x2Fz6U?HpI34XRYmVb4kE`d(_vC`t-Bc~eG-RPTd>kY*}ZG}3|wCMG7pQtr>s z+r#n5i{b0WzkvW(Txye)smNPI7A_{Y?|G1e>-mh|luzTL$(oN8~myyaG7F9E9793ovv%sQO8E!RIwmfxa5Qi zKK=@{>kkQ4T4jWe`yi36WT%@2d!*$s9c68?2hBihEiNubR~+0s;uft4wQY${$e1)R z0+4#xM|Ikww)Du$2)4;oS_L0ZmgU)L|>tE3w+|>&CYRr_5By^0KlVBBL_}q z5vd=#YeLs+)odINfhpJN7)-YETduCcgwr>Lr^pq0wZQ|8V&rBbL(#7jSVkw4ks8ze zQ*4qIWI;2SDRxc#E}G!|^y%r@+5bw+W+Vw?rJEf;KR>bh{rUG}t<74M*vsb-!eO4* zCL!kt8Z(q^E__V5k{&cvu`j*(_lDGgmwK?xEb!k$M5-dZ<}?zSCIN~U$!Z$MD>P=e zOcE`b6H|UJ_TtJd+_{U^R;Ak}LUF@Dy*p{)zoo694gC(_D87AdvKVMfHBfwf*2bcq zRoPY?v&h_p^qU$AN=jIXtraAgI74XVTu@)F%%o7}UaJs+9s?@P6fJ?2Ccg~=2=p02 zV+$a?&bAuNw}b;sh&C$3l!`#dvHaWpXlWse&5j@3XeZ#JV+dsODXUuONkJr4utQrp zov%q|E3p5BEaZ~U#opeYL~yR-WO;In&suJj_$Qi}G*?LL)hf~vuN~;f>#f+xUKZu_ z1E>&^5|@CBuCwY}_;Ndf)+{vsz>2VZa4jWf z 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

xn@6^@F3HpyB7elre&GXhm_2OG5) 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ν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 literal 0 HcmV?d00001 diff --git a/assets/screenshots/svg-waveform.png b/assets/screenshots/svg-waveform.png new file mode 100644 index 0000000000000000000000000000000000000000..29de537048ec788e0d79213f02b665768135a43a GIT binary patch literal 216433 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%0A2aVwm(=xj7hxVt&IsYx~l);g5YK!w{G63&a7 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

GpObhM{bEo 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 F>~}|8c%%RT literal 0 HcmV?d00001 diff --git a/examples/crypto-chart/README.md b/examples/crypto-chart/README.md index f6fb86990c..e3188dedaf 100644 --- a/examples/crypto-chart/README.md +++ b/examples/crypto-chart/README.md @@ -2,7 +2,7 @@ [Live demo](https://s3.amazonaws.com/demo.thi.ng/umbrella/crypto-chart/index.html) -![chart](https://raw.githubusercontent.com/thi-ng/umbrella/master/assets/crypto-chart.png) +![chart](https://raw.githubusercontent.com/thi-ng/umbrella/master/assets/screenshots/crypto-chart.png) Price data provided by [cryptocompare.com](https://min-api.cryptocompare.com/). diff --git a/packages/associative/README.md b/packages/associative/README.md index da444655cd..1a1af64ef6 100644 --- a/packages/associative/README.md +++ b/packages/associative/README.md @@ -129,7 +129,7 @@ yarn add @thi.ng/associative - [@thi.ng/dcons](https://github.com/thi-ng/umbrella/tree/master/packages/dcons) - [@thi.ng/equiv](https://github.com/thi-ng/umbrella/tree/master/packages/equiv) - [@thi.ng/errors](https://github.com/thi-ng/umbrella/tree/master/packages/errors) -- [@thi.ng/iterators](https://github.com/thi-ng/umbrella/tree/master/packages/iterators) +- [@thi.ng/transducers](https://github.com/thi-ng/umbrella/tree/master/packages/transducers) ## Types diff --git a/packages/cache/README.md b/packages/cache/README.md index c63796d511..bf2d9cc442 100644 --- a/packages/cache/README.md +++ b/packages/cache/README.md @@ -34,8 +34,7 @@ yarn add @thi.ng/cache - [@thi.ng/api](https://github.com/thi-ng/umbrella/tree/master/packages/api) - [@thi.ng/dcons](https://github.com/thi-ng/umbrella/tree/master/packages/dcons) -- [@thi.ng/equiv](https://github.com/thi-ng/umbrella/tree/master/packages/equiv) -- [@thi.ng/iterators](https://github.com/thi-ng/umbrella/tree/master/packages/iterators) +- [@thi.ng/transducers](https://github.com/thi-ng/umbrella/tree/master/packages/transducers) ## Usage examples diff --git a/packages/compose/README.md b/packages/compose/README.md index bd0a07b06f..08bcb9efc7 100644 --- a/packages/compose/README.md +++ b/packages/compose/README.md @@ -9,6 +9,7 @@ This project is part of the - [About](#about) - [Installation](#installation) +- [Dependencies](#dependencies) - [Usage examples](#usage-examples) - [Authors](#authors) - [License](#license) @@ -29,6 +30,11 @@ Functional composition helpers: yarn add @thi.ng/compose ``` +## Dependencies + +- [@thi.ng/api](https://github.com/thi-ng/umbrella/tree/master/packages/api) +- [@thi.ng/errors](https://github.com/thi-ng/umbrella/tree/master/packages/errors) + ## Usage examples ```ts diff --git a/packages/dcons/README.md b/packages/dcons/README.md index 1d72e193ea..7f28690af9 100644 --- a/packages/dcons/README.md +++ b/packages/dcons/README.md @@ -39,6 +39,7 @@ yarn add @thi.ng/dcons - [@thi.ng/compare](https://github.com/thi-ng/umbrella/tree/master/packages/compare) - [@thi.ng/equiv](https://github.com/thi-ng/umbrella/tree/master/packages/equiv) - [@thi.ng/errors](https://github.com/thi-ng/umbrella/tree/master/packages/errors) +- [@thi.ng/transducers](https://github.com/thi-ng/umbrella/tree/master/packages/transducers) ## Usage diff --git a/packages/dgraph/README.md b/packages/dgraph/README.md index a5ea007034..2a7aa01601 100644 --- a/packages/dgraph/README.md +++ b/packages/dgraph/README.md @@ -27,7 +27,7 @@ yarn add @thi.ng/dgraph - [@thi.ng/associative](https://github.com/thi-ng/umbrella/tree/master/packages/associative) - [@thi.ng/equiv](https://github.com/thi-ng/umbrella/tree/master/packages/equiv) - [@thi.ng/errors](https://github.com/thi-ng/umbrella/tree/master/packages/errors) -- [@thi.ng/iterators](https://github.com/thi-ng/umbrella/tree/master/packages/iterators) +- [@thi.ng/transducers](https://github.com/thi-ng/umbrella/tree/master/packages/transducers) ## Usage examples diff --git a/packages/hdom-components/README.md b/packages/hdom-components/README.md index 16c08e8d0c..115ac685f9 100644 --- a/packages/hdom-components/README.md +++ b/packages/hdom-components/README.md @@ -35,7 +35,7 @@ yarn add @thi.ng/hdom-components - [@thi.ng/api](https://github.com/thi-ng/umbrella/tree/master/packages/api) - [@thi.ng/checks](https://github.com/thi-ng/umbrella/tree/master/packages/checks) -- [@thi.ng/iterators](https://github.com/thi-ng/umbrella/tree/master/packages/iterators) +- [@thi.ng/transducers](https://github.com/thi-ng/umbrella/tree/master/packages/transducers) ## Usage examples diff --git a/packages/hdom/README.md b/packages/hdom/README.md index 2667e86f9e..b3056471cb 100644 --- a/packages/hdom/README.md +++ b/packages/hdom/README.md @@ -10,6 +10,18 @@ This project is part of the - [About](#about) - [Minimal example #1: Local state, RAF update](#minimal-example-1-local-state-raf-update) - [Minimal example #2 (reactive state & transducer update)](#minimal-example-2-reactive-state--transducer-update) +- [Example projects](#example-projects) + - [Realtime crypto candle chart](#realtime-crypto-candle-chart) + - [Git commit log table](#git-commit-log-table) + - [Interactive SVG grid generator](#interactive-svg-grid-generator) + - [Interactive additive waveform visualization & SVG visualization](#interactive-additive-waveform-visualization--svg-visualization) + - [Dataflow graph SVG components](#dataflow-graph-svg-components) + - [Canvas based radial dial input widget](#canvas-based-radial-dial-input-widget) + - [SPA with router and event bus](#spa-with-router-and-event-bus) + - [Multiple apps with & without shared state](#multiple-apps-with--without-shared-state) + - [Interceptor based event handling](#interceptor-based-event-handling) + - [Todo list (w/ undo/redo)](#todo-list-w-undoredo) + - [SVG particles](#svg-particles) - [Component tree translation](#component-tree-translation) - [Event & state handling options](#event--state-handling-options) - [Reusable components](#reusable-components) @@ -19,17 +31,6 @@ This project is part of the - [Usage](#usage) - [User context injection](#user-context-injection) - [Component objects & life cycle methods](#component-objects--life-cycle-methods) -- [Example projects](#example-projects) - - [Realtime crypto chart](#realtime-crypto-chart) - - [Interactive SVG grid generator](#interactive-svg-grid-generator) - - [Interactive additive waveform visualization](#interactive-additive-waveform-visualization) - - [Dataflow graph SVG components](#dataflow-graph-svg-components) - - [SPA with router and event bus](#spa-with-router-and-event-bus) - - [Additive waveform synthesis & SVG visualization](#additive-waveform-synthesis--svg-visualization) - - [Multiple apps with & without shared state](#multiple-apps-with--without-shared-state) - - [Interceptor based event handling](#interceptor-based-event-handling) - - [Todo list](#todo-list) - - [SVG particles](#svg-particles) - [Benchmark](#benchmark) - [Authors](#authors) - [License](#license) @@ -42,6 +43,8 @@ Lightweight reactive DOM components & VDOM-ish implementation using only vanilla JS data structures (arrays, objects with life cycle functions, closures, iterators), based on [@thi.ng/hiccup](https://github.com/thi-ng/umbrella/tree/master/packages/hiccup). +hdom is *very* flexible and supports many different workflows and means +to perform DOM updates... - Use the full expressiveness of ES6 / TypeScript to define, annotate & document components @@ -58,16 +61,15 @@ closures, iterators), based on into components](https://github.com/thi-ng/umbrella/tree/master/examples/json-components)) - Optional user context injection (an arbitrary object passed to all component functions) -- CSS conversion from JS objects for `style` attribs +- CSS conversion from JS objects for `style` attribs (for full + hiccup-based CSS-in-JS generation also see: + [@thi.ng/hiccup-css](https://github.com/thi-ng/umbrella/tree/master/packages/hiccup-css)) - Auto-deref of embedded value wrappers which implement the - [@thi.ng/api/IDeref](https://github.com/thi-ng/umbrella/tree/master/packages/api/api) + [`IDeref`](https://github.com/thi-ng/umbrella/tree/master/packages/api/api) interface (e.g. atoms, cursors, derived views, streams etc.) - Fairly fast (see benchmark example below) - Only ~5KB gzipped -hdom is *very* flexible and supports different workflows and means to -update a DOM... - In addition to the descriptions in this file, [further information and examples are available in the wiki](https://github.com/thi-ng/umbrella/wiki/hdom-recipes). @@ -147,7 +149,7 @@ const clickStream = rs.stream().transform(tx.scan(tx.count(-1))); // stream combinator // waits until all inputs have produced at least one value, // then updates whenever any input has changed -sync({ +rs.sync({ // streams to synchronize src: { ticks: rs.fromInterval(1000), @@ -167,6 +169,93 @@ clickStream.next(0); [Live demo](https://demo.thi.ng/umbrella/transducers-hdom/) | [standalone example](https://github.com/thi-ng/umbrella/tree/master/examples/transducers-hdom) +## Example projects + +Most of the 25 +[examples](https://github.com/thi-ng/umbrella/tree/master/examples) +included in this repo are using this package in one way or another. +Please check them out to learn more. Each is heavily commented, incl. +best practice notes. + +Non-exhaustive list: + +### Realtime crypto candle chart + +![screenshot](https://raw.githubusercontent.com/thi-ng/umbrella/master/assets/screenshots/crypto-chart.png) + +[Source](https://github.com/thi-ng/umbrella/tree/master/examples/crypto-chart) | +[Live version](https://demo.thi.ng/umbrella/crypto-chart/) + +### Git commit log table + +![screenshot](https://raw.githubusercontent.com/thi-ng/umbrella/master/assets/screenshots/commit-table-ssr.png) + +[Source](https://github.com/thi-ng/umbrella/tree/master/examples/commit-table-ssr) | +[Live version](https://demo.thi.ng/umbrella/commit-table-ssr/) + +### Interactive SVG grid generator + +![screenshot](https://raw.githubusercontent.com/thi-ng/umbrella/master/assets/screenshots/rstream-grid.png) + +[Source](https://github.com/thi-ng/umbrella/tree/master/examples/rstream-grid) | +[Live version](https://demo.thi.ng/umbrella/rstream-grid/) + +### Interactive additive waveform visualization & SVG visualization + +![screenshot](https://raw.githubusercontent.com/thi-ng/umbrella/master/assets/screenshots/svg-waveform.png) + +[Source](https://github.com/thi-ng/umbrella/tree/master/examples/svg-waveform) | +[Live version](https://demo.thi.ng/umbrella/svg-waveform/) + +### Dataflow graph SVG components + +![screenshot](https://raw.githubusercontent.com/thi-ng/umbrella/master/assets/screenshots/estuary.png) + +This is a preview of the WIP +[@thi.ng/estuary](https://github.com/thi-ng/umbrella/tree/feature/estuary/packages/estuary) +package: + +[Source](https://github.com/thi-ng/umbrella/tree/feature/estuary/packages/estuary) +| [Live version](https://demo.thi.ng/umbrella/estuary/) + +### Canvas based radial dial input widget + +![screenshot](https://raw.githubusercontent.com/thi-ng/umbrella/master/assets/screenshots/canvas-dial.png) + +[Source](https://github.com/thi-ng/umbrella/tree/master/examples/canvas-dial) | +[Live version](https://demo.thi.ng/umbrella/canvas-dial/) + +### SPA with router and event bus + +Based on the `create-hdom-app` project scaffolding, this is one of the +more advanced demos, combining functionality of several other @thi.ng +packages. + +[Source](https://github.com/thi-ng/umbrella/tree/master/examples/router-basics) +| [Live version](https://demo.thi.ng/umbrella/router-basics/) + +### Multiple apps with & without shared state + +Devcards style BMI calculator(s) with basic SVG viz. + +[Source](https://github.com/thi-ng/umbrella/tree/master/examples/devcards) +| [Live version](https://demo.thi.ng/umbrella/devcards/) + +### Interceptor based event handling + +[Source](https://github.com/thi-ng/umbrella/tree/master/examples/interceptor-basics) +| [Live version](https://demo.thi.ng/umbrella/interceptor-basics/) + +### Todo list (w/ undo/redo) + +[Source](https://github.com/thi-ng/umbrella/tree/master/examples/todo-list) +| [Live version](https://demo.thi.ng/umbrella/todo-list/) + +### SVG particles + +[Source](https://github.com/thi-ng/umbrella/tree/master/examples/svg-particles) +| [Live version](https://demo.thi.ng/umbrella/svg-particles/) + ### Component tree translation The actual DOM update is based on the minimal edit set of the recursive @@ -175,6 +264,9 @@ JS arrays). Components can be defined as static arrays, closures or objects with [life cycle methods](#lifecycle-methods) (init, render, release). +**Note: hdom uses a RAF render loop only by default, but is absolutely +no way tied to this.** + ![hdom dataflow](https://raw.githubusercontent.com/thi-ng/umbrella/master/assets/hdom-dataflow.png) The syntax is inspired by Clojure's @@ -501,71 +593,6 @@ const app = () => { start(app(), { root: document.body }); ``` -## Example projects - -Most of the 25 -[examples](https://github.com/thi-ng/umbrella/tree/master/examples) -included in this repo are using this package in one way or another. -Please check them out to learn more. Each is heavily commented, incl. -best practice notes. - -Non-exhaustive list: - -### Realtime crypto chart - -[Source](https://github.com/thi-ng/umbrella/tree/master/examples/crypto-chart) | -[Live version](https://demo.thi.ng/umbrella/crypto-chart/) - -### Interactive SVG grid generator - -[Source](https://github.com/thi-ng/umbrella/tree/master/examples/rstream-grid) | -[Live version](https://demo.thi.ng/umbrella/rstream-grid/) - -### Interactive additive waveform visualization - -[Source](https://github.com/thi-ng/umbrella/tree/master/examples/svg-waveform) | -[Live version](https://demo.thi.ng/umbrella/svg-waveform/) - -### Dataflow graph SVG components - -This is a preview of the upcoming -[@thi.ng/estuary](https://github.com/thi-ng/umbrella/tree/feature/estuary/packages/estuary) -package: - -[Source](https://github.com/thi-ng/umbrella/tree/feature/estuary/packages/estuary) | [Live version](https://demo.thi.ng/umbrella/estuary/) - -### SPA with router and event bus - -Based on the `create-hdom-app` project scaffolding, this is one of the -more advanced demos, combining functionality of several other @thi.ng -packages. - -[Source](https://github.com/thi-ng/umbrella/tree/master/examples/router-basics) | [Live version](https://demo.thi.ng/umbrella/router-basics/) - -### Additive waveform synthesis & SVG visualization - -[Source](https://github.com/thi-ng/umbrella/tree/master/examples/svg-waveform) | [Live version](https://demo.thi.ng/umbrella/svg-waveform/) - -### Multiple apps with & without shared state - -Devcards style BMI calculator(s) with basic SVG viz. - -[Source](https://github.com/thi-ng/umbrella/tree/master/examples/devcards) | [Live version](https://demo.thi.ng/umbrella/devcards/) - -### Interceptor based event handling - -[Source](https://github.com/thi-ng/umbrella/tree/master/examples/interceptor-basics) | [Live version](https://demo.thi.ng/umbrella/interceptor-basics/) - -### Todo list - -A fully documented, obligatory todo list app with undo / redo. - -[Source](https://github.com/thi-ng/umbrella/tree/master/examples/todo-list) | [Live version](https://demo.thi.ng/umbrella/todo-list/) - -### SVG particles - -[Source](https://github.com/thi-ng/umbrella/tree/master/examples/svg-particles) | [Live version](https://demo.thi.ng/umbrella/svg-particles/) - ### Benchmark A stress test benchmark is here: diff --git a/packages/iges/README.md b/packages/iges/README.md index 693513e4ee..81e4f5e694 100644 --- a/packages/iges/README.md +++ b/packages/iges/README.md @@ -11,7 +11,7 @@ Bare-bones IGES 5.3 serializer for (currently only) polygonal geometry, both open & closed, for use in various CAD applications (e.g. Rhino, Houdini, Fusion 360) -![houdini](https://raw.githubusercontent.com/thi-ng/umbrella/master/assets/iges.png) +![houdini](https://raw.githubusercontent.com/thi-ng/umbrella/master/assets/screenshots/iges.png) ## Installation @@ -19,6 +19,13 @@ Houdini, Fusion 360) yarn add @thi.ng/iges ``` +## Dependencies + +- [@thi.ng/api](https://github.com/thi-ng/umbrella/tree/master/packages/api) +- [@thi.ng/defmulti](https://github.com/thi-ng/umbrella/tree/master/packages/defmulti) +- [@thi.ng/strings](https://github.com/thi-ng/umbrella/tree/master/packages/strings) +- [@thi.ng/transducers](https://github.com/thi-ng/umbrella/tree/master/packages/transducers) + ## Usage examples ```ts diff --git a/packages/memoize/README.md b/packages/memoize/README.md index c989125cb9..4967214b63 100644 --- a/packages/memoize/README.md +++ b/packages/memoize/README.md @@ -37,6 +37,10 @@ based on different strategies. See doc strings for further details. yarn add @thi.ng/memoize ``` +## Dependencies + +- [@thi.ng/api](https://github.com/thi-ng/umbrella/tree/master/packages/api) + ## Usage examples ```ts diff --git a/packages/rle-pack/README.md b/packages/rle-pack/README.md index ff3e2f9d6e..71d8febc30 100644 --- a/packages/rle-pack/README.md +++ b/packages/rle-pack/README.md @@ -42,6 +42,7 @@ yarn add @thi.ng/rle-pack ## Dependencies - [@thi.ng/bitstream](https://github.com/thi-ng/umbrella/tree/master/packages/bitstream) +- [@thi.ng/errors](https://github.com/thi-ng/umbrella/tree/master/packages/errors) ## API diff --git a/packages/router/README.md b/packages/router/README.md index f3a5aab90f..386cfb359d 100644 --- a/packages/router/README.md +++ b/packages/router/README.md @@ -50,7 +50,8 @@ yarn start A complete, full commented demo app is here: -[Source](https://github.com/thi-ng/umbrella/blob/master/examples/router-basics/) | [Live demo](https://demo.thi.ng/umbrella/router-basics/) +[Source](https://github.com/thi-ng/umbrella/blob/master/examples/router-basics/) | +[Live demo](https://demo.thi.ng/umbrella/router-basics/) ```ts import * as r from "@thi.ng/router"; @@ -142,7 +143,8 @@ router.addListener(r.EV_ROUTE_CHANGED, console.log); router.start(); ``` -See [further comments in source code](https://github.com/thi-ng/umbrella/blob/master/packages/router/src/api.ts) +See [further comments in source +code](https://github.com/thi-ng/umbrella/blob/master/packages/router/src/api.ts) ## Authors diff --git a/packages/rstream-gestures/README.md b/packages/rstream-gestures/README.md index 4c9e4214fa..9b8af9e627 100644 --- a/packages/rstream-gestures/README.md +++ b/packages/rstream-gestures/README.md @@ -22,6 +22,10 @@ The `zoom` value is always present, but is only updated with wheel events. The value will be constrained to `minZoom` ... `maxZoom` interval (provided via options object). +Also see the +[`GestureStreamOpts`](https://github.com/thi-ng/umbrella/tree/master/packages/rstream-gestures/src/index.ts#L26) +config options for further details. + ## Installation ```bash @@ -36,7 +40,12 @@ yarn add @thi.ng/rstream-gestures ## Usage examples -A small, fully commented project can be found in the `/examples` folder: +Several small, fully commented projects can be found in the `/examples` folder: + +![screenshot](https://raw.githubusercontent.com/thi-ng/umbrella/master/assets/screenshots/canvas-dial.png) + +[Source](https://github.com/thi-ng/umbrella/tree/master/examples/canvas-dial) | +[Live version](https://demo.thi.ng/umbrella/canvas-dial) [Source](https://github.com/thi-ng/umbrella/tree/master/examples/rstream-dataflow) | [Live version](https://demo.thi.ng/umbrella/rstream-dataflow) diff --git a/packages/sax/README.md b/packages/sax/README.md index 91c3423991..5b35c8b726 100644 --- a/packages/sax/README.md +++ b/packages/sax/README.md @@ -32,6 +32,7 @@ yarn add @thi.ng/sax ## Dependencies +- [@thi.ng/api](https://github.com/thi-ng/umbrella/tree/master/packages/api) - [@thi.ng/transducers](https://github.com/thi-ng/umbrella/tree/master/packages/transducers) - [@thi.ng/transducers-fsm](https://github.com/thi-ng/umbrella/tree/master/packages/transducers-fsm) diff --git a/packages/strings/README.md b/packages/strings/README.md index 689e9735cc..ebd814a649 100644 --- a/packages/strings/README.md +++ b/packages/strings/README.md @@ -9,6 +9,7 @@ This project is part of the - [About](#about) - [Installation](#installation) +- [Dependencies](#dependencies) - [Usage examples](#usage-examples) - [Authors](#authors) - [License](#license) @@ -26,6 +27,10 @@ functions, some memoized. WIP / Alpha. yarn add @thi.ng/strings ``` +## Dependencies + +- [@thi.ng/memoize](https://github.com/thi-ng/umbrella/tree/master/packages/memoize) + ## Usage examples ```ts diff --git a/packages/transducers-fsm/README.md b/packages/transducers-fsm/README.md index adc1ae8c94..070be1b205 100644 --- a/packages/transducers-fsm/README.md +++ b/packages/transducers-fsm/README.md @@ -21,6 +21,7 @@ yarn add @thi.ng/transducers-fsm ## Dependencies +- [@thi.ng/api](https://github.com/thi-ng/umbrella/tree/master/packages/api) - [@thi.ng/transducers](https://github.com/thi-ng/umbrella/tree/master/packages/transducers) ## Usage examples diff --git a/packages/transducers-hdom/README.md b/packages/transducers-hdom/README.md index 6e2f223c66..d3464cd8cc 100644 --- a/packages/transducers-hdom/README.md +++ b/packages/transducers-hdom/README.md @@ -49,6 +49,12 @@ Please also see the following hdom references for further details: yarn add @thi.ng/transducers-hdom ``` +## Dependencies + +- [@thi.ng/checks](https://github.com/thi-ng/umbrella/tree/master/packages/checks) +- [@thi.ng/hdom](https://github.com/thi-ng/umbrella/tree/master/packages/hdom) +- [@thi.ng/transducers](https://github.com/thi-ng/umbrella/tree/master/packages/transducers) + ## Usage examples The below example is also available in the @@ -60,7 +66,7 @@ directory. ```ts import * as rs from "@thi.ng/rstream"; import * as tx from "@thi.ng/transducers"; -import { updateUI } from "@thi.ng/transducers-hdom"; +import { updateDOM } from "@thi.ng/transducers-hdom"; // root component function const app = ({ ticks, clicks }) => @@ -85,7 +91,7 @@ rs.sync({ // transform into hdom component tx.map(app), // apply as DOM - updateUI(document.body) + updateDOM({ root: document.body }) ); // kick off diff --git a/packages/transducers-stats/README.md b/packages/transducers-stats/README.md index f2adeefb6a..041049b2d8 100644 --- a/packages/transducers-stats/README.md +++ b/packages/transducers-stats/README.md @@ -10,6 +10,7 @@ This project is part of the - [About](#about) - [Supported indicators](#supported-indicators) - [Installation](#installation) +- [Dependencies](#dependencies) - [Usage examples](#usage-examples) - [Authors](#authors) - [License](#license) @@ -53,13 +54,19 @@ transforming ES6 iterator (generator) instead of a transducer. yarn add @thi.ng/transducers-stats ``` +## Dependencies + +- [@thi.ng/dcons](https://github.com/thi-ng/umbrella/tree/master/packages/dcons) +- [@thi.ng/errors](https://github.com/thi-ng/umbrella/tree/master/packages/errors) +- [@thi.ng/transducers](https://github.com/thi-ng/umbrella/tree/master/packages/transducers) + ## Usage examples For some realworld use, please see the [crypto chart](https://github.com/thi-ng/umbrella/tree/master/examples/crypto-chart) example. -![screenshot](https://raw.githubusercontent.com/thi-ng/umbrella/master/assets/crypto-chart.png) +![screenshot](https://raw.githubusercontent.com/thi-ng/umbrella/master/assets/screenshots/crypto-chart.png) ```ts import * as tx from "@thi.ng/transducers"; diff --git a/packages/transducers/README.md b/packages/transducers/README.md index cd070a5012..b21a389566 100644 --- a/packages/transducers/README.md +++ b/packages/transducers/README.md @@ -88,6 +88,8 @@ yarn add @thi.ng/transducers - [@thi.ng/api](https://github.com/thi-ng/umbrella/tree/master/packages/api) - [@thi.ng/checks](https://github.com/thi-ng/umbrella/tree/master/packages/checks) - [@thi.ng/compare](https://github.com/thi-ng/umbrella/tree/master/packages/compare) +- [@thi.ng/compose](https://github.com/thi-ng/umbrella/tree/master/packages/compose) +- [@thi.ng/equiv](https://github.com/thi-ng/umbrella/tree/master/packages/equiv) - [@thi.ng/errors](https://github.com/thi-ng/umbrella/tree/master/packages/errors) - [@thi.ng/strings](https://github.com/thi-ng/umbrella/tree/master/packages/strings) diff --git a/packages/vectors/README.md b/packages/vectors/README.md index 29f964c9a7..d67d60bae7 100644 --- a/packages/vectors/README.md +++ b/packages/vectors/README.md @@ -11,6 +11,7 @@ This project is part of the - [Vectors](#vectors) - [Matrices](#matrices) - [Installation](#installation) +- [Dependencies](#dependencies) - [Usage examples](#usage-examples) - [Basics](#basics) - [Vector classes & interleaved vectors in large buffer](#vector-classes--interleaved-vectors-in-large-buffer) @@ -194,6 +195,12 @@ non-suffixed naming.** yarn add @thi.ng/vectors ``` +## Dependencies + +- [@thi.ng/api](https://github.com/thi-ng/umbrella/tree/master/packages/api) +- [@thi.ng/checks](https://github.com/thi-ng/umbrella/tree/master/packages/checks) +- [@thi.ng/errors](https://github.com/thi-ng/umbrella/tree/master/packages/errors) + ## Usage examples ### Basics From d2b4fafb23e9aa91f1da1c22b654587a4703073f Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sat, 1 Sep 2018 01:06:51 +0100 Subject: [PATCH 59/60] fix(vectors): add missing deps --- packages/vectors/package.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/vectors/package.json b/packages/vectors/package.json index 116ae8f7cc..70b124ecc3 100644 --- a/packages/vectors/package.json +++ b/packages/vectors/package.json @@ -29,7 +29,8 @@ }, "dependencies": { "@thi.ng/api": "^4.1.0", - "@thi.ng/checks": "^1.5.7" + "@thi.ng/checks": "^1.5.7", + "@thi.ng/errors": "^0.1.6" }, "keywords": [ "ES6", @@ -43,4 +44,4 @@ "publishConfig": { "access": "public" } -} +} \ No newline at end of file From a828292586ed9e28040e4006107c5aa2b334ba10 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Sat, 1 Sep 2018 01:08:18 +0100 Subject: [PATCH 60/60] Publish - @thi.ng/associative@0.6.2 - @thi.ng/cache@0.2.19 - @thi.ng/compose@0.1.1 - @thi.ng/csp@0.3.58 - @thi.ng/dcons@1.1.2 - @thi.ng/dgraph@0.2.14 - @thi.ng/hdom-components@2.2.1 - @thi.ng/hdom@4.0.1 - @thi.ng/hiccup-css@0.2.17 - @thi.ng/iges@0.2.7 - @thi.ng/iterators@4.1.23 - @thi.ng/memoize@0.1.2 - @thi.ng/range-coder@0.1.7 - @thi.ng/rle-pack@1.0.2 - @thi.ng/router@0.1.22 - @thi.ng/rstream-csp@0.1.101 - @thi.ng/rstream-dot@0.2.40 - @thi.ng/rstream-gestures@0.5.2 - @thi.ng/rstream-graph@2.1.26 - @thi.ng/rstream-log@1.0.52 - @thi.ng/rstream-query@0.3.39 - @thi.ng/rstream@1.11.7 - @thi.ng/sax@0.3.16 - @thi.ng/strings@0.3.1 - @thi.ng/transducers-fsm@0.2.15 - @thi.ng/transducers-hdom@1.0.1 - @thi.ng/transducers-stats@0.4.2 - @thi.ng/transducers@2.0.2 - @thi.ng/vectors@0.5.2 --- packages/associative/CHANGELOG.md | 8 ++++++++ packages/associative/package.json | 6 +++--- packages/cache/CHANGELOG.md | 8 ++++++++ packages/cache/package.json | 6 +++--- packages/compose/CHANGELOG.md | 8 ++++++++ packages/compose/package.json | 2 +- packages/csp/CHANGELOG.md | 8 ++++++++ packages/csp/package.json | 6 +++--- packages/dcons/CHANGELOG.md | 8 ++++++++ packages/dcons/package.json | 4 ++-- packages/dgraph/CHANGELOG.md | 8 ++++++++ packages/dgraph/package.json | 6 +++--- packages/hdom-components/CHANGELOG.md | 8 ++++++++ packages/hdom-components/package.json | 4 ++-- packages/hdom/CHANGELOG.md | 8 ++++++++ packages/hdom/package.json | 2 +- packages/hiccup-css/CHANGELOG.md | 8 ++++++++ packages/hiccup-css/package.json | 4 ++-- packages/iges/CHANGELOG.md | 8 ++++++++ packages/iges/package.json | 6 +++--- packages/iterators/CHANGELOG.md | 8 ++++++++ packages/iterators/package.json | 4 ++-- packages/memoize/CHANGELOG.md | 8 ++++++++ packages/memoize/package.json | 2 +- packages/range-coder/CHANGELOG.md | 8 ++++++++ packages/range-coder/package.json | 4 ++-- packages/rle-pack/CHANGELOG.md | 8 ++++++++ packages/rle-pack/package.json | 2 +- packages/router/CHANGELOG.md | 8 ++++++++ packages/router/package.json | 2 +- packages/rstream-csp/CHANGELOG.md | 8 ++++++++ packages/rstream-csp/package.json | 6 +++--- packages/rstream-dot/CHANGELOG.md | 8 ++++++++ packages/rstream-dot/package.json | 4 ++-- packages/rstream-gestures/CHANGELOG.md | 8 ++++++++ packages/rstream-gestures/package.json | 6 +++--- packages/rstream-graph/CHANGELOG.md | 8 ++++++++ packages/rstream-graph/package.json | 6 +++--- packages/rstream-log/CHANGELOG.md | 8 ++++++++ packages/rstream-log/package.json | 6 +++--- packages/rstream-query/CHANGELOG.md | 8 ++++++++ packages/rstream-query/package.json | 10 +++++----- packages/rstream/CHANGELOG.md | 8 ++++++++ packages/rstream/package.json | 6 +++--- packages/sax/CHANGELOG.md | 8 ++++++++ packages/sax/package.json | 6 +++--- packages/strings/CHANGELOG.md | 8 ++++++++ packages/strings/package.json | 4 ++-- packages/transducers-fsm/CHANGELOG.md | 8 ++++++++ packages/transducers-fsm/package.json | 4 ++-- packages/transducers-hdom/CHANGELOG.md | 8 ++++++++ packages/transducers-hdom/package.json | 6 +++--- packages/transducers-stats/CHANGELOG.md | 8 ++++++++ packages/transducers-stats/package.json | 6 +++--- packages/transducers/CHANGELOG.md | 8 ++++++++ packages/transducers/package.json | 6 +++--- packages/vectors/CHANGELOG.md | 11 +++++++++++ packages/vectors/package.json | 4 ++-- 58 files changed, 305 insertions(+), 70 deletions(-) diff --git a/packages/associative/CHANGELOG.md b/packages/associative/CHANGELOG.md index 4c7a724220..9bc65c3407 100644 --- a/packages/associative/CHANGELOG.md +++ b/packages/associative/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.6.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/associative@0.6.1...@thi.ng/associative@0.6.2) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/associative + ## [0.6.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/associative@0.6.0...@thi.ng/associative@0.6.1) (2018-08-24) diff --git a/packages/associative/package.json b/packages/associative/package.json index 419951e996..b69378787d 100644 --- a/packages/associative/package.json +++ b/packages/associative/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/associative", - "version": "0.6.1", + "version": "0.6.2", "description": "Alternative Set & Map data type implementations with customizable equality semantics & supporting operations", "main": "./index.js", "typings": "./index.d.ts", @@ -31,10 +31,10 @@ "@thi.ng/api": "^4.1.0", "@thi.ng/checks": "^1.5.7", "@thi.ng/compare": "^0.1.6", - "@thi.ng/dcons": "^1.1.1", + "@thi.ng/dcons": "^1.1.2", "@thi.ng/equiv": "^0.1.7", "@thi.ng/errors": "^0.1.6", - "@thi.ng/transducers": "^2.0.1" + "@thi.ng/transducers": "^2.0.2" }, "keywords": [ "data structures", diff --git a/packages/cache/CHANGELOG.md b/packages/cache/CHANGELOG.md index f3cd3aaa17..e0b09622f6 100644 --- a/packages/cache/CHANGELOG.md +++ b/packages/cache/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.2.19](https://github.com/thi-ng/umbrella/compare/@thi.ng/cache@0.2.18...@thi.ng/cache@0.2.19) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/cache + ## [0.2.18](https://github.com/thi-ng/umbrella/compare/@thi.ng/cache@0.2.17...@thi.ng/cache@0.2.18) (2018-08-27) diff --git a/packages/cache/package.json b/packages/cache/package.json index 95a5da6556..a6becfdc31 100644 --- a/packages/cache/package.json +++ b/packages/cache/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/cache", - "version": "0.2.18", + "version": "0.2.19", "description": "In-memory cache implementations with ES6 Map-like API and different eviction strategies", "main": "./index.js", "typings": "./index.d.ts", @@ -29,8 +29,8 @@ }, "dependencies": { "@thi.ng/api": "^4.1.0", - "@thi.ng/dcons": "^1.1.1", - "@thi.ng/transducers": "^2.0.1" + "@thi.ng/dcons": "^1.1.2", + "@thi.ng/transducers": "^2.0.2" }, "keywords": [ "cache", diff --git a/packages/compose/CHANGELOG.md b/packages/compose/CHANGELOG.md index f99a8b6b78..9ed8d6839d 100644 --- a/packages/compose/CHANGELOG.md +++ b/packages/compose/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.1.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/compose@0.1.0...@thi.ng/compose@0.1.1) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/compose + # 0.1.0 (2018-08-24) diff --git a/packages/compose/package.json b/packages/compose/package.json index abaa8daa6f..0c15ad06c0 100644 --- a/packages/compose/package.json +++ b/packages/compose/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/compose", - "version": "0.1.0", + "version": "0.1.1", "description": "TODO", "main": "./index.js", "typings": "./index.d.ts", diff --git a/packages/csp/CHANGELOG.md b/packages/csp/CHANGELOG.md index 15be8c8c70..21670205a1 100644 --- a/packages/csp/CHANGELOG.md +++ b/packages/csp/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.3.58](https://github.com/thi-ng/umbrella/compare/@thi.ng/csp@0.3.57...@thi.ng/csp@0.3.58) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/csp + ## [0.3.57](https://github.com/thi-ng/umbrella/compare/@thi.ng/csp@0.3.56...@thi.ng/csp@0.3.57) (2018-08-24) diff --git a/packages/csp/package.json b/packages/csp/package.json index 3c5373942c..fd76b161eb 100644 --- a/packages/csp/package.json +++ b/packages/csp/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/csp", - "version": "0.3.57", + "version": "0.3.58", "description": "ES6 promise based CSP implementation", "main": "./index.js", "typings": "./index.d.ts", @@ -34,9 +34,9 @@ "dependencies": { "@thi.ng/api": "^4.1.0", "@thi.ng/checks": "^1.5.7", - "@thi.ng/dcons": "^1.1.1", + "@thi.ng/dcons": "^1.1.2", "@thi.ng/errors": "^0.1.6", - "@thi.ng/transducers": "^2.0.1" + "@thi.ng/transducers": "^2.0.2" }, "keywords": [ "async", diff --git a/packages/dcons/CHANGELOG.md b/packages/dcons/CHANGELOG.md index 6c23b1c57d..a86da46ee7 100644 --- a/packages/dcons/CHANGELOG.md +++ b/packages/dcons/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [1.1.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/dcons@1.1.1...@thi.ng/dcons@1.1.2) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/dcons + ## [1.1.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/dcons@1.1.0...@thi.ng/dcons@1.1.1) (2018-08-24) diff --git a/packages/dcons/package.json b/packages/dcons/package.json index da46f84b78..957fda4413 100644 --- a/packages/dcons/package.json +++ b/packages/dcons/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/dcons", - "version": "1.1.1", + "version": "1.1.2", "description": "Comprehensive doubly linked list structure w/ iterator support", "main": "./index.js", "typings": "./index.d.ts", @@ -33,7 +33,7 @@ "@thi.ng/compare": "^0.1.6", "@thi.ng/equiv": "^0.1.7", "@thi.ng/errors": "^0.1.6", - "@thi.ng/transducers": "^2.0.1" + "@thi.ng/transducers": "^2.0.2" }, "keywords": [ "datastructure", diff --git a/packages/dgraph/CHANGELOG.md b/packages/dgraph/CHANGELOG.md index 1c3f7bb74e..6aea233e59 100644 --- a/packages/dgraph/CHANGELOG.md +++ b/packages/dgraph/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.2.14](https://github.com/thi-ng/umbrella/compare/@thi.ng/dgraph@0.2.13...@thi.ng/dgraph@0.2.14) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/dgraph + ## [0.2.13](https://github.com/thi-ng/umbrella/compare/@thi.ng/dgraph@0.2.12...@thi.ng/dgraph@0.2.13) (2018-08-24) diff --git a/packages/dgraph/package.json b/packages/dgraph/package.json index 5407b22c52..28b217eeb3 100644 --- a/packages/dgraph/package.json +++ b/packages/dgraph/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/dgraph", - "version": "0.2.13", + "version": "0.2.14", "description": "Type-agnostic directed acyclic graph (DAG) & graph operations", "main": "./index.js", "typings": "./index.d.ts", @@ -29,10 +29,10 @@ }, "dependencies": { "@thi.ng/api": "^4.1.0", - "@thi.ng/associative": "^0.6.1", + "@thi.ng/associative": "^0.6.2", "@thi.ng/equiv": "^0.1.7", "@thi.ng/errors": "^0.1.6", - "@thi.ng/transducers": "^2.0.1" + "@thi.ng/transducers": "^2.0.2" }, "keywords": [ "data structure", diff --git a/packages/hdom-components/CHANGELOG.md b/packages/hdom-components/CHANGELOG.md index ea6adc4939..6101bdc11d 100644 --- a/packages/hdom-components/CHANGELOG.md +++ b/packages/hdom-components/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [2.2.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom-components@2.2.0...@thi.ng/hdom-components@2.2.1) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/hdom-components + # [2.2.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom-components@2.1.13...@thi.ng/hdom-components@2.2.0) (2018-08-27) diff --git a/packages/hdom-components/package.json b/packages/hdom-components/package.json index 1553a5e39b..e5a0fe915b 100644 --- a/packages/hdom-components/package.json +++ b/packages/hdom-components/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/hdom-components", - "version": "2.2.0", + "version": "2.2.1", "description": "Raw, skinnable UI & SVG components for @thi.ng/hdom", "main": "./index.js", "typings": "./index.d.ts", @@ -30,7 +30,7 @@ "dependencies": { "@thi.ng/api": "^4.1.0", "@thi.ng/checks": "^1.5.7", - "@thi.ng/transducers": "^2.0.1", + "@thi.ng/transducers": "^2.0.2", "@types/webgl2": "^0.0.4" }, "keywords": [ diff --git a/packages/hdom/CHANGELOG.md b/packages/hdom/CHANGELOG.md index 4a507c26f7..fa944eff34 100644 --- a/packages/hdom/CHANGELOG.md +++ b/packages/hdom/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [4.0.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom@4.0.0...@thi.ng/hdom@4.0.1) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/hdom + # [4.0.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom@3.0.35...@thi.ng/hdom@4.0.0) (2018-08-31) diff --git a/packages/hdom/package.json b/packages/hdom/package.json index 21a1815c4c..caa7da861a 100644 --- a/packages/hdom/package.json +++ b/packages/hdom/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/hdom", - "version": "4.0.0", + "version": "4.0.1", "description": "Lightweight vanilla ES6 UI component & virtual DOM system", "main": "./index.js", "typings": "./index.d.ts", diff --git a/packages/hiccup-css/CHANGELOG.md b/packages/hiccup-css/CHANGELOG.md index f2a0f5e5b1..adbccdea69 100644 --- a/packages/hiccup-css/CHANGELOG.md +++ b/packages/hiccup-css/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.2.17](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-css@0.2.16...@thi.ng/hiccup-css@0.2.17) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/hiccup-css + ## [0.2.16](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-css@0.2.15...@thi.ng/hiccup-css@0.2.16) (2018-08-24) diff --git a/packages/hiccup-css/package.json b/packages/hiccup-css/package.json index 751631f270..a5c5348e3c 100644 --- a/packages/hiccup-css/package.json +++ b/packages/hiccup-css/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/hiccup-css", - "version": "0.2.16", + "version": "0.2.17", "description": "CSS from nested JS data structures", "main": "./index.js", "typings": "./index.d.ts", @@ -31,7 +31,7 @@ "@thi.ng/api": "^4.1.0", "@thi.ng/checks": "^1.5.7", "@thi.ng/errors": "^0.1.6", - "@thi.ng/transducers": "^2.0.1" + "@thi.ng/transducers": "^2.0.2" }, "keywords": [ "clojure", diff --git a/packages/iges/CHANGELOG.md b/packages/iges/CHANGELOG.md index 03e4c5923f..73c3f930a0 100644 --- a/packages/iges/CHANGELOG.md +++ b/packages/iges/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.2.7](https://github.com/thi-ng/umbrella/compare/@thi.ng/iges@0.2.6...@thi.ng/iges@0.2.7) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/iges + ## [0.2.6](https://github.com/thi-ng/umbrella/compare/@thi.ng/iges@0.2.5...@thi.ng/iges@0.2.6) (2018-08-24) diff --git a/packages/iges/package.json b/packages/iges/package.json index 75069725b3..e8a3a43ce9 100644 --- a/packages/iges/package.json +++ b/packages/iges/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/iges", - "version": "0.2.6", + "version": "0.2.7", "description": "IGES 5.3 serializer for (currently only) polygonal geometry, both open & closed", "main": "./index.js", "typings": "./index.d.ts", @@ -30,8 +30,8 @@ "dependencies": { "@thi.ng/api": "^4.1.0", "@thi.ng/defmulti": "^0.3.8", - "@thi.ng/strings": "^0.3.0", - "@thi.ng/transducers": "^2.0.1" + "@thi.ng/strings": "^0.3.1", + "@thi.ng/transducers": "^2.0.2" }, "keywords": [ "CAD", diff --git a/packages/iterators/CHANGELOG.md b/packages/iterators/CHANGELOG.md index fa3eb52510..6c5f13d6bb 100644 --- a/packages/iterators/CHANGELOG.md +++ b/packages/iterators/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [4.1.23](https://github.com/thi-ng/umbrella/compare/@thi.ng/iterators@4.1.22...@thi.ng/iterators@4.1.23) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/iterators + ## [4.1.22](https://github.com/thi-ng/umbrella/compare/@thi.ng/iterators@4.1.21...@thi.ng/iterators@4.1.22) (2018-08-24) diff --git a/packages/iterators/package.json b/packages/iterators/package.json index 3da316fd33..a8b1f0b317 100644 --- a/packages/iterators/package.json +++ b/packages/iterators/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/iterators", - "version": "4.1.22", + "version": "4.1.23", "description": "clojure.core inspired, composable ES6 iterators & generators", "main": "./index.js", "typings": "./index.d.ts", @@ -29,7 +29,7 @@ }, "dependencies": { "@thi.ng/api": "^4.1.0", - "@thi.ng/dcons": "^1.1.1", + "@thi.ng/dcons": "^1.1.2", "@thi.ng/errors": "^0.1.6" }, "keywords": [ diff --git a/packages/memoize/CHANGELOG.md b/packages/memoize/CHANGELOG.md index 82c0488b65..432ab995d3 100644 --- a/packages/memoize/CHANGELOG.md +++ b/packages/memoize/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.1.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/memoize@0.1.1...@thi.ng/memoize@0.1.2) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/memoize + ## [0.1.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/memoize@0.1.0...@thi.ng/memoize@0.1.1) (2018-08-24) diff --git a/packages/memoize/package.json b/packages/memoize/package.json index 5c6af0065d..a2bbbbd396 100644 --- a/packages/memoize/package.json +++ b/packages/memoize/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/memoize", - "version": "0.1.1", + "version": "0.1.2", "description": "Function memoization with configurable caches", "main": "./index.js", "typings": "./index.d.ts", diff --git a/packages/range-coder/CHANGELOG.md b/packages/range-coder/CHANGELOG.md index 077df4fc79..9f65b6df1a 100644 --- a/packages/range-coder/CHANGELOG.md +++ b/packages/range-coder/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.1.7](https://github.com/thi-ng/umbrella/compare/@thi.ng/range-coder@0.1.6...@thi.ng/range-coder@0.1.7) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/range-coder + ## [0.1.6](https://github.com/thi-ng/umbrella/compare/@thi.ng/range-coder@0.1.5...@thi.ng/range-coder@0.1.6) (2018-08-24) diff --git a/packages/range-coder/package.json b/packages/range-coder/package.json index e274eb5bf7..0ea7873a01 100644 --- a/packages/range-coder/package.json +++ b/packages/range-coder/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/range-coder", - "version": "0.1.6", + "version": "0.1.7", "description": "Binary data range encoder / decoder", "main": "./index.js", "typings": "./index.d.ts", @@ -20,7 +20,7 @@ "test": "rm -rf build && tsc -p test && nyc mocha build/test/*.js" }, "devDependencies": { - "@thi.ng/transducers": "^2.0.1", + "@thi.ng/transducers": "^2.0.2", "@types/mocha": "^5.2.5", "@types/node": "^10.5.5", "mocha": "^5.2.0", diff --git a/packages/rle-pack/CHANGELOG.md b/packages/rle-pack/CHANGELOG.md index 536f3e6998..85f13c422d 100644 --- a/packages/rle-pack/CHANGELOG.md +++ b/packages/rle-pack/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [1.0.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/rle-pack@1.0.1...@thi.ng/rle-pack@1.0.2) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/rle-pack + ## [1.0.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/rle-pack@1.0.0...@thi.ng/rle-pack@1.0.1) (2018-08-24) diff --git a/packages/rle-pack/package.json b/packages/rle-pack/package.json index 873d0b513f..3863a544e7 100644 --- a/packages/rle-pack/package.json +++ b/packages/rle-pack/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rle-pack", - "version": "1.0.1", + "version": "1.0.2", "description": "Binary run-length encoding packer w/ flexible repeat bit widths", "main": "./index.js", "typings": "./index.d.ts", diff --git a/packages/router/CHANGELOG.md b/packages/router/CHANGELOG.md index f86c98d1f4..cb47af8d72 100644 --- a/packages/router/CHANGELOG.md +++ b/packages/router/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.1.22](https://github.com/thi-ng/umbrella/compare/@thi.ng/router@0.1.21...@thi.ng/router@0.1.22) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/router + ## [0.1.21](https://github.com/thi-ng/umbrella/compare/@thi.ng/router@0.1.20...@thi.ng/router@0.1.21) (2018-08-24) diff --git a/packages/router/package.json b/packages/router/package.json index 69145ff74f..b98018bc49 100644 --- a/packages/router/package.json +++ b/packages/router/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/router", - "version": "0.1.21", + "version": "0.1.22", "description": "Generic router for browser & non-browser based applications", "main": "./index.js", "typings": "./index.d.ts", diff --git a/packages/rstream-csp/CHANGELOG.md b/packages/rstream-csp/CHANGELOG.md index c1134fb06b..1ade10e636 100644 --- a/packages/rstream-csp/CHANGELOG.md +++ b/packages/rstream-csp/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.1.101](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-csp@0.1.100...@thi.ng/rstream-csp@0.1.101) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/rstream-csp + ## [0.1.100](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-csp@0.1.99...@thi.ng/rstream-csp@0.1.100) (2018-08-27) diff --git a/packages/rstream-csp/package.json b/packages/rstream-csp/package.json index 477b9096e1..41bcd29af1 100644 --- a/packages/rstream-csp/package.json +++ b/packages/rstream-csp/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-csp", - "version": "0.1.100", + "version": "0.1.101", "description": "@thi.ng/csp bridge module for @thi.ng/rstream", "main": "./index.js", "typings": "./index.d.ts", @@ -28,8 +28,8 @@ "typescript": "^3.0.1" }, "dependencies": { - "@thi.ng/csp": "^0.3.57", - "@thi.ng/rstream": "^1.11.6" + "@thi.ng/csp": "^0.3.58", + "@thi.ng/rstream": "^1.11.7" }, "keywords": [ "bridge", diff --git a/packages/rstream-dot/CHANGELOG.md b/packages/rstream-dot/CHANGELOG.md index a015818594..fc39c52367 100644 --- a/packages/rstream-dot/CHANGELOG.md +++ b/packages/rstream-dot/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.2.40](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-dot@0.2.39...@thi.ng/rstream-dot@0.2.40) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/rstream-dot + ## [0.2.39](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-dot@0.2.38...@thi.ng/rstream-dot@0.2.39) (2018-08-27) diff --git a/packages/rstream-dot/package.json b/packages/rstream-dot/package.json index 71e3ab1b7f..6503f6fead 100644 --- a/packages/rstream-dot/package.json +++ b/packages/rstream-dot/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-dot", - "version": "0.2.39", + "version": "0.2.40", "description": "Graphviz DOT conversion of @thi.ng/rstream dataflow graph topologies", "main": "./index.js", "typings": "./index.d.ts", @@ -28,7 +28,7 @@ "typescript": "^3.0.1" }, "dependencies": { - "@thi.ng/rstream": "^1.11.6" + "@thi.ng/rstream": "^1.11.7" }, "keywords": [ "conversion", diff --git a/packages/rstream-gestures/CHANGELOG.md b/packages/rstream-gestures/CHANGELOG.md index 16ee4338c3..e9a07b7501 100644 --- a/packages/rstream-gestures/CHANGELOG.md +++ b/packages/rstream-gestures/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.5.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-gestures@0.5.1...@thi.ng/rstream-gestures@0.5.2) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/rstream-gestures + ## [0.5.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-gestures@0.5.0...@thi.ng/rstream-gestures@0.5.1) (2018-08-27) diff --git a/packages/rstream-gestures/package.json b/packages/rstream-gestures/package.json index 5f3a51177f..4341cd22a4 100644 --- a/packages/rstream-gestures/package.json +++ b/packages/rstream-gestures/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-gestures", - "version": "0.5.1", + "version": "0.5.2", "description": "Unified mouse, mouse wheel & single-touch event stream abstraction", "main": "./index.js", "typings": "./index.d.ts", @@ -29,8 +29,8 @@ }, "dependencies": { "@thi.ng/api": "^4.1.0", - "@thi.ng/rstream": "^1.11.6", - "@thi.ng/transducers": "^2.0.1" + "@thi.ng/rstream": "^1.11.7", + "@thi.ng/transducers": "^2.0.2" }, "keywords": [ "dataflow", diff --git a/packages/rstream-graph/CHANGELOG.md b/packages/rstream-graph/CHANGELOG.md index 61052fd6d1..d25181ef6e 100644 --- a/packages/rstream-graph/CHANGELOG.md +++ b/packages/rstream-graph/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [2.1.26](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-graph@2.1.25...@thi.ng/rstream-graph@2.1.26) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/rstream-graph + ## [2.1.25](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-graph@2.1.24...@thi.ng/rstream-graph@2.1.25) (2018-08-30) diff --git a/packages/rstream-graph/package.json b/packages/rstream-graph/package.json index efa38188a8..384cc421af 100644 --- a/packages/rstream-graph/package.json +++ b/packages/rstream-graph/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-graph", - "version": "2.1.25", + "version": "2.1.26", "description": "Declarative dataflow graph construction for @thi.ng/rstream", "main": "./index.js", "typings": "./index.d.ts", @@ -33,8 +33,8 @@ "@thi.ng/errors": "^0.1.6", "@thi.ng/paths": "^1.5.2", "@thi.ng/resolve-map": "^3.0.9", - "@thi.ng/rstream": "^1.11.6", - "@thi.ng/transducers": "^2.0.1" + "@thi.ng/rstream": "^1.11.7", + "@thi.ng/transducers": "^2.0.2" }, "keywords": [ "compute", diff --git a/packages/rstream-log/CHANGELOG.md b/packages/rstream-log/CHANGELOG.md index 19b2808f87..0ecc92b62c 100644 --- a/packages/rstream-log/CHANGELOG.md +++ b/packages/rstream-log/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [1.0.52](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-log@1.0.51...@thi.ng/rstream-log@1.0.52) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/rstream-log + ## [1.0.51](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-log@1.0.50...@thi.ng/rstream-log@1.0.51) (2018-08-27) diff --git a/packages/rstream-log/package.json b/packages/rstream-log/package.json index e600f24537..e67b35abbb 100644 --- a/packages/rstream-log/package.json +++ b/packages/rstream-log/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-log", - "version": "1.0.51", + "version": "1.0.52", "description": "Structured, multilevel & hierarchical loggers based on @thi.ng/rstream", "main": "./index.js", "typings": "./index.d.ts", @@ -31,8 +31,8 @@ "@thi.ng/api": "^4.1.0", "@thi.ng/checks": "^1.5.7", "@thi.ng/errors": "^0.1.6", - "@thi.ng/rstream": "^1.11.6", - "@thi.ng/transducers": "^2.0.1" + "@thi.ng/rstream": "^1.11.7", + "@thi.ng/transducers": "^2.0.2" }, "keywords": [ "ES6", diff --git a/packages/rstream-query/CHANGELOG.md b/packages/rstream-query/CHANGELOG.md index 18ea365f87..a365a0c4ea 100644 --- a/packages/rstream-query/CHANGELOG.md +++ b/packages/rstream-query/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.3.39](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-query@0.3.38...@thi.ng/rstream-query@0.3.39) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/rstream-query + ## [0.3.38](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-query@0.3.37...@thi.ng/rstream-query@0.3.38) (2018-08-27) diff --git a/packages/rstream-query/package.json b/packages/rstream-query/package.json index 9a7000f702..0d58dcee4a 100644 --- a/packages/rstream-query/package.json +++ b/packages/rstream-query/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream-query", - "version": "0.3.38", + "version": "0.3.39", "description": "@thi.ng/rstream based triple store & reactive query engine", "main": "./index.js", "typings": "./index.d.ts", @@ -29,13 +29,13 @@ }, "dependencies": { "@thi.ng/api": "^4.1.0", - "@thi.ng/associative": "^0.6.1", + "@thi.ng/associative": "^0.6.2", "@thi.ng/checks": "^1.5.7", "@thi.ng/equiv": "^0.1.7", "@thi.ng/errors": "^0.1.6", - "@thi.ng/rstream": "^1.11.6", - "@thi.ng/rstream-dot": "^0.2.39", - "@thi.ng/transducers": "^2.0.1" + "@thi.ng/rstream": "^1.11.7", + "@thi.ng/rstream-dot": "^0.2.40", + "@thi.ng/transducers": "^2.0.2" }, "keywords": [ "dataflow", diff --git a/packages/rstream/CHANGELOG.md b/packages/rstream/CHANGELOG.md index cc78b505b3..288e185ed5 100644 --- a/packages/rstream/CHANGELOG.md +++ b/packages/rstream/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [1.11.7](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream@1.11.6...@thi.ng/rstream@1.11.7) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/rstream + ## [1.11.6](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream@1.11.5...@thi.ng/rstream@1.11.6) (2018-08-27) diff --git a/packages/rstream/package.json b/packages/rstream/package.json index 4408e87a68..e115ba34b3 100644 --- a/packages/rstream/package.json +++ b/packages/rstream/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/rstream", - "version": "1.11.6", + "version": "1.11.7", "description": "Reactive multi-tap streams, dataflow & transformation pipeline constructs", "main": "./index.js", "typings": "./index.d.ts", @@ -29,12 +29,12 @@ }, "dependencies": { "@thi.ng/api": "^4.1.0", - "@thi.ng/associative": "^0.6.1", + "@thi.ng/associative": "^0.6.2", "@thi.ng/atom": "^1.5.0", "@thi.ng/checks": "^1.5.7", "@thi.ng/errors": "^0.1.6", "@thi.ng/paths": "^1.5.2", - "@thi.ng/transducers": "^2.0.1" + "@thi.ng/transducers": "^2.0.2" }, "keywords": [ "datastructure", diff --git a/packages/sax/CHANGELOG.md b/packages/sax/CHANGELOG.md index b77a2251b6..d5e9a28f54 100644 --- a/packages/sax/CHANGELOG.md +++ b/packages/sax/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.3.16](https://github.com/thi-ng/umbrella/compare/@thi.ng/sax@0.3.15...@thi.ng/sax@0.3.16) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/sax + ## [0.3.15](https://github.com/thi-ng/umbrella/compare/@thi.ng/sax@0.3.14...@thi.ng/sax@0.3.15) (2018-08-24) diff --git a/packages/sax/package.json b/packages/sax/package.json index 52d927ee86..20736419b5 100644 --- a/packages/sax/package.json +++ b/packages/sax/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/sax", - "version": "0.3.15", + "version": "0.3.16", "description": "Transducer-based, SAX-like, non-validating, speedy & tiny XML parser", "main": "./index.js", "typings": "./index.d.ts", @@ -29,8 +29,8 @@ }, "dependencies": { "@thi.ng/api": "^4.1.0", - "@thi.ng/transducers": "^2.0.1", - "@thi.ng/transducers-fsm": "^0.2.14" + "@thi.ng/transducers": "^2.0.2", + "@thi.ng/transducers-fsm": "^0.2.15" }, "keywords": [ "ES6", diff --git a/packages/strings/CHANGELOG.md b/packages/strings/CHANGELOG.md index 898574ca0c..ff8ce77449 100644 --- a/packages/strings/CHANGELOG.md +++ b/packages/strings/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.3.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@0.3.0...@thi.ng/strings@0.3.1) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/strings + # [0.3.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/strings@0.2.0...@thi.ng/strings@0.3.0) (2018-08-24) diff --git a/packages/strings/package.json b/packages/strings/package.json index 8b051efd01..93b848ff0d 100644 --- a/packages/strings/package.json +++ b/packages/strings/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/strings", - "version": "0.3.0", + "version": "0.3.1", "description": "Various string formatting & utility functions", "main": "./index.js", "typings": "./index.d.ts", @@ -28,7 +28,7 @@ "typescript": "^3.0.1" }, "dependencies": { - "@thi.ng/memoize": "^0.1.1" + "@thi.ng/memoize": "^0.1.2" }, "keywords": [ "ES6", diff --git a/packages/transducers-fsm/CHANGELOG.md b/packages/transducers-fsm/CHANGELOG.md index 7e2fcde8ef..ac0a5adae6 100644 --- a/packages/transducers-fsm/CHANGELOG.md +++ b/packages/transducers-fsm/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.2.15](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-fsm@0.2.14...@thi.ng/transducers-fsm@0.2.15) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/transducers-fsm + ## [0.2.14](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-fsm@0.2.13...@thi.ng/transducers-fsm@0.2.14) (2018-08-24) diff --git a/packages/transducers-fsm/package.json b/packages/transducers-fsm/package.json index d676a73f32..e7d15606c6 100644 --- a/packages/transducers-fsm/package.json +++ b/packages/transducers-fsm/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/transducers-fsm", - "version": "0.2.14", + "version": "0.2.15", "description": "Transducer-based Finite State Machine transformer", "main": "./index.js", "typings": "./index.d.ts", @@ -29,7 +29,7 @@ }, "dependencies": { "@thi.ng/api": "^4.1.0", - "@thi.ng/transducers": "^2.0.1" + "@thi.ng/transducers": "^2.0.2" }, "keywords": [ "ES6", diff --git a/packages/transducers-hdom/CHANGELOG.md b/packages/transducers-hdom/CHANGELOG.md index dac2ce8ef7..aa418b9fd8 100644 --- a/packages/transducers-hdom/CHANGELOG.md +++ b/packages/transducers-hdom/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [1.0.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-hdom@1.0.0...@thi.ng/transducers-hdom@1.0.1) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/transducers-hdom + # [1.0.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-hdom@0.1.5...@thi.ng/transducers-hdom@1.0.0) (2018-08-31) diff --git a/packages/transducers-hdom/package.json b/packages/transducers-hdom/package.json index 67e94084c6..0b948dd59f 100644 --- a/packages/transducers-hdom/package.json +++ b/packages/transducers-hdom/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/transducers-hdom", - "version": "1.0.0", + "version": "1.0.1", "description": "Transducer based UI updater for @thi.ng/hdom", "main": "./index.js", "typings": "./index.d.ts", @@ -29,8 +29,8 @@ }, "dependencies": { "@thi.ng/checks": "^1.5.7", - "@thi.ng/hdom": "^4.0.0", - "@thi.ng/transducers": "^2.0.1" + "@thi.ng/hdom": "^4.0.1", + "@thi.ng/transducers": "^2.0.2" }, "keywords": [ "diff", diff --git a/packages/transducers-stats/CHANGELOG.md b/packages/transducers-stats/CHANGELOG.md index 1033c6651d..2762fae944 100644 --- a/packages/transducers-stats/CHANGELOG.md +++ b/packages/transducers-stats/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.4.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-stats@0.4.1...@thi.ng/transducers-stats@0.4.2) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/transducers-stats + ## [0.4.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-stats@0.4.0...@thi.ng/transducers-stats@0.4.1) (2018-08-24) diff --git a/packages/transducers-stats/package.json b/packages/transducers-stats/package.json index e3a5cb865a..f69a93f93f 100644 --- a/packages/transducers-stats/package.json +++ b/packages/transducers-stats/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/transducers-stats", - "version": "0.4.1", + "version": "0.4.2", "description": "Transducers for statistical / technical analysis", "main": "./index.js", "typings": "./index.d.ts", @@ -28,9 +28,9 @@ "typescript": "^3.0.1" }, "dependencies": { - "@thi.ng/dcons": "^1.1.1", + "@thi.ng/dcons": "^1.1.2", "@thi.ng/errors": "^0.1.6", - "@thi.ng/transducers": "^2.0.1" + "@thi.ng/transducers": "^2.0.2" }, "keywords": [ "ES6", diff --git a/packages/transducers/CHANGELOG.md b/packages/transducers/CHANGELOG.md index 7dc8879d0c..32890f7d31 100644 --- a/packages/transducers/CHANGELOG.md +++ b/packages/transducers/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [2.0.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers@2.0.1...@thi.ng/transducers@2.0.2) (2018-09-01) + + + + +**Note:** Version bump only for package @thi.ng/transducers + ## [2.0.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers@2.0.0...@thi.ng/transducers@2.0.1) (2018-08-24) diff --git a/packages/transducers/package.json b/packages/transducers/package.json index f517d30984..6d23bd371c 100644 --- a/packages/transducers/package.json +++ b/packages/transducers/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/transducers", - "version": "2.0.1", + "version": "2.0.2", "description": "Lightweight transducer implementations for ES6 / TypeScript", "main": "./index.js", "typings": "./index.d.ts", @@ -31,10 +31,10 @@ "@thi.ng/api": "^4.1.0", "@thi.ng/checks": "^1.5.7", "@thi.ng/compare": "^0.1.6", - "@thi.ng/compose": "^0.1.0", + "@thi.ng/compose": "^0.1.1", "@thi.ng/equiv": "^0.1.7", "@thi.ng/errors": "^0.1.6", - "@thi.ng/strings": "^0.3.0" + "@thi.ng/strings": "^0.3.1" }, "keywords": [ "ES6", diff --git a/packages/vectors/CHANGELOG.md b/packages/vectors/CHANGELOG.md index 9e93a41664..3106ffe1f7 100644 --- a/packages/vectors/CHANGELOG.md +++ b/packages/vectors/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.5.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/vectors@0.5.1...@thi.ng/vectors@0.5.2) (2018-09-01) + + +### Bug Fixes + +* **vectors:** add missing deps ([d2b4faf](https://github.com/thi-ng/umbrella/commit/d2b4faf)) + + + + ## [0.5.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/vectors@0.5.0...@thi.ng/vectors@0.5.1) (2018-08-31) diff --git a/packages/vectors/package.json b/packages/vectors/package.json index 70b124ecc3..1e75d5e307 100644 --- a/packages/vectors/package.json +++ b/packages/vectors/package.json @@ -1,6 +1,6 @@ { "name": "@thi.ng/vectors", - "version": "0.5.1", + "version": "0.5.2", "description": "Vector algebra for fixed & variable sizes, memory mapped, flexible layouts", "main": "./index.js", "typings": "./index.d.ts", @@ -44,4 +44,4 @@ "publishConfig": { "access": "public" } -} \ No newline at end of file +}