diff --git a/assets/geom-voronoi.jpg b/assets/geom-voronoi.jpg
new file mode 100644
index 0000000000..7dee595db7
Binary files /dev/null and b/assets/geom-voronoi.jpg differ
diff --git a/examples/canvas-dial/package.json b/examples/canvas-dial/package.json
index 6fe997818c..46bebe7e0a 100644
--- a/examples/canvas-dial/package.json
+++ b/examples/canvas-dial/package.json
@@ -16,6 +16,7 @@
},
"dependencies": {
"@thi.ng/api": "latest",
+ "@thi.ng/arrays": "latest",
"@thi.ng/checks": "latest",
"@thi.ng/hdom": "latest",
"@thi.ng/hdom-components": "latest",
diff --git a/examples/canvas-dial/src/dial.ts b/examples/canvas-dial/src/dial.ts
index cce1fe211b..48fa362893 100644
--- a/examples/canvas-dial/src/dial.ts
+++ b/examples/canvas-dial/src/dial.ts
@@ -1,10 +1,10 @@
import { Fn } from "@thi.ng/api";
+import { peek } from "@thi.ng/arrays";
import { isString } from "@thi.ng/checks";
import { canvas2D } from "@thi.ng/hdom-components";
import { fitClamped } from "@thi.ng/math";
import { Subscription } from "@thi.ng/rstream";
import { GestureEvent, gestureStream, GestureType } from "@thi.ng/rstream-gestures";
-import { peek } from "@thi.ng/transducers";
import { heading, sub2 } from "@thi.ng/vectors";
/**
diff --git a/examples/gesture-analysis/package.json b/examples/gesture-analysis/package.json
index 8c0a4f1ff9..d1b13a7fa6 100644
--- a/examples/gesture-analysis/package.json
+++ b/examples/gesture-analysis/package.json
@@ -15,6 +15,7 @@
"typescript": "^3.2.2"
},
"dependencies": {
+ "@thi.ng/arrays": "latest",
"@thi.ng/hiccup-svg": "latest",
"@thi.ng/rstream": "latest",
"@thi.ng/rstream-gestures": "latest",
diff --git a/examples/gesture-analysis/src/index.ts b/examples/gesture-analysis/src/index.ts
index 1d42722b09..6fb9bd0bac 100644
--- a/examples/gesture-analysis/src/index.ts
+++ b/examples/gesture-analysis/src/index.ts
@@ -1,3 +1,4 @@
+import { peek } from "@thi.ng/arrays";
import { polyline as gPolyline, resample, vertices } from "@thi.ng/geom";
import {
circle,
@@ -14,7 +15,6 @@ import {
map,
multiplexObj,
partition,
- peek,
push,
transduce
} from "@thi.ng/transducers";
diff --git a/examples/hdom-vscroller/.gitignore b/examples/hdom-vscroller/.gitignore
new file mode 100644
index 0000000000..0c5abcab62
--- /dev/null
+++ b/examples/hdom-vscroller/.gitignore
@@ -0,0 +1,5 @@
+.cache
+out
+node_modules
+yarn.lock
+*.js
diff --git a/examples/hdom-vscroller/README.md b/examples/hdom-vscroller/README.md
new file mode 100644
index 0000000000..1986c19fc5
--- /dev/null
+++ b/examples/hdom-vscroller/README.md
@@ -0,0 +1,13 @@
+# hdom-vscroller
+
+[Live demo](http://demo.thi.ng/umbrella/hdom-vscroller/)
+
+Please refer to the [example build instructions](https://github.com/thi-ng/umbrella/wiki/Example-build-instructions) on the wiki.
+
+## Authors
+
+- Karsten Schmidt
+
+## License
+
+© 2018 Karsten Schmidt // Apache Software License 2.0
diff --git a/examples/hdom-vscroller/index.html b/examples/hdom-vscroller/index.html
new file mode 100644
index 0000000000..e4feadcaf7
--- /dev/null
+++ b/examples/hdom-vscroller/index.html
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+ hdom-vscroller
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/hdom-vscroller/package.json b/examples/hdom-vscroller/package.json
new file mode 100644
index 0000000000..80795da4a3
--- /dev/null
+++ b/examples/hdom-vscroller/package.json
@@ -0,0 +1,29 @@
+{
+ "name": "hdom-vscroller",
+ "version": "0.0.1",
+ "repository": "https://github.com/thi-ng/umbrella",
+ "author": "Karsten Schmidt ",
+ "license": "Apache-2.0",
+ "scripts": {
+ "clean": "rm -rf .cache build out",
+ "build": "yarn clean && parcel build index.html -d out --public-url ./ --no-source-maps --no-cache --detailed-report --experimental-scope-hoisting",
+ "start": "parcel index.html -p 8080 --open"
+ },
+ "devDependencies": {
+ "parcel-bundler": "^1.11.0",
+ "rimraf": "^2.6.3",
+ "terser": "^3.14.1",
+ "typescript": "^3.2.2"
+ },
+ "dependencies": {
+ "@thi.ng/api": "latest",
+ "@thi.ng/rstream": "latest",
+ "@thi.ng/transducers-hdom": "latest"
+ },
+ "browserslist": [
+ "last 3 Chrome versions"
+ ],
+ "browser": {
+ "process": false
+ }
+}
\ No newline at end of file
diff --git a/examples/hdom-vscroller/src/commits.json b/examples/hdom-vscroller/src/commits.json
new file mode 100644
index 0000000000..51aae4049b
--- /dev/null
+++ b/examples/hdom-vscroller/src/commits.json
@@ -0,0 +1 @@
+[["d990c3c2","2019-02-08","perf(geom-isoline): minor optimizations"],["3ed4ea12","2019-02-07","fix(hdom): fix #72, update normalizeElement()"],["2b3dd7f4","2019-02-05","feat(examples): dynamic chart width (package-stats)"],["0715665a","2019-02-05","docs(geom-voronoi): add example screenshot"],["74fb4d83","2019-02-05","Publish"],["3b7d8cee","2019-02-05","docs: update main readme"],["c4aaa82b","2019-02-05","build: update various geom packages (deps, tags & readmes)"],["134c353f","2019-02-05","Merge branch 'develop' of github.com:thi-ng/umbrella into develop"],["cf7dc3a3","2019-02-05","feat(bencode): re-import updated bencode pkg"],["f2612a6b","2019-02-05","feat(bencode): re-import updated bencode pkg"],["9d8dd32e","2019-02-05","refactor(vectors): update imports (zip)"],["7f4e3989","2019-02-05","refactor(geom-tessellate): update imports (zip)"],["5204a7fe","2019-02-05","refactor(geom): update imports (zip)"],["29045902","2019-02-05","refactor(color): update imports (zip)"],["f15ea5fc","2019-02-05","refactor(examples): update deps & imports in various examples"],["d1151cea","2019-02-05","refactor(transducers): deprecate & rename tuples() => zip()"],["a7c1ef7b","2019-02-05","refactor(transducers): migrate binary related ops to new package"],["02877c79","2019-02-05","feat(transducers-binary): extract as new pkg from @thi.ng/transducers"],["ae83bb29","2019-02-05","fix(transducers): ensure all vals in hexDump iterator version"],["57d4488a","2019-02-05","feat(math): add PHI const"],["8d61b710","2019-02-05","refactor(examples): minor update iso-plasma"],["678c3ff0","2019-02-02","refactor(examples): update iso-plasma"],["37fb295f","2019-02-02","feat(examples): add iso-plasma demo"],["bd1754d5","2019-02-01","feat(geom-accel): add selectVals() impl"],["4bde37e1","2019-02-01","feat(geom-api): add ISpatialAccel.selectVals()"],["13f655a6","2019-02-01","docs: update main readme"],["d7ccc887","2019-02-01","refactor(vector-pools): update AttribPool & VecPool ctors"],["6d15686a","2019-02-01","refactor(malloc): update MemPoolOpts & MemPool ctor args"],["e30b2111","2019-02-01","feat(geom-isoline): import package (ported from clojure)"],["b7d162fa","2019-02-01","feat(vector-pools): update & fix AttribPool resize logic"],["1b72d1d4","2019-01-31","build: update deps in unreleased packages"],["3529c2f3","2019-01-31","Merge branch 'master' into develop"],["50a5098a","2019-01-31","Publish"],["3adabc4d","2019-01-31","fix(strings): fix #70, replace kebab() regex w/ legacy version"],["a55f4770","2019-01-31","feat(malloc): add reallocArray(), update realloc() & compact(), tests"],["bf8b28fc","2019-01-31","feat(malloc): add realloc(), update free()"],["16b48b38","2019-01-31","fix(vector-pools): AttribPool opts & default handling"],["4acc8318","2019-01-30","feat(examples): update hdom-canvas-shapes (add ellipse test)"],["ea322265","2019-01-30","refactor(geom-isec): update/merge intersectRayRect/AABB"],["5f7dd635","2019-01-30","feat(geom): add ray-rect/aabb impls for intersects()"],["93e2ea65","2019-01-30","feat(geom-isec): add ray-rect/aabb tests, fix ray-line, add NONE, update docs"],["4d19aa20","2019-01-29","perf(geom-voronoi): update computeDual(), update isBoundary()"],["2ff68db7","2019-01-29","feat(geom-voronoi): add support for vertex user data, tolerances, refactor QE changes"],["426cd37f","2019-01-29","refactor(quad-edge): replace QuadEdge class w/ type alias, add docs"],["f249b7e1","2019-01-29","docs: update main readme"],["613ffeba","2019-01-29","Merge branch 'feature/geom-qe' into develop"],["b11837a2","2019-01-29","docs(geom): update readme"],["c903293f","2019-01-29","feat(geom-voronoi): re-import & update QE delaunay/voronoi pkg (MBP2010)"],["ee76797b","2019-01-29","feat(quad-edge): re-import & update quad edge impl (MBP2010)"],["4b852882","2019-01-29","refactor(geom): minor update clippedLine()"],["084883eb","2019-01-29","refactor(geom-clip): minor update liangBarsky"],["6d14f2b7","2019-01-28","refactor(geom): swap Group ctor & factory arg order"],["af099ee5","2019-01-28","build(geom): update geom-clip dep & refs"],["004d7f46","2019-01-28","build(geom-clip): rename pkg geom-clip-convex => geom-clip, update deps"],["6391d104","2019-01-28","refactor(geom-tessellate): update imports / deps"],["31e369bd","2019-01-28","feat(math): add simplifyRatio()"],["226645fd","2019-01-28","refactor(geom): update pointInside & classifyPoint impls (delegate)"],["895102d4","2019-01-28","feat(geom-poly-utils): add convexity(), remove obsolete/migrated point checks"],["6ee03ebc","2019-01-28","feat(geom-api): re-add Convexity enum"],["2b235461","2019-01-28","feat(geom-isec): migrate point intersection/containment checks"],["11bf7232","2019-01-28","minor(geom-closest-point): minor updates"],["f9dd3037","2019-01-28","docs(vectors): update docstrings"],["e2047df3","2019-01-25","Merge branch 'feature/geom-refactor' into develop"],["df8332d0","2019-01-25","refactor(geom): remove obsolete/migrated fns, update deps, readme"],["37741081","2019-01-25","fet(geom-hull): extract from geom as new package"],["68a26f44","2019-01-25","feat(geom-poly-utils): move barycentric fns from main geom pkg"],["74aa9543","2019-01-25","docs(geom): update readme"],["f6a621a3","2019-01-25","docs(geom-subdiv-curve): add docs, minor updates subdivide()"],["87fddb89","2019-01-25","refactor(geom-api): minor update SubdivKernel"],["598fca55","2019-01-25","refactor(poisson): minor optimizations, update PoissonOpts & defaults"],["bee1c89c","2019-01-24","feat(poisson): add geom-api dep, optimize search"],["9022d5bb","2019-01-24","perf(geom-accel): optimize single nearest point search, fix select()"],["18ce6c96","2019-01-24","refactor(geom-api): update ISpatialAccel"],["5c98ed70","2019-01-24","refactor(geom-api): split into separate files, add ISpatialAccel"],["03352e11","2019-01-23","refactor(examples): update geom-tessel demo"],["b223603d","2019-01-23","refactor(geom): update to use geom-api types"],["f7ad4d3b","2019-01-23","refactor(geom-tessellate): update to use geom-api types"],["0964a956","2019-01-23","refactor(geom-subdiv-curve): update to use geom-api types"],["5b674154","2019-01-23","refactor(geom-splines): update to use geom-api types"],["8d878b99","2019-01-23","refactor(geom-resample): update to use geom-api types, add douglas-peucker"],["27c4bf07","2019-01-23","refactor(geom-isec): update return types, use geom-api"],["47fb5e7b","2019-01-23","minor(geom-clip-convex): update imports"],["e36e2213","2019-01-23","refactor(geom-arc): update to use geom-api types"],["4e53293d","2019-01-23","feat(geom-api): extract from geom as new package"],["02231a3a","2019-01-23","build: update make-module script"],["407e9a54","2019-01-23","docs: update readmes"],["fb532b8c","2019-01-23","refactor(geom): remove obsolete/extracted internal ops, update publics"],["cb2429c4","2019-01-23","feat(geom-tessellate): extract from geom as new package"],["324a5162","2019-01-23","feat(geom-subdiv-curve): extract from geom as new package"],["5ef4c56d","2019-01-23","feat(geom-poly-utils): extract from geom as new package"],["798de06b","2019-01-23","feat(geom-closest-point): add more fns, update pkg"],["2054574a","2019-01-23","fix(geom-arc): add bounds return type, add missing re-export, update pkg"],["2440ffdd","2019-01-23","feat(vectors): add corner2, clockwise2, signedAreaC2, isInArray fns"],["9576920b","2019-01-23","build: simplify bundle-module script, update build cmds in all packages"],["58e0a05d","2019-01-23","feat(vectors): add VecPair type alias, add copyVectors()"],["15d67121","2019-01-23","feat(geom-clip-convex): extract from geom as new package"],["027150a6","2019-01-23","feat(geom-splines): extract from geom as new package"],["6cc8c738","2019-01-23","feat(geom-arc): extract from geom as new package (#69)"],["79abd0ba","2019-01-23","feat(geom-resample): extract from geom as new package"],["285dde49","2019-01-23","feat(geom-isec): extract from geom as new package"],["4ff5005a","2019-01-23","feat(geom-closest-point): extract from geom as new package"],["cae83948","2019-01-22","feat(math): add minError() search"],["e998610c","2019-01-22","Publish"],["35a0a59e","2019-01-22","fix(examples): update canvas examples due to recent package changes"],["c6023793","2019-01-22","feat(geom): add asPolyline() multi-fn"],["a017b10a","2019-01-22","feat(geom): add attrib support to PathBuilder"],["8c1df496","2019-01-22","fix(geom): update Rect.toHiccup() format (separate widht/height vals)"],["1d92c8c3","2019-01-22","feat(hdom-canvas): add color dep, update color attrib handling"],["783d9faf","2019-01-22","docs(hiccup-svg): update readme, add attrib conv notes, fix example"],["7f6011e7","2019-01-22","feat(hiccup-svg): add color dep, add attrib conversion for all elements"],["571fc704","2019-01-21","docs: update main readme"],["124acdb1","2019-01-21","docs(poisson): add/update doc strings, readme, example screenshot"],["d098aff5","2019-01-21","Publish"],["193f9d4a","2019-01-21","feat(poisson): re-import & update poisson package (MBP2010)"],["8fd5728b","2019-01-21","fix(geom-accel): add root null check for select/selectKeys()"],["3d499ad5","2019-01-21","refactor(geom): update tangentAt(), use direction() from vectors pkg"],["07d5f8fc","2019-01-21","feat(vectors): migrate direction(), normalLeft/Right2() from geom pkg"],["862ed083","2019-01-21","docs(color): update readme"],["4cd3850b","2019-01-21","docs(vectors): update readme"],["d7053813","2019-01-21","docs(vector-pools): update readme"],["0d10d507","2019-01-21","docs: prune changelogs"],["348e7303","2019-01-21","Publish"],["b9cea8cc","2019-01-21","refactor(vectors): update angleBetween*() fns, add absInner opt arg"],["a78bd87b","2019-01-21","feat(math): add absInnerAngle()"],["7c1bf047","2019-01-21","refactor(examples): update gesture-analysis demo"],["822d8fba","2019-01-21","docs: update readme links / package names"],["31595ebe","2019-01-20","Merge branch 'master' of github.com:thi-ng/umbrella"],["51723f99","2019-01-20","build(pointfree-lang): fix UMD identifier"],["15e4cb2d","2019-01-20","Merge branch 'feature/vec-refactor' into develop"],["b5842fa7","2019-01-20","docs(geom): update readme"],["74b7a38a","2019-01-20","build(vectors): refix version to previous"],["0779337d","2019-01-20","build: update vectors3 => vectors references everywhere"],["0fd2498e","2019-01-20","build(vectors): replace old vectors package w/ vectors3 (renamed back to vectors)"],["4bd77082","2019-01-20","build: update geom3 => geom references"],["682385a1","2019-01-20","build(geom): replace old geom package w/ geom3"],["ff503669","2019-01-20","build: update depgraph script to display per package deps/dependents"],["2f26cf68","2019-01-20","docs(hdom-canvas): fix readme example"],["8e2c8b5c","2019-01-20","refactor(geom): update withAttribs() return type"],["9a507694","2019-01-20","feat(hdom-canvas): add ellipse() / ellipticArc(), update readme"],["6f341c5c","2019-01-20","docs(vector-pools): fix AttribPool example layout"],["db4a2018","2019-01-20","feat(geom): re-add barycentric conversions, collation mappers (still unused)"],["08f7bd16","2019-01-20","docs(matrices): add docstrings for most fns"],["2aceab97","2019-01-20","feat(matrices): add m22 & m23 matrix converters"],["311b0074","2019-01-20","feat(vectors): add default output handling for set/setC/setS fns"],["12ad59a1","2019-01-20","refactor(examples): update geom-knn & geom-tessel demos"],["5ca58032","2019-01-19","refactor(color): remove circular dependencies, update parseCss()"],["5270143a","2019-01-19","refactor(defmulti): remove optional excess args from type sigs"],["5d087367","2019-01-19","refactor(examples): update geom-knn demo"],["485051db","2019-01-19","refactor(geom-accel): update to use new vectors package"],["46bb8730","2019-01-19","build: remove obsolete geom2 package"],["370f9280","2019-01-19","fix(hiccup-svg): convert path arc segment axis theta to degrees"],["63b3a5d9","2019-01-19","feat(geom): update closestPoint(), add support for Arc"],["0e5e7768","2019-01-19","feat(geom): add arcPointAt() helper, refactor Arc, minor other updates"],["62ec49fe","2019-01-19","fix(geom): update arcFrom2Points()"],["910529dd","2019-01-19","feat(geom): add splitNearPoint() for line & polyline, update Sampler"],["499e14b3","2019-01-18","refactor(geom): add tessellate() multi-fn, move/rename tessellators"],["1d754eb9","2019-01-18","feat(geom): add splitNearPoint(), Sampler.closestT(), internal restructure"],["0451f8f6","2019-01-18","docs: update main readme"],["9623b4e9","2019-01-18","build(geom): add @thi.ng/compose dependency"],["9a4570bf","2019-01-18","minor(geom): minor updates"],["56f60372","2019-01-18","feat(geom): add flip() impls"],["ebc9a981","2019-01-18","feat(geom): add pointAt() impls for Cubic/Quadratic"],["eaf1a1b0","2019-01-18","feat(geom): add closestPoint() impls for splines, line, polygons, polyline"],["627e20d4","2019-01-18","feat(geom): add transform() impls for Cubic/Quadratic"],["d763621c","2019-01-18","feat(geom): add clippedLine(), minor update liangBarsky()"],["cd59f664","2019-01-18","perf(geom): use squared dist for classifyPoint() (circle)"],["e834597c","2019-01-18","feat(geom): add/update edges(), pointInside() & classifyPoint() impls"],["f5a53ca0","2019-01-18","feat(geom): re-add vertices() impls for Cubic/Quadratic"],["3c9a7b0f","2019-01-18","feat(geom): re-add pathFromSvg()"],["66267e22","2019-01-18","feat(geom): add intersection checks & intersects() multi-fn"],["f1f428a2","2019-01-17","feat(geom): re-add tessellators"],["9f91cfa1","2019-01-17","fix(api): update assert(), re-export mixin()"],["5f873009","2019-01-17","feat(vectors): add randMinMax"],["d09cc795","2019-01-17","feat(geom): add clipConvex, scatter, warpPoints"],["61cfb0f1","2019-01-16","feat(geom): add path builder, path & arc op impls"],["e81d8c31","2019-01-16","feat(vectors): update/split angleBetween for 2d/3d"],["df49c71c","2019-01-16","Merge branch 'master' into develop"],["a6e6f2af","2019-01-16","Merge pull request #68 from evilive3000/fix-cache-ltru"],["c3762e97","2019-01-16","fix(cache): TLRU: expected behavior on getSet()"],["2cc682a6","2019-01-16","fix(examples): add release() lifecycle method (hdom-inner-html)"],["4effc0ec","2019-01-16","feat(examples): add hdom-inner-html demo #67"],["fea8fbe3","2019-01-16","feat(geom): re-add arc, cubic, quadratic ops, splitAt & other ops"],["18437026","2019-01-16","perf(vectors): update copy()"],["446a1832","2019-01-16","fix(vectors): minor update opt arg in VecOp*"],["66e45ccd","2019-01-15","build: update .npmignore files"],["253b1be9","2019-01-15","Merge branch 'develop' into feature/vec-refactor"],["a75f1920","2019-01-15","docs: update/fix various readmes"],["1cfefdab","2019-01-15","refactor(malloc): update imports"],["c8d8a37e","2019-01-15","refactor(malloc): add/extract types to api.ts"],["e04eb294","2019-01-11","refactor(defmulti): update imports, fix tests (cherry picked from cdd8659a)"],["89dafa45","2019-01-15","build: update bundle-module script, disable minification in UMD outputs"],["b63d2589","2019-01-15","docs(transducers): update cat() docstring"],["b70e84d7","2019-01-15","build: update .npmignore files (add .meta)"],["9eb6f2d2","2019-01-15","build: update rollup dev dep"],["491980c3","2019-01-15","Merge branch 'develop' into feature/vec-refactor"],["d118464b","2019-01-15","test(vectors): update tests (due to math eqDelta change in eps handling)"],["c0e3a0bc","2019-01-15","feat(geom): add temp geom3 package (another refactored version of geom2)"],["e28f56ec","2019-01-15","Merge branch 'develop' into feature/vec-refactor"],["50180096","2019-01-15","feat(math): update eqDelta w/ adaptive eps, rename old => eqDeltaFixed"],["a39811c6","2019-01-15","feat(hiccup-svg): add ellipse shape type, update convert()"],["d14c94b2","2019-01-15","build: disable minification for UMD outputs"],["c12ad1cc","2019-01-15","test(vectors): update eqDelta tests"],["18aeb49c","2019-01-15","build(vectors): add memoize dep"],["61e40638","2019-01-14","feat(vectors): add addm/addmN, subm/submN"],["d5ba06a4","2019-01-11","build: remove obsolete temp package vectors2"],["aa995682","2019-01-11","Merge branch 'develop' into feature/vec-refactor"],["507218aa","2019-01-11","minor(examples): update package-stats"],["fcbc0c27","2019-01-11","build: update bundle-module, strip comments, add source maps & dev deps"],["048bdb1c","2019-01-11","refactor(vectors2): update imports"],["f3a5e0ff","2019-01-11","refactor(malloc): update imports"],["c41b96fb","2019-01-11","refactor(geom): update imports, fix tests"],["cdd8659a","2019-01-11","refactor(defmulti): update imports, fix tests"],["c9da5485","2019-01-11","build(examples): update geom-tessel tsconfig"],["82f8ef27","2019-01-10","revert(hiccup-svg): undo merge mistake in convert.ts"],["a7ea1fc3","2019-01-10","build(vectors): build: update package scripts, outputs, imports"],["d4eddef2","2019-01-10","build(vectors2): build: update package scripts, outputs, imports"],["372c199c","2019-01-10","build(vector-pools): build: update package scripts, outputs, imports"],["5d25c1ae","2019-01-10","build(matrices): build: update package scripts, outputs, imports"],["e247386c","2019-01-10","build(geom): build: update package scripts, outputs, imports"],["4e48cb98","2019-01-10","build(color): build: update package scripts, outputs, imports"],["d7d237d0","2019-01-10","Merge branch 'develop' into feature/vec-refactor"],["ab159105","2019-01-10","test(api): fix import in mixin test"],["c91df5fc","2019-01-10","build: add test-only yarn script"],["6be3a871","2019-01-10","build: fix cjs output path in bundle-module script"],["3741663f","2019-01-10","Merge branch 'feature/multi-output' into develop"],["f6e3cdd5","2019-01-10","docs(examples): add troubleshooting notes"],["bbe636f4","2019-01-10","fix(examples): add quote escaping in xml-converter"],["bb3db27c","2019-01-10","build(examples): update tsconfig for commit-table-ssr"],["cc26ae98","2019-01-10","docs(examples): update readmes to refer to wiki build instructions"],["8f270dfa","2019-01-10","build: update project tpl scripts, ignore files"],["1f01bf8f","2019-01-10","build: update make-module script"],["4df9ec41","2019-01-10","build: update bundle-module outputs, emit meta data, update .gitignore"],["a894a24a","2019-01-10","fix(transducers): update juxt re-export"],["5c3080d7","2019-01-10","build: temporarily add webpack until parcel-bundler/parcel#2513 is fixed"],["bac59db6","2019-01-10","feat(examples): add package-stats charting example"],["27438f9c","2019-01-09","minor(examples): cleanup"],["4e28b5a6","2019-01-09","build(examples): update dev deps"],["1618c136","2019-01-09","build(examples): enable scope hoisting in `yarn build` scripts"],["d2d7952e","2019-01-08","minor: update imports in readme's / examples"],["3f1b79de","2019-01-08","build: update .gitignore"],["3747ad7b","2019-01-08","refactor(examples): update imports & deps of all examples"],["3b8576f3","2019-01-08","fix(csp): disable __State reverse enum lookup"],["d89f28fd","2019-01-08","fix(rstream-log): remove __Level reverse enum lookup, update Level (non const)"],["19449e8d","2019-01-08","fix(rstream-gestures): disable __GestureType reverse enum export"],["b238a3a9","2019-01-08","fix(rstream): disable __State reverse enum lookups"],["227be4b5","2019-01-08","fix(pointfree-lang): update NodeType handling"],["b198c195","2019-01-08","fix(hiccup-markdown): re-export TagFactories interface"],["f912a84a","2019-01-08","build: update package scripts, outputs, imports in remaining packages"],["b54b703d","2019-01-08","build: update package build scripts & outputs, imports in ~50 packages"],["f913d7bf","2019-01-08","build(api): update package build scripts / outputs"],["7fee8573","2019-01-08","build: update shared dev deps, rewrite bundle-module script"],["4e768394","2019-01-07","Merge branch 'develop' into feature/multi-output"],["d3944fb0","2019-01-07","build: switch travis to use node 10"],["a42b2e11","2019-01-07","refactor(rstream-query): use rstream nextID() util (fix regression)"],["3e1467fa","2019-01-07","refactor(rstream-log): use rstream nextID() util (fix regression)"],["c28ce64f","2019-01-07","Merge branch 'develop' into feature/multi-output"],["b31065bb","2019-01-07","Merge branch 'develop' of github.com:thi-ng/umbrella into develop"],["28f77e60","2019-01-07","build: update tsconfig & .npmignore files in all packages"],["4be67c59","2019-01-07","build: prep api, atom, bench, binary, checks, equiv, errors, paths for multi outputs"],["3df29305","2019-01-06","Merge pull request #66 from acarabott/feature/scaleWithCenter"],["92bce73d","2019-01-06","fix(vectors): fix NaNs in Mat23.scaleWithCenter"],["d1e275bd","2019-01-05","fix(rstream): avoid Subscription ctor to workaround parceljs build issue"],["e201ca8d","2019-01-05","refactor(rstream): replace Subscription.NEXT_ID w/ nextID() util"],["a313d830","2019-01-05","build: add/update dev deps, update build scripts in all packages"],["ce4b5283","2019-01-05","refactor(transducers-hdom): use arrow fns"],["e103d740","2019-01-05","refactor(transducers-fsm): use arrow fns"],["48670f58","2019-01-05","refactor(memoize): use arrow fns"],["5d530286","2019-01-05","refactor(csp): use arrow fns"],["e9f0542a","2019-01-05","refactor(transducers): use arrow fns"],["6eba2415","2019-01-05","refactor(rle-pack): use arrow fns"],["762db4e3","2019-01-05","refactor(rstream-csp): use arrow fns"],["8904cb4c","2019-01-05","refactor(rstream-gestures): use arrow fns"],["393d23ed","2019-01-05","minor(rstream-query): update formatting"],["14c00b29","2019-01-05","refactor(rstream-log): use arrow fns"],["ff9f8e0c","2019-01-05","minor(rstream-graph): update formatting"],["6c3ea083","2019-01-05","refactor(rstream): use arrow fns, update formatting"],["e0f7cb85","2019-01-05","minor(resolve-map): update formatting"],["560207a0","2019-01-05","refactor(math): use arrow fns"],["ad5574b9","2019-01-05","refactor(iterators): use arrow fns"],["3b74de92","2019-01-05","refactor(hiccup-css): use arrow fns"],["d9f4bd3f","2019-01-05","refactor(errors): use arrow fns"],["35377bd5","2019-01-05","refactor(compose): use arrow fns"],["025412a0","2019-01-05","refactor(compare): use arrow fns"],["aaf2723f","2019-01-05","refactor(associative): use arrow fns, update formatting"],["30c59fd5","2019-01-05","Merge branch 'feature/arrowfns' into develop"],["fc22a27e","2019-01-05","refactor(paths): update all as arrow fns"],["b70a3e1a","2019-01-05","refactor(checks): update all as arrow fns"],["3038a844","2019-01-04","docs(hiccup-markdown): update readme"],["634e2504","2019-01-04","Publish"],["343280d8","2019-01-04","refactor(examples): update MD demo, use parser from hiccup-markdown package"],["35db07fe","2019-01-04","feat(hiccup-markdown): add & refactor markdown parser (from example), update docs"],["5f09d3ec","2019-01-04","fix(examples): add missing return types"],["ffc68cef","2019-01-04","Merge branch 'develop' into feature/vec-refactor"],["6030753a","2019-01-04","Publish"],["492992d7","2019-01-04","docs: update package list in main readme"],["17c14b49","2019-01-04","docs(examples): update readmes"],["0a505c1a","2019-01-04","docs(fsm): update readme & package"],["98081e3a","2019-01-04","Merge branch 'feature/fsm' into develop"],["81e3fc79","2019-01-04","feat(fsm): add never(), optimize alts(), add docs for all matchers"],["297356dd","2019-01-04","docs(examples): update readme"],["120a7afd","2019-01-04","refactor(examples): remove 2nd table row in collectTable()"],["b60bf31a","2019-01-04","refactor(examples): cleanup parser & rules, tag handling, update readme"],["9585b86e","2019-01-04","feat(examples): add initial MD table support"],["a9336075","2019-01-04","feat(fsm): update not()"],["980d4888","2019-01-04","feat(examples): update MD parser, styles, readme"],["992f31ac","2019-01-04","feat(fsm): add always(), lit(), not(), cleanup imports"],["995a104b","2019-01-03","refactor(examples): update title & blockquote parsers/style"],["4a9bb3d6","2019-01-03","feat(fsm): add support for lookahead-1, add docs"],["f9cece70","2019-01-03","refactor(examples): update MD title parser"],["55671fc7","2019-01-03","feat(fsm): add repeat(), success(), refactor all matchers"],["36cadc96","2019-01-03","feat(examples): update tags, add hrule, blockquote, update CSS / readme"],["b04e0747","2019-01-03","feat(examples): update MD parser, add parse rules & custom tag support"],["9875cda8","2019-01-03","feat(examples): add markdown parser example"],["e03390b1","2019-01-03","feat(fsm): import fsm package"],["731ede02","2019-01-02","build: update deps (defmulti / transducers)"],["5b98d55e","2019-01-02","Merge branch 'develop' into feature/vec-refactor"],["26a29cf1","2019-01-02","Publish"],["1d29153c","2019-01-02","feat(defmulti): add opt fallback arg for defmultiN(), update docs"],["cd175866","2019-01-02","fix(transducers): add reduced() handling for cat()"],["161199f4","2019-01-02","feat(geom): add/rename type ids, add sphere, isec fns"],["2e6d1965","2019-01-02","fix(vectors): disable default prefix for random*() fns"],["2fb2aa32","2019-01-01","build: update deps"],["ba755f8a","2019-01-01","Merge branch 'develop' into feature/vec-refactor"],["7729d993","2019-01-01","Publish"],["488698a6","2019-01-01","feat(defmulti): add addAll(), add/update doc strings"],["d47798ed","2019-01-01","refactor(examples): update gesture analysis demo"],["b10c8d67","2019-01-01","refactor(geom): prep/update intersectShape() w/ new dispatch fn"],["c0008a7a","2018-12-31","minor(geom): update formatting"],["7cf5f7c4","2018-12-31","refactor(geom): update subdivKernel* fns"],["76c343c3","2018-12-31","feat(geom): add pointAt/tangentAt impls for circle/line"],["b9125168","2018-12-31","feat(geom): add ray skeleton impl"],["c7052171","2018-12-31","fix(vectors): cartesian2/3"],["52fb9399","2018-12-31","feat(matrices): add quatToMat33, update readme"],["4c6fe066","2018-12-31","fix(matrices): re-add persp divide in mulV344()"],["4f024918","2018-12-31","fix(matrices): scaleWithCenter* (add missing concat() arg)"],["6d58c309","2018-12-30","docs: rename pd image (because of GH CDN issues), update readme"],["cfc88744","2018-12-30","docs(color): add porterduff image"],["83a46311","2018-12-30","docs: fix readme links"],["0ee2be0a","2018-12-30","docs: update readmes"],["10fc9cc5","2018-12-30","docs(matrices): update readme (add full API list)"],["4f2f512c","2018-12-30","build(matrices): update deps"],["ae7a039e","2018-12-30","feat(matrices): add cwise matrix multiply, rename mul* => mulM*, move mulQ"],["c70189aa","2018-12-30","docs(vectors): update readme"],["7e19e7b4","2018-12-30","minor(vectors): minor update vop()"],["66036e6c","2018-12-30","fix(vectors): update gvec prop lookup & interning"],["6c9fe88e","2018-12-30","refactor(vectors): rename addWeighted*() => addW*(), update package kw"],["064d61c5","2018-12-30","docs(vectors): update readme & package keywords"],["d462ae0a","2018-12-30","perf(matrices): use setC6() for M23 ops"],["809383c9","2018-12-30","refactor(matrices): extract m33to44/m44to33() into own files, update re-exports"],["0ee306a2","2018-12-30","feat(vectors): add setC6()"],["0b07ac86","2018-12-30","fix(matrices): inject default output handling code"],["b5adea6f","2018-12-30","refactor(matrices): replace setValues*() w/ setC*(), update dotC*() use"],["b03b9192","2018-12-30","feat(matrices): add quaternion fns"],["06dd9634","2018-12-30","fix(vectors): result handling jitter()/project()"],["745053c5","2018-12-30","refactor(vector): minor updates arg/result handling"],["cfe333fe","2018-12-30","refactor(vectors): simplify various ops, improve tpl re-use"],["6b3608da","2018-12-30","fix(vectors): sum() impls"],["9b789bca","2018-12-30","refactor(vectors): simplify various ops, use setC*()"],["809bf9b9","2018-12-30","refactor(vectors): rename dotValues*() => dotC*()"],["6857f347","2018-12-30","feat(vectors): add clamp01(), clamp11() fns"],["dc6f4661","2018-12-30","refactor(vectors): add defMathOp()/defMathNOp(), update basic math ops"],["784f5c34","2018-12-29","build: update deps"],["b849bd1b","2018-12-29","feat(color): add alpha()/setAlpha(), add docs, re-exports, update readme"],["e7bb46b7","2018-12-29","feat(color): add Hue enum, closestHue*() fns, namedHueRgba()"],["172f5070","2018-12-29","docs(color): update readme"],["9d4fffa1","2018-12-29","build(color): add package keywords"],["aa303442","2018-12-29","feat(color): add convert() fallback, minor other updates"],["445b8c1f","2018-12-29","feat(color): add luminance defmulti"],["36b7d038","2018-12-29","refactor(color): rename, update matrix ops"],["f2cac286","2018-12-29","refactor(color): update type factory fns & ensureArgs()"],["a0f19956","2018-12-29","Merge branch 'develop' into feature/vec-refactor"],["b2cab4d0","2018-12-29","Publish"],["a90a712c","2018-12-29","fix(transducers): interpolate() interval selection, add minPos/maxPos"],["b0d28788","2018-12-29","refactor(color): update multiCosineGradient(), update readme"],["0546839d","2018-12-29","refactor(color): ColorMode const enum, update convert() dispatcher"],["a5c53c38","2018-12-29","fix(color): add/update conversions"],["04c38372","2018-12-28","refactor(color): update converters"],["4ca7a23d","2018-12-28","Merge branch 'feature/vec-refactor' into feature/color"],["a72562cf","2018-12-28","Merge branch 'develop' into feature/vec-refactor"],["eae8d140","2018-12-28","Publish"],["846ab5ca","2018-12-28","feat(transducers): add interpolate() iterator, update readme"],["dbbb26cf","2018-12-28","feat(color): add multiCosineGradient()"],["46013514","2018-12-28","refactor(color): update conversions"],["0a9456bf","2018-12-28","docs(color): update readme"],["1c28c22b","2018-12-28","fix(color): HCYA field names"],["e930d736","2018-12-28","feat(color): add more color spaces, refactor, rename, simplify"],["714381de","2018-12-27","perf(color): refactor porterDiff as HOF, update all PD ops, add docs"],["d0b1e60e","2018-12-27","refactor(color): add AColor, re-use for existing wrappers, update deps"],["f515f6cb","2018-12-27","Merge branch 'feature/vec-refactor' into feature/color"],["ef4562a2","2018-12-27","build: update deps"],["95ac1e86","2018-12-27","Merge branch 'feature/vec-refactor' into feature/color"],["5b49e70d","2018-12-27","Merge branch 'develop' into feature/vec-refactor"],["ea0dee0f","2018-12-27","Publish"],["3f9b2443","2018-12-27","refactor(pointfree): re-use comp() from thi.ng/compose"],["1ebfea95","2018-12-26","fix(compose): fix comp() for arities >10"],["0061b21f","2018-12-26","feat(compose): add threadFirst/Last, rename compI => compL"],["5788646f","2018-12-26","feat(color): add/update class wrappers"],["7a735f2d","2018-12-25","refactor(vectors): update gvec, Vec2/3/4, extract iterator impl"],["7bcd21ac","2018-12-24","Merge branch 'feature/vec-refactor' into feature/color"],["aa5ad976","2018-12-24","fix(vectors): update field names in declareIndex()"],["0caf599b","2018-12-24","Merge branch 'feature/vec-refactor' into feature/color"],["5620483b","2018-12-24","refactor(vector-pools): update IVector refs (new field names)"],["0c0fce6a","2018-12-24","feat(vectors): update gvec, add generic setS()"],["6e6a33ce","2018-12-24","refactor(vectors): update IVector (rename fields), add ICopyView"],["c2556c2e","2018-12-24","refactor(vectors): update declareIndices, extract single declareIndex fn"],["610699ab","2018-12-24","feat(color): add RGBA/HSLA wrapper types, update convert"],["404ac54b","2018-12-24","feat(color): add HSI converters, add clampH(), minor refactors"],["a5d2f98e","2018-12-23","feat(color): add Porter-Duff ops, pre/post-multiply, update types"],["8fa05c3d","2018-12-22","feat(math): add constants"],["eb5f6391","2018-12-22","feat(vectors): add setC()"],["0b51ef1c","2018-12-22","feat(color): add new package"],["946af71e","2018-12-21","Merge branch 'feature/vec-refactor' into feature/color"],["0099c27c","2018-12-21","Merge branch 'develop' into feature/vec-refactor"],["ec6084b5","2018-12-21","Publish"],["6618c226","2018-12-21","feat(hdom): add support for event listener options, update readme"],["696a0ce3","2018-12-21","Merge branch 'feature/vec-refactor' into feature/color"],["f617c7ec","2018-12-21","Merge branch 'develop' into feature/color"],["e49d3caa","2018-12-21","Merge branch 'develop' into feature/vec-refactor"],["62418f90","2018-12-21","Publish"],["9f48a760","2018-12-21","fix(hdom): fix #63 update removeChild() (IE11)"],["e2874932","2018-12-21","build(geom): update deps"],["c8e25bb0","2018-12-21","build(vectors): update deps"],["b130a944","2018-12-21","refactor(vectors): rename mapBufferV* fns => mapV*"],["8b582cb5","2018-12-21","refactor(vectors): extract & reuse Vec2/3/4 static fns, add copyView()"],["a916f3e7","2018-12-20","Merge branch 'develop' into feature/vec-refactor"],["802fab85","2018-12-20","Publish"],["61b7b117","2018-12-20","feat(iterators): add `children` arg for walk()/walkIterator()"],["f44070e4","2018-12-20","Publish"],["caad2d38","2018-12-20","docs: update package list"],["9984c51d","2018-12-20","Merge branch 'feature/hiccup-markdown' into develop"],["58f591e8","2018-12-20","feat(hiccup-markdown): add new package"],["df38394e","2018-12-20","refactor(hiccup): export normalize() fn"],["9884a67c","2018-12-19","build: update depgraph script"],["2a43bf37","2018-12-19","Publish"],["a78c6a7f","2018-12-19","feat(intervals): add Interval.parse(), update docs, readme, deps"],["6d753f98","2018-12-18","Merge branch 'develop' into feature/vec-refactor"],["47782618","2018-12-18","Publish"],["8545ded8","2018-12-18","Merge branch 'develop'"],["82814288","2018-12-18","docs: update package list"],["14a8a634","2018-12-18","docs: update package list"],["b0a31426","2018-12-18","feat(intervals): add new package"],["33bcd152","2018-12-17","Publish"],["04705053","2018-12-17","fix(transducers): add return type for range()"],["aa128298","2018-12-17","build: update deps"],["6201c9b8","2018-12-17","Merge branch 'develop' into feature/vec-refactor"],["1d5278f8","2018-12-16","Publish"],["6d85c626","2018-12-16","fix(hdom): life cycle init / release handling"],["159ce8f6","2018-12-15","Publish"],["a3290b08","2018-12-15","build: update deps in make-* scripts"],["32847a91","2018-12-15","build(examples): update deps"],["aac8b6f6","2018-12-15","feat(hiccup-css): add animation(), add test & update readme"],["3b3e5032","2018-12-14","fix(pointfree-lang): update parser stubs (TS3.2.x)"],["0436c506","2018-12-14","build: update dev deps in all packages"],["dae12057","2018-12-14","minor(hiccup-carbon-icons): fix repo link"],["a7491117","2018-12-14","Publish"],["d734b570","2018-12-14","docs: update package list (main readme)"],["da441c18","2018-12-14","feat(hdom-components): merge button & button group attribs"],["6b04e160","2018-12-14","feat(hiccup-carbon-icons): add new package"],["b86737a6","2018-12-14","feat(examples): update xml-converter cli arg handling (var name)"],["87e6cb31","2018-12-13","docs: update main readme"],["388c14b4","2018-12-13","Merge branch 'develop' into feature/vec-refactor"],["e36a7ee0","2018-12-13","Publish"],["151e1422","2018-12-13","docs(hdom): update readme"],["fbbf5f90","2018-12-13","minor(examples): update source links"],["582c69ff","2018-12-13","Merge branch 'feature/hdom-skip' into develop"],["fea3d777","2018-12-13","fix(examples): minor update hdom-benchmark2"],["8155bf4b","2018-12-13","feat(examples): add proper DOM stats calculation, remove interlacing (obsolete)"],["2ff75609","2018-12-13","perf(examples): update __skip handling in hdom-benchmark2"],["92c11107","2018-12-13","feat(examples): improve axis tick resolution estimate in crypto-chart"],["c3b1528f","2018-12-13","feat(examples): add more UI & controls to hdom-benchmark2"],["a40c0f5e","2018-12-13","minor(hdom-components): minor updates fpsCounter()"],["10afa0d5","2018-12-13","docs(examples): update hdom-skip comments"],["db4d0a58","2018-12-13","Merge branch 'develop' into feature/hdom-skip"],["1b298f76","2018-12-13","fix(strings): update kebab()"],["8dcc73a1","2018-12-13","feat(strings): add slugify()"],["ba0d5e5c","2018-12-13","docs(examples): update readme list"],["73a298df","2018-12-13","refactor(hdom-components): emit int coords for sparkline"],["baa1dfef","2018-12-13","feat(examples): add hdom-benchmark2 example"],["ebd33808","2018-12-13","feat(hdom-components): add FPS counter & sparkline components, update deps"],["c1fecc4d","2018-12-12","refactor(hdom-mock): update text node handling, tests, add readme"],["1dc6e721","2018-12-12","minor(hdom): intern strings"],["046ab206","2018-12-12","minor(hiccup): reformat"],["d3500df5","2018-12-12","feat(hiccup): add __skip support, add test, update readme"],["5609d24a","2018-12-11","feat(hdom-mock): add hdom-mock package and implementation, add initial tests"],["fe9a3120","2018-12-11","refactor(hdom): update createTextElement() sig, update docstrings"],["6db31708","2018-12-11","fix(transducers-hdom): integrate recent hdom updates"],["43327c9e","2018-12-11","refactor(hdom-canvas): update HDOMImplementation, add __skip support, reformat"],["69b29ad7","2018-12-11","docs(hdom): add __skip attrib docstring"],["6f2e8ee0","2018-12-11","refactor(hdom): extend & simplify HDOMImplementation, update DEFAULT_IMPL"],["8dc755d9","2018-12-10","minor(examples): fix typo"],["6d387dbd","2018-12-10","feat(examples): add hdom-skip example"],["a4e67362","2018-12-10","feat(hdom): add initial __skip ctrl attrib handling in diffTree()"],["42eab0bc","2018-12-09","Merge branch 'develop' into feature/vec-refactor"],["97bf837e","2018-12-09","doc(vectors): update readme (add note about vectors3 & matrices)"],["ceb404c4","2018-12-09","doc(geom): update readme (add note about geom2)"],["6726925b","2018-12-09","docs: add links to WIP packages"],["71300e92","2018-12-09","docs: update main readme"],["20e0884b","2018-12-09","Publish"],["19b0a554","2018-12-09","perf(diff): further array caching/reuse"],["cfdc4d76","2018-12-08","Merge branch 'develop' into feature/vec-refactor"],["6e361d62","2018-12-08","Publish"],["a7e9def5","2018-12-08","refactor(hdom-canvas): update diffArray call site"],["c3f6f98c","2018-12-08","refactor(hdom): minor update diff call sites"],["64feacfb","2018-12-08","refactor(diff): flatten linear edit logs, update readme & arg order"],["b627f60c","2018-12-08","Merge branch 'feature/hdom-perf' into develop"],["8165005c","2018-12-08","refactor(equiv): minor update (intern string consts)"],["899941f0","2018-12-08","perf(hdom-canvas): update diffTree() to compute edit dist only"],["e9b067b7","2018-12-08","refactor(hdom): update diffTree & diffAttributes (@thi.ng/diff updates)"],["e8356cd2","2018-12-08","perf(diff): flatten linear edit logs, rewrite diffObject(), add DiffMode"],["d1ee6d9e","2018-12-08","perf(diff): reduce amount of temp/internal array allocs (diffArray)"],["6c6da825","2018-12-08","feat(diff): add fast paths for simple cases, add tests, refactor as arrow fns"],["34b515b2","2018-12-08","Merge branch 'develop' into feature/vec-refactor"],["9878c556","2018-12-03","feat(examples): add ClojureX talk-slides example (presentation tool)"],["b08b8e55","2018-12-01","Merge branch 'develop' into feature/vec-refactor"],["88efaa91","2018-12-01","Publish"],["ba8bad68","2018-12-01","minor(transducers): manual array destructuring in reduce/iterator"],["0e77d2c6","2018-12-01","refactor(transducers): implement range() as class w/ IReducible impl"],["57836390","2018-12-01","refactor(examples): update geom-tessel example to use new geom lib"],["0b351e12","2018-12-01","refactor(examples): move gradient defs (mandelbrot)"],["896855de","2018-12-01","feat(geom): re-add arcLength() impls, update imports"],["d4172ee3","2018-12-01","refactor(geom): update everything to use new vectors package"],["68806d93","2018-11-30","feat(vectors): add 2d/3d constants, update Vec2/3"],["87510f74","2018-11-30","feat(vectors): add addWeighted, eqDeltaArray, mixCubic, mixQuadratic"],["9f36a681","2018-11-30","docs(vectors): update readme"],["84ab9b25","2018-11-30","docs(vectors): update readme"],["b415c803","2018-11-30","refactor(vector-pools): update AttribPool internals"],["21d107d9","2018-11-30","docs(vector-pools): update/fix readme"],["27ea8c4a","2018-11-30","minor(vector-pools): fix typos in readme"],["3a51a42d","2018-11-30","docs(vector-pools): fix readme links"],["fd54d323","2018-11-30","feat(vector-pools): update readme, add examples"],["4fe2047e","2018-11-30","feat(vector-pools): add GLType alias, AttribPoolOpts, update pool impls"],["019c0af3","2018-11-30","feat(vector-pools): add AttribPool, refactor lists"],["25b97891","2018-11-30","refactor(vectors): add StridedVec, update IVector, AVec"],["d381ace2","2018-11-29","feat(api): add assert()"],["c31ce8ad","2018-11-28","refactor(vector-pools): various minor updates & fixes"],["48d5d572","2018-11-28","feat(vector-pools): add VecPool, VecArrayList & VecLinkedList"],["ea6bafaf","2018-11-28","feat(malloc): expose SIZEOF, add wrap()"],["6cb3b92b","2018-11-28","feat(vectors): add IVector interface impls for gvec()"],["63458c2c","2018-11-28","feat(vectors): add proxied gvec(), update mapBuffer*() docs"],["1fe9650d","2018-11-27","feat(vectors): add mapBuffer*() fns"],["c3d19141","2018-11-27","feat(vectors): add Vec2/3/4.iterator()"],["4a8295b7","2018-11-27","feature(vectors): update swizzle*() to support in-place updates"],["27f65f9e","2018-11-27","feat(matrices): add rotationAroundAxis33/44()"],["28f04ac1","2018-11-27","feat(vectors): add project(), signedArea2(), update orthoNormal3()"],["a373e55b","2018-11-27","feat(vectors): update `out` default behavior & codegens, bugfixes"],["d9e1b2ec","2018-11-27","feat(matrices): add viewport(), project/unproject(), update invert()"],["16d56a37","2018-11-27","feat(matrices): add trace()"],["28fd0f1f","2018-11-27","feat(vectors): add sum()"],["f1a5cf12","2018-11-27","feat(matrices): add M44 factories"],["97ac629d","2018-11-27","feat(vectors): add/update ops, add docstrings"],["35babfc6","2018-11-27","feat(matrices): add more matrix ops"],["f04e79e9","2018-11-26","feat(matrices): add more matrix ops, optimize & simplify"],["e19f6223","2018-11-26","feat(vectors): add faceForward, invSqrt & dotValues* fns"],["b697fd5d","2018-11-26","refactor(vectors): update codegens"],["8e6ddca9","2018-11-26","Merge branch 'develop' into feature/vec-refactor"],["bb625eb0","2018-11-26","Publish"],["18ffdb79","2018-11-26","fix(vectors): update VecOpSRoVV & dotS impls"],["f940672e","2018-11-26","feat(matrices): extract matrix ops to own package"],["52273cde","2018-11-25","feat(vectors): re-add (some) strided ops, update codegens, simplify"],["b4fffe85","2018-11-25","feat(vectors): add cosh, sinh, tanh, round, jitter, wrap"],["7448c6b6","2018-11-25","feat(vectors): re-add Vec2/3/4, clamp, reflect, refract, restructure package"],["18d44342","2018-11-25","refactor(vectors): update eqDelta & compileHOF()"],["bfbaaa9b","2018-11-25","feat(vectors2): update rand codegen tpls & compileHOF/GHOF"],["26d41996","2018-11-25","feat(vectors): add yet another version of vectors package"],["bb7e003d","2018-11-25","Merge pull request #62 from acarabott/feature/hdom-canvas-text-maxWidth"],["97965d89","2018-11-24","fix(hdom-canvas): actually pass maxWidth argument to text function"],["3f7fe2ad","2018-11-24","build(vectors): update deps"],["82186aa6","2018-11-24","Merge branch 'develop' into feature/vec-refactor"],["bb18d7a2","2018-11-24","Publish"],["d210668e","2018-11-24","docs: update package list"],["4aea85d2","2018-11-24","feat(random): re-import, extend & refactor random package (MBP2010)"],["65ee909f","2018-11-24","Merge branch 'develop' into feature/vec-refactor"],["364f27e3","2018-11-24","Publish"],["02ec7a7a","2018-11-24","docs(hdom-canvas): update readme"],["3872e379","2018-11-24","assets: add mandelbrot screenshot"],["738091d5","2018-11-24","docs(examples): update list (readme)"],["ca47a885","2018-11-24","docs(rstream): update readme"],["9ef64f16","2018-11-23","Merge branch 'feature/rs-tunnel' into develop"],["c6eec4ef","2018-11-23","fix(examples): add download fn (mandelbrot)"],["46c2882e","2018-11-23","fix(rstream): make maxWorkers optional"],["a47edd53","2018-11-23","feat(examples): update mandelbrot demo"],["67a5b104","2018-11-23","feat(rstream): add support multiple workers in Tunnel & TunnelOpts"],["f24e69ea","2018-11-23","refactor(rstream): move tunnel to /subs, add docs"],["a39b98c0","2018-11-23","Merge branch 'develop' into feature/rs-tunnel"],["4592fbb5","2018-11-23","Merge pull request #61 from acarabott/feature/hdom-canvas-text-maxWidth"],["4d1fa1c5","2018-11-23","minor(hdom-canvas): add maxWidth param to text draw call"],["2a4bd412","2018-11-22","feat(examples): add gradients, simplify"],["1b567440","2018-11-22","refactor(examples): minor updates mandelbrot demo"],["70ea4bd6","2018-11-21","feat(examples): add key controls & wheel zoom to mandelbrot demo"],["bab55c3c","2018-11-21","feat(rstream-gestures): add absZoom option (abs vs. relative)"],["9549067e","2018-11-21","fix: update build-examples script (multiple js outputs)"],["a68b9f9a","2018-11-21","refactor(examples): update mandelbrot demo"],["4cab7080","2018-11-21","fix: upload-examples script (if multiple sources)"],["80679d3c","2018-11-21","feat(examples): add mandelbrot worker/tunnel example"],["ef0fe42c","2018-11-21","feat(rstream): add StreamSync.getSources() / getSourceForID()"],["4750e796","2018-11-21","feat(rstream): add worker tunnel() sub"],["7007d633","2018-11-19","Merge branch 'develop' into feature/vec-refactor"],["e044a6a2","2018-11-19","Publish"],["143c47cd","2018-11-19","fix(math): fix #60, add range check for norm()"],["71c568c3","2018-11-13","Publish"],["9334f833","2018-11-13","feat(interceptors): update forwardSideFx(), refactor iceps as arrow fns"],["62b3c312","2018-11-13","Publish"],["1d085bff","2018-11-13","refactor(router): update Route, RouteMatch & minor optimizations"],["9b4a7b45","2018-11-12","Merge branch 'develop' into feature/vec-refactor"],["4bf18805","2018-11-12","Publish"],["4048849d","2018-11-12","Merge branch 'develop' of github.com:thi-ng/umbrella into develop"],["068255f6","2018-11-12","Merge pull request #59 from acarabott/feature/linecap"],["734a1428","2018-11-12","minor(hdom-canvas): fix default key for lineCap"],["74827068","2018-11-09","Merge branch 'develop' into feature/vec-refactor"],["a4bc35bd","2018-11-08","Publish"],["33e915b4","2018-11-08","feat(strings): add configurable units() HOF & presets"],["6eaa5f5f","2018-11-07","Publish"],["b0a4b65e","2018-11-07","refactor(examples): update hdom-dyn-context demo"],["52a47f0f","2018-11-07","refactor(transducers-hdom): update auto-deref ctx behavior"],["30161166","2018-11-07","feat(hdom): update auto-deref ctx behavior"],["749925f0","2018-11-07","feat(hiccup): update derefContext() to only apply to selected keys"],["5a3b860e","2018-11-07","feat(vectors): update VecPool & NDArray1"],["34930b31","2018-11-07","refactor(malloc): update package structure, fix stats()"],["c3751198","2018-11-06","Merge branch 'develop' into feature/vec-refactor"],["d2797516","2018-11-06","feat(examples): add hdom-dyn-context demo"],["79a6a365","2018-11-06","Publish"],["e91dbbc1","2018-11-06","feat(transducers-hdom): add support for dynamic user context vals"],["6a3a8739","2018-11-06","feat(hdom): add support for dynamic user context vals"],["a9478732","2018-11-06","feat(hiccup): add support for dynamic user context values"],["dc2c487d","2018-11-06","refactor(geom): update implementations() call sites"],["a24715e7","2018-11-06","refactor(defmulti): merge relations() w/ implementations(), update readme"],["3713c02a","2018-11-06","refactor(hiccup-svg): update convertTransforms(), update formatting"],["9f03889b","2018-11-06","minor(geom): add/update edges()/vertices() arg types"],["9a18620d","2018-11-06","minor(hiccup-svg): update path conversion/creation"],["c0134fda","2018-11-06","minor(geom): update imports"],["94a40cc5","2018-11-06","fix(geom): Path2 transform() & translate(), add asCubic() impl"],["df9b9f9f","2018-11-06","fix(geom): asCubic() for arc"],["9d60ad09","2018-11-06","perf(geom): emit hline/vline segments if possible"],["c4db51aa","2018-11-06","feat(vectors): add IMatrix & impls for Mat23/33/44, add/update accessors"],["4066c80f","2018-11-06","feat(defmulti): add relations()"],["35bd0679","2018-11-06","feat(geom): add new / update all types / ops, add tests"],["c41d12c0","2018-11-03","feat(vectors): re-add quaternion, various refactorings"],["358169fd","2018-11-01","feat(geom): add/update shape types"],["e197f908","2018-11-01","feat(hiccup-svg): add toHiccup() support in convertTree()"],["30f61da5","2018-11-01","feat(vectors): add eqDeltaArray()"],["0043fb5d","2018-11-01","feat(math): add cossin(), add opt scale arg for sincos()"],["184d55da","2018-10-31","build(vectors): update deps"],["954e0c28","2018-10-31","feat(vectors): add generic impls for common vec ops"],["816c9c01","2018-10-31","feat(strings): add floatFixedWidth(), update float()"],["766fdee2","2018-10-31","feat(vectors): re-add vec4, mat23/33/44, nd arrays"],["e3727ce9","2018-10-27","refactor(malloc): add/extract types to api.ts"],["228e08a1","2018-10-27","Merge branch 'develop' into feature/vec-refactor"],["46bf1a73","2018-10-27","Publish"],["c5b0f2f5","2018-10-27","feat(malloc): add MemPoolOpts, fix top block alloc, update tests, readme"],["cfd88555","2018-10-27","feat(geom): re-add & update more types / shape ops"],["a070016c","2018-10-27","feat(vectors): add VecPool skeleton, add more types, export codegen fns"],["51c4a49f","2018-10-26","feat(vectors): add/update types, multi-methods, minor optimizations"],["125c784f","2018-10-26","feat(defmulti): add versions w/ 1 optional typed arg, add .impls()"],["252f66db","2018-10-25","feat(geom): re-add more classes & methods, add svg conversions"],["505ca49c","2018-10-25","feat(vectors): add vec2n/vec3n(), copy() methods, update deps"],["fde2db21","2018-10-25","feat(defmulti): add callable() & implementations(), update readme"],["fe14b791","2018-10-24","Merge branch 'develop' into feature/vec-refactor"],["accda790","2018-10-24","fix(rstream-gestures): Publish (0.5.16 had publish error)"],["673bf50f","2018-10-24","Publish"],["a8c38987","2018-10-24","feat(defmulti): add support for dispatch value relationships / hierarchy"],["7b740ab8","2018-10-24","docs(malloc): update readme"],["4f156b04","2018-10-24","Merge branch 'develop' of github.com:thi-ng/umbrella into develop"],["724fe28f","2018-10-24","feat: add temp geom2 & vectors2 packages (defmulti API)"],["f271b78b","2018-10-24","Merge pull request #57 from acarabott/feature/rstream-gesture-local"],["f1f6af4d","2018-10-23","fix(rstream-gestures): fix incorrect local position when scrolled"],["5bb51391","2018-10-21","Publish"],["abba2d62","2018-10-21","Merge branch 'feature/geom-accel' into develop"],["be7acc33","2018-10-21","refactor(examples): update geom-knn demo"],["b47e6413","2018-10-21","feat(geom-accel): add KV support, update select/selectKeys()"],["c387887d","2018-10-21","docs: update package list"],["51071ac7","2018-10-21","Merge branch 'develop' into feature/geom-accel"],["6f8a8963","2018-10-21","docs: update package list"],["b7457cef","2018-10-21","Merge branch 'feature/malloc' into develop"],["4b72cda6","2018-10-21","feat(malloc): add freeAll(), release(), tests & benchmarks, update docs"],["40f07876","2018-10-21","docs(malloc): add docs to readme"],["787102a4","2018-10-21","fix(malloc): add size check, update readme"],["89f2bc28","2018-10-21","feat(malloc): re-add block compaction & splitting, update readme"],["2cf20c90","2018-10-21","feat(malloc): initial import @thi.ng/malloc package"],["ce131d48","2018-10-19","feat(geom): add IToCubic, add/update impls"],["4a47daa4","2018-10-19","feat(math): migrate mixCubic()/mixQuadratic() from geom package"],["85426d98","2018-10-19","fix(hiccup-svg): fix arc segment handling"],["f891c419","2018-10-19","feat(math): add sincos() & roundEps()"],["2469992e","2018-10-18","build(geom-accel): update deps (add morton)"],["ac2f3e83","2018-10-18","feat(morton): update/add muxScaled2/3 versions, add error handling"],["971dfb45","2018-10-18","Merge pull request #55 from acarabott/feature/readme-arc"],["b9cfb56f","2018-10-18","minor(hdom-canvas): add arc, hline, vline to readme"],["1063fea9","2018-10-18","feat(heaps): add pushPopAll()"],["f0deebb9","2018-10-18","minor(examples): update geom-knn"],["b31b4807","2018-10-18","refactor(hdom-canvas): update points() to accept iterables"],["0c76c024","2018-10-18","refactor(geom-accel): move iterator into KdNode"],["aa01a2de","2018-10-18","build: update .gitignore"],["f82c8b16","2018-10-18","feat(examples): add geom-knn example"],["e14ac8b1","2018-10-18","feat(geom-accel): re-import geom-accel skeleton (MBP2010)"],["f7bbfde4","2018-10-18","refactor(heaps): public fields"],["0cf708f4","2018-10-18","feat(bench): add timedResult() / benchResult()"],["6e0972e9","2018-10-17","build: further updates dev deps in all packages"],["f01551ac","2018-10-17","build: update make-module/example scripts"],["e6cef6b3","2018-10-17","build(examples): update dev deps"],["1ebae947","2018-10-17","build: update dev deps (TS3.1, parcel etc.)"],["348cdd4e","2018-10-17","docs(examples): update table"],["3569d242","2018-10-17","feat(examples): add geom-tessel example"],["d4d44b32","2018-10-17","fix(examples): update @thi.ng/math occurrences"],["cf2970aa","2018-10-17","minor: update readme"],["6e563377","2018-10-17","Publish"],["39d414f5","2018-10-17","docs: update package list in main readme"],["940fc312","2018-10-17","build(dsp): update package"],["456a2ee3","2018-10-17","build(math): update package desc"],["10cf5646","2018-10-17","build: update gitignore & yarn.lock"],["83ef61a1","2018-10-17","docs(geom): update readme, add/move assets"],["ffea836f","2018-10-17","refactor(geom): update deps & @thi.ng/math imports"],["0967929f","2018-10-17","feat(vectors): replace math.ts w/ imports from @thi.ng/maths package"],["f257330e","2018-10-16","refactor(transducers): add ensureArrayLike(), update permutations()"],["1bd9fd43","2018-10-16","docs(heaps): update readme"],["501536b9","2018-10-16","feat(morton): import & update @thi.ng/morton package (MBP2010)"],["6851f2c4","2018-10-16","feat(compose): add partial(), update readme"],["405cf51a","2018-10-16","feat(dlogic): add @thi.ng/dlogic package"],["458d4a07","2018-10-16","feat(binary): add @thi.ng/binary package"],["889730f8","2018-10-16","feat(dsp): add oscillators as @thi.ng/dsp package (from synstack / VEX)"],["4af1fba3","2018-10-16","feat(math): extract maths fns from @thi.ng/vectors as new package"],["e085136b","2018-10-13","Merge branch 'develop' into feature/geom"],["2e9f0486","2018-10-13","refactor(geom): update arg handling, update readme"],["328a9b03","2018-10-13","Merge pull request #54 from acarabott/feature/transducer-links"],["08372abd","2018-10-13","minor(transducers): fix links to reducers in README"],["2546039a","2018-10-13","Merge pull request #53 from acarabott/feature/baseline"],["6a9747bf","2018-10-13","minor(hdom-canvas): baseLine -> baseline"],["fa87f1e9","2018-10-11","feat(geom): add/update tessellate() impls"],["555fc515","2018-10-10","feat(geom): add/update factory fns, arg handling, tessel, poly area"],["3a20ef34","2018-10-10","feat(geom): add/update various shape impls & ops"],["296e1e07","2018-10-08","refactor: update Infinity consts in various packages"],["d655ec29","2018-10-08","feat(geom): re-import & refactor partial port of thi.ng/geom (clojure)"],["ff435be6","2018-10-07","minor(hdom-canvas): rename arc() => circularArc()"],["b2f9af93","2018-10-07","refactor(vectors): replace static Vec2/3/4 methods w/ IVector impls"],["221fb7f6","2018-10-06","feat(vectors): add collate & eqDelta fns, update ctors"],["6094738e","2018-10-03","feat(defmulti): add varargs support"],["2657df66","2018-09-30","feat(geom): add/update interfaces & impls"],["775cc8a7","2018-09-30","fix(hdom-components): add Canvas2DContextAttributes (removed in TS3.1)"],["1ef23611","2018-09-30","fix(transducers): minor TS3.1 fixes"],["515e5ba5","2018-09-30","feat(transducers): update wrap*() fns to accept iterables"],["aa6b1206","2018-09-30","feat(geom): re-add Arc2, update Circle2, update helper fns"],["3b1bf647","2018-09-30","feat(geom): add ICollate & ICopy impls, re-add/update convexHull2"],["2ba99311","2018-09-30","build(geom): update dev deps & yarn.lock"],["473ec800","2018-09-30","feat(vectors): add axis consts, add/update ops"],["6a0f8aa9","2018-09-29","feat(vectors): add comparators & ICompare impls for vec2/3/4"],["9fb2091a","2018-09-29","refactor(geom): add interfaces, split out common.ts into /func folder"],["34312d8f","2018-09-29","feat(vectors): add IMinMax interface"],["9c27c77f","2018-09-29","feat(geom): update all shape types, add interfaces & ops, update tests"],["5c44ad98","2018-09-29","feat(vectors): add operation specific interfaces, rename Vec3.toPolar()"],["22f6aab4","2018-09-29","Merge branch 'develop' into feature/geom"],["4f15ea80","2018-09-28","Publish"],["8399ec2f","2018-09-28","docs(vectors): fix docstrings, hide CommonOpts type alias"],["f2114d52","2018-09-28","Merge branch 'feature/vec-codegen' into develop"],["247dec02","2018-09-28","refactor(vectors): generate more ops, move declareIndices() (#51)"],["719b27ac","2018-09-28","refactor(vectors): rewrite codegen, add more types & gen ops (#51)"],["9bee7f85","2018-09-28","refactor(vectors): use codegen for unary vec2/3/4 ops"],["b5ed2545","2018-09-28","feat(vectors): add vector ops codegen, update basic vec2/3/4 ops (#51)"],["d964865e","2018-09-28","docs(hdom): add xml-converter example link & screenshot"],["6db26c2b","2018-09-28","feat(examples): add copy-to-clipboard, extract UI config & components"],["5cfbf70d","2018-09-27","feat(examples): update css"],["71cbd19a","2018-09-27","fix(examples): fix attrib format"],["95ba4f6d","2018-09-27","feat(examples): extend xml-converter, add CLI version, update docs"],["2f014471","2018-09-26","Publish"],["4b78c8a3","2018-09-26","minor(examples): xml-converter"],["96367021","2018-09-26","docs(hdom): add/update docs (fix #47)"],["0a49d0a5","2018-09-25","fix: update .gitignore (fixes #46, fixes #50)"],["ad1bac8f","2018-09-25","refactor(examples): refactor hiccup formatter, minor fixes"],["823d828d","2018-09-25","fix(transducers): fix matchLast(), fix & update return match*() types"],["61af7e51","2018-09-25","Merge branch 'master' of github.com:thi-ng/umbrella"],["b8a93ea8","2018-09-25","fix(examples): add null check & parseAttrib() in transformCSS()"],["3abfc42c","2018-09-25","Merge pull request #49 from nkint/patch-1"],["a169d2df","2018-09-25","fix(examples): add missing index.html (#46)"],["04872dbe","2018-09-25","Publish"],["79cf49e1","2018-09-25","feat(examples): add value coercions & re-formatter (xml-converter)"],["0cce0488","2018-09-25","feat(strings): add splice(), refactor repeat(), add tests"],["8b8bf885","2018-09-25","typo"],["0cddc7d6","2018-09-25","feat(example): update xml-converter (add boolean attrib support)"],["5119b67e","2018-09-25","feat(sax): add opt support for boolean attribs, add tests"],["5a893d5b","2018-09-25","docs(examples): update table"],["436edc0f","2018-09-25","Publish"],["50fa6492","2018-09-25","fix(hdom): add DEFAULT_IMPL to re-exports (#47)"],["febe3c36","2018-09-25","Publish"],["cb263002","2018-09-25","feat(examples): add xml-converter example"],["8cbfb97e","2018-09-24","fix(strings): rename number parsers"],["888ea747","2018-09-24","fix(examples): rename `prepare` script aliases"],["c0a8926b","2018-09-24","fix(examples): rename `prepare` script alias, add commits.json (#46)"],["cf05efbf","2018-09-24","Publish"],["665564c7","2018-09-24","feat(sax): update parse() to return iterator if input given (optional)"],["fc6a4d32","2018-09-24","perf(rstream-log): `Level` => const enum"],["8e4fc902","2018-09-24","perf(rstream-gestures): `GestureType` => const enum"],["7ac83c6f","2018-09-24","perf(rstream): `State` => const enum"],["a7b9a427","2018-09-24","perf(pointfree-lang): `NodeType` => const enum"],["c3e8d689","2018-09-24","perf(csp): `State` => const enum"],["39f7fb0c","2018-09-24","build: add `preserveConstEnums` to global tsconfig"],["657a3088","2018-09-24","docs: fix twitter badges, update make-module script"],["89ab34a3","2018-09-24","Merge branch 'master' of github.com:thi-ng/umbrella"],["94f64698","2018-09-24","docs: update all readme files"],["56bfecbc","2018-09-23","Merge pull request #45 from rgtk/patch-1"],["b2a24f8c","2018-09-23","Fix links to @thi.ng/transducers"],["edf68556","2018-09-23","Publish"],["7cd08281","2018-09-23","docs(hdom): update readme"],["4a2f79b8","2018-09-23","refactor(hdom): minor refactoring, fix/update docs"],["1d8eeb4d","2018-09-23","feat(hiccup): emmet class & class attrib merging in normalize()"],["ff5e5550","2018-09-23","docs(rstream): re-org readme"],["ed3f10b5","2018-09-23","docs(hdom): fix/update changelog"],["bb224a75","2018-09-22","docs(examples): update readme"],["02548fd2","2018-09-22","Publish"],["70de921a","2018-09-22","build: add npm registry for publish script"],["ee0c2b96","2018-09-22","build: update yarn.lock"],["897f2b36","2018-09-22","docs: update branch links (all back to master now)"],["39d35d93","2018-09-22","chore(examples): add missing .gitignore"],["4bc64394","2018-09-22","chore: add HMR handling to make-example script"],["387376ed","2018-09-22","docs(hdom): major update readme"],["86bdd06d","2018-09-22","feat(examples): add svg-barchart demo"],["5ef9cf0e","2018-09-22","feat(hdom): add renderOnce()"],["06dccee4","2018-09-21","docs(hdom): update readme"],["8441afcb","2018-09-21","assets: add new diagram sources (hdom & interceptors)"],["bb5569f7","2018-09-21","build: update yarn.lock"],["0dcc1b86","2018-09-21","refactor(rstream): remove Stream.NEXT_ID, replace w/ Subscription field"],["8aa66055","2018-09-21","build: update example generator & build scripts"],["efcbe2de","2018-09-21","minor(examples): fix sort icon in triple-query"],["7c4dc3f0","2018-09-21","fix(examples): update commit-table-ssr to work w/ parceljs, update docs"],["22732421","2018-09-21","build(examples): update yarn build commands"],["1ee6c43a","2018-09-21","build: update typedoc dep"],["022101f3","2018-09-21","fix(transducers): add missing type annotation"],["78b1f4ac","2018-09-21","fix(transducers-hdom): add missing type annotation"],["3cd03bd7","2018-09-20","assets(examples): add gesture-analysis screenshot"],["288b68d9","2018-09-20","feat(rstream): add trigger() generics"],["75889156","2018-09-20","docs(rstream): update readme & doc strings"],["d5ec6fd8","2018-09-20","docs(rstream): add docs, update readme"],["dbdb72ec","2018-09-20","docs(rstream): add diagrams"],["bbb87f4a","2018-09-20","docs(hdom): update readme"],["1ac1110b","2018-09-20","feat(examples): rename interceptor-basics, add more simpler version"],["6d6fae33","2018-09-20","refactor(hdom): allow HDOMOpts extensions"],["74816eb0","2018-09-20","docs(hdom): update readme"],["46d851b6","2018-09-19","feat(examples): add hdom-canvas-draw demo"],["09a821b2","2018-09-19","refactor(hdom-canvas): switch canvas back to lifecycle object form"],["e390a54d","2018-09-19","feat(api): add `IToHiccup` interface"],["929c6f42","2018-09-19","feat(rstream): add trigger() utility stream"],["e82e3122","2018-09-19","feat(examples): add SVG export comment to hdom-canvas-shapes"],["de17db8f","2018-09-19","perf(hdom): minor updates"],["53a1d2c0","2018-09-19","refactor(hdom-canvas): add _serialize control attrib to root group"],["363c241c","2018-09-19","feat(hiccup): add control attrib handling, add comment support"],["bca4cc4b","2018-09-17","Publish"],["b488d2b3","2018-09-17","feat(transducers): add randomID()"],["f001314d","2018-09-17","fix(transducers): str() initial result handling"],["eb674268","2018-09-17","fix(transducers): update arg types for choices() & weightedRandom()"],["bd228110","2018-09-17","Publish"],["3e647a18","2018-09-17","fix(atom): add .value getter to IView"],["76309858","2018-09-17","minor(examples): update clock example"],["38125686","2018-09-17","docs: add hdom-canvas to package table"],["60f00590","2018-09-17","build(examples): fix deps, update readmes"],["7bbd1bcf","2018-09-17","docs(hdom-canvas): update links"],["95c462a5","2018-09-17","Publish"],["decc26b2","2018-09-17","build: update deps"],["b9738cc4","2018-09-17","v1.2.0"],["b43fcb39","2018-09-17","v2.0.0-alpha"],["f424fa92","2018-09-17","Publish"],["d4487066","2018-09-17","v1.1.0"],["3835cf43","2018-09-17","v2.2.0"],["ff919070","2018-09-17","v0.4.0"],["339342b3","2018-09-17","v0.1.9"],["7481df23","2018-09-17","v1.5.9"],["4297d649","2018-09-17","Merge branch 'feature/hdom-canvas' into develop"],["4fe6a742","2018-09-17","Merge branch 'feature/hdom-v5' into develop"],["eb4e6891","2018-09-17","refactor(examples): minor updates"],["ae4b6212","2018-09-16","perf(hdom-canvas): inline type checks, update deps & readme"],["a52f83c4","2018-09-16","fix(hdom-canvas): update __normalize handling, rename fns"],["382c45ca","2018-09-16","perf(hdom): update diffTree(), inline node type checks"],["224a537a","2018-09-16","perf(checks): inline checks in isNotStringAndIterable()"],["b93dc745","2018-09-16","feat(examples): add static canvas test"],["74547aa6","2018-09-16","feat(hdom-canvas): update canvas component & diffTree impl, update docs"],["3b628326","2018-09-16","refactor(hiccup-svg): update points(), minor fixes, add docs"],["ebfcf159","2018-09-16","refactor(hdom): export diff related fns"],["bb7e08a8","2018-09-16","refactor(examples): update canvas demo"],["5de02559","2018-09-16","feat(hdom-canvas): add HDPI auto-adjustment, update docs"],["b219d67a","2018-09-15","Merge branch 'feature/hdom-v5' into feature/hdom-canvas"],["d9af2e5f","2018-09-15","refactor(hdom): update custom equiv()"],["6c33901f","2018-09-15","fix(hdom): delegate diffTree() to branch impl"],["3de83bb7","2018-09-15","refactor(hiccup): add `button` to NO_SPANS elements"],["adaaa7a0","2018-09-15","feat(hdom-canvas): add warning msg for hydrateTree() impl"],["ae1371d8","2018-09-15","Merge branch 'feature/hdom-v5' into feature/hdom-canvas"],["05920636","2018-09-15","fix(hdom): exclude hdom control attribs in setAttrib()"],["4e230164","2018-09-15","feat(vectors): add random vector ops for Vec2/3/4 & GVec"],["8e796480","2018-09-15","Merge branch 'develop' into feature/geom"],["6a76bfd1","2018-09-15","Merge branch 'develop' into feature/hdom-canvas"],["442f14f4","2018-09-15","Merge branch 'develop' into feature/hdom-v5"],["7963e256","2018-09-15","feat(strings): add U24 hex preset"],["be25c48e","2018-09-15","feat(examples): add circles test"],["56b919d8","2018-09-15","Merge branch 'feature/hdom-canvas' into feature/geom"],["2bb41d45","2018-09-14","docs(examples): update crypto readme (replace diagram)"],["1d463ea6","2018-09-14","build(examples): update deps (hdom-canvas-shapes)"],["141e7c86","2018-09-14","docs(examples): add dflow diagram, update readme"],["42c1c403","2018-09-14","fix(examples): add missing file download.ts"],["7778c404","2018-09-14","Merge branch 'feature/hdom-canvas' into feature/geom"],["6e20e3e2","2018-09-14","feat(hiccup): add `.toHiccup()` interface support"],["8ecdd139","2018-09-14","feat(hdom-canvas): add `.toHiccup()` interface support"],["54ba0ce1","2018-09-14","feat(hdom): add `.toHiccup()` interface support"],["177855c3","2018-09-14","feat(examples): add geom circle test"],["c03259cb","2018-09-14","feat(geom): import (updated) old thi.ng/geom package (minus vectors)"],["f25db9a2","2018-09-14","docs(hdom-canvas): update readme"],["b8f79568","2018-09-14","feat(examples): add SVG conversion & export to hdom-canvas-shapes"],["3acb0dd8","2018-09-14","fix(hiccup-svg): update points() to use \"xlink:href\" (fix for safari)"],["7a6cf519","2018-09-14","feat(hiccup-svg): re-parse alpha colors in gradients (fix for safari)"],["d4122694","2018-09-14","feat(hdom-canvas): update points() to use circle or rect shapes"],["214cb62d","2018-09-14","feat(hiccup-svg): add custom shape support for points(), use instancing"],["cf4add3e","2018-09-14","refactor(hiccup-svg): update attrib conversion"],["a00761ba","2018-09-14","refactor(examples): update svg `text` arg order (hiccup-svg update)"],["f45f4ff0","2018-09-14","refactor(examples): update gradient def in svg-waveform"],["c20b24a7","2018-09-14","refactor(hdom-canvas): swap `img` args to be more consistent w/ others"],["4cb8cf72","2018-09-14","feat(hiccup-svg): add new elements, update convertTree(), refactor"],["0c4dddce","2018-09-14","feat(hiccup-svg): add convertTree() interop helpers (#44)"],["fb9c704d","2018-09-14","docs(hdom-canvas): update readme"],["de61c215","2018-09-14","feat(hdom-canvas): add `defs` node/group type"],["75002fad","2018-09-13","build: update upload-examples"],["17d13866","2018-09-13","feat(examples): use location.hash to select tests, update assets"],["c8d7a7c9","2018-09-13","feat(examples): update canvas image test"],["f7af43c1","2018-09-13","Merge branch 'feature/hdom-v5' into feature/hdom-canvas"],["c2859105","2018-09-13","perf(checks): update isPlainObject()"],["bde18d50","2018-09-13","refactor(hdom): use custom equiv also for diffAttributes()"],["481d9d34","2018-09-13","perf(diff): update diffObject() & add IOC support for custom equiv fn"],["a9e173e7","2018-09-13","test(hdom): update tests"],["96beaf38","2018-09-13","refactor(hdom): trial run of custom equiv() impl for diffTree()"],["ee55accd","2018-09-13","perf(equiv): inline & refactor type checks, add IOC support for helpers"],["360f15af","2018-09-13","feat(examples): add canvas image test"],["6b62067b","2018-09-13","docs(hdom-canvas): update readme"],["99020cad","2018-09-13","docs(hdom-canvas): update readme"],["5aa9d46a","2018-09-13","refactor(hdom-canvas): update attrib aliases"],["b6c1e42e","2018-09-13","docs(examples): update hdom-canvas-* build instructions"],["2b16d24d","2018-09-13","docs(examples): update readme"],["2fa4c56c","2018-09-13","refactor(examples): update hdom-canvas-shapes"],["6496e47b","2018-09-13","feat(hdom-canvas): add new shape types, add canvas attribs, refactor"],["5a3c3147","2018-09-13","refactor(examples): minor updates shape test"],["98735395","2018-09-13","docs(examples): update example table (readme)"],["7aae4333","2018-09-13","feat(examples): add hdom-canvas-shapes"],["81fe154d","2018-09-13","feat(hdom-canvas): fix #43, add gradient support"],["d5e01ff8","2018-09-12","Merge branch 'feature/hdom-v5' into feature/hdom-canvas"],["e4f780c7","2018-09-12","fix(hdom): minor fix (hydrateDOM)"],["81a39ba7","2018-09-12","refactor(hdom-canvas): update to reflect hdom api changes"],["700352de","2018-09-12","Merge branch 'feature/hdom-v5' into feature/hdom-canvas"],["832e419c","2018-09-12","fix(transducers-hdom): update to work w/ new @thi.ng/hdom v5 API"],["1ac245f8","2018-09-12","feat(hdom): reorg & extend HDOMImplementation"],["66c007de","2018-09-12","feat(checks): add isNotStringAndIterable()"],["764373a7","2018-09-12","feat(hdom-canvas): add rounded rect option (as path)"],["2a973fd1","2018-09-12","Merge branch 'feature/hdom-v5' into feature/hdom-canvas"],["1cfad519","2018-09-12","refactor(hdom-canvas): update canvas component, add docs"],["2e3fb660","2018-09-12","perf(hdom): add opt `__release` attrib to disable releaseDeep()"],["cfadbe3e","2018-09-12","refactor(examples): update clock main group attribs"],["1d24a166","2018-09-12","feat(hdom-canvas): add canvas-specific normalizeTree() impl"],["59bb19c2","2018-09-11","feat(hdom): update normalizeTree, add to HDOMImplementation"],["82cd9389","2018-09-11","feat(hdom-canvas): add path shape type, embedded fn & iterator handling"],["c69454b0","2018-09-11","refactor(examples): update attribs & scengraph in hdom-canvas-clock"],["ccbf53cf","2018-09-11","feat(hdom-canvas): implement drawing state inheritance & restoration"],["17060403","2018-09-11","build(examples): enable source maps in all examples, update make-example"],["d93efa86","2018-09-11","refactor(examples): minor updates hdom-canvas-clock, enable source map"],["d3acb707","2018-09-11","feat(hdom-canvas): add more shapes/prims, update transform handling"],["b4a37dd3","2018-09-10","Merge branch 'develop' into feature/hdom-canvas"],["685fd0bd","2018-09-10","Merge branch 'develop' into feature/hdom-v5"],["bdb57f83","2018-09-10","Publish"],["f4cc0dda","2018-09-10","refactor(vectors): Vec3/4 toString() impls"],["ae261ab5","2018-09-10","fix(vectors): GVec.copy() / get()"],["07d1ccfc","2018-09-10","fix(vectors): Mat23/33/44 toString() impls"],["3dd00725","2018-09-10","feat(vectors): add matrix index & property accessors"],["54e59a08","2018-09-10","fix(examples): re-enable HMR logic"],["dc618983","2018-09-10","refactor(hdom-canvas): rename types due to hdom update"],["5546c0d2","2018-09-10","Merge branch 'feature/hdom-v5' into feature/hdom-canvas"],["cc73c769","2018-09-10","refactor(hdom): rename HDOMOps => HDOMImplementation, add docs"],["ada7d34e","2018-09-10","build: add max-age cache header (upload-examples)"],["2fdcf104","2018-09-10","refactor(examples): update clock demo"],["689e775e","2018-09-10","feat(examples): add hdom-canvas-clock demo"],["f41014eb","2018-09-10","feat(hdom-canvas): rename package, add text support, refactor"],["60f12c5d","2018-09-10","feat(hiccup-canvas): add canvas comp, createTree impl, update deps"],["46c5cd2c","2018-09-10","Merge branch 'feature/hdom-v5' into feature/hiccup-canvas"],["525d90d5","2018-09-10","feat(hdom): generalize diffElement() (#4)"],["5cb4350f","2018-09-09","feat(hdom): add optional support for blocking normalize & diff"],["c47711f9","2018-09-09","refactor(hiccup-canvas): add notes"],["84a6f441","2018-09-09","Merge branch 'develop' into feature/hiccup-canvas"],["146868d1","2018-09-09","build: update make-module script"],["890eb97c","2018-09-09","docs(compose): add missing package desc"],["266d02b0","2018-09-09","docs: update badges in all readme files"],["eb284f01","2018-09-09","feat(hiccup-canvas): add hiccup-canvas package"],["9bde777a","2018-09-08","fix(examples): add missing html file"],["d003cab6","2018-09-08","docs(examples): update readme"],["6051439d","2018-09-08","feat(examples): add gesture-analysis example"],["bfd3c2f2","2018-09-08","Publish"],["06f61cf4","2018-09-08","fix: missing comma in make-example script"],["8856a18f","2018-09-08","test(rstream): add merge-only sync tests"],["1f22867f","2018-09-08","feat(transducers): rename window() => slidingWindow(), update readme"],["2916432d","2018-09-08","docs(transducers): update partitionSync() docs"],["162aa2d5","2018-09-08","feat(rstream): add merge-only mode for StreamSync, update docs"],["d8fdc018","2018-09-08","feat(transducers): update partitionSync() xform & PartitionSyncOpts"],["2f0f3d48","2018-09-08","feat(transducers): add window() xform"],["014bd980","2018-09-07","fix: update upload-examples script"],["b4c2e1c0","2018-09-07","build: update `yarn examples` command, update readme"],["81610117","2018-09-07","build: add build-examples, update make-example script"],["316ad6ae","2018-09-07","build(examples): update all examples to use parcel instead of webpack"],["b1ef187d","2018-09-07","build: update lerna, replace webpack deps w/ parcel"],["42d142dc","2018-09-06","Publish"],["d54dffb0","2018-09-06","docs(examples): update table"],["cf516aa5","2018-09-06","Merge branch 'feature/defonce' into develop"],["83fa7ade","2018-09-06","feat(examples): add hmr-basics demo (fixes #40)"],["61bed88b","2018-09-06","feat(memoize): add defonce()"],["e0f83c4a","2018-09-05","Publish"],["2eec7006","2018-09-05","feat(vectors): add/update transformVectors*(), update types"],["2d5d0c86","2018-09-05","refactor(vectors): rename immutable vec ops, update readme table"],["f7df4cba","2018-09-05","chore: update .gitignore (add gtm)"],["c4631533","2018-09-05","test(vectors): add benchmarks"],["2583380b","2018-09-04","docs(vectors): update readme"],["a3c04076","2018-09-04","feat(vectors): add immutable vec2/3/4 ops"],["be6ae489","2018-09-03","Publish"],["9510f01a","2018-09-03","feat(vectors): add new vector ops, update readme"],["a5b3f84c","2018-09-03","docs(vectors): add/update doc strings"],["7001b7a8","2018-09-03","refactor(vectors): update matrix factories"],["f0ccd0c5","2018-09-03","feat(vectors): add mixBilinear1/2/3/4"],["ad131513","2018-09-03","fix(vectors): update GVec method args (readonly)"],["25ea00ca","2018-09-03","fix(vectors): add opt normalize for angleBetween2/3"],["c0fbb4ed","2018-09-03","fix(vectors): add missing arg types"],["34ffe9d7","2018-09-03","docs(hdom): update/fix docs & readme"],["4a16bd56","2018-09-03","refactor(transducers): update normRange()"],["16aa0c46","2018-09-03","feat(vectors): add Vec*.intoBuffer() impls"],["ba386e52","2018-09-01","Publish"],["6acb05bb","2018-09-01","build(examples): fix deps"],["1795f187","2018-09-01","refactor(vectors): update Vec2/3/4 index signatures"],["fc7c670b","2018-09-01","Publish"],["e5662a0a","2018-09-01","docs(paths): update readme, add tests"],["a7104535","2018-09-01","fix(resolve-map): deep resolve of yet unknown path values"],["f0183530","2018-09-01","feat(paths): add exists() path checker & tests"],["e66a4929","2018-09-01","fix(hdom): fix local import"],["71ee43ca","2018-09-01","Publish"],["e7016b42","2018-09-01","docs(hdom): fix screenshot link"],["a8282925","2018-09-01","Publish"],["d2b4fafb","2018-09-01","fix(vectors): add missing deps"],["208e57d2","2018-09-01","docs: update various readme's, add/move screenshots"],["7fa3852a","2018-08-31","Publish"],["1060b2a3","2018-08-31","docs(hdom): update readme, add hydrate docs"],["473aadc1","2018-08-31","refactor(examples): update crypto-chart to use `updateDOM` xform"],["1a6741a1","2018-08-31","refactor(examples): update `updateDOM()` transducer call sites"],["0f396948","2018-08-31","feat(transducers-hdom): add DOM hydration support, rename (#39)"],["5e74a9c0","2018-08-31","feat(hdom): update HDOMOpts & start()"],["1e8b4efa","2018-08-31","fix(hiccup): serialize() args"],["52417e37","2018-08-31","fix(examples): minor update hydrate demo"],["e7607f53","2018-08-31","docs(examples): update readmes"],["0d34bb7d","2018-08-31","feat(examples): add hydrate-basics example"],["26bc7e74","2018-08-31","refactor(examples): update hdom start() call sites to new API"],["d55d9303","2018-08-31","refactor(hdom): minor update HDOMOpts & start()"],["9f8010db","2018-08-31","feat(hdom): add DOM hydration support (SSR), update start() (#39)"],["1b97a25a","2018-08-31","fix(hiccup): disable spans for certain element types"],["1b0deb22","2018-08-31","feat(hiccup): add optional support for spans & auto keying (#39)"],["b8d944eb","2018-08-31","refactor(vectors): update matrices & types"],["0a806011","2018-08-30","refactor(vectors): update mulV*() arg order"],["80f291b5","2018-08-30","Publish"],["461adeef","2018-08-30","docs(resolve-map): fix #35, update docs & tests"],["0673f0f4","2018-08-30","fix(examples): fix #38, add missing dep"],["75d6409e","2018-08-30","build: update yarn.lock"],["d1b77cfe","2018-08-30","docs(vectors): update readme"],["d5cec948","2018-08-30","feat(vectors): update types, update GVec, add maths fns, swap impls"],["bdb5d377","2018-08-29","feat(vectors): consolidate vector consts, add toJSON() impls"],["bb55adf3","2018-08-29","Merge branch 'develop' into feature/webgl"],["b82a22f5","2018-08-29","refactor(vectors): simplify prop accessors (DRY)"],["f5795eee","2018-08-28","Publish"],["cd834f82","2018-08-28","feat(vectors): add more vec2/3 ops"],["4a373674","2018-08-28","feat(bench): add opt prefix arg, update docs"],["39cced5f","2018-08-28","minor(examples): add cursor css for dial"],["986e954f","2018-08-27","Publish"],["5afb5791","2018-08-27","Merge pull request #34 from andrew8er/pr/fix-rstream-resolve-errors"],["34a97b47","2018-08-27","fix(rstream): Fix unbound this in method call expression"],["917d81d1","2018-08-27","Publish"],["dee0476d","2018-08-27","docs(examples): update list of examples"],["d7235a3e","2018-08-27","feat(examples): add mouse & touch events for canvas-dial, refactor"],["a0cbd2b8","2018-08-27","feat(atom): add .value accessor aliases (for deref()/reset())"],["cfb2b747","2018-08-27","feat(vectors): add mix1(), minor cleanups"],["ccc40a9d","2018-08-27","feat(rstream-gestures): add options for local & scaled positions"],["b25edbec","2018-08-27","fix(hdom-components): call canvas update from init()"],["3f27acd7","2018-08-27","docs(rstream): update merge() docs"],["b5633b18","2018-08-27","feat(examples): add canvas-dial example (WIP)"],["135d6f1b","2018-08-27","feat(hdom-components): add HDPI adaptation helper for canvas comps"],["9d542b92","2018-08-26","minor(examples): fix/update comments"],["80a5f300","2018-08-26","feat(examples): add client/browser version of commit-log"],["318401c0","2018-08-25","refactor(examples): update components, add docs"],["37718855","2018-08-25","refactor(examples): further DRY & readme updates"],["82db75b2","2018-08-25","docs: fix example table"],["0cd261cf","2018-08-25","docs(example): update example list"],["fca0b13d","2018-08-25","docs(examples): add more comments"],["ae383f8e","2018-08-25","refactor(examples): simplify date handling"],["4be74bae","2018-08-25","fix(examples): commit log parsing, minor update html()"],["d0b1a1e4","2018-08-25","feat(examples): add commit-table-ssr express server / git commit log demo"],["80cae22d","2018-08-25","chore: update make-module script"],["866f3cdd","2018-08-25","refactor(cache): update iterator methods"],["8e9ba347","2018-08-24","Publish"],["113b424b","2018-08-24","docs: fix links in readmes"],["f9a1cc2a","2018-08-24","docs(transducers-stats): fix screenshot link"],["89e1bd51","2018-08-24","docs(rle-pack): fix diagram link"],["1c92f223","2018-08-24","Publish"],["cff9d18a","2018-08-24","docs(transducers): update readme examples"],["7a5be213","2018-08-24","fix(transducers): arg handling in rename()"],["389aff82","2018-08-24","build: update yarn.lock"],["b3f94159","2018-08-24","Merge branch 'feature/tx-v2' into develop"],["3057237f","2018-08-24","refactor(iges): transducer imports & usage"],["28110726","2018-08-24","assets(examples): update crypto-chart screenshot"],["2a443a56","2018-08-24","docs(transducers-stats): update readme"],["024a4e96","2018-08-24","docs(transducers): update readme"],["832e57f1","2018-08-24","fix(transducers): copy&paste error (push)"],["d861bdd1","2018-08-24","fix(transducers): iterator1() final reduced value handling"],["599f2b66","2018-08-24","feat(transducers): update base64Encode() to return string if input given"],["1025996e","2018-08-24","docs(rle-pack): update readme & diagram"],["40415217","2018-08-24","feat(rle-pack): further update data format (non-repeats)"],["694a2537","2018-08-24","feat(rle-pack): update data format, custom repeat sizes, rename fns"],["89b4ad5d","2018-08-23","feat(transducers): update all reducers to accept opt iterables"],["2c3a1147","2018-08-23","feat(transducers): add GroupByOpts interface, update groupBy* reducers"],["8565edb8","2018-08-23","fix(rle-pack): fix initial repeat counts in encodeBytes(), update readme"],["0bd860e6","2018-08-23","feat(transducers): add fill() & fillN() reducers"],["fb3c04da","2018-08-23","refactor(vectors): make Vec & Mat type aliases of NumericArray"],["519394b3","2018-08-23","feat(api): add NumericArray and TypedArray types"],["ecfcdcd9","2018-08-23","build: update yarn.lock"],["116ede83","2018-08-23","docs(transducers): update readme"],["c716e4ac","2018-08-23","add(transducers): add IReducible support for transduce() & run()"],["1280cfd5","2018-08-22","feat(dcons): add IReducible impl, update deps & imports"],["f14f7ce5","2018-08-22","feat(associative): add IReducible impls for SortedMap & SortedSet"],["9d83255a","2018-08-22","perf(transducers): add IReducible, update reduce()"],["fd8e7614","2018-08-09","feat(rle-pack): add support for custom input word sizes"],["4fdd3c92","2018-08-09","docs(transducers): update readme"],["3e659181","2018-08-09","minor(transducers): fix comp import"],["1434b0ed","2018-08-09","refactor(hdom): remove thi.ng/iterators dependency"],["802c5b44","2018-08-09","build(memoize): update/fix dev deps"],["f3d46460","2018-08-09","refactor(rstream): use SEMAPHORE from thi.ng/api, not transducers"],["5d5c70ab","2018-08-09","Merge branch 'master' into feature/tx-v2"],["e9c8ddc6","2018-08-09","chore(strings): update exports, add docs"],["653a175a","2018-08-09","feat(strings): add case converters"],["5209c426","2018-08-09","fix(strings): buffer length (for null inputs) (`center()`)"],["1a20bc2f","2018-08-09","feat(strings): add truncateLeft() & wrap() stringers"],["3a8bd088","2018-08-09","refactor(transducers): replace local types w/ external defs"],["ca0a04e7","2018-08-09","feat(compose): extract comp() & juxt() to new @thi.ng/compose package"],["bea7a1fd","2018-08-09","refactor(resolve-map): replace SEMAPHORE const w/ thi.ng/api def"],["9b443cb4","2018-08-09","refactor(hdom): replace SEMAPHORE const w/ thi.ng/api def"],["c22ac3ce","2018-08-09","refactor(associative): replace Pair & SEMAPHORE w/ identical thi.ng/api defs"],["cf30ba26","2018-08-09","feat(api): add new/move type aliases into api.ts"],["c9ac981a","2018-08-09","feat(transducers-stats): make xforms iterable if input given"],["ab662d8a","2018-08-09","perf(transducers): add iterator1(), update various xforms"],["d130aaa1","2018-08-08","build: fix transducer versions"],["8a111efd","2018-08-08","refactor(transducers): add shared SortOpts, update xforms"],["3e6c4624","2018-08-08","chore: update .gitignore"],["afb267a0","2018-08-08","docs: add graphviz dot files"],["dcccbcba","2018-08-08","refactor(examples): simplify transducer usages"],["c17cb087","2018-08-08","refactor(hdom-components): update/replace deps (iterators => transducers)"],["420cfe37","2018-08-08","test(csp): fix regression to due transducers update"],["d6352267","2018-08-08","refactor(dgraph): update/replace deps (iterators => transducers)"],["78d0a844","2018-08-08","fix(iges): regression to due transducers update"],["065d78ba","2018-08-08","refactor(cache): update/replace deps (iterators => transducers)"],["abe1a886","2018-08-08","refactor(associative): update/replace deps (iterators => transducers)"],["eb1714f5","2018-08-08","refactor(rstream-query): simplify transducer uses"],["cd5c6ff1","2018-08-08","refactor(rstream): update StreamSync transducer init"],["bae8a1d8","2018-08-08","feat(transducers): update all xforms to also work as iterator"],["e713704f","2018-08-08","refactor(transducers): rename inspect() => trace()"],["45e49930","2018-08-08","refactor(transducers): add ReductionFn type alias, update Reducer"],["723da5bb","2018-08-08","fix(transducers): hex type decl"],["ea768ad0","2018-08-08","Publish"],["6a0db9c7","2018-08-08","refactor(examples): replace hex() => radix(), update deps"],["b1ea9a55","2018-08-08","refactor(transducers): deprecate hex(), update hexDump() xform & deps"],["5864f2cd","2018-08-08","feat(strings): add opt prefix arg for radix()"],["a5e2c28a","2018-08-08","feat(transducers): add partitionBits() xform & tests"],["6eb97b58","2018-08-08","Publish"],["b2ebbfc8","2018-08-08","fix(strings): float type decl"],["0f2cf77d","2018-08-08","Publish"],["a14e5b24","2018-08-08","docs: update readmes"],["56d64c50","2018-08-08","refactor(examples): update crypto-chart to use @thi.ng/strings"],["df067d84","2018-08-08","refactor(iges): update to use @thi.ng/strings"],["40781eb3","2018-08-08","feat(strings): re-import & update @thi.ng/strings from MBP2010"],["369f375d","2018-08-08","build(memoize): update deps"],["2bc092d4","2018-08-08","feat(memoize): add optional cache arg for memoizeJ()"],["adc49285","2018-08-07","feat(memoize): add @thi.ng/memoize package"],["252411aa","2018-08-06","Publish"],["46d02f34","2018-08-06","refactor(examples): update rstream examples"],["378772fb","2018-08-06","fix(rstream): add generics for stream()"],["ec777c09","2018-08-03","Publish"],["f7500359","2018-08-03","docs: add rootlevel license file"],["7c54c68f","2018-08-03","refactor(examples): minor update rstream examples"],["361f8b43","2018-08-03","refactor(rstream-query): remove obsolete `reset` in addJoin()"],["f9466317","2018-08-03","refactor(rstream-graph): remove obsolete `reset` in node() factory"],["32810900","2018-08-03","test(rstream): update tests"],["e1f4667c","2018-08-03","chore(rstream): remove obsolete file"],["9101e089","2018-08-03","docs(rstream): add/update docs for all remaining stream constructs"],["e97aac0d","2018-08-03","feat(rstream): add stream() & subscription() factories, add/update docs"],["55499cc4","2018-08-03","feat(rstream): update StreamSync to use `reset: false` by default, update docs"],["2f0235ea","2018-08-03","docs: update main readme"],["4a9b4cce","2018-08-03","Publish"],["c5afc7b3","2018-08-03","refactor(examples): simplify rstream-hdom example"],["fdc7630b","2018-08-03","refactor(iges): only expect ArrayLike points/vectors, minor other updates"],["9ea44beb","2018-08-03","test(transducers): add padLast() tests"],["e50fd10e","2018-08-03","feat(transducers): add peek() helper fn"],["ff91987f","2018-08-03","docs(transducers): add docs & examples for ~50% of all transducers"],["69d25c8c","2018-08-02","refactor(examples): update transducers-hdom example"],["949a5d46","2018-08-02","fix(transducers-hdom): support hdom user context"],["feae35b0","2018-08-02","Publish"],["8ee1b103","2018-08-02","Merge branch 'develop'"],["698bb60d","2018-08-02","fix(examples): add missing files (triple-query)"],["3e70c31a","2018-08-02","feat(examples): add transducers-hdom example"],["7efce7a7","2018-08-02","feat(transducers-hdom): add new package @thi.ng/transducers-hdom"],["d4aa5ea2","2018-08-02","refactor(examples): add new types for crypto-chart example"],["bc26fb33","2018-08-02","Publish"],["381ad971","2018-08-02","Merge branch 'develop'"],["4ce80e79","2018-08-02","docs(vectors): update readme"],["befc7785","2018-08-02","refactor(vectors): update cylindrical coord conversion, add Vec3 methods"],["74f939c3","2018-08-02","feat(vectors): add toCylindrical3() / fromCylindrical3()"],["3039a35a","2018-08-02","feat(vectors): make Vec2/3/4 array-like, add IEquiv impls, add tests"],["2a13f28c","2018-08-02","feat(vectors): add gvec size checks, add IEquiv & Iterable impls"],["d007a8ae","2018-08-02","docs(examples): update example table (add triple-query)"],["248150ee","2018-08-01","Publish"],["b1cf171f","2018-08-01","chore: update make-* scripts, add cloc stats script"],["748131a3","2018-08-01","chore: update .gitignore"],["cbfd65a3","2018-08-01","fix(examples): add utf meta to all example html files"],["1a8ff8a6","2018-08-01","refactor(examples): cleanup imports"],["4db3fa83","2018-08-01","refactor(rstream-query): cleanup imports"],["c1690170","2018-08-01","refactor(rstream-dot): cleanup imports"],["0f7e82ae","2018-08-01","refactor(rstream): cleanup imports"],["14672731","2018-08-01","refactor(hdom): cleanup imports"],["e0ce1061","2018-08-01","Publish"],["68f59f21","2018-08-01","refactor(vectors): add IVec to all vector class wrappers"],["3ca2cbf1","2018-08-01","refactor(iges): make fill mode optional for addPolyline2d()"],["2ac23a34","2018-08-01","Merge branch 'feature/iges' into develop"],["ee24ede1","2018-08-01","Merge branch 'feature/ts3' into develop"],["e7d2675d","2018-08-01","feat(examples): add triple-query example project"],["0f01cc36","2018-08-01","minor: markdown fixes in various readmes"],["542540f0","2018-08-01","build(examples): update webpack deps"],["2ecd5384","2018-08-01","refactor(router): TS3.0 PropertyKey handling"],["bf2a3074","2018-08-01","refactor(pointfree): TS3.0 PropertyKey handling"],["38372cc9","2018-08-01","refactor(interceptors): TS3.0 PropertyKey handling"],["30d65d4b","2018-08-01","refactor(defmulti): TS3.0 PropertyKey handling"],["2234313c","2018-08-01","refactor(associative): TS3.0 PropertyKey handling"],["20478072","2018-08-01","refactor(api): TS3.0 PropertyKey handling"],["c7f72440","2018-08-01","build: update dev dependencies in all packages & examples"],["56a1f0eb","2018-07-30","Publish"],["3534274a","2018-07-30","fix(vectors): get*() return types, refactor using set*()"],["0ca667a4","2018-07-30","Publish"],["3de5cea4","2018-07-30","fix(vectors): naming convention, add function overview tables"],["474f8df5","2018-07-29","Merge branch 'develop' into feature/iges"],["e82d97a7","2018-07-29","docs: update package list main readme"],["aef277f8","2018-07-29","Publish"],["ae1da134","2018-07-29","docs(vectors): update readme & package info"],["acedfae8","2018-07-29","Merge branch 'feature/geom' into develop"],["93b268a6","2018-07-29","docs(vectors): update readme"],["6571b8a3","2018-07-29","test(vectors): add gvec tests"],["d2bdf79e","2018-07-29","refactor(vector): update eqDelta impls, rename array transformers"],["54b3db2d","2018-07-29","feat(vectors): update get & copy fns to retain buffer types"],["f99cf3dc","2018-07-29","refactor(vectors): add gvec default length args"],["5bba592d","2018-07-29","feat(vectors): add swizzle fns, update/unify fn naming"],["e3c61675","2018-07-29","feat(vectors): add generic vec fns & class wrapper"],["1f0551d0","2018-07-28","refactor(vectors): various small fixes/additions (matrices)"],["1ec75e61","2018-07-27","feat(vectors): re-add matrix class wrappers, update vec classes"],["29500b6d","2018-07-26","build: add babel-minify dev dependency"],["21b04f06","2018-07-26","feat(vectors): re-import updated mat44, add orthoNormal3"],["eb3f66fb","2018-07-26","test(vectors): add tests"],["4fdda6a9","2018-07-26","feat(vectors): re-import updated mat23/33/44 functions"],["2a5a744d","2018-07-25","fix(vectors): copy/paste mistakes, add tests"],["e289db2b","2018-07-25","refactor(vectors): add op22/32, simplify various vec2/3 ops"],["b59fadfd","2018-07-25","feat(vectors): add vec4 ops & class wrapper"],["35af6a56","2018-07-25","feat(vectors): add minor/majorAxis(), minor/major2/3"],["5c52f771","2018-07-25","Merge branch 'develop' into feature/geom"],["5a3b9988","2018-07-25","Publish"],["a322e001","2018-07-25","fix(transducers-stats): fix naming of MACD results (#31)"],["03f94352","2018-07-25","Publish"],["d967f94e","2018-07-25","docs(transducers-stats): update docs & readme"],["c97cb75c","2018-07-25","feat(transducers-stats): add BollingerBand value interface"],["b92aaa58","2018-07-25","feat(transducers-stats): add MACD (fixes #31)"],["d1541539","2018-07-25","feat(vectors): re-import vector types from old thi.ng/geom TS version"],["f7a084ae","2018-07-24","feat(iges): add PolylineMode enum, update addPolyline2d()"],["e349cb6a","2018-07-23","docs(transducers): update readmes"],["e7772934","2018-07-21","Publish"],["0b0a7ca9","2018-07-21","feat(transducers-stats): add stochastic oscillator, refactor"],["2953caaa","2018-07-21","feat(examples): add MA mode dropdown, update crypto-chart dataflow"],["e3def294","2018-07-21","refactor(examples): switch to WMA plots in crypto-chart demo"],["fde777d0","2018-07-21","docs: update main readme"],["76dc450d","2018-07-21","feat(range-coder): re-import @thi.ng/range-coder package from MB2010"],["8389a2c7","2018-07-20","Publish"],["7cfb8e5a","2018-07-20","minor(rstream): remove obsolete args (pubsub)"],["a59c5c94","2018-07-20","perf(rstream): optimize dispatch if only single child"],["cd751fb4","2018-07-20","feat(rstream): add reset option for timeout()"],["7b10e0c9","2018-07-20","Merge pull request #30 from andrew8er/feature/rstream-add-timeout"],["e8009a68","2018-07-19","docs(transducers-stats): update readme links"],["52ce30c4","2018-07-19","docs: update main readme"],["7e497439","2018-07-19","build(transducers-stats): update package deps"],["1de746b2","2018-07-19","Merge branch 'feature/tx-stats' into develop"],["7df3ce04","2018-07-19","feat(transducers-stats): add other xforms"],["7a5812fb","2018-07-19","feat(transducers-stats): add @thi.ng/transducers-stats package"],["1fe612de","2018-07-19","docs(transducers): reapply MD fixes"],["3a2aa7a6","2018-07-19","Merge branch 'master' into develop"],["78701493","2018-07-19","feat(examples): update axis ticks, add more symbols, refactor SMAs"],["08db846b","2018-07-19","docs(transducers): update readme"],["64de94b5","2018-07-19","Publish"],["9874acec","2018-07-19","perf(transducers): update movingAverage() xform, add docs"],["482943c8","2018-07-18","docs(transducers): add/update doc strings"],["ccc37c67","2018-07-18","feat(transducer): add asIterable() helper"],["092154c7","2018-07-18","feat(transducers): allow key arrays for rename(), simplify call sites"],["9b07d12a","2018-07-18","feat(transducers): add juxtR() for multiplexed reductions from same src"],["aa55973e","2018-07-17","feat(rstream): Add a timeout() subscription"],["2733684e","2018-07-16","Publish"],["732a0967","2018-07-16","docs(examples): update readme & dataflow diagram"],["3edbaefc","2018-07-16","feat(examples): add auto-refresh, add data credits"],["9be20180","2018-07-16","fix(rstream): emit first value immediately in fromInterval()"],["0508e40a","2018-07-16","docs(examples): add/update types in rstream-hdom"],["694e6c64","2018-07-16","feat(examples): improve time labels on crypto-chart"],["3c1c29ac","2018-07-16","refactor(examples): remove atom usage from rstream-hdom demo, update docs"],["7cd78e03","2018-07-15","feat(examples): add theme support for crypto chart, update diagram"],["9ff8d352","2018-07-15","docs(examples): update list of demos"],["f1e3d081","2018-07-15","docs(examples): add dataflow graph to readme"],["6989b8db","2018-07-15","docs(examples): temp fix live demo link in readme"],["9b26c4b4","2018-07-15","Publish"],["24829454","2018-07-15","fix(resolve-map): add support for alt ES6 destructure form `{a: b}`"],["08a7600a","2018-07-15","build(hdom-components): update @types/webgl dep"],["2d7e7cdf","2018-07-15","build: update dev dependencies"],["c95a3701","2018-07-15","docs(example): add API ref link, update readme"],["a8487edc","2018-07-15","feat(examples): add crypto chart example"],["20b028c6","2018-07-13","chore: update make-module script"],["4f19be90","2018-07-13","docs: fix various markdown issues"],["973f1a42","2018-07-13","Publish"],["ee48a94c","2018-07-13","fix(rstream-gestures): touchevent check in safari"],["d636876d","2018-07-13","Publish"],["976a6d85","2018-07-13","refactor(iges): update formatParams(), optimize iges file size"],["81223dca","2018-07-13","feat(transducers): add wordWrap() xform"],["634de84d","2018-07-12","docs: add @thi.ng/iges to package list"],["3935d9a5","2018-07-12","Publish"],["eb6dfa9b","2018-07-12","build(iges): update package info"],["b841269a","2018-07-12","Merge branch 'feature/iges' into develop"],["087f3480","2018-07-12","refactor(iges): emit compressed globals section"],["7f1b2d46","2018-07-12","feat(iges): re-import & update IGES exporter (via MBP2010)"],["d061c7d0","2018-07-11","Publish"],["73c7b8ac","2018-07-11","perf(interceptors): update valueSetter()/valueUpdater()"],["ad4caad9","2018-07-11","feat(paths): add updater(), refactor updateIn(), update readme"],["fd23a34e","2018-07-11","docs(sax): minor update readme"],["ef161341","2018-07-11","docs(sax): add tests & DOM parsing example to readme"],["8cd279a8","2018-07-10","Publish"],["126103b3","2018-07-10","fix(hdom): always update \"value\" attrib last in diffAttributes()"],["fcfd4bf8","2018-07-09","docs(hiccup-css): fix #26, add pseudo-class & attrib selector docs"],["e4b62d8b","2018-07-09","Publish"],["22890961","2018-07-09","docs(rstream): add AUTHORS.md"],["d485bfa5","2018-07-09","Merge pull request #28 from andrew8er/pr/rstream-fix-transduce"],["03543ee9","2018-07-09","fix(transducers): revert mean() from regression introduced in 095e6ef"],["9513ddd8","2018-07-09","Merge branch 'master' into pr/rstream-fix-transduce"],["5ec61406","2018-07-09","build(examples): add missing html/webpack config for rstream-hdom demo"],["8321660c","2018-07-09","feat(examples): add rstream-hdom example"],["7f2d5dd2","2018-07-09","fix(rstream): Fix potential reference error in transduce()"],["84f23d35","2018-07-09","Publish"],["095e6ef3","2018-07-09","refactor(transducers): add reducer() helper, update existing reducers"],["0430c769","2018-07-04","Publish"],["dbbeffb3","2018-07-04","docs(paths): update docs & readme"],["c7f2f92d","2018-07-04","test(paths): add/update tests"],["3d9d6200","2018-07-04","feat(paths): update setter() to support arrays, optimize (~2.5x faster)"],["7fb407c0","2018-07-04","Publish"],["36165be8","2018-07-04","minor(rstream-graph): formatting"],["de17340a","2018-07-04","feat(rstream-gestures): add event & preventDefault opts, update docs"],["d5ac2643","2018-07-04","feat(rstream): add support for event listener opts in `fromEvent()`"],["9ffa346d","2018-07-03","Publish"],["677c7cc0","2018-07-03","feat(transducers): add ensureArray(), refactor reverse()"],["17d412af","2018-07-03","test(rstream-graph): increase timeout to avoid travis errors"],["a5942022","2018-07-03","Publish"],["33f0d197","2018-07-03","fix(associative): minor SortedSet fixes"],["1e185011","2018-06-29","Merge pull request #24 from andrew8er/pr/rstream-transduce-unsubscibe-on-error"],["8c7d9376","2018-06-28","fix(rstream): unsubscribe on error in transduce()"],["576f1da3","2018-06-25","Publish"],["c4fad707","2018-06-25","fix(rstream-graph): individual node outputs"],["eb2015df","2018-06-21","Publish"],["d0b1e5c4","2018-06-21","feat(rstream-graph): add stop(), fix `const` inputs, update docs/readme"],["cc5b7367","2018-06-21","feat(rstream): option to avoid auto-closing `fromInterval()`, add docs"],["4611e8e0","2018-06-21","chore: update repo & homepage fields in all packages"],["2223bded","2018-06-21","docs: fix package links in readmes"],["a3b245c8","2018-06-20","Publish"],["cd863214","2018-06-20","docs(transducers-fsm): fix readme (example)"],["60dca8ee","2018-06-20","Publish"],["882f3949","2018-06-20","feat(sax): add children & trim opts, add CDATA support"],["6cf0d915","2018-06-19","Publish"],["eed50b81","2018-06-19","docs: update main readme"],["343e07f1","2018-06-19","refactor(sax): wrap FSM handler results as arrays, update ELEM_SINGLE"],["a9ca1351","2018-06-19","feat(transducers-fsm): support multiple results, add tests, update readme"],["8959b938","2018-06-19","docs(sax): update readme (add SVG example)"],["bbd3b4ba","2018-06-19","docs(transducers-fsm): update readme, whitespace"],["bc261e57","2018-06-19","feat(transducers): add matchFirst()/matchLast() xforms, update readme"],["e824b6bb","2018-06-19","feat(sax): add support for escape seqs, minor optimizations"],["4e7fca56","2018-06-18","chore: update make-module script"],["30811ce5","2018-06-18","docs(transducers-fsm): update package keywords"],["cc11ade5","2018-06-18","Publish"],["0e4662d1","2018-06-18","fix(sax): correct docs in readme"],["278a86c2","2018-06-18","Publish"],["b5b26300","2018-06-18","docs: update package docs (bench / dot)"],["42e22921","2018-06-18","docs: update readmes (add/fix links)"],["10e807c5","2018-06-18","Merge branch 'feature/sax' into develop"],["3589e155","2018-06-18","fix(checks): isOdd() for negative values"],["23b9cc2e","2018-06-18","docs(transducers-fsm): update docs & readme"],["0f2fcdff","2018-06-18","feat(sax): add entity support, update result format, update states"],["56deb455","2018-06-17","refactor(sax): remove extracted FSM transducer & types, update readme"],["7c3c2903","2018-06-17","feat(transducers-fsm): inital import"],["64f23789","2018-06-17","feat(sax): update error handling, add parse() wrapper, add FSMOpts"],["a4766a54","2018-06-17","feat(sax): add support for proc & doctype elements, update `end` results"],["3dea9549","2018-06-17","feat(sax): emit child elements with `end` results, support comments"],["74f7d02e","2018-06-17","refactor(sax): extract parser sub-states"],["dce189f9","2018-06-17","feat(sax): initial import"],["f13138a4","2018-06-08","Publish"],["e1a8c915","2018-06-08","docs(hiccup-css): update readme"],["cffab49d","2018-06-08","Merge branch 'feature/hcss-inject' into develop"],["8d6e6c86","2018-06-08","feat(hiccup-css): add injectStyleSheet()"],["244bf213","2018-06-08","feat(hiccup-css): add class scoping support"],["b358c1a7","2018-06-07","Publish"],["e0535b4c","2018-06-07","docs(resolve-map): update readme"],["0beaffb1","2018-06-07","docs(resolve-map): update readme"],["0fc2305e","2018-06-07","fix(rstream-graph): rename `resolveMap` => `resolve` due to upstream changes"],["35deb3b8","2018-06-07","Merge branch 'feature/resolve-auto' into develop"],["e61c3b59","2018-06-07","feat(resolve-map): add cycle detection, fix edge cases"],["57f1ed5f","2018-06-06","feat(resolve-map): add ES6 destructuring shorthands for function vals"],["93b40b78","2018-06-06","Publish"],["720b1f18","2018-06-06","docs(rstream-graph): update api docs & readme"],["576668e3","2018-06-06","Merge branch 'feature/rs-graph-outputs' into develop"],["48c796f5","2018-06-06","fix(resolve-map): also use _resolvePath for plain lookups, optimize"],["dd2cbd44","2018-06-06","refactor(examples): update rstream-graph examples"],["1a09b61e","2018-06-06","minor(rstream-graph): minor fix exported types"],["558f4f8c","2018-06-06","fix(resolve-map): add private _resolveDeep"],["f2e0df25","2018-06-06","feat(rstream-graph): add full/optional support for multiple node outputs"],["dc6e0acc","2018-06-06","refactor(resolve-map): export absPath(), add LookupPath type alias"],["be21c4c2","2018-06-06","feat(rstream-graph): update NodeOutput, support multiple handlers"],["de48e134","2018-06-05","build: add yarn bootstrap"],["67c7e17d","2018-05-30","Publish"],["45785229","2018-05-30","Merge branch 'develop'"],["b267c999","2018-05-30","Merge branch 'feature/command' into develop"],["7ac6227d","2018-05-30","feat(atom): provide prev/curr states to history event listeners"],["94225989","2018-05-29","feat(atom): add INotify impl for History"],["44998ca0","2018-05-20","Publish"],["ad56421a","2018-05-20","refactor(rstream-graph): allow fn vals in GraphSpec too, update test"],["b7560989","2018-05-20","Publish"],["0818498a","2018-05-20","feat(rstream-graph): update types, initGraph(), node1(), add tests"],["c880a633","2018-05-20","Publish"],["773829e4","2018-05-20","minor(rstream): add alt subscribe() overrides (disabled)"],["846aaf97","2018-05-20","feat(rstream): re-implement bisect() using PubSub, update tests"],["cbc600e7","2018-05-20","fix(rstream): minor update PubSub topic fn return type"],["23fdd398","2018-05-19","feat(rstream): update resolve(), update subscribe() overrides"],["0e103c50","2018-05-16","Publish"],["0c292503","2018-05-16","feat(examples): add input clearing"],["7e1028a2","2018-05-15","fix(examples): tab handling in fuzzy dropdown"],["2482b16e","2018-05-15","fix(hdom): delay init() lifecycle call to ensure children are available"],["81b596f6","2018-05-15","refactor(examples): update highlightMatches()"],["db58ebc7","2018-05-15","feat(examples): add fuzzy match highlighting"],["09d531a7","2018-05-15","feat(exmples): add hdom-dropdown-fuzzy (unfinished)"],["577bdde8","2018-05-15","docs: add discord badge"],["7349ef43","2018-05-15","test(hdom): fix/update lifecycle test"],["5595cc2a","2018-05-14","Publish"],["4dd97abd","2018-05-14","docs: update readmes (compare / equiv)"],["4b94a1b9","2018-05-14","docs(api): update doc strings"],["f7b6b342","2018-05-14","Publish"],["191bc981","2018-05-14","chore: update package keywords"],["ade96f86","2018-05-14","fix(hdom): component obj lifecycle method thisArg handling"],["c54f7357","2018-05-14","test(transducers): remove obsolete test file"],["e238541f","2018-05-14","refactor(transducers): replace wrapBoth/Left/Right w/ wrap()"],["fbba5d27","2018-05-14","Publish"],["d59b0af3","2018-05-14","docs(transducers): update readme"],["37362dd2","2018-05-14","test(transducers): add fuzzy tests"],["fc6acd16","2018-05-14","chore(transducers): update deps, readme, re-exports"],["2bebba28","2018-05-14","feat(transducers): add filterFuzzy() xform"],["306625df","2018-05-14","feat(transducers): add wrap*() iterators"],["9efa5762","2018-05-14","docs(resolve-map): update readme"],["4591d5d5","2018-05-14","minor(examples): update dropdown html"],["2076d25b","2018-05-14","docs(resolve-map): add readme example"],["ea185897","2018-05-14","Publish"],["6661fc3a","2018-05-14","feat(examples): add hdom-dropdown example"],["5e729701","2018-05-14","feat(interceptors): update dispatch() / dispatchNow()"],["644d1ffe","2018-05-13","docs(hdom): update readme example"],["5d6e762d","2018-05-13","Publish"],["609d66dd","2018-05-13","docs(hdom): update readme"],["01f0fa56","2018-05-13","Merge branch 'feature/hiccup-context' into develop"],["f8fe5001","2018-05-13","docs(hiccup): update readme"],["67015ce9","2018-05-13","refactor(examples): update svg examples"],["dc775404","2018-05-13","docs(hiccup-svg): resolve #19, update readme, add invocation notes"],["373701b0","2018-05-13","feat(pointfree): add execjs for host calls, update readme"],["396faec8","2018-05-13","refactor(hiccup-svg): rename svgdoc => svg"],["765e7302","2018-05-13","docs(hiccup): update readme"],["b1cb7d9a","2018-05-12","perf(hiccup): update css()"],["feca5666","2018-05-12","refactor(hiccup): fix #19, add support for context object"],["4b8caec9","2018-05-12","docs: update main readme"],["2d4fd682","2018-05-12","docs: update all readme's (add deps links)"],["6ff48a41","2018-05-12","docs(defmulti): update readme"],["8b2e67ce","2018-05-12","Publish"],["41ce19c5","2018-05-12","test(csp): update IEnabled test impl"],["67f0e546","2018-05-12","refactor(dcons): update pop()"],["9b388604","2018-05-11","refactor(api): update interfaces, add docs"],["04b66b2f","2018-05-11","Publish"],["fbb721f8","2018-05-11","docs: remove dep graph from main readme, update package"],["eeed25ed","2018-05-11","feat(defmulti): add generics, update docs & readme"],["011519d7","2018-05-11","docs: update dep graph"],["2fd3d822","2018-05-11","Publish"],["126ecf36","2018-05-11","feat(defmulti): add defmultiN(), update readme, add tests"],["5391d986","2018-05-11","fix(pointfree): minor update error handling"],["5227dd1f","2018-05-11","refactor(errors): update return types (`never`)"],["790d0130","2018-05-11","test(defmulti): add tests"],["8c74a99d","2018-05-10","docs: update dep graph"],["08cef30e","2018-05-10","Publish"],["304669de","2018-05-10","Merge branch 'feature/defmulti' into develop"],["7ae718c5","2018-05-10","docs: update main readme"],["edc66bf2","2018-05-10","feat(defmulti): add @thi.ng/defmulti package"],["a818acd4","2018-05-10","docs(transducers): update readme"],["e6f2972b","2018-05-10","docs: update dep graph"],["051a05db","2018-05-10","Publish"],["55f29b8f","2018-05-10","feat(transducers): add normRange() iterator"],["bd1fba33","2018-05-10","docs: update dep graph"],["c72e81c3","2018-05-10","Publish"],["7af3ef86","2018-05-10","docs: update readmes"],["6349b918","2018-05-10","Merge branch 'feature/api-split' into develop"],["fc7c5c70","2018-05-10","refactor(examples): update imports"],["bdf5bf06","2018-05-10","refactor(examples): update imports"],["bc456364","2018-05-10","refactor: update deps & imports in all packages due to @thi.ng/api split"],["f051ca3c","2018-05-10","refactor(api): remove obsolete files from package"],["9466d4b2","2018-05-10","feat(bench): add new package @thi.ng/bench"],["e4a87c41","2018-05-10","feat(compare): add new package @thi.ng/compare"],["1e97856f","2018-05-10","feat(errors): add new package @thi.ng/errors"],["6d12ae08","2018-05-10","feat(equiv): add new package @thi.ng/equiv"],["aba06b0c","2018-05-10","docs(examples): fix link"],["34903210","2018-05-10","feat(examples): add icon button"],["a49e30cf","2018-05-10","Merge branch 'master' into develop"],["d5f1037a","2018-05-10","fix(examples): fix #22, update router-basics"],["7a8e43ea","2018-05-10","docs(examples): update readmes"],["cea77deb","2018-05-09","feat(examples): add hdom-theme-adr-0003 demo"],["5af437c1","2018-05-09","docs(hdom-components): add ADR-0003"],["b4476cb9","2018-05-09","refactor(hdom-components): add ButtonGroup type alias"],["1dd6e9a2","2018-05-09","docs: update dep graph"],["5da6c578","2018-05-09","Publish"],["6e7599ac","2018-05-09","docs(resolve-map): update/fix doc strings"],["5d2a3fe8","2018-05-09","refactor(resolve-map): fix #21"],["68ca46d2","2018-05-09","feat(dgraph): add leaves() & roots() iterators, update sort()"],["91a2b748","2018-05-09","docs: add @thi.ng/dot to main readme"],["b5132b3d","2018-05-09","docs: update dep graph"],["850716bc","2018-05-09","Publish"],["d8d9435e","2018-05-09","build: update deps in all packages, examples & scripts"],["68ea0864","2018-05-09","fix(hdom): native boolean attrib handling (e.g. \"checked\")"],["ede76916","2018-05-09","docs(hdom-components): update readme"],["053c8c6f","2018-05-09","feat(rstream-gestures): add zoom smooth config option, update readme"],["b52c503e","2018-05-09","docs: update readme's"],["5991be61","2018-05-09","feat(associative): add new functions, update arg & return types"],["c0950d65","2018-05-08","feat(hdom-components): add buttonGroup"],["5416887a","2018-05-07","doc(hdom-components): update ADR-0002"],["c0fef3d3","2018-05-07"," doc(hdom-components): update ADR-0002"],["a9574a0b","2018-05-07","feat(associative): add mapKeysObj() / mapKeysMap()"],["cefb1994","2018-05-07","refactor(hdom-components): remove CanvasOpts, update re-exports"],["4f8e7bab","2018-05-07","refactor(hdom-components): update notification & appLink comps"],["a11803c4","2018-05-07","feat(hdom-components): add notification component"],["ec41eb9c","2018-05-07","refactor(hdom-components): update button args"],["5e815256","2018-05-05","doc(hdom-components): add ADRs"],["cef3c6a8","2018-05-05","feat(hdom-components): add button component"],["334a4d24","2018-05-04","refactor(hdom-components): make pager more customizable"],["23b64517","2018-05-04","refactor(dot): replace NodeShape enum, minor other refactoring, add example"],["500dfa3b","2018-05-03","feat(dot): initial import @thi.ng/dot"],["f9a2daf2","2018-05-02","feat(hdom-components): add title component"],["6748515b","2018-05-02","feat(interceptors): add dispatch/dispatchNow() helper interceptors"],["5a6ce274","2018-05-02","build(examples): update packages"],["cbfa44b7","2018-05-02","build: update dev deps in all packages"],["efb288df","2018-05-01","feat(hdom-components): add pager component, add @thi.ng/iterators dep"],["b2806236","2018-05-01","docs: update dep graph"],["212e5013","2018-05-01","Publish"],["146fad62","2018-05-01","build: update upload-examples script"],["593654a7","2018-05-01","docs: update dep graph"],["a93cb98b","2018-05-01","fix(hdom): boolean attrib reset/removal"],["698438a5","2018-04-30","docs: update dep graph"],["f6e944c6","2018-04-30","Publish"],["7a543a50","2018-04-30","perf(hdom): only build linear diff edit log"],["431527a5","2018-04-30","perf(diff): add option to only build linear edit log"],["12b8dcb3","2018-04-30","fix(examples): CA dropdown"],["c2a5bcb3","2018-04-29","docs: update dep graph"],["5888f224","2018-04-29","Publish"],["95c57ec3","2018-04-29","Merge branch 'hotfix/arraylike'"],["491a6f85","2018-04-29","revert: b86d5b2"],["31ec3af4","2018-04-29","perf(hdom): update event handling in diffAttributes()"],["a7c5eafc","2018-04-29","refactor(examples): update todo list"],["b86d5b25","2018-04-29","refactor(examples): update hdom-basics"],["7fdf1721","2018-04-29","perf(api): major speedup equivObject(), update equivSet()"],["76920f75","2018-04-29","fix(checks): return type isMap()"],["ac60404e","2018-04-29","fix(checks): exclude functions in isArrayLike()"],["a6dc02e4","2018-04-28","docs: update dep graph"],["048632a4","2018-04-28","Publish"],["c4d8851d","2018-04-28","fix(interceptors): multiple sidefx value assignment"],["2aaa134a","2018-04-28","refactor(examples): minor update rstream-grid, add missing files"],["7c3faed2","2018-04-28","docs(interceptors): update readme"],["cba30e36","2018-04-28","docs(examples): update readme"],["1c469afa","2018-04-28","minor(examples): update rstream-grid sidebar"],["115dff2b","2018-04-28","docs: update dep graph"],["df55f40b","2018-04-28","Publish"],["661e34f5","2018-04-28","feat(examples): add rstream-grid dataflow demo"],["f4a095a5","2018-04-28","feat(interceptors): add dispatchLater()"],["f84fe450","2018-04-27","docs: update dep graph"],["8f5b3d91","2018-04-27","Publish"],["6f95bcb3","2018-04-27","feat(rstream-query): add obj->triple converter, update readme & example"],["d03520d8","2018-04-26","docs: update dep graph"],["085a81d9","2018-04-26","Publish"],["af6c807e","2018-04-26","style: reformat/sort imports in all packages"],["d36a5eaf","2018-04-26","refactor(rstream-query): simplify case selection in addPatternQuery()"],["2ab5af5d","2018-04-26","build: update/add upload scripts"],["5c048615","2018-04-26","docs: update dep graph"],["7fa54577","2018-04-26","Publish"],["ced200af","2018-04-26","docs(rstream-query): update readme, diag, add example"],["75f2af2e","2018-04-26","perf(rstream-query): optimize pattern queries, fix bindVars()"],["6bcd5dd4","2018-04-26","docs: update dep graph"],["6d261caa","2018-04-26","Publish"],["f5735a66","2018-04-26","Merge branch 'feature/rs-query' into develop"],["d093a5c8","2018-04-26","feat(rstream-query): add query spec types, addQueryFromSpec(), dedupe xforms"],["2ac8bff3","2018-04-26","feat(api): support more types in equiv(), add tests"],["a865f62b","2018-04-26","feat(checks): add date, map, nan, set checks"],["d057d954","2018-04-26","feat(rstream-dot): add option to include stream values in diag"],["76f00c36","2018-04-26","refactor(rstream): update ISubscribable (add IDeref parent)"],["679c4e08","2018-04-26","feat(rstream-query): add path query, multi-joins, pattern query reuse"],["9b5c58ac","2018-04-25","feat(rstream-query): rename TripleStore methods, use Set-like API"],["443ff8f6","2018-04-25","feat(rstream-query): add removeTriple(), simplify wildcard subqueries"],["c5f36a2d","2018-04-25","feat(rstream-query): add addQueryJoin(), add type aliases, update tests"],["7d927144","2018-04-25","docs: update dep graph"],["6215335f","2018-04-25","Publish"],["888f4e56","2018-04-25","build: update package keywords"],["cf388ddb","2018-04-25","docs: update rstream-* readmes"],["28cf39f9","2018-04-25","build: temporarily force node v9 for travis"],["72aa848a","2018-04-25","docs: update dep graph"],["a3e0cf82","2018-04-25","Publish"],["cc286e12","2018-04-25","fix(rstream): minor fix StreamSync.addAll()"],["fa36f989","2018-04-25","docs: update main readme"],["60bd67a4","2018-04-25","docs: update dep graph"],["8fc5fb40","2018-04-25","Publish"],["2f3bdaea","2018-04-25","build: update make-module script"],["b121c476","2018-04-25","refactor(rstream-query): rename types, update readme"],["97a6e945","2018-04-24","docs: update various readmes"],["781ae217","2018-04-24","test(rstream-query): add query tests"],["d9b845e0","2018-04-24","feat(rstream-query): add param queries w/ variables, update addPatternQuery"],["6368cd2d","2018-04-24","docs(rstream-dot): update readme, add diagram"],["3135da20","2018-04-24","docs(examples): update rs-dlow diagram & readme"],["a68eca0b","2018-04-24","feat(rstream-query): add IToDot impl for graphviz conversion/viz"],["7ffaa615","2018-04-24","feat(rstream-dot): add xform edge labels, extract types to api.ts"],["32fb7ff9","2018-04-24","docs(rstream-graph): update readme"],["2b9a8883","2018-04-24","refactor(rstream-graph): extract ensureInputs(), update docs"],["e11b9a80","2018-04-24","refactor(examples): update rstream-dataflow to use new specs"],["d564e109","2018-04-24","refactor(rstream-graph): update node input specs & node factories"],["3408c137","2018-04-24","feat(rstream-gestures): allows partial opts, add ID option"],["b3928174","2018-04-24","perf(rstream): support (re)named StreamSync inputs"],["66ec92fb","2018-04-24","feat(rstream-query): update index & sub-query caching/reuse"],["d35b5ff1","2018-04-24","feat(examples): add graphviz DOT output for rstream-dataflow"],["704025a9","2018-04-24","feat(rstream-dot): support multiple roots in walk()"],["0153903d","2018-04-24","feat(rstream-graph): add IDs for all generated nodes, rename factory type"],["e72478ab","2018-04-24","feat(rstream-dot): initial import @thi.ng/rstream-dot package"],["33f55b3e","2018-04-24","feat(rstream): add owner meta data & IDs for merge/sync inputs"],["16fabb8c","2018-04-23","refactor(rstream-query): simplify addQuery()"],["a4aa4cb3","2018-04-23","refactor(rstream-query): simplify query handling, optimize addFact()"],["ef3903e4","2018-04-23","feat(rstream-query): initial import"],["c73b0be9","2018-04-22","docs: update dep graph"],["d4423f2c","2018-04-22","Publish"],["03cee0fa","2018-04-22","build(heaps): update package desc"],["aa78d77e","2018-04-22","fix(cache): TLRUCache.get(), add tests, update package"],["7d38e5b0","2018-04-22","test(cache): add tests"],["9d53ae33","2018-04-22","feat(cache): add TLRUCache.prune(), fix ensureSize()"],["fa67252c","2018-04-22","docs: update dep graph"],["23e36a10","2018-04-22","Publish"],["944aaf6d","2018-04-22","test(heaps): add tests"],["fccb3af1","2018-04-22","feat(heaps): iterator now returns min() seq"],["58945727","2018-04-22","fix(heaps): add DHeap ICopy/IEmpty impls, fix return types"],["c4bbee0a","2018-04-22","feat(heaps): add min/max(), update heapify() and percolate methods"],["34996f23","2018-04-22","docs: update package list main readme"],["d6e175db","2018-04-22","docs: update dep graph"],["17ccbb1f","2018-04-22","Publish"],["05a68dbe","2018-04-22","Merge branch 'feature/lru' into develop"],["b83c0300","2018-04-22","minor(cache): cleanup"],["ab4abf55","2018-04-22","refactor(heaps): major update / simplify, fix DHeap, add accessors"],["24113b27","2018-04-21","docs(cache): update readme"],["574b5d96","2018-04-21","feat(cache): add TLRUCache"],["c4a9c074","2018-04-21","fix(cache): recompute size in LRUCache.delete(), extract removeEntry()"],["0ea0847d","2018-04-21","feat(heaps): import @thi.ng/heaps package"],["26c4cfd0","2018-04-21","feat(cache): add MRUCache, update package & readme"],["00ca831f","2018-04-21","refactor(cache): make LRU ops O(1), update/remove (some) interfaces"],["19f7e761","2018-04-21","feat(dcons): add asHead()/asTail()"],["3947419c","2018-04-21","fix(cache): don't insert new val if > maxsize"],["1c9d73f5","2018-04-21","docs(cache): update readme"],["d37a91eb","2018-04-21","refactor(cache): update/extend ICache & LRUCache, update readme"],["7bbbfa88","2018-04-20","feat(cache): initial import @thi.ng/cache package"],["dab48115","2018-04-20","docs: update dep graph"],["ff5705d4","2018-04-20","Publish"],["a335a66e","2018-04-20","docs(rstream): update readme"],["ba10907c","2018-04-20","feat(rstream): allow arbitrary PubSub topic vals, add @thi.ng/associative dep"],["bb11ddfb","2018-04-20","fix(associative): allow partial options arg for EquivMap ctor"],["27a098d7","2018-04-20","feat(rstream): add PubSub, add ISubscribableSubscriber, remove cache()"],["40903ea2","2018-04-19","docs: update dep graph"],["e0e95587","2018-04-19","Publish"],["d40f3a82","2018-04-19","docs: update dep graph"],["f77b443d","2018-04-19","Publish"],["87e3b488","2018-04-19","feat(interceptors): add EV_TOGGLE_VALUE handler, update EV_UNDO/REDO"],["920a3406","2018-04-19","docs(hdom): update readme"],["a2320ff2","2018-04-18","docs(paths): update readme"],["e0b41d81","2018-04-18","docs: update dep graph"],["59806881","2018-04-18","Publish"],["b7dff0ea","2018-04-18","fix(rstream-graph): import path"],["6fcc2358","2018-04-18","docs: update dep graph"],["adc2fb4a","2018-04-18","Publish"],["3b7c9d97","2018-04-18","fix(transducers): add generics for compR(), fix types in mapNth()"],["4c014b18","2018-04-18","Merge pull request #17 from andrew8er/pr/compr-types"],["c26fed40","2018-04-18","docs: update dep graph"],["88283db1","2018-04-18","Publish"],["3087776e","2018-04-18","fix(rstream-log): ID handling in Logger ctor"],["08af60af","2018-04-18","refactor(rstream-log): minor update matchID()"],["de474933","2018-04-18","docs(rstream-log): fix typo"],["0de3d200","2018-04-18","docs(examples): add undo info (svg-waveform)"],["c67607b7","2018-04-18","build(examples): update dev deps"],["bb60cb9f","2018-04-18","build: update dev deps"],["b8bb801a","2018-04-17","docs: update dep graph"],["7e585e2b","2018-04-17","Publish"],["8f3a3d10","2018-04-17","feat(paths): add setInMany() and mutInMany(), add @thi.ng/api dependency"],["78b998cb","2018-04-17","docs: update dep graph"],["fbe15446","2018-04-17","Publish"],["2e32c3b9","2018-04-17","feat(examples): add instrumentation to router-basics demo"],["1a6ac54d","2018-04-17","feat(interceptors): add event handler instrumentation"],["5107dcad","2018-04-17","docs: update dep graph"],["e5185cf2","2018-04-17","Publish"],["d7ff997b","2018-04-17","fix(interceptors): filter out undefined sidefx vals"],["de89f00d","2018-04-17","fix(transducers): Provide argument types for compR() and deepTransform()"],["a9a7bfae","2018-04-16","docs: update dep graph"],["b523e9ef","2018-04-16","Publish"],["5ddb19c6","2018-04-16","feat(rstream-graph): add addNode()/removeNode()"],["8bcc2870","2018-04-16","feat(rstream): add StreamMerge/Sync.removeID() & removeAllIDs()"],["a379d12d","2018-04-16","feat(resolve-map): support relative parent refs, update tests/readme"],["e643e7fe","2018-04-16","docs: update dep graph"],["df039db1","2018-04-16","Publish"],["144f2684","2018-04-16","Merge branch 'feature/rm-refactor' into develop"],["6992e82b","2018-04-16","feat(resolve-map): resolve each ref only once, re-use resolved results"],["4c1bd85c","2018-04-16","feat(paths): add mutator() & mutIn()"],["b00b5a28","2018-04-16","docs: update dep graph"],["dbb96fe2","2018-04-16","Publish"],["56d919c0","2018-04-16","fix(rstream-graph): create null sub for ID renaming"],["f5aba033","2018-04-16","docs: update dep graph"],["17584b5d","2018-04-16","Publish"],["9a83d4ef","2018-04-16","fix(interceptors): update undo handling to support history cursors"],["b856fecc","2018-04-15","docs(associative): update readme"],["c7e760ea","2018-04-15","docs: update dep graph"],["3111409c","2018-04-15","Publish"],["df32a59e","2018-04-15","docs(rstream-gestures): update package"],["e6c75b4a","2018-04-15","refactor(rstream-log): update package structure & readme example"],["2164ddfd","2018-04-15","feat(rstream): add Subscription.transform()"],["7cf93fc5","2018-04-15","docs(rstream): update readme"],["b667c88c","2018-04-15","docs(examples): update readme"],["f39affc1","2018-04-15","docs: update main readme"],["2942d1c3","2018-04-15","docs: update dep graph"],["f2ae6d24","2018-04-15","Publish"],["1479cd1e","2018-04-15","Merge branch 'feature/rstream-graph' into develop"],["a0063992","2018-04-15","refactor(examples): simplify rstream-dataflow example"],["619b4b37","2018-04-15","feat(rstream-graph): initial import @thi.ng/rstream-graph"],["937e5025","2018-04-15","docs: update dep graph"],["e6d7882d","2018-04-15","Publish"],["9ae2e035","2018-04-15","build(examples): update project structure for router-basics/svg-waveform"],["a597e728","2018-04-15","feat(examples): add undo/redo feature to svg-waveform, update components"],["a1d9ae68","2018-04-15","refactor(interceptors): refactor undo handling"],["cf42260c","2018-04-15","feat(atom): update History.record(), add IHistory interface"],["3c92f7e6","2018-04-15","feat(interceptors): add undo/redo handlers/fx & snapshot() interceptor"],["a102eb7c","2018-04-15","feat(interceptors): add default FX_UNDO/REDO side fx"],["ba0c876d","2018-04-14","refactor(interceptors): also pass ctx to sidefx handlers"],["183af614","2018-04-14","feat(interceptors): update processQueue(), expose full ctx to handlers"],["d539b4f3","2018-04-14","docs: update dep graph"],["83be0dce","2018-04-14","Publish"],["010f32e9","2018-04-14","docs: update readme files"],["9eec054a","2018-04-14","Merge branch 'develop'"],["85f5fdd4","2018-04-14","Merge branch 'feature/rs-gestures' into develop"],["885fcf15","2018-04-14","build: update make-module script"],["3f8dbc9e","2018-04-14","refactor(examples): update rs-dataflow demo"],["de1ac7bb","2018-04-14","feat(rstream-gestures): initial import @thi.ng/rstream-gestures"],["4755212f","2018-04-14","docs: update readme's"],["7b510487","2018-04-14","build(examples): add html & webpack config"],["6198899d","2018-04-14","docs: update dep graph"],["0243b44d","2018-04-14","Publish"],["c6b3025c","2018-04-14","build: import depgraph script"],["9e98ce12","2018-04-14","refactor(examples): update svg-waveform demo"],["1b21710a","2018-04-13","feat(examples): add svg-waveform example"],["584223ca","2018-04-13","refactor(examples): rename interceptors in interceptor-basics,"],["86883e3c","2018-04-13","feat(interceptors): add ensureStateRange() & ensureParamRange() iceps"],["6da2d397","2018-04-13","docs: update dep graph"],["816950a8","2018-04-13","Publish"],["07628f67","2018-04-13","build: fix package clean tasks"],["d798cee3","2018-04-13","refactor(dgraph): regression update due to @thi.ng/associative changes"],["bfabe802","2018-04-13","feat(associative): add renameKeysMap"],["1f8af6c4","2018-04-13","refactor(associative): update EquivMap, update SortedSet, add docs"],["d1178acf","2018-04-13","perf(associative): update equiv() impls"],["76e5c853","2018-04-13","docs: update dep graph"],["f4b4067e","2018-04-13","Publish"],["26361437","2018-04-13","refactor(dgraph): update ArrayMap/Set refs"],["2f33389a","2018-04-13","docs(associative): update readme"],["87560270","2018-04-13","refactor(associative): rename EquivMap/Set => ArrayMap/Set, export interfaces"],["a7698563","2018-04-13","refactor(associative): add private impls for EquivMap/Set"],["cb4976fe","2018-04-12","feat(associative): add SortedSet, update SortedMap"],["ae0eae8e","2018-04-12","feat(associative): add SortedMap & tests, minor refactor EquivMap"],["82be16d4","2018-04-11","docs: update dep graph"],["3c1e2dd7","2018-04-11","Publish"],["52c75085","2018-04-11","feat(transducers): add run() for executing side effects only, update readme"],["5f94efa0","2018-04-10","docs: update dep graph"],["fa794a6e","2018-04-10","Publish"],["675847b8","2018-04-10","fix(dgraph): update corrupted deps"],["9b1c7bdb","2018-04-10","docs: update dep graph"],["5dd34261","2018-04-10","Publish"],["26d8ed85","2018-04-10","v0.1.0"],["efe606e1","2018-04-10","build(dgraph): update package desc"],["e7a5c93e","2018-04-10","build(associative): update package desc"],["207dd992","2018-04-10","docs: update package list main readme"],["371cd42f","2018-04-10","build(associative): update deps (dcons)"],["3e90117a","2018-04-10","Merge branch 'feature/dgraph' into develop"],["0dc9f646","2018-04-10","feat(associative): add EquivSet.first()"],["e086be6b","2018-04-10","feat(dgraph): re-import DGraph impl & tests, update readme"],["10c089a3","2018-04-10","feat(dcons): add IEmpty impl, minor refactoring"],["cc70dbce","2018-04-10","feat(associative): initial import @thi.ng/associative"],["fd27a946","2018-04-09","build: update lerna"],["69efee12","2018-04-09","docs(hdom): add authors.md"],["2357355a","2018-04-09","docs: update dep graph"],["c2cd9fbc","2018-04-09","Publish"],["2a91e302","2018-04-09","perf(hdom): intern imported checks, update normalizeTree(), add docs, fix tests"],["7e3070a2","2018-04-09","docs: update dep graph"],["d9aeed47","2018-04-09","Publish"],["b9d9a493","2018-04-09","fix(hiccup-svg): path(), update add null check for points()"],["acc9c13b","2018-04-09","refactor(examples): update router demo"],["5dfcd1ad","2018-04-08","docs: update dep graph"],["179efc44","2018-04-08","Publish"],["6f45ec6d","2018-04-08","v0.1.0"],["2458b15f","2018-04-08","docs(hiccup-svg): update readme"],["fcf1404e","2018-04-08","refactor(hiccup): remove obsolete deref check"],["4ed84eb5","2018-04-08","docs(hdom): update readme"],["a904599c","2018-04-08","docs(hdom): update/fix readme"],["d832c9d2","2018-04-08","docs(hdom): update readme & doc strings"],["3e7e0256","2018-04-08","Merge branch 'feature/hdom-context' into develop"],["905467c1","2018-04-08","refactor(examples): update cellular-automata & hdom-benchmark"],["0873832d","2018-04-08","refactor(hdom-components): update dropdown components"],["4a18e884","2018-04-08","refactor(examples): update webgl demo to use new canvas component"],["8b0d6015","2018-04-08","build: update main yarn.lock"],["7c88a3fc","2018-04-08","feat(hdom-components): update canvas handlers, add webgl2 version"],["e06e5042","2018-04-08","refactor(examples): update todo-list"],["6faa38a0","2018-04-08","refactor(examples): update webgl demo"],["1e798ce7","2018-04-08","docs: add hiccup-svg to main readme"],["7e0aeb68","2018-04-08","refactor(examples): update pointfree-svg"],["afccabdc","2018-04-08","feat(hiccup-svg): re-add svg fns as new @thi.ng/hiccup-svg package"],["86d1f0d9","2018-04-08","refactor(hdom-components): remove svg, update canvas (hdom context support)"],["a8a55a4f","2018-04-08","refactor(examples): major update router-basics (hdom context usage)"],["14b9cecc","2018-04-08","refactor(examples): update dashboard, hdom-basics & hdom-benchmark"],["70cfe06c","2018-04-08","feat(hdom): fix #13, add support for user context and pass to components"],["40d706b6","2018-04-07","feat(checks): add hasPerformance() check (performance.now)"],["d310345f","2018-04-07","feat(api): add bench() & timed() utils"],["4d79f763","2018-04-07","refactor(examples): add GestureEvent (rs-dflow)"],["c1c81bd0","2018-04-07","refactor(interceptors): update Event id type (string => PropertyKey)"],["37ba4d17","2018-04-05","refactor(examples): update rstream-dflow"],["a19f8a4d","2018-04-05","feat(examples): update rstream-dflow example"],["dccfc827","2018-04-05","docs(rstream): update readme"],["8ce73078","2018-04-05","refactor(examples): minor updates rstream-dflow"],["fce54223","2018-04-05","build(dgraph): import dgraph package stub to avoid travis build errors"],["8eb7e68c","2018-04-05","fix(examples): update GH links in html files"],["f9bfc9d7","2018-04-05","docs(hdom): update readme"],["56f4a26a","2018-04-05","docs: update dep graph"],["45c7daf4","2018-04-05","Publish"],["48310a68","2018-04-05","fix(rstream): correct wrong isString() import"],["9ab15442","2018-04-05","docs(examples): update doc strings"],["04b9c087","2018-04-05","docs(examples): update readme"],["23327874","2018-04-05","docs(examples): update rs-dflow example"],["ae27bd65","2018-04-05","refactor(examples): update rstream-dflow example"],["218150a9","2018-04-04","docs(examples): update readme, add dflow graph viz"],["72a96130","2018-04-04","feat(examples): add rstream-dataflow example"],["1eb8b12c","2018-04-04","docs: update dep graph"],["343956d3","2018-04-04","Publish"],["bffc4430","2018-04-04","fix(checks): add prototype check for isPlainObject(), add tests"],["9c91dc34","2018-04-03","fix(examples): minor update pointfree-svg example"],["9621f1b1","2018-04-03","docs: update dep graph"],["5276322a","2018-04-03","Publish"],["68727859","2018-04-03","Merge branch 'feature/pointfree-lang' into develop"],["ca5dfd3c","2018-04-03","docs(pointfree-lang): update readme"],["3310ec3d","2018-04-03","feat(pointfree-lang): implement dynamic var scoping & local var grammar"],["1c899a18","2018-04-03","refactor(pointfree-lang): rename grammar rule / nodetype MAP=>OBJ, add docs"],["5450e507","2018-04-03","fix(pointfree-lang): update grammar (parse order), add tests"],["769e84da","2018-04-03","feat(pointfree-lang): overhaul visitor quote/array & map handling, grammar"],["2101e926","2018-04-03","feat(pointfree): add math ops, update load/loadkey, update tests"],["26905f09","2018-04-02","refactor(examples): update pf svg example"],["ee684c7b","2018-04-02","feat(pointfree-lang): update grammar, aliases, ASTNode, NodeType"],["92d2d685","2018-04-01","refactor(pointfree): update/rename storeat => setat, update tests"],["68a8dba6","2018-04-01","feat(pointfree): add copy() word"],["42cc7786","2018-04-01","docs: update dep graph"],["996b5ff7","2018-04-01","Publish"],["4c7e9068","2018-04-01","docs: update all package readme's"],["cb7276e6","2018-04-01","chore: update make-module/example scripts"],["d4951f5e","2018-04-01","docs(examples): update all example readme's"],["c7521980","2018-04-01","build: add missing package descriptions, update yarn.lock"],["c2d22337","2018-04-01","Merge branch 'feature/examples-webpack' into develop"],["e2ac1852","2018-04-01","build: update dev dependencies for all packages & examples"],["bc264d39","2018-03-31","build(examples): update tsconfig for all examples"],["8273674d","2018-03-31","build(examples): update all examples to use webpack 4.4.*"],["1022ab67","2018-03-31","fix(examples): update stack comment for write-file"],["89ea6331","2018-03-31","fix(examples): update readme (pf-svg)"],["f3477690","2018-03-31","docs(pointfree-lang): update readme"],["7b5a36fd","2018-03-31","docs(examples): update example list"],["3f33b651","2018-03-31","refactor(examples): update pointfree-svg demo/readme"],["208b5c39","2018-03-31","fix(pointfree-lang): object literal grammar rule (allow initial WS)"],["910b7187","2018-03-31","feat(examples): add pointfree-svg demo"],["a0e0a0ca","2018-03-31","docs: update dep graph"],["6d836772","2018-03-31","Publish"],["659cce91","2018-03-31","fix(pointfree-lang): add ensureEnv, update re-exports, update readme"],["a0bf7810","2018-03-31","fix(pointfree): reexport ensureStack fns"],["b16c8500","2018-03-31","docs(pointfree-lang): fix readme link"],["fbb17957","2018-03-31","docs(pointfree-lang): fix grammar link"],["f2a56266","2018-03-31","docs: update main readme"],["430caf03","2018-03-31","docs: update dep graph"],["6f743ae1","2018-03-31","Publish"],["9e43405a","2018-03-31","docs: update pointfree readme's"],["32e2da0d","2018-03-31","docs: update dep graph"],["82008c38","2018-03-31","v0.1.0"],["d838610f","2018-03-31","Merge branch 'feature/pointfree-lang' into develop"],["0623df69","2018-03-31","build: add pegjs dev dependency"],["3dec35a8","2018-03-31","feat(pointfree-lang): initial import @thi.ng/pointfree-lang"],["5db90c53","2018-03-31","feat(pointfree): add caseq()"],["0da93da6","2018-03-29","docs: update dep graph"],["fdfbe425","2018-03-29","Publish"],["d47d0b36","2018-03-29","docs(pointfree): update readme"],["b096e436","2018-03-29","feat(pointfree): add more dataflow combinators, words & tests"],["c0a653b6","2018-03-29","docs(pointfree): update readme"],["9f866da4","2018-03-29","docs(pointfree): update readme"],["3dc30a8e","2018-03-29","feat(pointfree): add combinators, update controlflow words, remove execq"],["39b59677","2018-03-29","docs: update dep graph"],["6b5033f0","2018-03-29","Publish"],["6cbacec7","2018-03-29","feat(hdom-components): add svg line()"],["0baf1f8a","2018-03-29","docs(pointfree): update readme & package"],["fe1f3a3a","2018-03-29","test(pointfree): add tests"],["943b4f9c","2018-03-29","feat(pointfree): add new words, constructs, aliases, fix re-exports"],["221ece65","2018-03-29","build: update make-module/make-example scripts"],["6904d440","2018-03-28","docs: update dep graph"],["aa9439ef","2018-03-28","Publish"],["9b00a25f","2018-03-28","build: add benchmark dev dep"],["e35a2ca1","2018-03-28","build(paths): update package"],["e52b8693","2018-03-28","feat(pointfree): major update readme, package"],["0f0c382f","2018-03-28","feat(pointfree): add new words, rename words, remove mapnth, pushl2"],["10d5a347","2018-03-28","fix(pointfree): add 0-arity comp() (identity fn)"],["ba0bcc21","2018-03-27","refactor(pointfree): rename core words & change case"],["1c4cd2f3","2018-03-27","feat(pointfree): add rstack, update StackContext"],["50cc65fe","2018-03-26","build: update yarn scripts / add missing nyc dev dep"],["2b7e99b9","2018-03-26","fix(api): illegalState() creates IllegalStateError"],["1a01f9a0","2018-03-26","fix(pointfree): wordU(), add tests"],["3252554f","2018-03-26","feat(pointfree): further restructure, perf, add tests"],["a48361d6","2018-03-25","feat(pointfree): major refactor & restructure"],["d1564bb1","2018-03-25","docs(pointfree): update readme"],["79b4ce32","2018-03-25","feat(pointfree): update all words to return stack"],["f3f0bec1","2018-03-24","feat(pointfree): update word/wordU, add append(), tuple(), join()"],["06987133","2018-03-23","docs: update dep graph"],["c5bcdafa","2018-03-23","Publish"],["be9ba2fd","2018-03-23","Merge branch 'hotfix/pointfree'"],["f211c397","2018-03-23","fix(pointfree): fix readme/docs"],["51a6e500","2018-03-23","docs: update dep graph"],["0e4858c9","2018-03-23","Publish"],["15ffd34d","2018-03-23","test(pointfree): add tests"],["6cac0c7d","2018-03-23","feat(pointfree): support data vals in program, add collect(), update readme"],["f75486d4","2018-03-23","feat(pointfree): add unwrap, quatations, math/bitops, array/obj access"],["884a8bfa","2018-03-23","docs: update main readme/depgraph"],["e635dafd","2018-03-23","Merge branch 'feature/pointfree' into develop"],["4d4e5e1b","2018-03-23","v0.1.0"],["6aef8807","2018-03-23","build(pointfree): update package info"],["58f5716c","2018-03-23","feat(pointfree): add dropIf, neg, nop, update cond,condM, add docs/readme"],["25bbf05c","2018-03-22","feat(pointfree): initial import of refactored @thi.ng/pointfree package"],["92e4ff8f","2018-03-21","docs: update main readme"],["b153067c","2018-03-21","docs: update dep graph"],["fb42cb5a","2018-03-21","Publish"],["218c2304","2018-03-21","Merge branch 'feature/iwatch' into develop"],["ca099e57","2018-03-21","refactor(transducers): update error handling"],["8a3e72ee","2018-03-21","feat(rstream-log): update error handling, add @thi.ng/api dep"],["1ce7054f","2018-03-21","feat(rstream): update error handling, add @thi.ng/api dep"],["adc559ae","2018-03-21","refactor(router): update error handling"],["9316a6ca","2018-03-21","feat(iterators): update error handling, add @thi.ng/api dep"],["501d56f8","2018-03-21","feat(interceptors): update error handling, add @thi.ng/api dep"],["0cfc2270","2018-03-21","refactor(hiccup-css): update error handling"],["a3238abf","2018-03-21","feat(hiccup): update error handling, add @thi.ng/api dep"],["f5173f1d","2018-03-21","feat(hdom): update error handling, add @thi.ng/api dep"],["a046b285","2018-03-21","refactor(dcons): update error handling"],["5087ffe3","2018-03-21","refactor(cso): update error handling"],["0fc10388","2018-03-21","feat(bitstream): update error handling, add @thi.ng/atom dep"],["ea7b1752","2018-03-21","refactor(atom): update error handling"],["4d3785f9","2018-03-21","feat(api): add error types & ctor fns"],["d93940a4","2018-03-21","feat(atom): consider parent validators in History update fns"],["3b1d563a","2018-03-21","feat(atom): add CursorOpts and cursor validation, update ctor, add tests"],["bae1647c","2018-03-21","feat(atom): add optional validation predicate for Atom, add tests"],["47643f96","2018-03-21","test(api): add INotify tests"],["b3287808","2018-03-21","refactor(router): update INotify dummy impl"],["fbb19acd","2018-03-21","refactor(api): update mixins, IEnable / INotify return types"],["0d67e73e","2018-03-21","build: limit travis build branches"],["96bb0198","2018-03-21","docs: update dep graph"],["b2778585","2018-03-21","Publish"],["2a1264a2","2018-03-21","refactor(rstream-log): update Logger ctor arg handling"],["e58c5e01","2018-03-21","Merge branch 'feature/rstream-refactor' into develop"],["deb59a15","2018-03-21","docs(rstream): update readme, add dataflow example"],["276ede6a","2018-03-20","docs(rstream): update readme"],["907d5995","2018-03-20","feat(rstream): add IDeref impl for Subscription"],["1fee7d5c","2018-03-20","feat(rstream): add merge()/sync() ctor wrappers"],["eec56dec","2018-03-20","feat(rstream): add transduce(), update re-exports"],["42b343aa","2018-03-20","test(rstream): add StreamSync & Subscription tests"],["26f15b23","2018-03-20","refactor(rstream): simplify unsubscribe() logic"],["a1c58418","2018-03-20","docs(rstream): add Cache deprecation docstring"],["6b87bca4","2018-03-20","feat(rstream): Subscription stores last value and passes to new subs"],["ebe222c9","2018-03-20","refactor(rstream): update & StreamMerge/SyncOpts, minor fixes StreamSync"],["80264093","2018-03-20","feat(rstream): fix #6 update StreamMerge to support transduced input streams"],["db61b0bd","2018-03-20","test(rstream): add/update sidechain* tests"],["d18a1158","2018-03-20","feat(rstream): update Sidechain*.next(), add unsubscribe()"],["7dce160c","2018-03-20","minor(rstream): fromPromise()"],["41bb385f","2018-03-20","feat(rstream): add fromView(), update fromAtom() docs, update re-exports"],["01a751e2","2018-03-20","feat(rstream): update Subscription.unsubscribe()"],["2ad2f485","2018-03-20","fix(rstream): bisect() add downstream impl checks, add tests"],["6f5ec040","2018-03-20","test(rstream): remove obsolete fromPromise error test case"],["47b6a924","2018-03-20","refactor(rstream): simplify Subscription, update all impls"],["64c16255","2018-03-19","Merge branch 'develop' into feature/rstream-refactor"],["5bf5ce61","2018-03-19","docs: update dep graph"],["1c5d96f7","2018-03-19","Publish"],["ff802a45","2018-03-19","refactor(rstream): simplify StreamMerge source handling"],["f7029efd","2018-03-19","refactor(rstream): minor cleanup/perf StreamSync"],["791a993f","2018-03-19","feat(rstream): add StreamSync"],["c7364334","2018-03-19","refactor(rstream): add/update Stream ctor arities"],["abc195a4","2018-03-19","feat(transducers): add mapVals() xform"],["3bc8d54a","2018-03-19","refactor(transducers): update labeled(), mapIndexed(), partition()"],["bebd1186","2018-03-19","feat(transducers): add partitionSync() xform"],["627dd7a4","2018-03-19","docs: update dep graph"],["b316114f","2018-03-19","Publish"],["76c5e0a4","2018-03-19","fix(interceptors): InterceptorPredicate args"],["dbb046e8","2018-03-18","docs: update dep graph"],["a69b5141","2018-03-18","Publish"],["c0ec2745","2018-03-18","feat(atom): add optional support for eager views, update tests/readme"],["f295a475","2018-03-18","build(examples): update all @thi.ng deps to use \"latest\""],["4e91374b","2018-03-18","docs: update dep graph"],["6b92bf67","2018-03-18","Publish"],["eaeccf47","2018-03-18","fix(paths): fix setter fast paths"],["e022cdf0","2018-03-18","docs: update dep graph"],["8cee5b5f","2018-03-18","Publish"],["92f0e27e","2018-03-18","fix(paths): fix setIn fast paths for path length 3/4"],["2376e02f","2018-03-18","build: fix changelogs for atom/interceptors/paths"],["4c0212fb","2018-03-18","docs(resolve-map): fix link in readme"],["b6a8da58","2018-03-18","build(examples): update deps & imports for all examples"],["2c1a85bc","2018-03-17","docs: update dep graph"],["c3cac0c0","2018-03-17","Publish"],["1e7ef2b6","2018-03-17","build: fix atom deps in downstream packages"],["8281609c","2018-03-17","minor(atom): fix typo in package"],["a41a208e","2018-03-17","v1.0.0"],["9a1cc521","2018-03-17","docs: update dep graph"],["c0c3e64c","2018-03-17","v1.0.0"],["0d13982c","2018-03-17","v0.1.0"],["95f6b392","2018-03-17","Merge branch 'feature/lazymap' into develop"],["d34bd146","2018-03-17","build: update make-module script (deps)"],["e1cf4aba","2018-03-17","docs(interceptors): update readme"],["9a651cd9","2018-03-17","docs(atom): update readme"],["1273efbd","2018-03-17","refactor(atom): extract @thi.ng/paths & @thi.ng/interceptors functionality"],["763ea89f","2018-03-17","docs: update package list in main readme"],["195a6ffd","2018-03-17","feat(interceptors): add/extract @thi.ng/interceptors package from @thi.ng/atom"],["422c2c4e","2018-03-17","feat(resolve-map): add @thi.ng/resolve-map package"],["f9f6eb1e","2018-03-17","feat(paths): add/extract @thi.ng/paths from @thi.ng/atom"],["d3d66436","2018-03-16","refactor(examples): update router-basics"],["f1bc74d2","2018-03-16","docs: update readme files (add create-hdom-app instructions)"],["8596cd07","2018-03-16","docs: update dep graph"],["6383233e","2018-03-16","Publish"],["357c46e0","2018-03-16","feat(atom): add forwardSideFx() interceptor"],["e52e7e51","2018-03-16","feat(atom): add FX_FETCH & FX_DELAY sidefx impl, update docs"],["6378eb0b","2018-03-15","fix(examples): re-add html"],["633093ea","2018-03-15","refactor(examples): update router-basics (create-hdom-app tpl)"],["6deb4e33","2018-03-14","build(examples): update hdom deps"],["c0432cb4","2018-03-14","docs: update dep graph"],["fff77886","2018-03-14","Publish"],["3a0e97d2","2018-03-14","test(hdom): add tests, update package"],["25d0c309","2018-03-14","test(hiccup): add deref tests"],["14356895","2018-03-14","Merge branch 'feature/hdom-deref' into develop"],["c85b1f81","2018-03-14","refactor(examples): remove obsolete .deref() calls"],["93343d63","2018-03-14","feat(hiccup): support fn values in style objects"],["28b0b578","2018-03-14","refactor(hdom): disable deref() for attrib objects"],["de839e89","2018-03-14","refactor(hiccup): disable deref() for attrib objects"],["0fe6c44c","2018-03-14","feat(hdom): add auto deref() support"],["0d2c16fc","2018-03-14","feat(hiccup): add auto deref() support"],["2351240d","2018-03-14","minor(examples): typo"],["c5cee483","2018-03-12","minor(examples): readme"],["15acdb5c","2018-03-12","minor(examples): typos"],["ee118999","2018-03-12","docs(examples): update readme"],["8eb0a610","2018-03-12","docs(examples): add README for example dir"],["fc61aae6","2018-03-12","minor(examples): add filesize info"],["777b1b05","2018-03-11","refactor(examples): more stateless components, add docs"],["49008ccf","2018-03-11","docs(examples): update readme"],["eb73ae93","2018-03-11","refactor(examples): update router demo"],["5b412e7d","2018-03-11","docs: update dep graph"],["a9b09f16","2018-03-11","Publish"],["10ea19f5","2018-03-11","docs(atom): update readme & doc strings"],["0ca0bf3e","2018-03-11","fix(atom): ignore side fx with null values"],["5e8cbc98","2018-03-11","docs: update dep graph"],["e62dace5","2018-03-11","Publish"],["bd8c8b1e","2018-03-11","Merge branch 'feature/router' into develop"],["eac0e96f","2018-03-11","docs(router): update readme & package"],["71b19a43","2018-03-10","feat(examples): major update router example app"],["d8b8d978","2018-03-10","docs: add router package links to main readme"],["51b02e2b","2018-03-10","feat(examples): add router-basics demo"],["07b4e060","2018-03-10","feat(router): re-import router package (MBP2010), minor refactor & fixes"],["019943e2","2018-03-09","docs: update dep graph"],["95d6a4e2","2018-03-09","Publish"],["c7e69def","2018-03-09","refactor(examples): minor updates"],["3fae2496","2018-03-09","feat(atom): add/extract StatelessEventBus"],["667691ce","2018-03-09","feat(atom): update EventBus ctor, add deref()"],["59085e0c","2018-03-09","fix(atom): add interceptors to re-exports"],["9b3d91e5","2018-03-09","feat(atom): add IRelease impls"],["3bf9fbaa","2018-03-09","docs(atom): update all doc strings"],["e96cc991","2018-03-09","refactor(atom): minor update event bus, add/update docs"],["15ae0643","2018-03-09","docs: update dep graph"],["a26e25cf","2018-03-09","Publish"],["a48b7762","2018-03-08","refactor(examples): update async-effect"],["4d7613d8","2018-03-08","refactor(examples): update interceptor-basics"],["fb9b19c4","2018-03-08","docs(atom): minor update View docs"],["359c4f5a","2018-03-08","feat(atom): add valueSetter/Updater() interceptors"],["443875c8","2018-03-08","refactor(atom): update InterceptorFn handling"],["1fd43d7c","2018-03-08","feat(atom): add default handlers, add/rename event/fx const values, add checks"],["c5d5ed56","2018-03-08","build(examples): update all deps"],["89a0b20d","2018-03-08","docs: update dep graph"],["f018fb12","2018-03-08","Publish"],["cb9c808e","2018-03-08","Merge branch 'feature/atom-async-dispatch' into develop"],["a6beda9d","2018-03-08","refactor(examples): update async & interceptor demos"],["3303c3b4","2018-03-08","docs(atom): update readme"],["56866e07","2018-03-08","feat(atom): add async dispatch effect, update event bus & api types"],["9900e991","2018-03-08","feat(checks): add isPromise() & isPromiseLike()"],["fb4f3095","2018-03-08","docs: update dep graph"],["99a87e6a","2018-03-08","Publish"],["52fff093","2018-03-08","docs(examples): update async readme & html"],["c9794acb","2018-03-07","feat(examples): add async fx example"],["9e5239bc","2018-03-07","fix(atom): add EventBus to module re-exports, minor cleanup"],["5b21c147","2018-03-07","build(examples): update interceptor deps"],["7dcfce05","2018-03-07","refactor(examples): update interceptor example"],["85e04957","2018-03-07","docs: update dep graph"],["851efd23","2018-03-07","Publish"],["1adb703a","2018-03-07","refactor(examples): update interceptor example"],["1ab803aa","2018-03-07","refactor(atom): update InterceptorFn, ensureXXX(), update deps, add docs"],["eec7bc4c","2018-03-07","docs: update dep graph"],["b877a069","2018-03-07","Publish"],["fb74b8a7","2018-03-07","Merge branch 'feature/iceps' into develop"],["4958606b","2018-03-07","feat(examples): add interceptors example"],["a0d662bb","2018-03-07","build(atom): add @thi.ng/dcons dep"],["e01bf733","2018-03-07","feat(atom): re-add refactored EventBus & interceptor handling"],["be46af3f","2018-03-06","feat(examples): add svg viz to devcards demo"],["79245a35","2018-03-05","minor(examples): typos"],["f40143be","2018-03-05","fix(examples): add/update devcard links"],["8019df82","2018-03-05","build(examples): add missing html/webpack files, update deps"],["9becd43d","2018-03-05","Merge branch 'master' of github.com:thi-ng/umbrella"],["58e75591","2018-03-05","docs: update dep graph"],["f38885de","2018-03-05","Publish"],["df4e98fb","2018-03-05","Merge branch 'feature/ex-mstates' into develop"],["1041d90c","2018-03-05","feat(examples): add devcards example"],["a200beb8","2018-03-05","feat(hdom): add support for frame skipping, add docs"],["a7e61a4e","2018-03-05","feat(atom): update IAtom, add resetIn() & swapIn() impls"],["17a11710","2018-03-05","Merge branch 'feature/hcss-refactor' into develop"],["22bc29c9","2018-03-05","docs(hiccup-css): add doc strings for attrib fns"],["721583a7","2018-03-05","refactor(hiccup-css): internal restructure"],["34d699fc","2018-03-05","chore: update issue tpl instructions"],["dd09f0bf","2018-03-05","docs: update dep graph"],["203a3a6e","2018-03-05","Publish"],["2e3942ac","2018-03-05","docs(hiccup-css): add doc strings, update readme"],["105bbf4e","2018-03-05","perf(hiccup-css): no empty Set() creation, change type check order in css()"],["870da99d","2018-03-05","docs: update readme"],["0c23d2b6","2018-03-05","docs: update dep graph"],["1e08ce24","2018-03-05","v0.1.0"],["69036ad1","2018-03-05","minor(hiccup-css): update package desc"],["5d946cb0","2018-03-05","Merge branch 'develop'"],["d6f8b066","2018-03-05","Merge branch 'feature/hiccup-css' into develop"],["8a665313","2018-03-05","build(hiccup-dom): update ignore files"],["bafb533e","2018-03-05","docs(hiccup-css): update readme"],["24983d37","2018-03-05","test(hiccup-css): update tests"],["0f416efe","2018-03-05","feat(hiccup-css): add comment() indentation support"],["f3190fff","2018-03-05","fix(hiccup-css): fn & auto-prefix handling"],["787d0aba","2018-03-05","feat(hiccup-css): add more unit types, update px/ms"],["02bff871","2018-03-05","feat(hiccup-css): add support for iterators as arg type to css()"],["cbb9b7f0","2018-03-04","test(hiccup-css): add/update tests"],["a6231172","2018-03-04","refactor(hiccup-css): format @keyframe stops, rename perc() => percent()"],["e347c292","2018-03-04","fix(hiccup-css): @import query separator"],["57533c76","2018-03-04","feat(hiccup-css): update conditional handling, add formatCond()"],["428de3c7","2018-03-04","feat(hiccup-css): update fn handling, add iterator support, units, comment"],["bdc63496","2018-03-04","minor: fix typos"],["c20f2df6","2018-03-04","Create CONTRIBUTING.md"],["6de6b279","2018-03-03","perf(hiccup-dom): minor optimizations"],["ebbc4910","2018-03-03","feat(hiccup-css): add attrib fn, at-rules, quoted fns, decl value arrays"],["e687230c","2018-03-03","feat(hiccup-css): add default vendor prefixes"],["a53d2a5f","2018-03-03","feat(hiccup-css): add keyframes(), split module into separate src files"],["d837199d","2018-03-03","feat(hiccup-css): add CSSOpts, mediaQuery(), fn expansion"],["5247b8f4","2018-03-03","feat(hiccup-css): add/fix class handling, update Format"],["3a4cf1e6","2018-03-03","feat(hiccup-css): add package @thi.ng/hiccup-css"],["92fb7b07","2018-03-03","chore(examples): update links in html files"],["b6d350b3","2018-03-03","docs: update dep graph"],["6c628213","2018-03-03","docs(hdom): fix diagram link"],["db98e5e5","2018-03-03","chore: update make-example"],["2f5f0b2e","2018-03-03","build(examples): update all example deps"],["45291b3d","2018-03-03","Publish"],["9099607d","2018-03-03","docs: update readme's"],["752a78bb","2018-03-03","feat(hdom-components): rename package hiccup-dom-component => hdom-components"],["79e1b097","2018-03-03","docs(hdom): update readme"],["f1c53150","2018-03-03","refactor(hdom): rename package hiccup-dom => hdom"],["ae47c4db","2018-03-03","docs: update dep graph"],["e405ebdf","2018-03-03","Publish"],["8c180bc6","2018-03-03","refactor(transducers): extract compR() into its own file, update refs, update readme"],["2f5abce3","2018-03-02","refactor(transducers): update swizzler() arg types"],["488462e1","2018-03-02","refactor(transducers): update permutations()/permutationsN(), add tests"],["91938ede","2018-03-02","feat(transducers): add permutations()/permutationsN() generators"],["aa042602","2018-03-02","docs: update dep graph"],["3d8a6d3c","2018-03-02","Publish"],["2316d4d1","2018-03-02","test(transducers): add flatten() tests"],["3d8aa324","2018-03-02","fix(transducers): flattenWith()"],["befaceb0","2018-03-01","docs(atom): update readme example"],["3dcc3cb8","2018-03-01","docs(atom): update example"],["dd665920","2018-03-01","feat(examples): add login-form demo to illustrate state handling"],["118cf92f","2018-03-01","docs: update dep graph"],["1f61f49d","2018-03-01","Publish"],["ae7c7f5d","2018-03-01","docs(atom): update readme, add View examples"],["3e55a058","2018-03-01","fix(atom): re-export api.ts"],["341255c9","2018-03-01","refactor(atom): include `path` in IView"],["0206f339","2018-03-01","docs: update dep graph"],["5308cab5","2018-03-01","Publish"],["a0ce6e76","2018-03-01","refactor(atom): update Path type references"],["9ad83b27","2018-03-01","feat(atom): add IView, IViewable, impl for Atom, Cursor, History"],["1fa829d6","2018-03-01","test(atom): add/update tests"],["8c0c621c","2018-03-01","feat(atom): add View type to create derrived views/value subscriptions"],["55c6a7d5","2018-03-01","perf(atom): add optimized setter() for path len < 5, fix toPath()"],["ed23376d","2018-03-01","perf(atom): add optimized getters for path len < 5"],["ff21d9f4","2018-02-28","docs: update dep graph"],["6779def4","2018-02-28","Publish"],["a86b6775","2018-02-28","docs(hiccup-dom): fix readme link"],["ca17389c","2018-02-28","feat(hiccup-dom): add support for function attribs, add docs"],["050a5656","2018-02-28","docs(hiccup-dom): update initial readme example"],["c7e2f816","2018-02-27","Merge branch 'master' of github.com:thi-ng/umbrella"],["eafc5dd6","2018-02-27","build(examples): update deps"],["4a8feffc","2018-02-27","docs(hiccup-dom): fix #7, update readme"],["61e87665","2018-02-27","docs(hiccup-dom): update readme"],["9593fd13","2018-02-27","docs: update dep graph"],["b8a6e1af","2018-02-27","Publish"],["70720a37","2018-02-27","refactor(examples): minor updates"],["8a070ff2","2018-02-27","feat(hiccup-dom): start(), add optional spans arg"],["9b2c1606","2018-02-27","minor(hiccup-dom): update arg types"],["f5b66753","2018-02-27","feat(hiccup-dom): fix #11, update normalizeTree/normalizeElement"],["6e0dfa1d","2018-02-27","feat(diff): update diffArray, generic types"],["621868b4","2018-02-26","docs: update dep graph"],["9ff8c0af","2018-02-26","Publish"],["45d63858","2018-02-26","refactor(hiccup): sort void tags"],["9824844a","2018-02-26","feat(transducers): add keys()/vals() iterators, refactor pairs()"],["061c9088","2018-02-26","Merge pull request #12 from jarvismartin/minor-fix"],["f6143eb7","2018-02-25","Merge branch 'master' of github.com:thi-ng/umbrella into minor-fix"],["c34271f7","2018-02-24","docs: update dep graph"],["1b16d920","2018-02-24","Publish"],["44f33dfc","2018-02-24","feat(hiccup): add support for more SVG tags (66 total)"],["214fe4d0","2018-02-23","feat(hiccup-dom-components): add gradient, group, path SVG funcs"],["8180e149","2018-02-23","spelling fix"],["68d9f838","2018-02-23","Merge branch 'master' of github.com:thi-ng/umbrella"],["ca68a978","2018-02-23","minor grammar fix"],["b3891d52","2018-02-23","refactor(examples): simplify json-components"],["1834f812","2018-02-23","docs: update dep graph"],["8a620583","2018-02-23","Publish"],["2a11ff6f","2018-02-23","refactor(transducers): add TransformSubSpec, fix test, minor update docs"],["223669b1","2018-02-23","test(transducers): add tests"],["f0fdfa10","2018-02-23","feat(transducers): add deepTransform & mapDeep xform"],["65f794f6","2018-02-19","build: add .gitignore gen for make-example script"],["f7c6e0c9","2018-02-19","Merge pull request #10 from jarvismartin/example-gitignores"],["955eecc4","2018-02-19","add .gitignore files to examples"],["e1f87d6b","2018-02-19","fix(examples): update packages & readme's (fix #9), deps in make-example"],["c2123e58","2018-02-19","Merge pull request #9 from jarvismartin/examples-work-on-debian"],["31a4710a","2018-02-19","build(examples): update CA deps (transducers)"],["9b664d25","2018-02-19","refactor(examples): simplify CA transducers, update rule format/handling"],["2c2030d2","2018-02-19","docs: update dep graph"],["afa74728","2018-02-19","Publish"],["193058d5","2018-02-19","feat(transducers): add lookup1d/2d/3d helpers, update re-exports"],["813b2cac","2018-02-19","make examples work on Debian systems"],["77c95322","2018-02-19","refactor(examples): update webgl demo"],["73dd1dc5","2018-02-19","docs: update dep graph"],["9c8e877a","2018-02-19","build(examples): update CA deps"],["7f8c6cd0","2018-02-19","Publish"],["3627087b","2018-02-19","docs: add hiccup-dom-components to main readme"],["ac831234","2018-02-19","build(hiccup-dom-components): add missing deps"],["9fe096a3","2018-02-19","build: update yarn.lock"],["2394396e","2018-02-19","feat(examples): add CA presets, refactor rule handling"],["511c4980","2018-02-19","feat(hiccup-dom-components): initial import"],["df93af6d","2018-02-18","feat(examples): add randomize buttons (CA)"],["fde83d59","2018-02-18","build(examples): update example deps"],["b8c03743","2018-02-18","docs: update dep graph"],["06830ce6","2018-02-18","Publish"],["69b3c6a4","2018-02-18","docs: update readme files"],["074f94ff","2018-02-18","build: update deps"],["5a728cb9","2018-02-18","refactor(rstream-log): update Logger ctor due to changes in StreamMerge"],["4942e2ea","2018-02-18","feat(rstream): fix #8, support infinite StreamMerge's, update ctor"],["ca1caae5","2018-02-18","refactor(rstream): don't throw in unsubscribe() if no parent"],["5c106cfa","2018-02-18","docs(examples): add more CA config links"],["d6d3310d","2018-02-18","feat(examples): add cellular automata example"],["d023bd5f","2018-02-18","chore(transducers): update re-exports, readme"],["ab8a8558","2018-02-18","feat(transducers): add convolve2d xform & types"],["d7b1d0df","2018-02-18","feat(transducers): add movingMedian() xform"],["48f8bb85","2018-02-18","fix(transducers): update imports `step()`"],["63a49530","2018-02-18","refactor(transducers): add/update range2d/range3d arity handling"],["e71a4c90","2018-02-17","docs(atom): update readme"],["2e34f389","2018-02-17","refactor(atom): update history reset/swap, record before applying val"],["b593a9b9","2018-02-17","feat(atom): add deleteIn()"],["fbc819ed","2018-02-17","fix(atom): empty path handling getter/setter"],["7d50c1ca","2018-02-17","refactor(examples): simplify todo atom handling"],["b5ee8e45","2018-02-17","refactor(atom): use @thi.ng/api/equiv as default History predicate"],["398c32af","2018-02-17","refactor(atom): don't mutate getter/setter path args, update updateIn"],["6f6e7e5b","2018-02-17","feat(atom): add getIn/setIn/updateIn"],["d38f47e0","2018-02-16","test(transducers): add range2d tests"],["722042b1","2018-02-16","feat(transducers): add range2d / range3d generators"],["47d5df09","2018-02-15","chore: update issue tpl"],["c9ec713f","2018-02-15","Create issue_template.md"],["4d1de860","2018-02-08","docs: update dep graph"],["3fc88b25","2018-02-08","Publish"],["445c8575","2018-02-08","refactor(transducers): re-use even/odd from @thi.ng/checks"],["68f8fc23","2018-02-08","feat(checks): add new predicates, refactor existing"],["080c2ee5","2018-02-07","fix(csp): fix #5, more example fixes (rfn calls)"],["a10a487c","2018-02-07","fix(csp): fix #5, example in readme"],["972a23e1","2018-02-05","style: update const/let assignments"],["623bc492","2018-02-05","refactor(examples): update webgl demo"],["5281d9a8","2018-02-05","feat(examples): add webgl example"],["eb12a165","2018-02-04","build: update upload-docs script"],["3ee6755f","2018-02-04","fix(examples): minor fixes index.html"],["855d8039","2018-02-04","feat(transducers): add page() xform, update readme"],["596ed7a2","2018-02-04","docs: update dep graph"],["17e447f6","2018-02-04","Publish"],["1f4f4b8c","2018-02-04","fix(hiccup-dom): support parent DOM ID as arg start()"],["d8fea714","2018-02-03","docs: update dep graph"],["3daf7962","2018-02-03","Publish"],["4edf45fc","2018-02-03","fix(hiccup-dom): fix #3, update start() to be cancellable, add docs"],["ae34f077","2018-02-03","docs(hiccup-dom): fix readme link"],["b6d95fbe","2018-02-03","feat(examples): add json demo theme support, update docs"],["83cd1a21","2018-02-03","refactor(examples): minor update json-components"],["edfaa6bd","2018-02-03","build(examples): update deps"],["07da7cca","2018-02-03","docs: update dep graph"],["c3b54f98","2018-02-03","Publish"],["b524145b","2018-02-03","feat(examples): add reactive json editor component"],["10c119b2","2018-02-03","refactor(hiccup-dom): minor update ILifeCycle"],["944cbb3b","2018-02-03","fix(hiccup-dom): add NO_SPANS config"],["d8fa4cae","2018-02-03","fix(examples): update index.html"],["d5460b70","2018-02-03","docs(hiccup-dom): update readme"],["5d8478e1","2018-02-03","fix(examples): add missing files"],["3156e888","2018-02-03","fix(examples): update deps"],["2e4e51c5","2018-02-03","feat(examples): add json component demo"],["f30579ce","2018-02-03","Merge branch 'master' of github.com:thi-ng/umbrella"],["adb04f07","2018-02-03","merge with #2"],["c09bb89d","2018-02-03","docs(hiccup-dom): add svg example links"],["aa48d3be","2018-02-03","feat(examples): add svg particles demo"],["1b007e69","2018-02-03","Merge pull request #2 from forresto/patch-1"],["7ae6af3b","2018-02-02","Is c 3 here?"],["96004efe","2018-02-03","docs(atom): fix readme example"],["8ebc6242","2018-02-03","docs(atom): update readme"],["ad62c56f","2018-02-03","build(examples): update deps"],["5aed12b6","2018-02-03","docs: update dep graph"],["99a943ac","2018-02-03","Publish"],["8106d16f","2018-02-02","build: update main package build commands, update make-example script, readme"],["309c7d7c","2018-02-02","build(examples): update example build commands"],["29267799","2018-02-02","refactor(examples): update event attribs"],["7cc5c93a","2018-02-02","refactor(hiccup-dom): update event attrib naming convention, update readme"],["7ae706eb","2018-02-02","feat(hiccup): skip fn exec for event attribs, update tests, readme"],["ab7154a8","2018-02-02","docs(hiccup-dom): update readme"],["38699b96","2018-02-02","docs(hiccup-dom): add diagram"],["62af1537","2018-02-02","docs: update dep graph"],["ec0132c6","2018-02-02","Publish"],["d134d5b7","2018-02-02","refactor(hiccup-dom): add interfaces (still unused)"],["324d2fa2","2018-02-02","docs(examples): add benchmark docs"],["448e8396","2018-02-02","perf(diff): add fail fasts"],["98485760","2018-02-02","refactor(checks): isPlainObject()"],["110a9deb","2018-02-02","fix(api): update compare() & equiv()"],["0f57ff90","2018-02-02","docs(atom): update readme, add history example"],["10d9ecbf","2018-02-02","docs(hiccup-dom): fix example link"],["17b43036","2018-02-02","docs(hiccup-dom): update readme"],["d573bc53","2018-02-02","docs: update hiccup* readme files"],["7cfca0d8","2018-02-02","docs: update main readme"],["e4f8fe16","2018-02-02","docs(hiccup-dom): update readme"],["c2fed170","2018-02-02","feat(examples): add hdom-basics example"],["5e6eb832","2018-02-02","chore: add make-example script"],["e69774df","2018-02-02","fix(examples): benchmark"],["e939586a","2018-02-02","feat(examples): add hdom benchmark"],["0a41be9e","2018-02-01","docs: fix readme"],["afb869b0","2018-02-01","docs: add/update readme files"],["d52630c6","2018-02-01","docs: update dep graph"],["10a4f910","2018-02-01","Publish"],["12590847","2018-02-01","docs: update dep graph"],["24ea4ca9","2018-02-01","docs: update readme files"],["25c9f785","2018-02-01","feat(atom,hiccup-dom): add example projects (todo list & dashboard)"],["1f6bb589","2018-02-01","fix(hiccup-dom): boolean attribs"],["8218814f","2018-02-01","fix(atom): truncate redo stack in record(), swap() return type"],["c5b6e0fa","2018-02-01","feat(atom): add History.canUndo/Redo()"],["36cc9561","2018-02-01","fix(atom): cursor swap() return type"],["094e4869","2018-02-01","docs(hiccup-dom): fix links in readme"],["d373cab1","2018-02-01","docs: update main readme"],["00ad5d84","2018-02-01","docs: update dep graph"],["794b1fd5","2018-02-01","Publish"],["326d3c31","2018-02-01","build: update .npmignore"],["3101698d","2018-02-01","feat(hiccup-dom): add start(), update readme"],["beebe435","2018-02-01","chore: update keywords for all packages"],["5d7c10a3","2018-02-01","test(rstream): fix tests (TS 2.7.*)"],["4cc4bbc0","2018-02-01","build: cleanup/update deps"],["30ffd009","2018-02-01","feat(hiccup-dom): re-import package (MBP2010)"],["4d0d437b","2018-02-01","feat(diff): re-import diff package (MBP2010)"],["0439d24b","2018-02-01","refactor(hiccup): update/add deps, restructure/split into sub-modules"],["febe39f1","2018-02-01","fix(transducers): update comp() for typescript 2.7.*"],["a580f722","2018-02-01","build: update deps (typescript & typedoc)"],["ea638bef","2018-02-01","feat(rstream): add Cache subscription class"],["1354e298","2018-02-01","fix(api): fix equiv string handling, update tests"],["878520e6","2018-02-01","feat(api): update equiv() null handling, add tests"],["03c1d97a","2018-01-31","docs: update dep graph"],["5a3c0cce","2018-01-31","Publish"],["59d2a8a1","2018-01-31","docs(rstream): add undo/redo example to readme"],["54cd5261","2018-01-31","fix(rstream): subscription unhandled error handling"],["4c703cd4","2018-01-31","docs: update dep graph"],["92a923cf","2018-01-31","Publish"],["365e0d2b","2018-01-31","build: update main package commands"],["d58cf70d","2018-01-31","feat(rstream): add changed predicate for fromAtom(), add tests"],["dd155dfd","2018-01-31","docs(atom): add docs for getter/setter"],["55383621","2018-01-31","feat(atom): add full IAtom impl for History, update tests"],["4753afb8","2018-01-31","refactor(transducers): use Predicate2"],["79989e52","2018-01-31","refactor(dcons): use Predicate"],["42bbb864","2018-01-31","refactor(iterators): use Predicate/Predicate2"],["fbf8453c","2018-01-31","feat(api): add Predicate2 & StatefulPredicate2 types"],["b180917c","2018-01-31","docs: update dep graph"],["2746e8b3","2018-01-31","Publish"],["911ff183","2018-01-31","test(atom): add/update tests"],["e1b57dea","2018-01-31","feat(atom): add IReset/ISwap impls for History"],["282d9896","2018-01-31","fix(atom): cursor ctor arg checks"],["74ecdf18","2018-01-31","refactor(atom): extract IReset, ISwap from IAtom"],["035c51a3","2018-01-31","feat(atom): add History, add/update tests"],["2c88537e","2018-01-30","fix: links in readme"],["bbbc869c","2018-01-30","deploy: add upload-docs script"],["dee5f53c","2018-01-30","docs: update readme"],["da037723","2018-01-30","docs: update dep graph"],["95c728e0","2018-01-30","Publish"],["7f345bcc","2018-01-30","chore: update make-module"],["22b02a2d","2018-01-29","build: add main package commands, update readme"],["768f2ea7","2018-01-29","chore: update ignore files"],["0b5ca037","2018-01-29","build: add nyc coverage dev deps & commands"],["dc0958b7","2018-01-29","chore: update ignore files"],["c863018c","2018-01-29","test(iterator): add/update tests"],["f6530225","2018-01-29","docs: update dep graph"],["a508b05e","2018-01-29","Publish"],["4c242c93","2018-01-29","test(rstream): remove sidechainPartition interval test due to unpredictable timing"],["382aa05e","2018-01-29","fix(rstream): fatal recursion w/ error handling"],["1a0004f7","2018-01-29","test(rstream): increase timeout for travis"],["7bdc5617","2018-01-29","docs(iterators): update readme"],["651d07c0","2018-01-29","refactor(iterators): remove default exports"],["1e9dc852","2018-01-29","docs: add links for badges"],["925645ae","2018-01-29","docs: add travis badge"],["2d42787c","2018-01-29","build: update travis.yml"],["dfbd7efe","2018-01-29","docs(transducers): update padLast docs"],["e6477679","2018-01-29","test: add travis.yml, update main package / readme"],["9c2db625","2018-01-29","chore: update make-module script"],["6a125e83","2018-01-29","test: add test stubs, fix existing"],["b952a357","2018-01-29","build: update/fix all tsconfig files"],["85b280bf","2018-01-29","build: update commands in all packages"],["94333dfd","2018-01-29","test(atom): add/update tests"],["17d5c999","2018-01-29","docs: update dep graph"],["83b6e1a1","2018-01-29","Publish"],["5dce8a2f","2018-01-29","feat(atom): add nested path getter / setter compilers"],["1ae5f635","2018-01-29","docs: update dep graph"],["1ef8b45d","2018-01-29","Publish"],["b526376c","2018-01-29","docs: update readme"],["71c40ad0","2018-01-29","docs: update readme"],["ccd8e820","2018-01-29","test(rstream): update tests (fromPromise())"],["822b297f","2018-01-29","fix(rstream): fix #1 update fromPromise(), add test"],["33b3e16c","2018-01-29","chore: update package cmds & make-module script"],["1abd3cd1","2018-01-29","chore: add license files"],["0abfc62d","2018-01-29","docs(all) update dep graph"],["435c771f","2018-01-29","Publish"],["cca801b7","2018-01-29","fix(atom): cursor IWatch impls (replace stubs)"],["318e62ba","2018-01-29","docs: update main readme"],["5ca9b983","2018-01-29","chore: update make-module script"],["e45f3bd7","2018-01-29","chore(all): update depgraph commit msg format"],["d774e324","2018-01-29","perf(transducers): avoid result object cloning in struct() xform"],["ac12051f","2018-01-29","update dep graph"],["28771016","2018-01-29","Publish"],["1bc6ee6f","2018-01-29","build(rstream-csp): minor fix package & readme"],["ca3994ad","2018-01-29","feat(rstream): add atom dep, add fromAtom() & docs"],["04c3d592","2018-01-29","feat(atom): add Cursor, update interfaces, types, readme"],["52c25a84","2018-01-28","build(all): add tslint workspace dev dependency"],["fefc2835","2018-01-28","feat(atom): re-import atom package from MBP2010, update main readme"],["bddd5ce7","2018-01-28","feat(api): update IWatch & mixin, boolean returns"],["55ba0e13","2018-01-28","feat(rstream): add fromPromises(), add docs"],["2247f72f","2018-01-28","feat(rstream): add trace() error handler"],["ababaa1c","2018-01-28","docs(all): update readme"],["68e38136","2018-01-28","update dep graph"],["a87badef","2018-01-28","Publish"],["f83bd18e","2018-01-28","docs(rstream-csp): fix readme example"],["a6e49b34","2018-01-28","build(all): fix depgraph command in main package"],["d376f872","2018-01-28","update dep graph"],["8b53d6e1","2018-01-28","Publish"],["079a052c","2018-01-28","docs(all): update main readme, add dep graph"],["03ad992a","2018-01-28","chore(all): update ignore files"],["eb49e575","2018-01-28","test(csp): update test examples"],["13f0bd12","2018-01-28","test(hiccup): refactor all tests"],["c677539f","2018-01-28","build(all): update lerna config, main package, add make-module script"],["fcd01ba6","2018-01-28","build(rstream-log): update deps"],["28eee5f3","2018-01-28","build(transducers): update deps"],["174aaba7","2018-01-28","docs(transducers): update readme & doc comments"],["c2211223","2018-01-28","docs(rstream): update readme & doc comments"],["e37f6a13","2018-01-28","feat(rstream-csp): add new package, remove CSP dep from rstream"],["c74353b1","2018-01-28","feat(api): add StatefulPredicate"],["7b21aa64","2018-01-27","feat(transducers): add noop() xform, update readme"],["44db970b","2018-01-27","fix(transducers): scan() complete handling"],["b7c62341","2018-01-27","docs(transducers): update readme, add docs"],["45d6bc66","2018-01-27","feat(transducers): update re-exports, extract throttleTime() into own file"],["8e5204d2","2018-01-27","fix(transducers): add \"complete\" step handling in scan()"],["e1a282cb","2018-01-27","feat(transducers): update throttle(), refactor take/dropNth"],["0b3c7860","2018-01-27","feat(transducers): add labeled() xform"],["931b67f7","2018-01-27","feat(transducers): add multiplexObj()"],["63344e45","2018-01-27","feat(transducers): add every(), some() rfns"],["e555ff55","2018-01-27","feat(transducers): update re-exports, minor update reductions()"],["4b8d037a","2018-01-27","feat(transducers): update frequencies() & groupByMap()"],["e268e356","2018-01-27","refactor(transducers): rename join() => str() rfn"],["beb2cee8","2018-01-27","feat(transducers): add multiplex() xform & docs"],["1f32fc0c","2018-01-27","feat(transducers): update step() to support multiple results"],["58f14775","2018-01-27","refactor(transducers): udate cat() to accept iterables, not just arrays"],["e50fa261","2018-01-27","feat(transducers): add utf8Encode()/utf8Decode() xforms"],["57ceecee","2018-01-26","Publish"],["76c67349","2018-01-26","fix(rstream-log): imports"],["eb31ec6a","2018-01-26","build(rstream): 0.5.1 publish"],["22f1b6af","2018-01-26","build(all): fix repo links in all packages"],["c776df18","2018-01-26","build(all): fix pub script aliases"],["32fc705a","2018-01-26","Publish"],["de4e8192","2018-01-26","refactor(rstream): allow extra props in ISubscriber"],["fdc08897","2018-01-26","test(rstream): update promise tests"],["4bb9f918","2018-01-26","fix(rstream): Resolver error/rejection handling"],["23e38f79","2018-01-26","fix(rstream): only handle done() in IDLE or ACTIVE states, else ignore"],["b4f87853","2018-01-26","test(rstream): add/update tests"],["3d2f8b91","2018-01-26","fix(rstream): fromPromise() error handling"],["a0647fed","2018-01-26","refactor(rstream): update/fix Subscription.error() handling"],["3172eb6d","2018-01-26","test(rstream): add transducer test"],["9cf95541","2018-01-26","refactor(rstream): change SidechainToggle ctor arg order, add tests"],["d36a9ff8","2018-01-26","feat(rstream): add fromIterableSync()"],["f1956922","2018-01-26","feat(rstream): Stream calls done() w/ last unsub"],["0039ef38","2018-01-26","test(rstream): add/update tests"],["ec985b33","2018-01-26","feat(rstream): make Stream source arg optional"],["d3cbda2a","2018-01-26","test(rstream): add/update tests"],["91e8cad5","2018-01-26","feat(rstream): update StreamMerge"],["887c29bb","2018-01-26","refactor(rstream): add Subscription.ensureState()"],["7d066773","2018-01-26","test(rstream): add tests for fromIterable()"],["8019422f","2018-01-26","feat(rstream): add DEBUG flag to toggle tracing"],["ad548627","2018-01-25","feat(rstream): allow partial ISubscriber's for subscribe()"],["55c3b041","2018-01-25","fix(rstream-log): update module re-exports"],["5c85ab9b","2018-01-25","fix(rstream): update fromPromise() cancellation"],["0f601d5c","2018-01-25","fix(rstream): Stream.cancel()"],["19f27b94","2018-01-25","refactor(rstream): update ISubscriber.error() impls"],["0acf4e22","2018-01-25","Publish"],["f6ca3f33","2018-01-25","feat(rstream): add sidechainToggle(), minor update sidechainPartition()"],["2557c3b3","2018-01-25","Publish"],["4048bec4","2018-01-25","feat(rstream-log): add support for body formatter (formatString()), add type aliases"],["bc26d097","2018-01-25","feat(rstream-log): add node check for writeFile()"],["8304c825","2018-01-25","feat(rstream-log): add ILogger"],["eef65b9e","2018-01-25","fix(rstream): don't throw resolve() error, only warning msg"],["4e5a2ee1","2018-01-25","feat(rstream): add fromRAF() fallback for node, add docs"],["592a2423","2018-01-25","fix(rstream): subscription generics if transducer is used"],["898be349","2018-01-25","Publish"],["007f361f","2018-01-25","docs(transducers): add/update docs"],["a2c3bc42","2018-01-25","refactor(transducers): update reverse(), add deps"],["0c116c1c","2018-01-25","refactor(transducers): simplify concat(), add docs"],["b3ce275b","2018-01-24","fix(transducers): include 1st val in benchmark()"],["75bb161c","2018-01-24","fix(transducers): base64 imports"],["e290d759","2018-01-24","fix(all): project links in readme files"],["dc145a55","2018-01-24","fix(main): readme"],["358d5abf","2018-01-24","Publish"],["00f9c12b","2018-01-24","update packages (npm publishConfig)"],["04ff6e9c","2018-01-24","feat(all): initial re-import as monorepo, update readme files, cleanup imports"]]
\ No newline at end of file
diff --git a/examples/hdom-vscroller/src/index.ts b/examples/hdom-vscroller/src/index.ts
new file mode 100644
index 0000000000..57e238fe4d
--- /dev/null
+++ b/examples/hdom-vscroller/src/index.ts
@@ -0,0 +1,114 @@
+import { start } from "@thi.ng/hdom";
+import { map, mapIndexed } from "@thi.ng/transducers";
+import _commits from "./commits.json";
+import _logo from "./logo-64.png";
+import _packages from "./packages.json";
+import { virtualScroller } from "./vscroller";
+
+type Commit = [string, string, string];
+type Package = [string, string];
+
+const LOGO = _logo;
+const REPO_BASE = "https://github.com/thi-ng/umbrella/";
+const COMMITS: Commit[] = _commits;
+const PACKAGES: Package[] = _packages;
+
+let query = "";
+let filtered = COMMITS;
+let commitsOffset = 0;
+let commitsTop = 0;
+let pkgOffset = 0;
+let pkgTop = 0;
+
+
+const filterCommit =
+ (q: string) =>
+ (x: Commit) =>
+ x[2].toLowerCase().indexOf(q) >= 0 ||
+ x[1].indexOf(q) >= 0;
+
+const setQuery =
+ (e) => {
+ try {
+ query = e.target.value;
+ filtered = COMMITS.filter(filterCommit(query));
+ commitsOffset = 0;
+ commitsTop = 0;
+ } catch (e) { }
+ };
+
+const queryFilter =
+ (_, query, items) =>
+ ["div.pv2.ph3.bg-black.white",
+ "Filter: ",
+ ["input",
+ { type: "text", oninput: setQuery, value: query }],
+ ` (${items.length})`
+ ];
+
+const repoLink =
+ (_, sha, body) =>
+ ["a.link.blue",
+ { href: `${REPO_BASE}commit/${sha}` },
+ body];
+
+const packageLink =
+ (_, name) =>
+ ["a.link.blue",
+ { href: `${REPO_BASE}tree/master/packages/${name.substr(8)}` },
+ name];
+
+const commit =
+ (i: number, [sha, date, msg]: Commit) =>
+ [`div.f7.pv2.bg-${i & 1 ? "light-gray" : "transparent"}`,
+ ["div.dib.w-30.w-20-m.w-10-l.ph3", date],
+ ["div.dib.w-70.w-80-m.w-90-l.ph3.overflow-x-hidden.nowrap", [repoLink, sha, msg]]
+ ];
+
+const pkgSummary =
+ ([name, desc]: Package) =>
+ ["div.flex.items-center.lh-copy.pa3.ph0-l.bb.b--black-10",
+ { style: { height: "96px" } },
+ ["img.w2.h2", { src: LOGO }],
+ ["div.pl3.flex-auto.f7",
+ ["h3.ma0", [packageLink, name]],
+ desc
+ ]
+ ];
+
+const app = () =>
+ ["div.sans-serif.pa2",
+ [queryFilter, query, filtered],
+ virtualScroller({
+ onscroll: (_top, _offset) => {
+ commitsTop = _top;
+ commitsOffset = _offset;
+ },
+ start: commitsOffset,
+ top: commitsTop,
+ numVisible: 10,
+ numItems: filtered.length,
+ itemHeight: 31,
+ items: mapIndexed(commit, 0, filtered)
+ }),
+ ["h3.ph2", "Packages"],
+ virtualScroller({
+ onscroll: (_top, _offset) => {
+ pkgTop = _top;
+ pkgOffset = _offset;
+ },
+ start: pkgOffset,
+ top: pkgTop,
+ numVisible: 2,
+ numItems: PACKAGES.length,
+ itemHeight: 96,
+ items: map(pkgSummary, PACKAGES)
+ })
+ ];
+
+const cancel = start(app)
+
+if (process.env.NODE_ENV !== "production") {
+ const hot = (module).hot;
+ hot && hot.dispose(cancel);
+}
diff --git a/examples/hdom-vscroller/src/logo-64.png b/examples/hdom-vscroller/src/logo-64.png
new file mode 100644
index 0000000000..71a767d8c9
Binary files /dev/null and b/examples/hdom-vscroller/src/logo-64.png differ
diff --git a/examples/hdom-vscroller/src/packages.json b/examples/hdom-vscroller/src/packages.json
new file mode 100644
index 0000000000..8b070eaa3f
--- /dev/null
+++ b/examples/hdom-vscroller/src/packages.json
@@ -0,0 +1 @@
+[["@thi.ng/api","Common, generic types & interfaces for thi.ng projects"],["@thi.ng/associative","Alternative Set & Map data type implementations with customizable equality semantics & supporting operations"],["@thi.ng/atom","Mutable wrappers for nested immutable values w/ optional undo/redo history"],["@thi.ng/bench","Basic benchmarking helpers"],["@thi.ng/bencode","TODO"],["@thi.ng/binary","Assorted binary / bitwise operations, conversions, utilities."],["@thi.ng/bitstream","ES6 iterator based read/write bit streams & support for variable word widths"],["@thi.ng/cache","In-memory cache implementations with ES6 Map-like API and different eviction strategies"],["@thi.ng/checks","Single-function sub-modules for type, feature & value checks"],["@thi.ng/color","TODO"],["@thi.ng/compare","Comparator with optional delegation for types implementing @thi.ng/api/ICompare interface"],["@thi.ng/compose","Arity-optimized functional composition helpers"],["@thi.ng/csp","ES6 promise based CSP implementation"],["@thi.ng/dcons","Comprehensive doubly linked list structure w/ iterator support"],["@thi.ng/defmulti","Dynamically extensible multiple dispatch via user supplied dispatch function."],["@thi.ng/dgraph","Type-agnostic directed acyclic graph (DAG) & graph operations"],["@thi.ng/diff","Array & object Diff"],["@thi.ng/dlogic","Assorted digital logic ops / constructs."],["@thi.ng/dot","Graphviz DOM abstraction as vanilla JS objects & serialization to DOT format"],["@thi.ng/dsp","Assorted DSP utils, oscillators etc."],["@thi.ng/equiv","Extensible deep equivalence checking for any data types"],["@thi.ng/errors","Custom error types and helper fns."],["@thi.ng/fsm","Composable primitives for building declarative, transducer based Finite-State machines & parsers for arbitrary data streams"],["@thi.ng/geom","TODO"],["@thi.ng/geom-accel","nD spatial indexing data structures"],["@thi.ng/geom-api","Shared type & interface declarations for @thi.ng/geom packages"],["@thi.ng/geom-arc","2D circular / elliptic arc operations"],["@thi.ng/geom-clip","2D line & convex polygon clipping (Liang-Barsky / Sutherland-Hodgeman)"],["@thi.ng/geom-closest-point","Closest point / proximity helpers"],["@thi.ng/geom-hull","Fast 2D convex hull (Graham Scan)"],["@thi.ng/geom-isec","2D/3D shape intersection checks"],["@thi.ng/geom-isoline","Fast 2D contour line extraction / generation"],["@thi.ng/geom-poly-utils","Polygon / triangle analysis & processing utilities"],["@thi.ng/geom-resample","Customizable nD polyline interpolation, re-sampling, splitting & nearest point computation"],["@thi.ng/geom-splines","nD cubic & quadratic curve analysis, conversion, interpolation, splitting"],["@thi.ng/geom-subdiv-curve","Freely customizable, iterative subdivision curves for open / closed input geometries"],["@thi.ng/geom-tessellate","2D/3D polygon tessellators"],["@thi.ng/geom-voronoi","Fast, incremental 2D Delaunay & Voronoi mesh implementation"],["@thi.ng/hdom","Lightweight vanilla ES6 UI component trees with customizable branch-local behaviors"],["@thi.ng/hdom-canvas","Declarative canvas scenegraph & visualization for @thi.ng/hdom"],["@thi.ng/hdom-components","Raw, skinnable UI & SVG components for @thi.ng/hdom"],["@thi.ng/hdom-mock","Mock base implementation for @thi.ng/hdom API"],["@thi.ng/heaps","Generic binary heap & d-ary heap implementations with customizable ordering"],["@thi.ng/hiccup","HTML/SVG/XML serialization of nested data structures, iterables & closures"],["@thi.ng/hiccup-carbon-icons","TODO"],["@thi.ng/hiccup-css","CSS from nested JS data structures"],["@thi.ng/hiccup-markdown","Markdown serialization of hiccup DOM trees"],["@thi.ng/hiccup-svg","SVG element functions for @thi.ng/hiccup & @thi.ng/hdom"],["@thi.ng/iges","IGES 5.3 serializer for (currently only) polygonal geometry, both open & closed"],["@thi.ng/interceptors","Interceptor based event bus, side effect & immutable state handling"],["@thi.ng/intervals","Closed/open/semi-open interval data type, queries & operations"],["@thi.ng/iterators","clojure.core inspired, composable ES6 iterators & generators"],["@thi.ng/malloc","ArrayBuffer based malloc() impl for hybrid JS/WASM use cases, based on thi.ng/tinyalloc"],["@thi.ng/math","Assorted common math functions & utilities"],["@thi.ng/matrices","Matrix & quaternion operations for 2D/3D geometry processing"],["@thi.ng/memoize","Function memoization with configurable caches"],["@thi.ng/morton","Z-order-curve / Morton encoding & decoding for 1D, 2D, 3D"],["@thi.ng/paths","immutable, optimized path-based object property / array accessors"],["@thi.ng/pointfree","Pointfree functional composition / Forth style stack execution engine"],["@thi.ng/pointfree-lang","Forth style syntax layer/compiler for the @thi.ng/pointfree DSL"],["@thi.ng/poisson","nD Poisson-disc sampling w/ support for spatial density functions and custom PRNGs"],["@thi.ng/quad-edge","Quadedge data structure after Guibas & Stolfi"],["@thi.ng/random","Pseudo-random number generators w/ unified API"],["@thi.ng/range-coder","Binary data range encoder / decoder"],["@thi.ng/resolve-map","DAG resolution of vanilla objects & arrays with internally linked values"],["@thi.ng/rle-pack","Binary run-length encoding packer w/ flexible repeat bit widths"],["@thi.ng/router","Generic router for browser & non-browser based applications"],["@thi.ng/rstream","Reactive multi-tap streams, dataflow & transformation pipeline constructs"],["@thi.ng/rstream-csp","@thi.ng/csp bridge module for @thi.ng/rstream"],["@thi.ng/rstream-dot","Graphviz DOT conversion of @thi.ng/rstream dataflow graph topologies"],["@thi.ng/rstream-gestures","Unified mouse, mouse wheel & single-touch event stream abstraction"],["@thi.ng/rstream-graph","Declarative dataflow graph construction for @thi.ng/rstream"],["@thi.ng/rstream-log","Structured, multilevel & hierarchical loggers based on @thi.ng/rstream"],["@thi.ng/rstream-query","@thi.ng/rstream based triple store & reactive query engine"],["@thi.ng/sax","Transducer-based, SAX-like, non-validating, speedy & tiny XML parser"],["@thi.ng/strings","Various string formatting & utility functions"],["@thi.ng/transducers","Lightweight transducer implementations for ES6 / TypeScript"],["@thi.ng/transducers-binary","TODO"],["@thi.ng/transducers-fsm","Transducer-based Finite State Machine transformer"],["@thi.ng/transducers-hdom","Transducer based UI updater for @thi.ng/hdom"],["@thi.ng/transducers-stats","Transducers for statistical / technical analysis"],["@thi.ng/unionstruct","C-style struct, union and bitfield views of ArrayBuffers"],["@thi.ng/vector-pools","TODO"],["@thi.ng/vectors","Optimized 2d/3d/4d and arbitrary length vector operations"]]
\ No newline at end of file
diff --git a/examples/hdom-vscroller/src/vscroller.ts b/examples/hdom-vscroller/src/vscroller.ts
new file mode 100644
index 0000000000..abc7563fc7
--- /dev/null
+++ b/examples/hdom-vscroller/src/vscroller.ts
@@ -0,0 +1,67 @@
+import { Fn2 } from "@thi.ng/api";
+import {
+ comp,
+ drop,
+ iterator,
+ take
+} from "@thi.ng/transducers";
+
+interface VScrollOpts {
+ /**
+ * Current index of 1st visible item
+ */
+ start: number;
+ /**
+ * Current scroll offset
+ */
+ top: number;
+ /**
+ *
+ */
+ onscroll: Fn2;
+ /**
+ * Max number of items visible
+ * Container height will be computed as: `numVisible * itemHeight`
+ */
+ numVisible: number;
+ /**
+ * Total number of items.
+ */
+ numItems: number;
+ /**
+ * Height (in pixels) of single item.
+ */
+ itemHeight: number;
+ /**
+ * Item components.
+ */
+ items: Iterable;
+}
+
+export const virtualScroller =
+ ({ start, top, onscroll, numVisible, numItems, itemHeight, items }: VScrollOpts) =>
+ ["div.overflow-y-scroll",
+ {
+ onscroll: (e) => {
+ const top = e.target.scrollTop;
+ const offset = Math.min(
+ Math.floor(top / itemHeight),
+ numItems - numVisible
+ );
+ onscroll(top, offset);
+ },
+ scrollTop: top,
+ style: {
+ height: `${numVisible * itemHeight}px`,
+ }
+ },
+ ["div",
+ {
+ style: {
+ height: `${numItems * itemHeight}px`,
+ "padding-top": `${Math.min(start, numItems - numVisible) * itemHeight}px`,
+ }
+ },
+ iterator(comp(drop(start), take(numVisible + 1)), items)
+ ]
+ ];
diff --git a/examples/hdom-vscroller/tsconfig.json b/examples/hdom-vscroller/tsconfig.json
new file mode 100644
index 0000000000..50a1cade93
--- /dev/null
+++ b/examples/hdom-vscroller/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "../../tsconfig.json",
+ "compilerOptions": {
+ "outDir": ".",
+ "module": "es6",
+ "target": "es6",
+ "sourceMap": true
+ },
+ "include": [
+ "./src/**/*.ts"
+ ]
+}
\ No newline at end of file
diff --git a/examples/package-stats/src/dep-chart.ts b/examples/package-stats/src/dep-chart.ts
index 1d4c5c4bcc..94c5e4a18d 100644
--- a/examples/package-stats/src/dep-chart.ts
+++ b/examples/package-stats/src/dep-chart.ts
@@ -54,37 +54,39 @@ const packageDeps = packages
const maxDeps = transduce(pluck(1), max(), packageDeps);
+const width = packages.length * 16;
+
fs.writeFileSync(
`package-deps.svg`,
serialize(
[barChart,
{
attribs: {
- width: 1024,
+ width: width,
height: 260,
"font-size": "10px",
"font-family": "Iosevka-Term-Light, Menlo, sans-serif"
},
x: {
- axis: [80, 1010, 170],
+ axis: [50, width - 15, 170],
domain: [0, packageDeps.length, 1],
- range: [80, 1020],
+ range: [50, width - 5],
ticks: [...map((x) => x[0].substr(8), packageDeps)],
label: labeledTickX
},
y: {
- axis: [170, 10, 65],
+ axis: [170, 10, 35],
domain: [0, maxDeps, 10],
range: [160, 20],
- label: labeledTickY(1010)
+ label: labeledTickY(width - 15)
},
axis: "#666",
fill: "#0cc"
},
mapIndexed((i, m) => [i, m[1]], packageDeps),
group({ "font-size": "20px", "text-anchor": "middle" },
- text([552, 28], "@thi.ng/umbrella internal re-use"),
- text([552, 56], "(transitive dependents)"),
+ text([width / 2 + 25, 28], "@thi.ng/umbrella internal re-use"),
+ text([width / 2 + 25, 56], "(transitive dependents)"),
)
]
)
diff --git a/examples/package-stats/src/size-chart.ts b/examples/package-stats/src/size-chart.ts
index 89c115248f..15f13d0751 100644
--- a/examples/package-stats/src/size-chart.ts
+++ b/examples/package-stats/src/size-chart.ts
@@ -35,6 +35,8 @@ const fileSizeChart =
const get = getter([1, modType, type]);
stats = [...stats].sort((a, b) => get(b) - get(a));
+ const width = stats.length * 16;
+
const maxSize = transduce(
mapcat(([_, m]) => [m.esm[type], m.cjs[type], m.umd[type]]),
max(),
@@ -47,15 +49,15 @@ const fileSizeChart =
[barChart,
{
attribs: {
- width: 1024,
+ width: width,
height: 260,
"font-size": "10px",
"font-family": "Iosevka-Term-Light, Menlo, sans-serif"
},
x: {
- axis: [80, 1010, 170],
+ axis: [80, width - 15, 170],
domain: [0, stats.length, 1],
- range: [80, 1020],
+ range: [80, width - 5],
ticks: [...map((x) => x[0], stats)],
label: labeledTickX
},
@@ -63,15 +65,15 @@ const fileSizeChart =
axis: [170, 10, 65],
domain: [0, maxSize, 5 * 1024],
range: [160, 20],
- label: labeledTickY(1010, bytes)
+ label: labeledTickY(width - 15, bytes)
},
axis: "#666",
fill: "#0cc"
},
mapIndexed((i, m) => [i, get(m)], stats),
group({ "font-size": "20px", "text-anchor": "middle" },
- text([552, 28], `@thi.ng/umbrella package sizes (${modType.toUpperCase()})`),
- text([552, 56], `(minified + gzipped)`),
+ text([width / 2 + 40, 28], `@thi.ng/umbrella package sizes (${modType.toUpperCase()})`),
+ text([width / 2 + 40, 56], `(minified + gzipped)`),
)
]
)
diff --git a/examples/rstream-hdom/package.json b/examples/rstream-hdom/package.json
index c78c6361aa..931e769ad6 100644
--- a/examples/rstream-hdom/package.json
+++ b/examples/rstream-hdom/package.json
@@ -15,6 +15,7 @@
"typescript": "^3.2.2"
},
"dependencies": {
+ "@thi.ng/arrays": "latest",
"@thi.ng/rstream": "latest",
"@thi.ng/transducers": "latest",
"@thi.ng/transducers-hdom": "latest"
diff --git a/examples/rstream-hdom/src/index.ts b/examples/rstream-hdom/src/index.ts
index 56b79ba5a3..dd64e55e12 100644
--- a/examples/rstream-hdom/src/index.ts
+++ b/examples/rstream-hdom/src/index.ts
@@ -1,3 +1,4 @@
+import { peek } from "@thi.ng/arrays";
import {
fromRAF,
ISubscribable,
@@ -8,7 +9,6 @@ import {
} from "@thi.ng/rstream";
import {
map,
- peek,
reducer,
scan,
vals
diff --git a/examples/xml-converter/package.json b/examples/xml-converter/package.json
index 62410ee370..cd4947d7e2 100644
--- a/examples/xml-converter/package.json
+++ b/examples/xml-converter/package.json
@@ -16,6 +16,7 @@
"typescript": "^3.2.2"
},
"dependencies": {
+ "@thi.ng/arrays": "latest",
"@thi.ng/checks": "latest",
"@thi.ng/defmulti": "latest",
"@thi.ng/rstream": "latest",
diff --git a/examples/xml-converter/src/format.ts b/examples/xml-converter/src/format.ts
index 13986f74e7..881661331c 100644
--- a/examples/xml-converter/src/format.ts
+++ b/examples/xml-converter/src/format.ts
@@ -1,3 +1,4 @@
+import { peek } from "@thi.ng/arrays";
import {
isArray,
isBoolean,
@@ -6,7 +7,6 @@ import {
} from "@thi.ng/checks";
import { DEFAULT, defmulti } from "@thi.ng/defmulti";
import { repeat } from "@thi.ng/strings";
-import { peek } from "@thi.ng/transducers";
export interface FormatOpts {
indent: number;
diff --git a/packages/arrays/.npmignore b/packages/arrays/.npmignore
new file mode 100644
index 0000000000..74ea62d1fa
--- /dev/null
+++ b/packages/arrays/.npmignore
@@ -0,0 +1,12 @@
+.meta
+.nyc_output
+*.html
+*.tgz
+build
+coverage
+dev
+doc
+export
+src*
+test
+tsconfig.json
diff --git a/packages/arrays/CHANGELOG.md b/packages/arrays/CHANGELOG.md
new file mode 100644
index 0000000000..aae707cd1f
--- /dev/null
+++ b/packages/arrays/CHANGELOG.md
@@ -0,0 +1,12 @@
+# Change Log
+
+All notable changes to this project will be documented in this file.
+See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+
+# 0.1.0 (2019-02-15)
+
+
+### Features
+
+* **arrays:** add find/findIndex() ([0007152](https://github.com/thi-ng/umbrella/commit/0007152))
+* **arrays:** extract as new package ([361ba37](https://github.com/thi-ng/umbrella/commit/361ba37))
diff --git a/packages/arrays/LICENSE b/packages/arrays/LICENSE
new file mode 100644
index 0000000000..8dada3edaf
--- /dev/null
+++ b/packages/arrays/LICENSE
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "{}"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright {yyyy} {name of copyright owner}
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/packages/arrays/README.md b/packages/arrays/README.md
new file mode 100644
index 0000000000..1a1b2c16bc
--- /dev/null
+++ b/packages/arrays/README.md
@@ -0,0 +1,65 @@
+# @thi.ng/arrays
+
+[![npm (scoped)](https://img.shields.io/npm/v/@thi.ng/arrays.svg)](https://www.npmjs.com/package/@thi.ng/arrays)
+![npm downloads](https://img.shields.io/npm/dm/@thi.ng/arrays.svg)
+[![Twitter Follow](https://img.shields.io/twitter/follow/thing_umbrella.svg?style=flat-square&label=twitter)](https://twitter.com/thing_umbrella)
+
+This project is part of the
+[@thi.ng/umbrella](https://github.com/thi-ng/umbrella/) monorepo.
+
+
+
+- [About](#about)
+- [Installation](#installation)
+- [Dependencies](#dependencies)
+- [Usage examples](#usage-examples)
+- [API](#api)
+- [Authors](#authors)
+- [License](#license)
+
+
+
+## About
+
+Array & ArrayLike utilities.
+
+## Installation
+
+```bash
+yarn add @thi.ng/arrays
+```
+
+## 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/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/random](https://github.com/thi-ng/umbrella/tree/master/packages/random)
+
+## Usage examples
+
+```ts
+import * as a from "@thi.ng/arrays";
+```
+
+## API
+
+- [binarySearch()](https://github.com/thi-ng/umbrella/tree/master/packages/arrays/src/binary-search.ts)
+- [endsWith()](https://github.com/thi-ng/umbrella/tree/master/packages/arrays/src/ends-with.ts)
+- [ensureArray()](https://github.com/thi-ng/umbrella/tree/master/packages/arrays/src/ensure-array.ts)
+- [ensureIterable()](https://github.com/thi-ng/umbrella/tree/master/packages/arrays/src/ensure-iterable.ts)
+- [fuzzyMatch()](https://github.com/thi-ng/umbrella/tree/master/packages/arrays/src/fuzzy-match.ts)
+- [peek()](https://github.com/thi-ng/umbrella/tree/master/packages/arrays/src/peek.ts)
+- [shuffle()](https://github.com/thi-ng/umbrella/tree/master/packages/arrays/src/shuffle.ts) (w/ custom PRNG support)
+- [startsWith()](https://github.com/thi-ng/umbrella/tree/master/packages/arrays/src/starts-with.ts)
+- [swizzle()](https://github.com/thi-ng/umbrella/tree/master/packages/arrays/src/swizzle.ts)
+
+## Authors
+
+- Karsten Schmidt
+
+## License
+
+© 2018 Karsten Schmidt // Apache Software License 2.0
diff --git a/packages/arrays/package.json b/packages/arrays/package.json
new file mode 100644
index 0000000000..5d48260326
--- /dev/null
+++ b/packages/arrays/package.json
@@ -0,0 +1,55 @@
+{
+ "name": "@thi.ng/arrays",
+ "version": "0.1.0",
+ "description": "Array / Arraylike utilities",
+ "module": "./index.js",
+ "main": "./lib/index.js",
+ "umd:main": "./lib/index.umd.js",
+ "typings": "./index.d.ts",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/thi-ng/umbrella.git"
+ },
+ "homepage": "https://github.com/thi-ng/umbrella/tree/master/packages/arrays",
+ "author": "Karsten Schmidt ",
+ "license": "Apache-2.0",
+ "scripts": {
+ "build": "yarn clean && yarn build:es6 && yarn build:bundle",
+ "build:es6": "tsc --declaration",
+ "build:bundle": "../../scripts/bundle-module",
+ "test": "rimraf build && tsc -p test/tsconfig.json && nyc mocha build/test/*.js",
+ "clean": "rimraf *.js *.d.ts .nyc_output build coverage doc lib",
+ "cover": "yarn test && nyc report --reporter=lcov",
+ "doc": "node_modules/.bin/typedoc --mode modules --out doc src",
+ "pub": "yarn build && yarn publish --access public"
+ },
+ "devDependencies": {
+ "@types/mocha": "^5.2.5",
+ "@types/node": "^10.12.15",
+ "mocha": "^5.2.0",
+ "nyc": "^13.1.0",
+ "typedoc": "^0.14.0",
+ "typescript": "^3.2.2"
+ },
+ "dependencies": {
+ "@thi.ng/api": "^5.0.1",
+ "@thi.ng/checks": "^2.1.0",
+ "@thi.ng/compare": "^1.0.2",
+ "@thi.ng/equiv": "^1.0.2",
+ "@thi.ng/errors": "^1.0.2",
+ "@thi.ng/random": "^1.1.0"
+ },
+ "keywords": [
+ "arrays",
+ "binary search",
+ "ES6",
+ "fuzzy search",
+ "shuffle",
+ "swizzle",
+ "typescript"
+ ],
+ "publishConfig": {
+ "access": "public"
+ },
+ "sideEffects": false
+}
diff --git a/packages/arrays/src/binary-search.ts b/packages/arrays/src/binary-search.ts
new file mode 100644
index 0000000000..ac9e708806
--- /dev/null
+++ b/packages/arrays/src/binary-search.ts
@@ -0,0 +1,41 @@
+import { Comparator, Fn } from "@thi.ng/api";
+import { compare } from "@thi.ng/compare";
+
+/**
+ * Returns the supposed index of `x` in pre-sorted array-like collection
+ * `buf`. If `x` can't be found, returns `-index-1`.
+ *
+ * The optional `key` function is used to obtain the actual sort value
+ * of `x` and each array item (default: identity).
+ *
+ * The optional `cmp` comparator (default: thi.ng/compare) is then used
+ * to identify the index of `x`. The sort order of `buf` MUST be
+ * compatible with that of `cmp`.
+ *
+ * @param buf
+ * @param x
+ * @param key
+ * @param cmp
+ */
+export const binarySearch = (
+ buf: ArrayLike,
+ x: A,
+ key: Fn = (x) => x,
+ cmp: Comparator = compare,
+) => {
+ const kx = key(x);
+ let low = 0;
+ let high = buf.length - 1;
+ while (low <= high) {
+ const mid = (low + high) >>> 1;
+ const c = cmp(key(buf[mid]), kx);
+ if (c < 0) {
+ low = mid + 1;
+ } else if (c > 0) {
+ high = mid - 1;
+ } else {
+ return mid;
+ }
+ }
+ return -low - 1;
+};
diff --git a/packages/arrays/src/ends-with.ts b/packages/arrays/src/ends-with.ts
new file mode 100644
index 0000000000..7c60368fc2
--- /dev/null
+++ b/packages/arrays/src/ends-with.ts
@@ -0,0 +1,10 @@
+import { equiv as _eq } from "@thi.ng/equiv";
+
+export const endsWith =
+ (buf: ArrayLike, needle: ArrayLike, equiv = _eq) => {
+ let i = buf.length;
+ let j = needle.length;
+ if (i < j) return false;
+ while (--i, --j >= 0 && equiv(buf[i], needle[j])) { }
+ return j < 0;
+ };
diff --git a/packages/transducers/src/func/ensure-array.ts b/packages/arrays/src/ensure-array.ts
similarity index 100%
rename from packages/transducers/src/func/ensure-array.ts
rename to packages/arrays/src/ensure-array.ts
diff --git a/packages/transducers/src/func/ensure-iterable.ts b/packages/arrays/src/ensure-iterable.ts
similarity index 100%
rename from packages/transducers/src/func/ensure-iterable.ts
rename to packages/arrays/src/ensure-iterable.ts
diff --git a/packages/arrays/src/find.ts b/packages/arrays/src/find.ts
new file mode 100644
index 0000000000..206016fc28
--- /dev/null
+++ b/packages/arrays/src/find.ts
@@ -0,0 +1,32 @@
+import { Predicate2 } from "@thi.ng/api";
+import { equiv as _equiv } from "@thi.ng/equiv";
+
+/**
+ * Similar to `Array.find()`, but uses thi.ng/equiv as default
+ * predicate.
+ *
+ * @param src
+ * @param x
+ * @param equiv
+ */
+export const find =
+ (src: ArrayLike, x: T, equiv: Predicate2 = _equiv) => {
+ const i = findIndex(src, x, equiv);
+ return i !== -1 ? src[i] : undefined;
+ };
+
+/**
+ * Similar to `Array.findIndex()`, but uses thi.ng/equiv as default
+ * predicate.
+ *
+ * @param src
+ * @param x
+ * @param equiv
+ */
+export const findIndex =
+ (src: ArrayLike, x: T, equiv: Predicate2 = _equiv) => {
+ for (let i = src.length; --i >= 0;) {
+ if (equiv(x, src[i])) return i;
+ }
+ return -1;
+ };
diff --git a/packages/transducers/src/func/fuzzy-match.ts b/packages/arrays/src/fuzzy-match.ts
similarity index 65%
rename from packages/transducers/src/func/fuzzy-match.ts
rename to packages/arrays/src/fuzzy-match.ts
index d9476ff966..b318a01d53 100644
--- a/packages/transducers/src/func/fuzzy-match.ts
+++ b/packages/arrays/src/fuzzy-match.ts
@@ -1,24 +1,26 @@
import { Predicate2 } from "@thi.ng/api";
-import { equiv } from "@thi.ng/equiv";
+import { equiv as _eq } from "@thi.ng/equiv";
/**
* Performs a fuzzy search of `query` in `domain` and returns `true` if
- * successful. The optional `eq` predicate can be used to customize item
- * equality checking. Uses @thi.ng/equiv by default.
+ * successful.
*
- * Related transducer: `filterFuzzy()` (/xform/filter-fuzzy.ts)
+ * The optional `equiv` predicate can be used to customize
+ * item equality checking. Uses @thi.ng/equiv by default.
*
* Adapted and generalized from:
* https://github.com/bevacqua/fufuzzyzzysearch (MIT)
*
+ * @see thi.ng/transducers/xform/filterFuzzy
+ *
* @param domain
* @param query
- * @param eq
+ * @param equiv
*/
export const fuzzyMatch = (
domain: ArrayLike,
query: ArrayLike,
- eq: Predicate2 = equiv
+ equiv: Predicate2 = _eq
) => {
const nd = domain.length;
const nq = query.length;
@@ -26,13 +28,13 @@ export const fuzzyMatch = (
return false;
}
if (nq === nd) {
- return eq(query, domain);
+ return equiv(query, domain);
}
next:
for (let i = 0, j = 0; i < nq; i++) {
const q = query[i];
while (j < nd) {
- if (eq(domain[j++], q)) {
+ if (equiv(domain[j++], q)) {
continue next;
}
}
diff --git a/packages/arrays/src/index.ts b/packages/arrays/src/index.ts
new file mode 100644
index 0000000000..fa06b5b5a9
--- /dev/null
+++ b/packages/arrays/src/index.ts
@@ -0,0 +1,10 @@
+export * from "./binary-search";
+export * from "./ends-with";
+export * from "./ensure-array";
+export * from "./ensure-iterable";
+export * from "./find";
+export * from "./fuzzy-match";
+export * from "./peek";
+export * from "./shuffle";
+export * from "./starts-with";
+export * from "./swizzle";
diff --git a/packages/transducers/src/func/peek.ts b/packages/arrays/src/peek.ts
similarity index 54%
rename from packages/transducers/src/func/peek.ts
rename to packages/arrays/src/peek.ts
index f0c29728fe..05376f68d2 100644
--- a/packages/transducers/src/func/peek.ts
+++ b/packages/arrays/src/peek.ts
@@ -1,5 +1,5 @@
/**
- * Returns last element of given array.
+ * Returns last element of given array or `undefined` if array is empty.
*
* @param x
*/
diff --git a/packages/arrays/src/shuffle.ts b/packages/arrays/src/shuffle.ts
new file mode 100644
index 0000000000..00821211b3
--- /dev/null
+++ b/packages/arrays/src/shuffle.ts
@@ -0,0 +1,28 @@
+import { IRandom, SYSTEM } from "@thi.ng/random";
+
+/**
+ * Shuffles the first `n` items of given array, using Fisher-yates and
+ * optional `rnd` PRNG. If `n` is `undefined`, the entire array will be
+ * shuffled.
+ *
+ *
+ * @param buf
+ * @param n
+ * @param rnd
+ */
+export const shuffle =
+ (buf: any[], n = buf.length, rnd: IRandom = SYSTEM) => {
+ n = Math.min(n, buf.length);
+ const l = n;
+ if (l > 1) {
+ n = Math.min(n, l);
+ while (--n >= 0) {
+ const a = rnd.float(l) | 0;
+ const b = rnd.float(l) | 0;
+ const t = buf[a];
+ buf[a] = buf[b];
+ buf[b] = t;
+ }
+ }
+ return buf;
+ };
diff --git a/packages/arrays/src/starts-with.ts b/packages/arrays/src/starts-with.ts
new file mode 100644
index 0000000000..589f8192de
--- /dev/null
+++ b/packages/arrays/src/starts-with.ts
@@ -0,0 +1,10 @@
+import { equiv as _eq } from "@thi.ng/equiv";
+
+export const startsWith =
+ (buf: ArrayLike, needle: ArrayLike, equiv = _eq) => {
+ let i = buf.length;
+ let j = needle.length;
+ if (i < j) return false;
+ while (-j >= 0 && equiv(buf[j], needle[j])) { }
+ return j < 0;
+ };
diff --git a/packages/transducers/src/func/swizzler.ts b/packages/arrays/src/swizzle.ts
similarity index 56%
rename from packages/transducers/src/func/swizzler.ts
rename to packages/arrays/src/swizzle.ts
index 5c368006eb..4c51c97cdf 100644
--- a/packages/transducers/src/func/swizzler.ts
+++ b/packages/arrays/src/swizzle.ts
@@ -1,27 +1,28 @@
+import { Fn } from "@thi.ng/api";
+
/**
- * Returns optimized function to select, repeat, reshape and / or
- * reorder array/object values in the specified index order. The
- * returned function can be used directly or as mapping function for the
- * `map` transducer. Fast paths for up to 8 indices are provided, before
- * a loop based approach is used.
+ * Returns optimized function to immutably select, repeat, reshape and /
+ * or reorder array / object values in the specified index order. Fast
+ * paths for up to 8 indices are provided, before a loop based approach
+ * is used.
*
* ```
- * swizzler([0, 0, 0])([1, 2, 3, 4]) // [ 1, 1, 1 ]
- * swizzler([1, 1, 3, 3])([1, 2, 3, 4]) // [ 2, 2, 4, 4 ]
- * swizzler([2, 0])([1, 2, 3]) // [ 3, 1 ]
+ * swizzle([0, 0, 0])([1, 2, 3, 4]) // [ 1, 1, 1 ]
+ * swizzle([1, 1, 3, 3])([1, 2, 3, 4]) // [ 2, 2, 4, 4 ]
+ * swizzle([2, 0])([1, 2, 3]) // [ 3, 1 ]
* ```
*
- * Even though, objects can be used as input to the generated function,
- * the returned values will always be in array form.
+ * Objects can be used as input to the generated function, but the
+ * result will always be in array form.
*
* ```
- * swizzler(["a", "c", "b"])({a: 1, b: 2, c: 3}) // [ 1, 3, 2 ]
+ * swizzle(["a", "c", "b"])({a: 1, b: 2, c: 3}) // [ 1, 3, 2 ]
* ```
*
* @param order indices
*/
-export const swizzler =
- (order: string | PropertyKey[]): (x: T) => any[] => {
+export const swizzle =
+ (order: string | PropertyKey[]): Fn => {
const [a, b, c, d, e, f, g, h] = order;
switch (order.length) {
case 0:
@@ -45,7 +46,7 @@ export const swizzler =
default:
return (x) => {
const res = [];
- for (let i = order.length - 1; i >= 0; i--) {
+ for (let i = order.length; --i >= 0;) {
res[i] = x[order[i]];
}
return res;
diff --git a/packages/arrays/test/index.ts b/packages/arrays/test/index.ts
new file mode 100644
index 0000000000..e74dbb435e
--- /dev/null
+++ b/packages/arrays/test/index.ts
@@ -0,0 +1,6 @@
+// import * as assert from "assert";
+// import * as a from "../src/index";
+
+describe("arrays", () => {
+ it("tests pending");
+});
diff --git a/packages/arrays/test/tsconfig.json b/packages/arrays/test/tsconfig.json
new file mode 100644
index 0000000000..f6e63560dd
--- /dev/null
+++ b/packages/arrays/test/tsconfig.json
@@ -0,0 +1,11 @@
+{
+ "extends": "../../../tsconfig.json",
+ "compilerOptions": {
+ "outDir": "../build",
+ "module": "commonjs"
+ },
+ "include": [
+ "./**/*.ts",
+ "../src/**/*.ts"
+ ]
+}
diff --git a/packages/arrays/tsconfig.json b/packages/arrays/tsconfig.json
new file mode 100644
index 0000000000..893b9979c5
--- /dev/null
+++ b/packages/arrays/tsconfig.json
@@ -0,0 +1,11 @@
+{
+ "extends": "../../tsconfig.json",
+ "compilerOptions": {
+ "outDir": ".",
+ "module": "es6",
+ "target": "es6"
+ },
+ "include": [
+ "./src/**/*.ts"
+ ]
+}
diff --git a/packages/associative/CHANGELOG.md b/packages/associative/CHANGELOG.md
index 434588c1ad..4b5c4171f8 100644
--- a/packages/associative/CHANGELOG.md
+++ b/packages/associative/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.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/associative@1.0.4...@thi.ng/associative@1.0.5) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/associative
+
+
+
+
+
+## [1.0.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/associative@1.0.3...@thi.ng/associative@1.0.4) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/associative
+
+
+
+
+
## [1.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/associative@1.0.2...@thi.ng/associative@1.0.3) (2019-02-05)
**Note:** Version bump only for package @thi.ng/associative
diff --git a/packages/associative/package.json b/packages/associative/package.json
index c143010cec..5df32c7ef5 100644
--- a/packages/associative/package.json
+++ b/packages/associative/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/associative",
- "version": "1.0.3",
+ "version": "1.0.5",
"description": "Alternative Set & Map data type implementations with customizable equality semantics & supporting operations",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,12 +33,12 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/checks": "^2.0.2",
+ "@thi.ng/checks": "^2.1.0",
"@thi.ng/compare": "^1.0.2",
- "@thi.ng/dcons": "^2.0.3",
+ "@thi.ng/dcons": "^2.0.5",
"@thi.ng/equiv": "^1.0.2",
"@thi.ng/errors": "^1.0.2",
- "@thi.ng/transducers": "^4.0.0"
+ "@thi.ng/transducers": "^5.0.0"
},
"keywords": [
"data structures",
diff --git a/packages/atom/CHANGELOG.md b/packages/atom/CHANGELOG.md
index e7f3735f51..5ca4c86668 100644
--- a/packages/atom/CHANGELOG.md
+++ b/packages/atom/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.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/atom@2.0.2...@thi.ng/atom@2.0.3) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/atom
+
+
+
+
+
## [2.0.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/atom@2.0.1...@thi.ng/atom@2.0.2) (2019-02-05)
**Note:** Version bump only for package @thi.ng/atom
diff --git a/packages/atom/package.json b/packages/atom/package.json
index cfe39114b0..0c85087f14 100644
--- a/packages/atom/package.json
+++ b/packages/atom/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/atom",
- "version": "2.0.2",
+ "version": "2.0.3",
"description": "Mutable wrappers for nested immutable values w/ optional undo/redo history",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,10 +33,10 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/checks": "^2.0.2",
+ "@thi.ng/checks": "^2.1.0",
"@thi.ng/equiv": "^1.0.2",
"@thi.ng/errors": "^1.0.2",
- "@thi.ng/paths": "^2.0.2"
+ "@thi.ng/paths": "^2.0.3"
},
"keywords": [
"derived views",
diff --git a/packages/bencode/CHANGELOG.md b/packages/bencode/CHANGELOG.md
index 1e83c485d8..19eb64554d 100644
--- a/packages/bencode/CHANGELOG.md
+++ b/packages/bencode/CHANGELOG.md
@@ -3,6 +3,25 @@
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/bencode@0.1.1...@thi.ng/bencode@0.2.0) (2019-02-15)
+
+
+### Features
+
+* **bencode:** add decode(), fix string length handling ([c1bbc6f](https://github.com/thi-ng/umbrella/commit/c1bbc6f))
+
+
+
+
+
+## [0.1.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/bencode@0.1.0...@thi.ng/bencode@0.1.1) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/bencode
+
+
+
+
+
# 0.1.0 (2019-02-05)
diff --git a/packages/bencode/package.json b/packages/bencode/package.json
index 3954451a7e..efc7aa1fec 100644
--- a/packages/bencode/package.json
+++ b/packages/bencode/package.json
@@ -1,7 +1,7 @@
{
"name": "@thi.ng/bencode",
- "version": "0.1.0",
- "description": "TODO",
+ "version": "0.2.0",
+ "description": "Bencode binary encoder / decoder with optional UTF8 encoding",
"module": "./index.js",
"main": "./lib/index.js",
"umd:main": "./lib/index.umd.js",
@@ -33,10 +33,12 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/checks": "^2.0.2",
+ "@thi.ng/arrays": "^0.1.0",
+ "@thi.ng/checks": "^2.1.0",
"@thi.ng/defmulti": "^1.0.2",
- "@thi.ng/transducers": "^4.0.0",
- "@thi.ng/transducers-binary": "^0.1.0"
+ "@thi.ng/errors": "^1.0.2",
+ "@thi.ng/transducers": "^5.0.0",
+ "@thi.ng/transducers-binary": "^0.2.0"
},
"keywords": [
"bencode",
diff --git a/packages/bencode/src/index.ts b/packages/bencode/src/index.ts
index ea990295e1..6ef0879f35 100644
--- a/packages/bencode/src/index.ts
+++ b/packages/bencode/src/index.ts
@@ -1,19 +1,24 @@
import { assert } from "@thi.ng/api";
+import { peek } from "@thi.ng/arrays";
import {
+ isArray,
isArrayLike,
isBoolean,
isNumber,
isPlainObject,
- isString,
+ isString
} from "@thi.ng/checks";
import { defmulti } from "@thi.ng/defmulti";
+import { illegalState } from "@thi.ng/errors";
import { mapcat } from "@thi.ng/transducers";
import {
BinStructItem,
bytes,
str,
u8,
- u8array
+ u8array,
+ utf8Decode,
+ utf8Length
} from "@thi.ng/transducers-binary";
const enum Type {
@@ -25,6 +30,19 @@ const enum Type {
LIST
};
+const enum Lit {
+ MINUS = 0x2d,
+ DOT = 0x2e,
+ ZERO = 0x30,
+ NINE = 0x39,
+ COLON = 0x3a,
+ DICT = 0x64,
+ END = 0x65,
+ FLOAT = 0x66,
+ INT = 0x69,
+ LIST = 0x6c,
+}
+
const FLOAT_RE = /^[0-9.-]+$/;
export const encode = (x: any, cap = 1024) =>
@@ -66,7 +84,7 @@ encodeBin.addAll({
[Type.STR]:
(x: string) =>
- [str(x.length + ":" + x)],
+ [str(utf8Length(x) + ":" + x)],
[Type.LIST]:
(x: Iterable) =>
@@ -81,3 +99,137 @@ encodeBin.addAll({
u8(0x65)
]
});
+
+export const decode =
+ (buf: Iterable, utf8 = true) => {
+ const iter = buf[Symbol.iterator]();
+ const stack = [];
+ let i: IteratorResult;
+ let x: any;
+ while (!(i = iter.next()).done) {
+ x = i.value;
+ switch (x) {
+ case Lit.DICT:
+ ensureNotKey(stack, "dict");
+ stack.push({ type: Type.DICT, val: {} });
+ break;
+ case Lit.LIST:
+ ensureNotKey(stack, "list");
+ stack.push({ type: Type.LIST, val: [] });
+ break;
+ case Lit.INT:
+ x = collect(stack, readInt(iter, 0));
+ if (x !== undefined) {
+ return x;
+ }
+ break;
+ case Lit.FLOAT:
+ x = collect(stack, readFloat(iter));
+ if (x !== undefined) {
+ return x;
+ }
+ break;
+ case Lit.END:
+ x = stack.pop();
+ if (x) {
+ const parent = peek(stack);
+ if (parent) {
+ if (parent.type === Type.LIST) {
+ parent.val.push(x.val);
+ } else if (parent.type === Type.DICT) {
+ parent.val[parent.key] = x.val;
+ parent.key = null;
+ }
+ } else {
+ return x.val;
+ }
+ } else {
+ illegalState("unmatched end literal");
+ }
+ break;
+ default:
+ if (x >= Lit.ZERO && x <= Lit.NINE) {
+ x = readBytes(iter, readInt(iter, x - Lit.ZERO, Lit.COLON));
+ x = collect(stack, x, utf8);
+ if (x !== undefined) {
+ return x;
+ }
+ } else {
+ illegalState(`unexpected value type: 0x${i.value.toString(16)}`);
+ }
+ }
+ }
+ return peek(stack).val;
+ };
+
+const ensureNotKey =
+ (stack: any[], type: string) => {
+ const x = peek(stack);
+ assert(
+ !x || x.type !== Type.DICT || x.key,
+ type + " not supported as dict key"
+ );
+ };
+
+const collect =
+ (stack: any[], x: any, utf8 = false) => {
+ const parent = peek(stack);
+ if (!parent) return x;
+ if (parent.type === Type.LIST) {
+ parent.val.push(x);
+ } else {
+ if (!parent.key) {
+ parent.key = isArray(x) ? utf8Decode(x) : x;
+ } else {
+ parent.val[parent.key] = utf8 ? utf8Decode(x) : x;
+ parent.key = null;
+ }
+ }
+ };
+
+const readInt =
+ (iter: Iterator, acc: number, end = Lit.END) => {
+ let i: IteratorResult;
+ let x: number;
+ while (!(i = iter.next()).done) {
+ x = i.value;
+ if (x >= Lit.ZERO && x <= Lit.NINE) {
+ acc = acc * 10 + x - Lit.ZERO;
+ } else if (x === end) {
+ return acc;
+ } else {
+ illegalState(`expected digit, got 0x${x.toString(16)}`);
+ }
+ }
+ illegalState(`incomplete int`);
+ };
+
+const readFloat =
+ (iter: Iterator) => {
+ let i: IteratorResult;
+ let x: number;
+ let acc = "";
+ while (!(i = iter.next()).done) {
+ x = i.value;
+ if ((x >= Lit.ZERO && x <= Lit.NINE) || x === Lit.DOT || x === Lit.MINUS) {
+ acc += String.fromCharCode(x);
+ } else if (x === Lit.END) {
+ return parseFloat(acc);
+ } else {
+ illegalState(`expected digit or dot, got 0x${x.toString(16)}`);
+ }
+ }
+ illegalState(`incomplete float`);
+ };
+
+const readBytes =
+ (iter: Iterator, len: number) => {
+ let i: IteratorResult;
+ let buf: number[] = [];
+ while (--len >= 0 && !(i = iter.next()).done) {
+ buf.push(i.value);
+ }
+ return len < 0 ?
+ buf :
+ illegalState(`expected string, reached EOF`);
+ };
diff --git a/packages/cache/CHANGELOG.md b/packages/cache/CHANGELOG.md
index e81f290719..9bcced7fb7 100644
--- a/packages/cache/CHANGELOG.md
+++ b/packages/cache/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.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/cache@1.0.4...@thi.ng/cache@1.0.5) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/cache
+
+
+
+
+
+## [1.0.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/cache@1.0.3...@thi.ng/cache@1.0.4) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/cache
+
+
+
+
+
## [1.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/cache@1.0.2...@thi.ng/cache@1.0.3) (2019-02-05)
**Note:** Version bump only for package @thi.ng/cache
diff --git a/packages/cache/package.json b/packages/cache/package.json
index 788ee09614..de8d4bfa43 100644
--- a/packages/cache/package.json
+++ b/packages/cache/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/cache",
- "version": "1.0.3",
+ "version": "1.0.5",
"description": "In-memory cache implementations with ES6 Map-like API and different eviction strategies",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,8 +33,8 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/dcons": "^2.0.3",
- "@thi.ng/transducers": "^4.0.0"
+ "@thi.ng/dcons": "^2.0.5",
+ "@thi.ng/transducers": "^5.0.0"
},
"keywords": [
"cache",
diff --git a/packages/checks/CHANGELOG.md b/packages/checks/CHANGELOG.md
index 8eb71fe072..af5b941d70 100644
--- a/packages/checks/CHANGELOG.md
+++ b/packages/checks/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.
+# [2.1.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/checks@2.0.2...@thi.ng/checks@2.1.0) (2019-02-10)
+
+
+### Features
+
+* **checks:** add isPrimitive() ([190701e](https://github.com/thi-ng/umbrella/commit/190701e))
+
+
+
+
+
## [2.0.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/checks@2.0.1...@thi.ng/checks@2.0.2) (2019-02-05)
**Note:** Version bump only for package @thi.ng/checks
diff --git a/packages/checks/package.json b/packages/checks/package.json
index 8f76b478eb..6a87e6d10c 100644
--- a/packages/checks/package.json
+++ b/packages/checks/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/checks",
- "version": "2.0.2",
+ "version": "2.1.0",
"description": "Single-function sub-modules for type, feature & value checks",
"module": "./index.js",
"main": "./lib/index.js",
diff --git a/packages/checks/src/index.ts b/packages/checks/src/index.ts
index 9ede4710c9..d952c8af1f 100644
--- a/packages/checks/src/index.ts
+++ b/packages/checks/src/index.ts
@@ -35,6 +35,7 @@ export * from "./is-object";
export * from "./is-odd";
export * from "./is-plain-object";
export * from "./is-positive";
+export * from "./is-primitive";
export * from "./is-promise";
export * from "./is-promiselike";
export * from "./is-regexp";
diff --git a/packages/checks/src/is-primitive.ts b/packages/checks/src/is-primitive.ts
new file mode 100644
index 0000000000..9107b6e5cc
--- /dev/null
+++ b/packages/checks/src/is-primitive.ts
@@ -0,0 +1,5 @@
+export const isPrimitive =
+ (x: any): x is (string | number) => {
+ const t = typeof x;
+ return t === "string" || t === "number";
+ };
diff --git a/packages/color/CHANGELOG.md b/packages/color/CHANGELOG.md
index d896ee8a70..96a3976ea3 100644
--- a/packages/color/CHANGELOG.md
+++ b/packages/color/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.
+## [0.1.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/color@0.1.4...@thi.ng/color@0.1.5) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/color
+
+
+
+
+
+## [0.1.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/color@0.1.3...@thi.ng/color@0.1.4) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/color
+
+
+
+
+
## [0.1.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/color@0.1.2...@thi.ng/color@0.1.3) (2019-02-05)
**Note:** Version bump only for package @thi.ng/color
diff --git a/packages/color/README.md b/packages/color/README.md
index 69d84b6881..50058c20ef 100644
--- a/packages/color/README.md
+++ b/packages/color/README.md
@@ -26,8 +26,8 @@ This project is part of the
## About
-Raw, array-based, color operations, conversions and optional type
-wrappers, based on
+Raw, array-based, color operations, color space conversions, optional type
+wrappers, multi-color gradients, based on
[@thi.ng/vectors](https://github.com/thi-ng/umbrella/tree/master/packages/vectors).
### Color spaces / modes
diff --git a/packages/color/package.json b/packages/color/package.json
index ff8d05b334..3edd5a8693 100644
--- a/packages/color/package.json
+++ b/packages/color/package.json
@@ -1,7 +1,7 @@
{
"name": "@thi.ng/color",
- "version": "0.1.3",
- "description": "TODO",
+ "version": "0.1.5",
+ "description": "Raw, array-based, color ops, conversions, opt. type wrappers, multi-color gradients",
"module": "./index.js",
"main": "./lib/index.js",
"umd:main": "./lib/index.umd.js",
@@ -33,13 +33,13 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/compose": "^1.0.2",
+ "@thi.ng/compose": "^1.1.0",
"@thi.ng/defmulti": "^1.0.2",
"@thi.ng/errors": "^1.0.2",
"@thi.ng/math": "^1.1.0",
"@thi.ng/strings": "^1.0.3",
- "@thi.ng/transducers": "^4.0.0",
- "@thi.ng/vectors": "^2.2.0"
+ "@thi.ng/transducers": "^5.0.0",
+ "@thi.ng/vectors": "^2.3.0"
},
"keywords": [
"alpha",
diff --git a/packages/compose/CHANGELOG.md b/packages/compose/CHANGELOG.md
index 1ad36d601b..447461086c 100644
--- a/packages/compose/CHANGELOG.md
+++ b/packages/compose/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.1.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/compose@1.0.2...@thi.ng/compose@1.1.0) (2019-02-15)
+
+
+### Bug Fixes
+
+* **compose:** add varargs override for jux(), add tests ([e9d57fc](https://github.com/thi-ng/umbrella/commit/e9d57fc))
+
+
+### Features
+
+* **compose:** add new functions ([dd13fa9](https://github.com/thi-ng/umbrella/commit/dd13fa9))
+
+
+
+
+
## [1.0.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/compose@1.0.1...@thi.ng/compose@1.0.2) (2019-02-05)
**Note:** Version bump only for package @thi.ng/compose
diff --git a/packages/compose/package.json b/packages/compose/package.json
index 847c3b26c3..de0acea472 100644
--- a/packages/compose/package.json
+++ b/packages/compose/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/compose",
- "version": "1.0.2",
+ "version": "1.1.0",
"description": "Arity-optimized functional composition helpers",
"module": "./index.js",
"main": "./lib/index.js",
diff --git a/packages/compose/src/constantly.ts b/packages/compose/src/constantly.ts
new file mode 100644
index 0000000000..2f758a5fc7
--- /dev/null
+++ b/packages/compose/src/constantly.ts
@@ -0,0 +1,4 @@
+import { FnAny } from "@thi.ng/api";
+
+export const constantly =
+ (x: T): FnAny => () => x;
diff --git a/packages/compose/src/delay.ts b/packages/compose/src/delay.ts
new file mode 100644
index 0000000000..7b7efc4064
--- /dev/null
+++ b/packages/compose/src/delay.ts
@@ -0,0 +1,29 @@
+import { IDeref } from "@thi.ng/api";
+
+export const delay =
+ (body: () => T) => new Delay(body);
+
+export class Delay implements
+ IDeref {
+
+ value: T;
+ protected body: () => T;
+ protected realized: boolean;
+
+ constructor(body: () => T) {
+ this.body = body;
+ this.realized = false;
+ }
+
+ deref() {
+ if (!this.realized) {
+ this.value = this.body();
+ this.realized = true;
+ }
+ return this.value;
+ }
+
+ isRealized() {
+ return this.realized;
+ }
+}
diff --git a/packages/transducers/src/func/delay.ts b/packages/compose/src/delayed.ts
similarity index 80%
rename from packages/transducers/src/func/delay.ts
rename to packages/compose/src/delayed.ts
index c276804747..d250ef0f57 100644
--- a/packages/transducers/src/func/delay.ts
+++ b/packages/compose/src/delayed.ts
@@ -1,3 +1,3 @@
-export const delay =
+export const delayed =
(x: T, t: number) =>
new Promise((resolve) => setTimeout(() => resolve(x), t));
diff --git a/packages/transducers/src/func/identity.ts b/packages/compose/src/identity.ts
similarity index 100%
rename from packages/transducers/src/func/identity.ts
rename to packages/compose/src/identity.ts
diff --git a/packages/compose/src/index.ts b/packages/compose/src/index.ts
index dfddd39435..f9c76d4c74 100644
--- a/packages/compose/src/index.ts
+++ b/packages/compose/src/index.ts
@@ -1,4 +1,8 @@
export * from "./comp";
+export * from "./constantly";
+export * from "./delay";
+export * from "./delayed";
+export * from "./identity";
export * from "./juxt";
export * from "./partial";
export * from "./thread-first";
diff --git a/packages/compose/src/juxt.ts b/packages/compose/src/juxt.ts
index 4064f77b1c..a2b6167f0b 100644
--- a/packages/compose/src/juxt.ts
+++ b/packages/compose/src/juxt.ts
@@ -8,7 +8,8 @@ export function juxt(a: Fn, b: Fn, c: Fn, d:
export function juxt(a: Fn, b: Fn, c: Fn, d: Fn, e: Fn, f: Fn): Fn;
export function juxt(a: Fn, b: Fn, c: Fn, d: Fn, e: Fn, f: Fn, g: Fn): Fn;
export function juxt(a: Fn, b: Fn, c: Fn, d: Fn, e: Fn, f: Fn, g: Fn, h: Fn): Fn;
-export function juxt(...fns: Fn[]) {
+export function juxt(a: Fn, b: Fn, c: Fn, d: Fn, e: Fn, f: Fn, g: Fn, h: Fn, ...xs: Fn[]): Fn;
+export function juxt(...fns: Fn[]) {
const [a, b, c, d, e, f, g, h] = fns;
switch (fns.length) {
case 1:
@@ -28,7 +29,7 @@ export function juxt(...fns: Fn[]) {
case 8:
return (x) => [a(x), b(x), c(x), d(x), e(x), f(x), g(x), h(x)];
default:
- return (x: any) => {
+ return (x: T) => {
let res = new Array(fns.length);
for (let i = fns.length; --i >= 0;) {
res[i] = fns[i](x);
diff --git a/packages/compose/test/delay.ts b/packages/compose/test/delay.ts
new file mode 100644
index 0000000000..a03b216410
--- /dev/null
+++ b/packages/compose/test/delay.ts
@@ -0,0 +1,15 @@
+import { delay } from "../src";
+
+import * as assert from "assert";
+
+describe("delay", () => {
+
+ it("only executes once", () => {
+ let num = 0;
+ const a = delay(() => ++num);
+ assert(!a.isRealized());
+ assert.equal(a.deref(), 1);
+ assert.equal(a.deref(), 1);
+ assert(a.isRealized());
+ });
+});
diff --git a/packages/compose/test/index.ts b/packages/compose/test/index.ts
deleted file mode 100644
index 1a976f7f80..0000000000
--- a/packages/compose/test/index.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-// import * as assert from "assert";
-// import * as compose from "../src/index";
-
-describe("compose", () => {
- it("tests pending");
-});
diff --git a/packages/compose/test/juxt.ts b/packages/compose/test/juxt.ts
new file mode 100644
index 0000000000..394cdb427b
--- /dev/null
+++ b/packages/compose/test/juxt.ts
@@ -0,0 +1,98 @@
+import { juxt } from "../src";
+
+import * as assert from "assert";
+
+describe("juxt", () => {
+
+ it("2-args", () => {
+ const a = juxt(
+ (x: number) => x + 1,
+ (x: number) => x * 10
+ );
+ assert.deepEqual(a(1), [2, 10]);
+ });
+
+ it("3-args", () => {
+ const a = juxt(
+ (x: number) => x + 1,
+ (x: number) => x * 10,
+ (x: number) => "id-" + x
+ );
+ assert.deepEqual(a(1), [2, 10, "id-1"]);
+ });
+
+ it("4-args", () => {
+ const a = juxt(
+ (x: number) => x + 1,
+ (x: number) => x * 10,
+ (x: number) => "id-" + x,
+ (x: number) => [x, x],
+ );
+ assert.deepEqual(a(1), [2, 10, "id-1", [1, 1]]);
+ });
+
+ it("5-args", () => {
+ const a = juxt(
+ (x: number) => x + 1,
+ (x: number) => x * 10,
+ (x: number) => "id-" + x,
+ (x: number) => [x, x],
+ (x: number) => ({ a: x }),
+ );
+ assert.deepEqual(a(1), [2, 10, "id-1", [1, 1], { a: 1 }]);
+ });
+
+ it("6-args", () => {
+ const a = juxt(
+ (x: number) => x + 1,
+ (x: number) => x - 1,
+ (x: number) => x * 10,
+ (x: number) => "id-" + x,
+ (x: number) => [x, x],
+ (x: number) => ({ a: x }),
+ );
+ assert.deepEqual(a(1), [2, 0, 10, "id-1", [1, 1], { a: 1 }]);
+ });
+
+ it("7-args", () => {
+ const a = juxt(
+ (x: number) => x + 1,
+ (x: number) => x - 1,
+ (x: number) => x * 10,
+ (x: number) => x * 100,
+ (x: number) => "id-" + x,
+ (x: number) => [x, x],
+ (x: number) => ({ a: x }),
+ );
+ assert.deepEqual(a(1), [2, 0, 10, 100, "id-1", [1, 1], { a: 1 }]);
+ });
+
+ it("8-args", () => {
+ const a = juxt(
+ (x: number) => x + 1,
+ (x: number) => x - 1,
+ (x: number) => x * 10,
+ (x: number) => x * 100,
+ (x: number) => x * 1000,
+ (x: number) => "id-" + x,
+ (x: number) => [x, x],
+ (x: number) => ({ a: x }),
+ );
+ assert.deepEqual(a(1), [2, 0, 10, 100, 1000, "id-1", [1, 1], { a: 1 }]);
+ });
+
+ it("9-args", () => {
+ const a = juxt(
+ (x: number) => x + 1,
+ (x: number) => x - 1,
+ (x: number) => x * 10,
+ (x: number) => x * 100,
+ (x: number) => x * 1000,
+ (x: number) => x * 10000,
+ (x: number) => "id-" + x,
+ (x: number) => [x, x],
+ (x: number) => ({ a: x }),
+ );
+ assert.deepEqual(a(1), [2, 0, 10, 100, 1000, 10000, "id-1", [1, 1], { a: 1 }]);
+ });
+});
diff --git a/packages/compose/test/partial.ts b/packages/compose/test/partial.ts
new file mode 100644
index 0000000000..9c154f31bf
--- /dev/null
+++ b/packages/compose/test/partial.ts
@@ -0,0 +1,41 @@
+import { partial } from "../src";
+
+import * as assert from "assert";
+
+describe("partial", () => {
+
+ const fn = (a, b, c, d, e, f, g, h, i) => [a, b, c, d, e, f, g, h, i];
+ const res = [0, 1, 2, 3, 4, 5, 6, 7, 8];
+
+ it("1-arg", () => {
+ assert.deepEqual(partial(fn, 0)(1, 2, 3, 4, 5, 6, 7, 8), res);
+ });
+
+ it("2-arg", () => {
+ assert.deepEqual(partial(fn, 0, 1)(2, 3, 4, 5, 6, 7, 8), res);
+ });
+
+ it("3-arg", () => {
+ assert.deepEqual(partial(fn, 0, 1, 2)(3, 4, 5, 6, 7, 8), res);
+ });
+
+ it("4-arg", () => {
+ assert.deepEqual(partial(fn, 0, 1, 2, 3)(4, 5, 6, 7, 8), res);
+ });
+
+ it("5-arg", () => {
+ assert.deepEqual(partial(fn, 0, 1, 2, 3, 4)(5, 6, 7, 8), res);
+ });
+
+ it("6-arg", () => {
+ assert.deepEqual(partial(fn, 0, 1, 2, 3, 4, 5)(6, 7, 8), res);
+ });
+
+ it("7-arg", () => {
+ assert.deepEqual(partial(fn, 0, 1, 2, 3, 4, 5, 6)(7, 8), res);
+ });
+
+ it("8-arg", () => {
+ assert.deepEqual(partial(fn, 0, 1, 2, 3, 4, 5, 6, 7)(8), res);
+ });
+});
diff --git a/packages/csp/CHANGELOG.md b/packages/csp/CHANGELOG.md
index e43d61dec7..4c9099c868 100644
--- a/packages/csp/CHANGELOG.md
+++ b/packages/csp/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.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/csp@1.0.4...@thi.ng/csp@1.0.5) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/csp
+
+
+
+
+
+## [1.0.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/csp@1.0.3...@thi.ng/csp@1.0.4) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/csp
+
+
+
+
+
## [1.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/csp@1.0.2...@thi.ng/csp@1.0.3) (2019-02-05)
**Note:** Version bump only for package @thi.ng/csp
diff --git a/packages/csp/package.json b/packages/csp/package.json
index 359fda90b6..6461a69771 100644
--- a/packages/csp/package.json
+++ b/packages/csp/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/csp",
- "version": "1.0.3",
+ "version": "1.0.5",
"description": "ES6 promise based CSP implementation",
"module": "./index.js",
"main": "./lib/index.js",
@@ -37,10 +37,11 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/checks": "^2.0.2",
- "@thi.ng/dcons": "^2.0.3",
+ "@thi.ng/arrays": "^0.1.0",
+ "@thi.ng/checks": "^2.1.0",
+ "@thi.ng/dcons": "^2.0.5",
"@thi.ng/errors": "^1.0.2",
- "@thi.ng/transducers": "^4.0.0"
+ "@thi.ng/transducers": "^5.0.0"
},
"keywords": [
"async",
diff --git a/packages/csp/src/channel.ts b/packages/csp/src/channel.ts
index 1b82f0f929..ac161f80eb 100644
--- a/packages/csp/src/channel.ts
+++ b/packages/csp/src/channel.ts
@@ -1,4 +1,5 @@
import { Predicate } from "@thi.ng/api";
+import { shuffle } from "@thi.ng/arrays";
import { isFunction } from "@thi.ng/checks";
import { DCons } from "@thi.ng/dcons";
import { illegalArity } from "@thi.ng/errors";
@@ -19,7 +20,6 @@ import {
State
} from "./api";
import { FixedBuffer } from "./buffer";
-import { shuffle } from "./utils/shuffle";
export class Channel implements
IReadWriteableChannel {
diff --git a/packages/csp/src/utils/shuffle.ts b/packages/csp/src/utils/shuffle.ts
deleted file mode 100644
index 14ff0f63fd..0000000000
--- a/packages/csp/src/utils/shuffle.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-export const shuffle =
- (items: T[]) => {
- let n = items.length;
- if (n > 1) {
- while (n > 0) {
- const i = (Math.random() * n) | 0;
- n--;
- const t = items[i];
- items[i] = items[n];
- items[n] = t;
- }
- }
- return items;
- };
diff --git a/packages/dcons/CHANGELOG.md b/packages/dcons/CHANGELOG.md
index e092f9826f..5e5845e251 100644
--- a/packages/dcons/CHANGELOG.md
+++ b/packages/dcons/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.0.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/dcons@2.0.4...@thi.ng/dcons@2.0.5) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/dcons
+
+
+
+
+
+## [2.0.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/dcons@2.0.3...@thi.ng/dcons@2.0.4) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/dcons
+
+
+
+
+
## [2.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/dcons@2.0.2...@thi.ng/dcons@2.0.3) (2019-02-05)
**Note:** Version bump only for package @thi.ng/dcons
diff --git a/packages/dcons/package.json b/packages/dcons/package.json
index bf2895e66b..0783d17ad0 100644
--- a/packages/dcons/package.json
+++ b/packages/dcons/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/dcons",
- "version": "2.0.3",
+ "version": "2.0.5",
"description": "Comprehensive doubly linked list structure w/ iterator support",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,11 +33,11 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/checks": "^2.0.2",
+ "@thi.ng/checks": "^2.1.0",
"@thi.ng/compare": "^1.0.2",
"@thi.ng/equiv": "^1.0.2",
"@thi.ng/errors": "^1.0.2",
- "@thi.ng/transducers": "^4.0.0"
+ "@thi.ng/transducers": "^5.0.0"
},
"keywords": [
"datastructure",
diff --git a/packages/dgraph/CHANGELOG.md b/packages/dgraph/CHANGELOG.md
index 4983508e0e..bc02c2a9c9 100644
--- a/packages/dgraph/CHANGELOG.md
+++ b/packages/dgraph/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.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/dgraph@1.0.4...@thi.ng/dgraph@1.0.5) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/dgraph
+
+
+
+
+
+## [1.0.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/dgraph@1.0.3...@thi.ng/dgraph@1.0.4) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/dgraph
+
+
+
+
+
## [1.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/dgraph@1.0.2...@thi.ng/dgraph@1.0.3) (2019-02-05)
**Note:** Version bump only for package @thi.ng/dgraph
diff --git a/packages/dgraph/package.json b/packages/dgraph/package.json
index c90f1b1352..71750ad0be 100644
--- a/packages/dgraph/package.json
+++ b/packages/dgraph/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/dgraph",
- "version": "1.0.3",
+ "version": "1.0.5",
"description": "Type-agnostic directed acyclic graph (DAG) & graph operations",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,10 +33,10 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/associative": "^1.0.3",
+ "@thi.ng/associative": "^1.0.5",
"@thi.ng/equiv": "^1.0.2",
"@thi.ng/errors": "^1.0.2",
- "@thi.ng/transducers": "^4.0.0"
+ "@thi.ng/transducers": "^5.0.0"
},
"keywords": [
"data structure",
diff --git a/packages/dot/CHANGELOG.md b/packages/dot/CHANGELOG.md
index 717babcffb..1e02d36b26 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.
+## [1.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/dot@1.0.2...@thi.ng/dot@1.0.3) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/dot
+
+
+
+
+
## [1.0.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/dot@1.0.1...@thi.ng/dot@1.0.2) (2019-02-05)
**Note:** Version bump only for package @thi.ng/dot
diff --git a/packages/dot/package.json b/packages/dot/package.json
index d34779d9c8..56090ce57a 100644
--- a/packages/dot/package.json
+++ b/packages/dot/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/dot",
- "version": "1.0.2",
+ "version": "1.0.3",
"description": "Graphviz DOM abstraction as vanilla JS objects & serialization to DOT format",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,7 +33,7 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/checks": "^2.0.2"
+ "@thi.ng/checks": "^2.1.0"
},
"keywords": [
"ES6",
diff --git a/packages/fsm/CHANGELOG.md b/packages/fsm/CHANGELOG.md
index 59bad37e92..ca6f3056ef 100644
--- a/packages/fsm/CHANGELOG.md
+++ b/packages/fsm/CHANGELOG.md
@@ -3,6 +3,32 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [2.0.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/fsm@1.0.4...@thi.ng/fsm@2.0.0) (2019-02-15)
+
+
+### Features
+
+* **fsm:** update / split until() ([aeb05f8](https://github.com/thi-ng/umbrella/commit/aeb05f8))
+
+
+### BREAKING CHANGES
+
+* **fsm:** make until() array based, add untilStr()
+
+- rename existing `until()` => `untilStr()`
+
+
+
+
+
+## [1.0.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/fsm@1.0.3...@thi.ng/fsm@1.0.4) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/fsm
+
+
+
+
+
## [1.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/fsm@1.0.2...@thi.ng/fsm@1.0.3) (2019-02-05)
**Note:** Version bump only for package @thi.ng/fsm
diff --git a/packages/fsm/package.json b/packages/fsm/package.json
index 646b423d88..bb03ae1936 100644
--- a/packages/fsm/package.json
+++ b/packages/fsm/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/fsm",
- "version": "1.0.3",
+ "version": "2.0.0",
"description": "Composable primitives for building declarative, transducer based Finite-State machines & parsers for arbitrary data streams",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,9 +33,10 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
+ "@thi.ng/arrays": "^0.1.0",
"@thi.ng/equiv": "^1.0.2",
"@thi.ng/errors": "^1.0.2",
- "@thi.ng/transducers": "^4.0.0"
+ "@thi.ng/transducers": "^5.0.0"
},
"keywords": [
"ES6",
diff --git a/packages/fsm/src/until.ts b/packages/fsm/src/until.ts
index 5f1588c632..5316448de6 100644
--- a/packages/fsm/src/until.ts
+++ b/packages/fsm/src/until.ts
@@ -1,3 +1,4 @@
+import { endsWith } from "@thi.ng/arrays";
import { LitCallback, Matcher, RES_PARTIAL } from "./api";
import { result } from "./result";
@@ -7,10 +8,12 @@ import { result } from "./result";
* recorded so far (excluding the matched terminator string) and returns
* `Match.FULL` result. Else `Match.PARTIAL`.
*
+ * @see until
+ *
* @param str
* @param callback
*/
-export const until = (
+export const untilStr = (
str: string,
callback?: LitCallback
): Matcher =>
@@ -23,3 +26,25 @@ export const until = (
RES_PARTIAL;
};
};
+
+/**
+ * Generic array version of `untilStr()`.
+ *
+ * @see untilStr
+ *
+ * @param str
+ * @param callback
+ */
+export const until = (
+ str: T[],
+ callback?: LitCallback
+): Matcher =>
+ () => {
+ let buf: T[] = [];
+ return (ctx, x) => {
+ buf.push(x);
+ return endsWith(buf, str) ?
+ result(callback && callback(ctx, buf.slice(0, buf.length - str.length))) :
+ RES_PARTIAL;
+ };
+ };
diff --git a/packages/geom-accel/CHANGELOG.md b/packages/geom-accel/CHANGELOG.md
index f3e757b872..42ceb28bee 100644
--- a/packages/geom-accel/CHANGELOG.md
+++ b/packages/geom-accel/CHANGELOG.md
@@ -3,6 +3,25 @@
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/geom-accel@1.1.1...@thi.ng/geom-accel@1.1.2) (2019-02-15)
+
+
+### Bug Fixes
+
+* **geom-accel:** fix addAll(), addKeys() ([51959b7](https://github.com/thi-ng/umbrella/commit/51959b7))
+
+
+
+
+
+## [1.1.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-accel@1.1.0...@thi.ng/geom-accel@1.1.1) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/geom-accel
+
+
+
+
+
# [1.1.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-accel@1.0.2...@thi.ng/geom-accel@1.1.0) (2019-02-05)
diff --git a/packages/geom-accel/package.json b/packages/geom-accel/package.json
index 6131451590..02af997096 100644
--- a/packages/geom-accel/package.json
+++ b/packages/geom-accel/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/geom-accel",
- "version": "1.1.0",
+ "version": "1.1.2",
"description": "nD spatial indexing data structures",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,11 +33,12 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/geom-api": "^0.1.0",
- "@thi.ng/heaps": "^1.0.2",
+ "@thi.ng/arrays": "^0.1.0",
+ "@thi.ng/geom-api": "^0.1.2",
+ "@thi.ng/heaps": "^1.0.3",
"@thi.ng/math": "^1.1.0",
- "@thi.ng/transducers": "^4.0.0",
- "@thi.ng/vectors": "^2.2.0"
+ "@thi.ng/transducers": "^5.0.0",
+ "@thi.ng/vectors": "^2.3.0"
},
"keywords": [
"2D",
diff --git a/packages/geom-accel/src/kdtree.ts b/packages/geom-accel/src/kdtree.ts
index 96379029e6..c55a0c0052 100644
--- a/packages/geom-accel/src/kdtree.ts
+++ b/packages/geom-accel/src/kdtree.ts
@@ -1,8 +1,8 @@
import { ICopy, Pair } from "@thi.ng/api";
+import { ensureArray } from "@thi.ng/arrays";
import { ISpatialAccel } from "@thi.ng/geom-api";
import { Heap } from "@thi.ng/heaps";
import { EPS } from "@thi.ng/math";
-import { ensureArray } from "@thi.ng/transducers";
import { distSq, ReadonlyVec, Vec } from "@thi.ng/vectors";
const CMP = (a, b) => b[0] - a[0];
@@ -123,7 +123,7 @@ export class KdTree implements
addAll(pts: Iterable>, eps = EPS) {
let ok = true;
for (let [k, v] of pts) {
- ok = ok && this.add(k, v, eps);
+ ok = this.add(k, v, eps) && ok;
}
return ok;
}
@@ -135,7 +135,7 @@ export class KdTree implements
addKeys(ks: Iterable>, eps = EPS) {
let ok = true;
for (let k of ks) {
- ok = ok && this.add(k, null, eps);
+ ok = this.add(k, null, eps) && ok;
}
return ok;
}
diff --git a/packages/geom-api/CHANGELOG.md b/packages/geom-api/CHANGELOG.md
index a7b7818a01..9f4b877323 100644
--- a/packages/geom-api/CHANGELOG.md
+++ b/packages/geom-api/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.
+## [0.1.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-api@0.1.1...@thi.ng/geom-api@0.1.2) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/geom-api
+
+
+
+
+
+## [0.1.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-api@0.1.0...@thi.ng/geom-api@0.1.1) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/geom-api
+
+
+
+
+
# 0.1.0 (2019-02-05)
diff --git a/packages/geom-api/package.json b/packages/geom-api/package.json
index dc4f9c046b..c3c5da59d2 100644
--- a/packages/geom-api/package.json
+++ b/packages/geom-api/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/geom-api",
- "version": "0.1.0",
+ "version": "0.1.2",
"description": "Shared type & interface declarations for @thi.ng/geom packages",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,7 +33,7 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/vectors": "^2.2.0"
+ "@thi.ng/vectors": "^2.3.0"
},
"keywords": [
"ES6",
diff --git a/packages/geom-arc/CHANGELOG.md b/packages/geom-arc/CHANGELOG.md
index 3347bae0ac..fd7ae0bd1b 100644
--- a/packages/geom-arc/CHANGELOG.md
+++ b/packages/geom-arc/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.
+## [0.1.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-arc@0.1.1...@thi.ng/geom-arc@0.1.2) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/geom-arc
+
+
+
+
+
+## [0.1.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-arc@0.1.0...@thi.ng/geom-arc@0.1.1) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/geom-arc
+
+
+
+
+
# 0.1.0 (2019-02-05)
diff --git a/packages/geom-arc/package.json b/packages/geom-arc/package.json
index 061086de9c..b8d2c02fc9 100644
--- a/packages/geom-arc/package.json
+++ b/packages/geom-arc/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/geom-arc",
- "version": "0.1.0",
+ "version": "0.1.2",
"description": "2D circular / elliptic arc operations",
"module": "./index.js",
"main": "./lib/index.js",
@@ -32,11 +32,11 @@
"typescript": "^3.2.2"
},
"dependencies": {
- "@thi.ng/checks": "^2.0.2",
- "@thi.ng/geom-api": "^0.1.0",
- "@thi.ng/geom-resample": "^0.1.0",
+ "@thi.ng/checks": "^2.1.0",
+ "@thi.ng/geom-api": "^0.1.2",
+ "@thi.ng/geom-resample": "^0.1.2",
"@thi.ng/math": "^1.1.0",
- "@thi.ng/vectors": "^2.2.0"
+ "@thi.ng/vectors": "^2.3.0"
},
"keywords": [
"2D",
diff --git a/packages/geom-clip/CHANGELOG.md b/packages/geom-clip/CHANGELOG.md
index 4a08b3fc9f..b2373ba8ed 100644
--- a/packages/geom-clip/CHANGELOG.md
+++ b/packages/geom-clip/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.
+## [0.0.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-clip@0.0.3...@thi.ng/geom-clip@0.0.4) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/geom-clip
+
+
+
+
+
+## [0.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-clip@0.0.2...@thi.ng/geom-clip@0.0.3) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/geom-clip
+
+
+
+
+
## 0.0.2 (2019-02-05)
**Note:** Version bump only for package @thi.ng/geom-clip
diff --git a/packages/geom-clip/package.json b/packages/geom-clip/package.json
index 2ba5afb89a..c64ced490c 100644
--- a/packages/geom-clip/package.json
+++ b/packages/geom-clip/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/geom-clip",
- "version": "0.0.2",
+ "version": "0.0.4",
"description": "2D line & convex polygon clipping (Liang-Barsky / Sutherland-Hodgeman)",
"module": "./index.js",
"main": "./lib/index.js",
@@ -32,10 +32,10 @@
"typescript": "^3.2.2"
},
"dependencies": {
- "@thi.ng/geom-isec": "^0.1.0",
- "@thi.ng/geom-poly-utils": "^0.1.0",
+ "@thi.ng/geom-isec": "^0.1.2",
+ "@thi.ng/geom-poly-utils": "^0.1.2",
"@thi.ng/math": "^1.1.0",
- "@thi.ng/vectors": "^2.2.0"
+ "@thi.ng/vectors": "^2.3.0"
},
"keywords": [
"2D",
diff --git a/packages/geom-closest-point/CHANGELOG.md b/packages/geom-closest-point/CHANGELOG.md
index 1d69a9ae8e..274ef7df92 100644
--- a/packages/geom-closest-point/CHANGELOG.md
+++ b/packages/geom-closest-point/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.
+## [0.1.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-closest-point@0.1.1...@thi.ng/geom-closest-point@0.1.2) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/geom-closest-point
+
+
+
+
+
+## [0.1.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-closest-point@0.1.0...@thi.ng/geom-closest-point@0.1.1) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/geom-closest-point
+
+
+
+
+
# 0.1.0 (2019-02-05)
diff --git a/packages/geom-closest-point/package.json b/packages/geom-closest-point/package.json
index e7157e85eb..6520d10f79 100644
--- a/packages/geom-closest-point/package.json
+++ b/packages/geom-closest-point/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/geom-closest-point",
- "version": "0.1.0",
+ "version": "0.1.2",
"description": "Closest point / proximity helpers",
"module": "./index.js",
"main": "./lib/index.js",
@@ -32,7 +32,7 @@
"typescript": "^3.2.2"
},
"dependencies": {
- "@thi.ng/vectors": "^2.2.0"
+ "@thi.ng/vectors": "^2.3.0"
},
"keywords": [
"ES6",
diff --git a/packages/geom-hull/CHANGELOG.md b/packages/geom-hull/CHANGELOG.md
index 637a1b771d..0d6e2e9178 100644
--- a/packages/geom-hull/CHANGELOG.md
+++ b/packages/geom-hull/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.
+## [0.0.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-hull@0.0.3...@thi.ng/geom-hull@0.0.4) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/geom-hull
+
+
+
+
+
+## [0.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-hull@0.0.2...@thi.ng/geom-hull@0.0.3) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/geom-hull
+
+
+
+
+
## 0.0.2 (2019-02-05)
**Note:** Version bump only for package @thi.ng/geom-hull
diff --git a/packages/geom-hull/package.json b/packages/geom-hull/package.json
index 86f6493689..7a810f47e8 100644
--- a/packages/geom-hull/package.json
+++ b/packages/geom-hull/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/geom-hull",
- "version": "0.0.2",
+ "version": "0.0.4",
"description": "Fast 2D convex hull (Graham Scan)",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,7 +33,7 @@
},
"dependencies": {
"@thi.ng/math": "^1.1.0",
- "@thi.ng/vectors": "^2.2.0"
+ "@thi.ng/vectors": "^2.3.0"
},
"keywords": [
"2D",
diff --git a/packages/geom-isec/CHANGELOG.md b/packages/geom-isec/CHANGELOG.md
index 8376e61a34..883cdde307 100644
--- a/packages/geom-isec/CHANGELOG.md
+++ b/packages/geom-isec/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.
+## [0.1.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-isec@0.1.1...@thi.ng/geom-isec@0.1.2) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/geom-isec
+
+
+
+
+
+## [0.1.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-isec@0.1.0...@thi.ng/geom-isec@0.1.1) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/geom-isec
+
+
+
+
+
# 0.1.0 (2019-02-05)
diff --git a/packages/geom-isec/package.json b/packages/geom-isec/package.json
index 86fafd4acf..48c86ccacb 100644
--- a/packages/geom-isec/package.json
+++ b/packages/geom-isec/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/geom-isec",
- "version": "0.1.0",
+ "version": "0.1.2",
"description": "2D/3D shape intersection checks",
"module": "./index.js",
"main": "./lib/index.js",
@@ -32,10 +32,10 @@
"typescript": "^3.2.2"
},
"dependencies": {
- "@thi.ng/geom-api": "^0.1.0",
- "@thi.ng/geom-closest-point": "^0.1.0",
+ "@thi.ng/geom-api": "^0.1.2",
+ "@thi.ng/geom-closest-point": "^0.1.2",
"@thi.ng/math": "^1.1.0",
- "@thi.ng/vectors": "^2.2.0"
+ "@thi.ng/vectors": "^2.3.0"
},
"keywords": [
"2D",
diff --git a/packages/geom-isoline/CHANGELOG.md b/packages/geom-isoline/CHANGELOG.md
index 7d59a28c29..9282f7008b 100644
--- a/packages/geom-isoline/CHANGELOG.md
+++ b/packages/geom-isoline/CHANGELOG.md
@@ -3,6 +3,36 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+## [0.1.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-isoline@0.1.2...@thi.ng/geom-isoline@0.1.3) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/geom-isoline
+
+
+
+
+
+## [0.1.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-isoline@0.1.1...@thi.ng/geom-isoline@0.1.2) (2019-02-11)
+
+
+### Performance Improvements
+
+* **geom-isoline:** flatten LUTs, manual destructure ([763d7b9](https://github.com/thi-ng/umbrella/commit/763d7b9))
+
+
+
+
+
+## [0.1.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-isoline@0.1.0...@thi.ng/geom-isoline@0.1.1) (2019-02-10)
+
+
+### Performance Improvements
+
+* **geom-isoline:** minor optimizations ([d990c3c](https://github.com/thi-ng/umbrella/commit/d990c3c))
+
+
+
+
+
# 0.1.0 (2019-02-05)
diff --git a/packages/geom-isoline/package.json b/packages/geom-isoline/package.json
index 91e16e01b3..78096bc371 100644
--- a/packages/geom-isoline/package.json
+++ b/packages/geom-isoline/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/geom-isoline",
- "version": "0.1.0",
+ "version": "0.1.3",
"description": "Fast 2D contour line extraction / generation",
"module": "./index.js",
"main": "./lib/index.js",
@@ -32,8 +32,8 @@
"typescript": "^3.2.2"
},
"dependencies": {
- "@thi.ng/transducers": "^4.0.0",
- "@thi.ng/vectors": "^2.2.0"
+ "@thi.ng/transducers": "^5.0.0",
+ "@thi.ng/vectors": "^2.3.0"
},
"keywords": [
"2D",
diff --git a/packages/geom-isoline/src/index.ts b/packages/geom-isoline/src/index.ts
index f09745f50e..7f35d4d2a7 100644
--- a/packages/geom-isoline/src/index.ts
+++ b/packages/geom-isoline/src/index.ts
@@ -1,17 +1,21 @@
import { range2d } from "@thi.ng/transducers";
import { ReadonlyVec, Vec } from "@thi.ng/vectors";
+// flattened [to,clear] tuples
+// all positive values are given as times 2
const EDGE_INDEX = [
- [-1, -1], [2, 0], [1, 0], [1, 0],
- [0, 0], [-1, -1], [0, 0], [0, 0],
- [3, 0], [2, 0], [-1, -1], [1, 0],
- [3, 0], [2, 0], [3, 0], [-1, -1]
+ -1, -1, 4, 0, 2, 0, 2, 0,
+ 0, 0, -1, -1, 0, 0, 0, 0,
+ 6, 0, 4, 0, -1, -1, 2, 0,
+ 6, 0, 4, 0, 6, 0, -1, -1
];
-const NEXT_EDGES = [[-1, 0], [0, 1], [1, 0], [0, -1]];
+// flattened coord offsets [x,y] tuples
+const NEXT_EDGES = [0, -1, 1, 0, 0, 1, -1, 0];
-const S5 = [[2, 4], [0, 1], [0, 13], [2, 7]];
-const S10 = [[3, 2], [1, 8], [3, 11], [1, 14]];
+// flattened [to,clear] tuples (all values times 2)
+const S5 = [4, 8, 0, 2, 0, 26, 4, 14];
+const S10 = [6, 4, 2, 16, 6, 22, 2, 28];
export const setBorder =
(src: Vec, w: number, h: number, val: number) => {
@@ -30,16 +34,16 @@ export const setBorder =
const encodeCrossings =
(src: ReadonlyVec, w: number, h: number, iso: number) => {
- const out: number[] = new Array(src.length);
+ const out = new Uint8Array(src.length);
const w1 = w - 1;
const h1 = h - 1;
for (let y = 0, i = 0; y < h1; y++) {
for (let x = 0; x < w1; i++ , x++) {
out[i] =
- (src[i] < iso ? 8 : 0) |
- (src[i + 1] < iso ? 4 : 0) |
- (src[i + 1 + w] < iso ? 2 : 0) |
- (src[i + w] < iso ? 1 : 0);
+ (src[i] < iso ? 16 : 0) |
+ (src[i + 1] < iso ? 8 : 0) |
+ (src[i + 1 + w] < iso ? 4 : 0) |
+ (src[i + w] < iso ? 2 : 0);
}
i++;
}
@@ -47,8 +51,7 @@ const encodeCrossings =
};
const cellValue =
- (src: ReadonlyVec, w: number, x: number, y: number) => {
- const idx = y * w + x;
+ (src: ReadonlyVec, w: number, idx: number) => {
return (
src[idx] +
src[idx + 1] +
@@ -82,11 +85,11 @@ const contourVertex = (
switch (to) {
case 0:
return [x + mix(src, w, x, y, x + 1, y, iso), y];
- case 1:
- return [x + 1, y + mix(src, w, x + 1, y, x + 1, y + 1, iso)];
case 2:
+ return [x + 1, y + mix(src, w, x + 1, y, x + 1, y + 1, iso)];
+ case 4:
return [x + mix(src, w, x, y + 1, x + 1, y + 1, iso), y + 1];
- case 3:
+ case 6:
return [x, y + mix(src, w, x, y, x, y + 1, iso)];
default:
}
@@ -104,6 +107,7 @@ export function* isolines(src: ReadonlyVec, w: number, h: number, iso: number) {
const h1 = h - 1;
const cells = range2d(h, w);
let next: boolean = true;
+ let idx: number;
while (true) {
from = to;
if (next) {
@@ -116,20 +120,22 @@ export function* isolines(src: ReadonlyVec, w: number, h: number, iso: number) {
next = true;
continue;
}
- const id = coded[y * w + x];
- if (id === 5) {
- [to, clear] = S5[
- (cellValue(src, w, x, y) > iso ? 0 : 2) +
- (from === 3 ? 0 : 1)
- ];
- } else if (id === 10) {
- [to, clear] = S10[
- cellValue(src, w, x, y) > iso ?
- (from === 0 ? 0 : 1) :
- (from === 2 ? 2 : 3)
- ];
+ const i = y * w + x;
+ const id = coded[i]; // * 2
+ if (id === 10) {
+ idx = (cellValue(src, w, i) > iso ? 0 : 4) +
+ (from === 6 ? 0 : 2);
+ to = S5[idx];
+ clear = S5[idx + 1];
+ } else if (id === 20) {
+ idx = cellValue(src, w, i) > iso ?
+ (from === 0 ? 0 : 2) :
+ (from === 4 ? 4 : 6);
+ to = S10[idx];
+ clear = S10[idx + 1];
} else {
- [to, clear] = EDGE_INDEX[id];
+ to = EDGE_INDEX[id];
+ clear = EDGE_INDEX[id + 1];
}
if (curr.length > 0 && from === -1 && to > -1) {
yield curr;
@@ -140,8 +146,8 @@ export function* isolines(src: ReadonlyVec, w: number, h: number, iso: number) {
}
if (to >= 0) {
curr.push(contourVertex(src, w, x, y, to, iso));
- y += NEXT_EDGES[to][0];
- x += NEXT_EDGES[to][1];
+ x += NEXT_EDGES[to];
+ y += NEXT_EDGES[to + 1];
} else {
next = true;
}
diff --git a/packages/geom-poly-utils/CHANGELOG.md b/packages/geom-poly-utils/CHANGELOG.md
index ac5616423c..d687a3e98a 100644
--- a/packages/geom-poly-utils/CHANGELOG.md
+++ b/packages/geom-poly-utils/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.
+## [0.1.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-poly-utils@0.1.1...@thi.ng/geom-poly-utils@0.1.2) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/geom-poly-utils
+
+
+
+
+
+## [0.1.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-poly-utils@0.1.0...@thi.ng/geom-poly-utils@0.1.1) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/geom-poly-utils
+
+
+
+
+
# 0.1.0 (2019-02-05)
diff --git a/packages/geom-poly-utils/package.json b/packages/geom-poly-utils/package.json
index eb6737afa2..38f1fbba65 100644
--- a/packages/geom-poly-utils/package.json
+++ b/packages/geom-poly-utils/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/geom-poly-utils",
- "version": "0.1.0",
+ "version": "0.1.2",
"description": "Polygon / triangle analysis & processing utilities",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,9 +33,9 @@
},
"dependencies": {
"@thi.ng/errors": "^1.0.2",
- "@thi.ng/geom-api": "^0.1.0",
+ "@thi.ng/geom-api": "^0.1.2",
"@thi.ng/math": "^1.1.0",
- "@thi.ng/vectors": "^2.2.0"
+ "@thi.ng/vectors": "^2.3.0"
},
"keywords": [
"2D",
diff --git a/packages/geom-resample/CHANGELOG.md b/packages/geom-resample/CHANGELOG.md
index 12ae1dddb6..6a5346dcc9 100644
--- a/packages/geom-resample/CHANGELOG.md
+++ b/packages/geom-resample/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.
+## [0.1.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-resample@0.1.1...@thi.ng/geom-resample@0.1.2) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/geom-resample
+
+
+
+
+
+## [0.1.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-resample@0.1.0...@thi.ng/geom-resample@0.1.1) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/geom-resample
+
+
+
+
+
# 0.1.0 (2019-02-05)
diff --git a/packages/geom-resample/package.json b/packages/geom-resample/package.json
index 2aa1d3e279..56478c1620 100644
--- a/packages/geom-resample/package.json
+++ b/packages/geom-resample/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/geom-resample",
- "version": "0.1.0",
+ "version": "0.1.2",
"description": "Customizable nD polyline interpolation, re-sampling, splitting & nearest point computation",
"module": "./index.js",
"main": "./lib/index.js",
@@ -32,11 +32,11 @@
"typescript": "^3.2.2"
},
"dependencies": {
- "@thi.ng/checks": "^2.0.2",
- "@thi.ng/geom-api": "^0.1.0",
- "@thi.ng/geom-closest-point": "^0.1.0",
+ "@thi.ng/checks": "^2.1.0",
+ "@thi.ng/geom-api": "^0.1.2",
+ "@thi.ng/geom-closest-point": "^0.1.2",
"@thi.ng/math": "^1.1.0",
- "@thi.ng/vectors": "^2.2.0"
+ "@thi.ng/vectors": "^2.3.0"
},
"keywords": [
"2D",
diff --git a/packages/geom-splines/CHANGELOG.md b/packages/geom-splines/CHANGELOG.md
index e4031d03ac..7d9ad7a0d5 100644
--- a/packages/geom-splines/CHANGELOG.md
+++ b/packages/geom-splines/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.
+## [0.1.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-splines@0.1.1...@thi.ng/geom-splines@0.1.2) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/geom-splines
+
+
+
+
+
+## [0.1.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-splines@0.1.0...@thi.ng/geom-splines@0.1.1) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/geom-splines
+
+
+
+
+
# 0.1.0 (2019-02-05)
diff --git a/packages/geom-splines/package.json b/packages/geom-splines/package.json
index 53b77b1d34..6d1db39ed1 100644
--- a/packages/geom-splines/package.json
+++ b/packages/geom-splines/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/geom-splines",
- "version": "0.1.0",
+ "version": "0.1.2",
"description": "nD cubic & quadratic curve analysis, conversion, interpolation, splitting",
"module": "./index.js",
"main": "./lib/index.js",
@@ -32,12 +32,12 @@
"typescript": "^3.2.2"
},
"dependencies": {
- "@thi.ng/checks": "^2.0.2",
- "@thi.ng/geom-api": "^0.1.0",
- "@thi.ng/geom-arc": "^0.1.0",
- "@thi.ng/geom-resample": "^0.1.0",
+ "@thi.ng/checks": "^2.1.0",
+ "@thi.ng/geom-api": "^0.1.2",
+ "@thi.ng/geom-arc": "^0.1.2",
+ "@thi.ng/geom-resample": "^0.1.2",
"@thi.ng/math": "^1.1.0",
- "@thi.ng/vectors": "^2.2.0"
+ "@thi.ng/vectors": "^2.3.0"
},
"keywords": [
"2D",
diff --git a/packages/geom-subdiv-curve/CHANGELOG.md b/packages/geom-subdiv-curve/CHANGELOG.md
index 7228378a3e..39ba3d2ab4 100644
--- a/packages/geom-subdiv-curve/CHANGELOG.md
+++ b/packages/geom-subdiv-curve/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.
+## [0.1.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-subdiv-curve@0.1.1...@thi.ng/geom-subdiv-curve@0.1.2) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/geom-subdiv-curve
+
+
+
+
+
+## [0.1.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-subdiv-curve@0.1.0...@thi.ng/geom-subdiv-curve@0.1.1) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/geom-subdiv-curve
+
+
+
+
+
# 0.1.0 (2019-02-05)
diff --git a/packages/geom-subdiv-curve/package.json b/packages/geom-subdiv-curve/package.json
index c1fb573d26..d84add2ae2 100644
--- a/packages/geom-subdiv-curve/package.json
+++ b/packages/geom-subdiv-curve/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/geom-subdiv-curve",
- "version": "0.1.0",
+ "version": "0.1.2",
"description": "Freely customizable, iterative subdivision curves for open / closed input geometries",
"module": "./index.js",
"main": "./lib/index.js",
@@ -32,9 +32,9 @@
"typescript": "^3.2.2"
},
"dependencies": {
- "@thi.ng/geom-api": "^0.1.0",
- "@thi.ng/transducers": "^4.0.0",
- "@thi.ng/vectors": "^2.2.0"
+ "@thi.ng/geom-api": "^0.1.2",
+ "@thi.ng/transducers": "^5.0.0",
+ "@thi.ng/vectors": "^2.3.0"
},
"keywords": [
"2D",
diff --git a/packages/geom-tessellate/CHANGELOG.md b/packages/geom-tessellate/CHANGELOG.md
index 94f296ba84..8c82580bba 100644
--- a/packages/geom-tessellate/CHANGELOG.md
+++ b/packages/geom-tessellate/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.
+## [0.1.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-tessellate@0.1.1...@thi.ng/geom-tessellate@0.1.2) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/geom-tessellate
+
+
+
+
+
+## [0.1.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-tessellate@0.1.0...@thi.ng/geom-tessellate@0.1.1) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/geom-tessellate
+
+
+
+
+
# 0.1.0 (2019-02-05)
diff --git a/packages/geom-tessellate/package.json b/packages/geom-tessellate/package.json
index 1b59ad67f8..f2b1584dff 100644
--- a/packages/geom-tessellate/package.json
+++ b/packages/geom-tessellate/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/geom-tessellate",
- "version": "0.1.0",
+ "version": "0.1.2",
"description": "2D/3D polygon tessellators",
"module": "./index.js",
"main": "./lib/index.js",
@@ -32,12 +32,12 @@
"typescript": "^3.2.2"
},
"dependencies": {
- "@thi.ng/checks": "^2.0.2",
- "@thi.ng/geom-api": "^0.1.0",
- "@thi.ng/geom-isec": "^0.1.0",
- "@thi.ng/geom-poly-utils": "^0.1.0",
- "@thi.ng/transducers": "^4.0.0",
- "@thi.ng/vectors": "^2.2.0"
+ "@thi.ng/checks": "^2.1.0",
+ "@thi.ng/geom-api": "^0.1.2",
+ "@thi.ng/geom-isec": "^0.1.2",
+ "@thi.ng/geom-poly-utils": "^0.1.2",
+ "@thi.ng/transducers": "^5.0.0",
+ "@thi.ng/vectors": "^2.3.0"
},
"keywords": [
"2D",
diff --git a/packages/geom-voronoi/CHANGELOG.md b/packages/geom-voronoi/CHANGELOG.md
index b1d8c9b33a..7a754af923 100644
--- a/packages/geom-voronoi/CHANGELOG.md
+++ b/packages/geom-voronoi/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.
+## [0.1.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-voronoi@0.1.1...@thi.ng/geom-voronoi@0.1.2) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/geom-voronoi
+
+
+
+
+
+## [0.1.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom-voronoi@0.1.0...@thi.ng/geom-voronoi@0.1.1) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/geom-voronoi
+
+
+
+
+
# 0.1.0 (2019-02-05)
diff --git a/packages/geom-voronoi/package.json b/packages/geom-voronoi/package.json
index 9f7ff206e9..6a177caaa5 100644
--- a/packages/geom-voronoi/package.json
+++ b/packages/geom-voronoi/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/geom-voronoi",
- "version": "0.1.0",
+ "version": "0.1.2",
"description": "Fast, incremental 2D Delaunay & Voronoi mesh implementation",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,13 +33,13 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/checks": "^2.0.2",
- "@thi.ng/geom-clip": "^0.0.2",
- "@thi.ng/geom-isec": "^0.1.0",
- "@thi.ng/geom-poly-utils": "^0.1.0",
+ "@thi.ng/checks": "^2.1.0",
+ "@thi.ng/geom-clip": "^0.0.4",
+ "@thi.ng/geom-isec": "^0.1.2",
+ "@thi.ng/geom-poly-utils": "^0.1.2",
"@thi.ng/math": "^1.1.0",
"@thi.ng/quad-edge": "^0.1.0",
- "@thi.ng/vectors": "^2.2.0"
+ "@thi.ng/vectors": "^2.3.0"
},
"keywords": [
"2D",
diff --git a/packages/geom/CHANGELOG.md b/packages/geom/CHANGELOG.md
index 2f3dd8b2db..58b1c7f8ee 100644
--- a/packages/geom/CHANGELOG.md
+++ b/packages/geom/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.2.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom@1.2.1...@thi.ng/geom@1.2.2) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/geom
+
+
+
+
+
+## [1.2.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom@1.2.0...@thi.ng/geom@1.2.1) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/geom
+
+
+
+
+
# [1.2.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/geom@1.1.1...@thi.ng/geom@1.2.0) (2019-02-05)
diff --git a/packages/geom/package.json b/packages/geom/package.json
index a6fb839383..bfa69397dc 100644
--- a/packages/geom/package.json
+++ b/packages/geom/package.json
@@ -1,7 +1,7 @@
{
"name": "@thi.ng/geom",
- "version": "1.2.0",
- "description": "TODO",
+ "version": "1.2.2",
+ "description": "2D geometry types, polymorphic operations, SVG generation",
"module": "./index.js",
"main": "./lib/index.js",
"umd:main": "./lib/index.umd.js",
@@ -33,29 +33,30 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/checks": "^2.0.2",
- "@thi.ng/compose": "^1.0.2",
+ "@thi.ng/arrays": "^0.1.0",
+ "@thi.ng/checks": "^2.1.0",
+ "@thi.ng/compose": "^1.1.0",
"@thi.ng/defmulti": "^1.0.2",
"@thi.ng/equiv": "^1.0.2",
"@thi.ng/errors": "^1.0.2",
- "@thi.ng/geom-api": "^0.1.0",
- "@thi.ng/geom-arc": "^0.1.0",
- "@thi.ng/geom-clip": "^0.0.2",
- "@thi.ng/geom-closest-point": "^0.1.0",
- "@thi.ng/geom-hull": "^0.0.2",
- "@thi.ng/geom-isec": "^0.1.0",
- "@thi.ng/geom-poly-utils": "^0.1.0",
- "@thi.ng/geom-resample": "^0.1.0",
- "@thi.ng/geom-splines": "^0.1.0",
- "@thi.ng/geom-subdiv-curve": "^0.1.0",
- "@thi.ng/geom-tessellate": "^0.1.0",
- "@thi.ng/hiccup": "^3.0.2",
- "@thi.ng/hiccup-svg": "^3.1.2",
+ "@thi.ng/geom-api": "^0.1.2",
+ "@thi.ng/geom-arc": "^0.1.2",
+ "@thi.ng/geom-clip": "^0.0.4",
+ "@thi.ng/geom-closest-point": "^0.1.2",
+ "@thi.ng/geom-hull": "^0.0.4",
+ "@thi.ng/geom-isec": "^0.1.2",
+ "@thi.ng/geom-poly-utils": "^0.1.2",
+ "@thi.ng/geom-resample": "^0.1.2",
+ "@thi.ng/geom-splines": "^0.1.2",
+ "@thi.ng/geom-subdiv-curve": "^0.1.2",
+ "@thi.ng/geom-tessellate": "^0.1.2",
+ "@thi.ng/hiccup": "^3.0.3",
+ "@thi.ng/hiccup-svg": "^3.1.4",
"@thi.ng/math": "^1.1.0",
- "@thi.ng/matrices": "^0.1.3",
- "@thi.ng/random": "^1.0.2",
- "@thi.ng/transducers": "^4.0.0",
- "@thi.ng/vectors": "^2.2.0"
+ "@thi.ng/matrices": "^0.1.5",
+ "@thi.ng/random": "^1.1.0",
+ "@thi.ng/transducers": "^5.0.0",
+ "@thi.ng/vectors": "^2.3.0"
},
"keywords": [
"2D",
diff --git a/packages/geom/src/ctors/path.ts b/packages/geom/src/ctors/path.ts
index b94f7b8fcd..0caf648e0d 100644
--- a/packages/geom/src/ctors/path.ts
+++ b/packages/geom/src/ctors/path.ts
@@ -1,7 +1,8 @@
+import { peek } from "@thi.ng/arrays";
import { isNumber } from "@thi.ng/checks";
import { Attribs, PathSegment, SegmentType } from "@thi.ng/geom-api";
import { eqDelta, rad } from "@thi.ng/math";
-import { map, mapcat, peek } from "@thi.ng/transducers";
+import { map, mapcat } from "@thi.ng/transducers";
import {
add2,
copy,
diff --git a/packages/geom/src/internal/args.ts b/packages/geom/src/internal/args.ts
index 7bf1bba99f..451a1908b5 100644
--- a/packages/geom/src/internal/args.ts
+++ b/packages/geom/src/internal/args.ts
@@ -1,5 +1,5 @@
+import { peek } from "@thi.ng/arrays";
import { isNumber, isPlainObject } from "@thi.ng/checks";
-import { peek } from "@thi.ng/transducers";
/**
* Takes an array of arguments, checks if last element is a plain object
diff --git a/packages/geom/src/ops/simplify.ts b/packages/geom/src/ops/simplify.ts
index 8cb229d8c2..164aeaf9a9 100644
--- a/packages/geom/src/ops/simplify.ts
+++ b/packages/geom/src/ops/simplify.ts
@@ -1,3 +1,4 @@
+import { peek } from "@thi.ng/arrays";
import { defmulti } from "@thi.ng/defmulti";
import {
IShape,
@@ -6,7 +7,6 @@ import {
Type
} from "@thi.ng/geom-api";
import { simplify as _simplify } from "@thi.ng/geom-resample";
-import { peek } from "@thi.ng/transducers";
import { Vec } from "@thi.ng/vectors";
import { dispatch } from "../internal/dispatch";
import { vertices } from "./vertices";
diff --git a/packages/hdom-canvas/CHANGELOG.md b/packages/hdom-canvas/CHANGELOG.md
index fb4141a2f8..ab7da76bf1 100644
--- a/packages/hdom-canvas/CHANGELOG.md
+++ b/packages/hdom-canvas/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.1.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom-canvas@1.1.3...@thi.ng/hdom-canvas@1.1.4) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/hdom-canvas
+
+
+
+
+
+## [1.1.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom-canvas@1.1.2...@thi.ng/hdom-canvas@1.1.3) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/hdom-canvas
+
+
+
+
+
## [1.1.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom-canvas@1.1.1...@thi.ng/hdom-canvas@1.1.2) (2019-02-05)
**Note:** Version bump only for package @thi.ng/hdom-canvas
diff --git a/packages/hdom-canvas/package.json b/packages/hdom-canvas/package.json
index 563768ae61..636eaf3d6c 100644
--- a/packages/hdom-canvas/package.json
+++ b/packages/hdom-canvas/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/hdom-canvas",
- "version": "1.1.2",
+ "version": "1.1.4",
"description": "Declarative canvas scenegraph & visualization for @thi.ng/hdom",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,10 +33,10 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/checks": "^2.0.2",
- "@thi.ng/color": "^0.1.3",
+ "@thi.ng/checks": "^2.1.0",
+ "@thi.ng/color": "^0.1.5",
"@thi.ng/diff": "^3.0.2",
- "@thi.ng/hdom": "^7.0.2"
+ "@thi.ng/hdom": "^7.1.0"
},
"keywords": [
"ES6",
diff --git a/packages/hdom-components/CHANGELOG.md b/packages/hdom-components/CHANGELOG.md
index 48a526ee3d..d98097f8be 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.
+## [3.0.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom-components@3.0.4...@thi.ng/hdom-components@3.0.5) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/hdom-components
+
+
+
+
+
+## [3.0.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom-components@3.0.3...@thi.ng/hdom-components@3.0.4) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/hdom-components
+
+
+
+
+
## [3.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom-components@3.0.2...@thi.ng/hdom-components@3.0.3) (2019-02-05)
**Note:** Version bump only for package @thi.ng/hdom-components
diff --git a/packages/hdom-components/package.json b/packages/hdom-components/package.json
index 2376386a18..33115a9344 100644
--- a/packages/hdom-components/package.json
+++ b/packages/hdom-components/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/hdom-components",
- "version": "3.0.3",
+ "version": "3.0.5",
"description": "Raw, skinnable UI & SVG components for @thi.ng/hdom",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,10 +33,10 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/checks": "^2.0.2",
+ "@thi.ng/checks": "^2.1.0",
"@thi.ng/math": "^1.1.0",
- "@thi.ng/transducers": "^4.0.0",
- "@thi.ng/transducers-stats": "^1.0.3",
+ "@thi.ng/transducers": "^5.0.0",
+ "@thi.ng/transducers-stats": "^1.0.5",
"@types/webgl2": "^0.0.4"
},
"keywords": [
diff --git a/packages/hdom-mock/CHANGELOG.md b/packages/hdom-mock/CHANGELOG.md
index b8f28249e8..202966d536 100644
--- a/packages/hdom-mock/CHANGELOG.md
+++ b/packages/hdom-mock/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.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom-mock@1.0.2...@thi.ng/hdom-mock@1.0.3) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/hdom-mock
+
+
+
+
+
## [1.0.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom-mock@1.0.1...@thi.ng/hdom-mock@1.0.2) (2019-02-05)
**Note:** Version bump only for package @thi.ng/hdom-mock
diff --git a/packages/hdom-mock/package.json b/packages/hdom-mock/package.json
index 9c63d25460..0afa03ed6b 100644
--- a/packages/hdom-mock/package.json
+++ b/packages/hdom-mock/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/hdom-mock",
- "version": "1.0.2",
+ "version": "1.0.3",
"description": "Mock base implementation for @thi.ng/hdom API",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,8 +33,8 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/checks": "^2.0.2",
- "@thi.ng/hdom": "^7.0.2"
+ "@thi.ng/checks": "^2.1.0",
+ "@thi.ng/hdom": "^7.1.0"
},
"keywords": [
"ES6",
diff --git a/packages/hdom/CHANGELOG.md b/packages/hdom/CHANGELOG.md
index 04fd873468..c911ab5438 100644
--- a/packages/hdom/CHANGELOG.md
+++ b/packages/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.
+# [7.1.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom@7.0.2...@thi.ng/hdom@7.1.0) (2019-02-10)
+
+
+### Bug Fixes
+
+* **hdom:** fix [#72](https://github.com/thi-ng/umbrella/issues/72), update normalizeElement() ([3ed4ea1](https://github.com/thi-ng/umbrella/commit/3ed4ea1))
+
+
+### Features
+
+* **hdom:** add scrollTop/Left property support in setAttrib() ([895da65](https://github.com/thi-ng/umbrella/commit/895da65))
+
+
+
+
+
## [7.0.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/hdom@7.0.1...@thi.ng/hdom@7.0.2) (2019-02-05)
**Note:** Version bump only for package @thi.ng/hdom
diff --git a/packages/hdom/README.md b/packages/hdom/README.md
index 5b1e185052..3b9b9de335 100644
--- a/packages/hdom/README.md
+++ b/packages/hdom/README.md
@@ -1199,11 +1199,16 @@ serialized output.
#### __skip
-If `true`, the element will not be diffed and simply skipped. IMPORTANT:
-This attribute is only intended for cases when a component / tree branch
-should NOT be updated, but MUST NOT be enabled when that component is
-first introduced / included in the tree. Doing so will result in
-undefined future update behavior.
+If true, the element will not be diffed and simply skipped. This
+attribute is only intended for cases when a component / tree branch
+should not be updated, but MUST NEVER be enabled when that component is
+first included in the tree. Doing so will result in undefined future
+behavior.
+
+Note, skipped elements and their children are being normalized, but are
+ignored during diffing. Therefore, if this attribute is enabled the
+element should either have no children OR the children are the same
+(type) as when the attribute is disabled (i.e. when `__skip` is falsy).
### Benchmarks
diff --git a/packages/hdom/package.json b/packages/hdom/package.json
index 0773ccbb30..26b10cff67 100644
--- a/packages/hdom/package.json
+++ b/packages/hdom/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/hdom",
- "version": "7.0.2",
+ "version": "7.1.0",
"description": "Lightweight vanilla ES6 UI component trees with customizable branch-local behaviors",
"module": "./index.js",
"main": "./lib/index.js",
@@ -24,7 +24,7 @@
"pub": "yarn build && yarn publish --access public"
},
"devDependencies": {
- "@thi.ng/atom": "^2.0.2",
+ "@thi.ng/atom": "^2.0.3",
"@types/mocha": "^5.2.5",
"@types/node": "^10.12.15",
"mocha": "^5.2.0",
@@ -34,11 +34,11 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/checks": "^2.0.2",
+ "@thi.ng/checks": "^2.1.0",
"@thi.ng/diff": "^3.0.2",
"@thi.ng/equiv": "^1.0.2",
"@thi.ng/errors": "^1.0.2",
- "@thi.ng/hiccup": "^3.0.2"
+ "@thi.ng/hiccup": "^3.0.3"
},
"keywords": [
"browser",
diff --git a/packages/hdom/src/api.ts b/packages/hdom/src/api.ts
index 05a1f643d4..489692d591 100644
--- a/packages/hdom/src/api.ts
+++ b/packages/hdom/src/api.ts
@@ -56,6 +56,12 @@ export interface HDOMBehaviorAttribs {
* updated, but MUST NEVER be enabled when that component is first
* included in the tree. Doing so will result in undefined future
* behavior.
+ *
+ * Note, skipped elements and their children are being normalized,
+ * but are ignored during diffing. Therefore, if this attribute is
+ * enabled the element should either have no children OR the
+ * children are the same (type) as when the attribute is disabled
+ * (i.e. when `__skip` is falsy).
*/
__skip?: boolean;
/**
diff --git a/packages/hdom/src/dom.ts b/packages/hdom/src/dom.ts
index 06aa938878..632d78dbcb 100644
--- a/packages/hdom/src/dom.ts
+++ b/packages/hdom/src/dom.ts
@@ -232,7 +232,10 @@ export const setAttrib =
case "value":
updateValueAttrib(el, val);
break;
+ case "id":
case "checked":
+ case "scrollTop":
+ case "scrollLeft":
// TODO add more native attribs?
el[id] = val;
break;
diff --git a/packages/hdom/src/normalize.ts b/packages/hdom/src/normalize.ts
index 575fa7c46c..4776e1db54 100644
--- a/packages/hdom/src/normalize.ts
+++ b/packages/hdom/src/normalize.ts
@@ -28,6 +28,9 @@ const isPlainObject = iso;
* ["div.bar.baz", {class: "foo"}] => ["div", {class: "foo bar baz"}]
* ```
*
+ * Elements with `__skip` attrib enabled and no children, will have an
+ * empty text child element injected.
+ *
* @param spec
* @param keys
*/
@@ -55,7 +58,9 @@ export const normalizeElement =
attribs.class = clazz;
}
}
- return [match[1], attribs, ...spec.slice(hasAttribs ? 2 : 1)];
+ return attribs.__skip && spec.length < 3 ?
+ [match[1], attribs, ""] :
+ [match[1], attribs, ...spec.slice(hasAttribs ? 2 : 1)];
};
/**
diff --git a/packages/heaps/CHANGELOG.md b/packages/heaps/CHANGELOG.md
index 0ff3012f42..1fbae5eec4 100644
--- a/packages/heaps/CHANGELOG.md
+++ b/packages/heaps/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.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/heaps@1.0.2...@thi.ng/heaps@1.0.3) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/heaps
+
+
+
+
+
## [1.0.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/heaps@1.0.1...@thi.ng/heaps@1.0.2) (2019-02-05)
**Note:** Version bump only for package @thi.ng/heaps
diff --git a/packages/heaps/package.json b/packages/heaps/package.json
index 204ab78851..584a82cd06 100644
--- a/packages/heaps/package.json
+++ b/packages/heaps/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/heaps",
- "version": "1.0.2",
+ "version": "1.0.3",
"description": "Generic binary heap & d-ary heap implementations with customizable ordering",
"module": "./index.js",
"main": "./lib/index.js",
diff --git a/packages/heaps/src/heap.ts b/packages/heaps/src/heap.ts
index f396ba8fd1..f2e7b8aa76 100644
--- a/packages/heaps/src/heap.ts
+++ b/packages/heaps/src/heap.ts
@@ -173,11 +173,11 @@ export class Heap implements
if (!n) {
return res;
}
- let x = res[n - 1], y;
+ let x = res[n - 1], y: T;
for (let i = n, m = vals.length; i < m; i++) {
y = vals[i];
if (cmp(y, x) < 0) {
- res.splice(binarySearch(res, y, 0, n, cmp), 0, y);
+ res.splice(binarySearch(y, res, 0, n, cmp), 0, y);
res.pop();
x = res[n - 1];
}
@@ -244,7 +244,13 @@ export class Heap implements
}
}
-function binarySearch(vals: T[], x: T, lo: number, hi: number, cmp: Comparator) {
+const binarySearch = (
+ x: T,
+ vals: T[],
+ lo: number,
+ hi: number,
+ cmp: Comparator
+) => {
let m;
while (lo < hi) {
m = (lo + hi) >>> 1;
@@ -255,4 +261,4 @@ function binarySearch(vals: T[], x: T, lo: number, hi: number, cmp: Comparato
}
}
return lo;
-}
+};
diff --git a/packages/hiccup-carbon-icons/CHANGELOG.md b/packages/hiccup-carbon-icons/CHANGELOG.md
index f41a070354..09c6709c57 100644
--- a/packages/hiccup-carbon-icons/CHANGELOG.md
+++ b/packages/hiccup-carbon-icons/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.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-carbon-icons@1.0.3...@thi.ng/hiccup-carbon-icons@1.0.4) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/hiccup-carbon-icons
+
+
+
+
+
+## [1.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-carbon-icons@1.0.2...@thi.ng/hiccup-carbon-icons@1.0.3) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/hiccup-carbon-icons
+
+
+
+
+
## [1.0.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-carbon-icons@1.0.1...@thi.ng/hiccup-carbon-icons@1.0.2) (2019-02-05)
**Note:** Version bump only for package @thi.ng/hiccup-carbon-icons
diff --git a/packages/hiccup-carbon-icons/package.json b/packages/hiccup-carbon-icons/package.json
index 8c495e878f..cb34fcc1f0 100644
--- a/packages/hiccup-carbon-icons/package.json
+++ b/packages/hiccup-carbon-icons/package.json
@@ -1,7 +1,7 @@
{
"name": "@thi.ng/hiccup-carbon-icons",
- "version": "1.0.2",
- "description": "TODO",
+ "version": "1.0.4",
+ "description": "Full set of IBM's Carbon icons in hiccup format",
"module": "./index.js",
"main": "./lib/index.js",
"umd:main": "./lib/index.umd.js",
@@ -24,7 +24,7 @@
"pub": "yarn build && yarn publish --access public"
},
"devDependencies": {
- "@thi.ng/hiccup": "^3.0.2",
+ "@thi.ng/hiccup": "^3.0.3",
"@types/mocha": "^5.2.5",
"@types/node": "^10.12.15",
"mocha": "^5.2.0",
diff --git a/packages/hiccup-css/CHANGELOG.md b/packages/hiccup-css/CHANGELOG.md
index 2e44e4b4b2..2d97e4b91a 100644
--- a/packages/hiccup-css/CHANGELOG.md
+++ b/packages/hiccup-css/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.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-css@1.0.4...@thi.ng/hiccup-css@1.0.5) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/hiccup-css
+
+
+
+
+
+## [1.0.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-css@1.0.3...@thi.ng/hiccup-css@1.0.4) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/hiccup-css
+
+
+
+
+
## [1.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-css@1.0.2...@thi.ng/hiccup-css@1.0.3) (2019-02-05)
**Note:** Version bump only for package @thi.ng/hiccup-css
diff --git a/packages/hiccup-css/package.json b/packages/hiccup-css/package.json
index 4e0ce82fc8..87c9ad8658 100644
--- a/packages/hiccup-css/package.json
+++ b/packages/hiccup-css/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/hiccup-css",
- "version": "1.0.3",
+ "version": "1.0.5",
"description": "CSS from nested JS data structures",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,9 +33,9 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/checks": "^2.0.2",
+ "@thi.ng/checks": "^2.1.0",
"@thi.ng/errors": "^1.0.2",
- "@thi.ng/transducers": "^4.0.0"
+ "@thi.ng/transducers": "^5.0.0"
},
"keywords": [
"clojure",
diff --git a/packages/hiccup-markdown/CHANGELOG.md b/packages/hiccup-markdown/CHANGELOG.md
index 4db68ce1d8..e9929076ab 100644
--- a/packages/hiccup-markdown/CHANGELOG.md
+++ b/packages/hiccup-markdown/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.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-markdown@1.0.4...@thi.ng/hiccup-markdown@1.0.5) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/hiccup-markdown
+
+
+
+
+
+## [1.0.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-markdown@1.0.3...@thi.ng/hiccup-markdown@1.0.4) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/hiccup-markdown
+
+
+
+
+
## [1.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-markdown@1.0.2...@thi.ng/hiccup-markdown@1.0.3) (2019-02-05)
**Note:** Version bump only for package @thi.ng/hiccup-markdown
diff --git a/packages/hiccup-markdown/package.json b/packages/hiccup-markdown/package.json
index ff0c384ef3..a0a02c6a36 100644
--- a/packages/hiccup-markdown/package.json
+++ b/packages/hiccup-markdown/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/hiccup-markdown",
- "version": "1.0.3",
+ "version": "1.0.5",
"description": "Markdown serialization of hiccup DOM trees",
"module": "./index.js",
"main": "./lib/index.js",
@@ -32,13 +32,14 @@
"typescript": "^3.2.2"
},
"dependencies": {
- "@thi.ng/checks": "^2.0.2",
+ "@thi.ng/arrays": "^0.1.0",
+ "@thi.ng/checks": "^2.1.0",
"@thi.ng/defmulti": "^1.0.2",
"@thi.ng/errors": "^1.0.2",
- "@thi.ng/fsm": "^1.0.3",
- "@thi.ng/hiccup": "^3.0.2",
+ "@thi.ng/fsm": "^2.0.0",
+ "@thi.ng/hiccup": "^3.0.3",
"@thi.ng/strings": "^1.0.3",
- "@thi.ng/transducers": "^4.0.0"
+ "@thi.ng/transducers": "^5.0.0"
},
"keywords": [
"ES6",
diff --git a/packages/hiccup-markdown/src/parse.ts b/packages/hiccup-markdown/src/parse.ts
index 937537c9e8..26a5babb2d 100644
--- a/packages/hiccup-markdown/src/parse.ts
+++ b/packages/hiccup-markdown/src/parse.ts
@@ -1,3 +1,4 @@
+import { peek } from "@thi.ng/arrays";
import {
alts,
fsm,
@@ -6,10 +7,9 @@ import {
ResultBody,
seq,
str,
- until,
+ untilStr,
whitespace
} from "@thi.ng/fsm";
-import { peek } from "@thi.ng/transducers";
import { TagFactories } from "./api";
type ParseResult = ResultBody;
@@ -217,9 +217,9 @@ const matchLink =
(result: (href, body) => any[]) =>
seq(
[
- until(LINK_LABEL_END, (ctx, body) => (ctx.title = body, null)),
+ untilStr(LINK_LABEL_END, (ctx, body) => (ctx.title = body, null)),
str(LINK_HREF),
- until(LINK_HREF_END, (ctx, body) => (ctx.href = body, null)),
+ untilStr(LINK_HREF_END, (ctx, body) => (ctx.href = body, null)),
],
pop((ctx) => result(ctx.href, ctx.title))
);
@@ -343,10 +343,10 @@ export const parse = (tags?: Partial) => {
),
[State.START_CODEBLOCK]:
- until(NL, (ctx, lang) => (ctx.lang = lang, [State.CODEBLOCK])),
+ untilStr(NL, (ctx, lang) => (ctx.lang = lang, [State.CODEBLOCK])),
[State.CODEBLOCK]:
- until(CODEBLOCK_END, collectCodeBlock(tags.codeblock)),
+ untilStr(CODEBLOCK_END, collectCodeBlock(tags.codeblock)),
[State.LI]:
matchPara(State.LI, State.END_LI),
@@ -367,16 +367,16 @@ export const parse = (tags?: Partial) => {
matchLink(tags.img),
[State.STRONG]:
- until(STRONG, collectInline(tags.strong)),
+ untilStr(STRONG, collectInline(tags.strong)),
[State.STRIKE]:
- until(STRIKE, collectInline(tags.strike)),
+ untilStr(STRIKE, collectInline(tags.strike)),
[State.EMPHASIS]:
- until(EM, collectInline(tags.em)),
+ untilStr(EM, collectInline(tags.em)),
[State.CODE]:
- until(CODE, collectInline(tags.code)),
+ untilStr(CODE, collectInline(tags.code)),
[State.TABLE]:
alts(
diff --git a/packages/hiccup-svg/CHANGELOG.md b/packages/hiccup-svg/CHANGELOG.md
index db6b6a4af8..5e385688c3 100644
--- a/packages/hiccup-svg/CHANGELOG.md
+++ b/packages/hiccup-svg/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.
+## [3.1.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-svg@3.1.3...@thi.ng/hiccup-svg@3.1.4) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/hiccup-svg
+
+
+
+
+
+## [3.1.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-svg@3.1.2...@thi.ng/hiccup-svg@3.1.3) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/hiccup-svg
+
+
+
+
+
## [3.1.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup-svg@3.1.1...@thi.ng/hiccup-svg@3.1.2) (2019-02-05)
**Note:** Version bump only for package @thi.ng/hiccup-svg
diff --git a/packages/hiccup-svg/package.json b/packages/hiccup-svg/package.json
index 93c13a68a5..afd921b47a 100644
--- a/packages/hiccup-svg/package.json
+++ b/packages/hiccup-svg/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/hiccup-svg",
- "version": "3.1.2",
+ "version": "3.1.4",
"description": "SVG element functions for @thi.ng/hiccup & @thi.ng/hdom",
"module": "./index.js",
"main": "./lib/index.js",
@@ -32,9 +32,9 @@
"typescript": "^3.2.2"
},
"dependencies": {
- "@thi.ng/checks": "^2.0.2",
- "@thi.ng/color": "^0.1.3",
- "@thi.ng/hiccup": "^3.0.2"
+ "@thi.ng/checks": "^2.1.0",
+ "@thi.ng/color": "^0.1.5",
+ "@thi.ng/hiccup": "^3.0.3"
},
"keywords": [
"components",
diff --git a/packages/hiccup/CHANGELOG.md b/packages/hiccup/CHANGELOG.md
index 1db7ab7b18..41a6f1a03f 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.
+## [3.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup@3.0.2...@thi.ng/hiccup@3.0.3) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/hiccup
+
+
+
+
+
## [3.0.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/hiccup@3.0.1...@thi.ng/hiccup@3.0.2) (2019-02-05)
**Note:** Version bump only for package @thi.ng/hiccup
diff --git a/packages/hiccup/package.json b/packages/hiccup/package.json
index 897c0c16c8..7f6c197d35 100644
--- a/packages/hiccup/package.json
+++ b/packages/hiccup/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/hiccup",
- "version": "3.0.2",
+ "version": "3.0.3",
"description": "HTML/SVG/XML serialization of nested data structures, iterables & closures",
"module": "./index.js",
"main": "./lib/index.js",
@@ -24,7 +24,7 @@
"pub": "yarn build && yarn publish --access public"
},
"devDependencies": {
- "@thi.ng/atom": "^2.0.2",
+ "@thi.ng/atom": "^2.0.3",
"@types/mocha": "^5.2.5",
"@types/node": "^10.12.15",
"mocha": "^5.2.0",
@@ -33,7 +33,7 @@
"typescript": "^3.2.2"
},
"dependencies": {
- "@thi.ng/checks": "^2.0.2",
+ "@thi.ng/checks": "^2.1.0",
"@thi.ng/errors": "^1.0.2"
},
"keywords": [
diff --git a/packages/iges/CHANGELOG.md b/packages/iges/CHANGELOG.md
index dd17051cab..55721e6634 100644
--- a/packages/iges/CHANGELOG.md
+++ b/packages/iges/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.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/iges@1.0.4...@thi.ng/iges@1.0.5) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/iges
+
+
+
+
+
+## [1.0.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/iges@1.0.3...@thi.ng/iges@1.0.4) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/iges
+
+
+
+
+
## [1.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/iges@1.0.2...@thi.ng/iges@1.0.3) (2019-02-05)
**Note:** Version bump only for package @thi.ng/iges
diff --git a/packages/iges/package.json b/packages/iges/package.json
index 8eaf357b11..43ad07f5e8 100644
--- a/packages/iges/package.json
+++ b/packages/iges/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/iges",
- "version": "1.0.3",
+ "version": "1.0.5",
"description": "IGES 5.3 serializer for (currently only) polygonal geometry, both open & closed",
"module": "./index.js",
"main": "./lib/index.js",
@@ -35,7 +35,7 @@
"@thi.ng/api": "^5.0.2",
"@thi.ng/defmulti": "^1.0.2",
"@thi.ng/strings": "^1.0.3",
- "@thi.ng/transducers": "^4.0.0"
+ "@thi.ng/transducers": "^5.0.0"
},
"keywords": [
"CAD",
diff --git a/packages/interceptors/CHANGELOG.md b/packages/interceptors/CHANGELOG.md
index f9e546105f..1e462056fe 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.
+## [2.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@2.0.2...@thi.ng/interceptors@2.0.3) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/interceptors
+
+
+
+
+
## [2.0.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@2.0.1...@thi.ng/interceptors@2.0.2) (2019-02-05)
**Note:** Version bump only for package @thi.ng/interceptors
diff --git a/packages/interceptors/package.json b/packages/interceptors/package.json
index 5c4621feec..a49f6834d4 100644
--- a/packages/interceptors/package.json
+++ b/packages/interceptors/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/interceptors",
- "version": "2.0.2",
+ "version": "2.0.3",
"description": "Interceptor based event bus, side effect & immutable state handling",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,10 +33,10 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/atom": "^2.0.2",
- "@thi.ng/checks": "^2.0.2",
+ "@thi.ng/atom": "^2.0.3",
+ "@thi.ng/checks": "^2.1.0",
"@thi.ng/errors": "^1.0.2",
- "@thi.ng/paths": "^2.0.2"
+ "@thi.ng/paths": "^2.0.3"
},
"keywords": [
"ES6",
diff --git a/packages/iterators/CHANGELOG.md b/packages/iterators/CHANGELOG.md
index 888eac1166..ddd3849644 100644
--- a/packages/iterators/CHANGELOG.md
+++ b/packages/iterators/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.
+## [5.0.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/iterators@5.0.4...@thi.ng/iterators@5.0.5) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/iterators
+
+
+
+
+
+## [5.0.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/iterators@5.0.3...@thi.ng/iterators@5.0.4) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/iterators
+
+
+
+
+
## [5.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/iterators@5.0.2...@thi.ng/iterators@5.0.3) (2019-02-05)
**Note:** Version bump only for package @thi.ng/iterators
diff --git a/packages/iterators/package.json b/packages/iterators/package.json
index 0477044f07..97a33f0b44 100644
--- a/packages/iterators/package.json
+++ b/packages/iterators/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/iterators",
- "version": "5.0.3",
+ "version": "5.0.5",
"description": "clojure.core inspired, composable ES6 iterators & generators",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,7 +33,7 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/dcons": "^2.0.3",
+ "@thi.ng/dcons": "^2.0.5",
"@thi.ng/errors": "^1.0.2"
},
"keywords": [
diff --git a/packages/malloc/CHANGELOG.md b/packages/malloc/CHANGELOG.md
index e833a5c534..2c30a11378 100644
--- a/packages/malloc/CHANGELOG.md
+++ b/packages/malloc/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.0.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/malloc@2.0.1...@thi.ng/malloc@2.0.2) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/malloc
+
+
+
+
+
+## [2.0.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/malloc@2.0.0...@thi.ng/malloc@2.0.1) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/malloc
+
+
+
+
+
# [2.0.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/malloc@1.0.1...@thi.ng/malloc@2.0.0) (2019-02-05)
diff --git a/packages/malloc/README.md b/packages/malloc/README.md
index 4eb7bc6adc..111d8aca47 100644
--- a/packages/malloc/README.md
+++ b/packages/malloc/README.md
@@ -19,6 +19,8 @@ This project is part of the
- [`mallocAs(type: Type, num: number)`](#mallocastype-type-num-number)
- [`calloc(size: number)`](#callocsize-number)
- [`callocAs(type: Type, num: number)`](#callocastype-type-num-number)
+ - [`realloc(addr: number, size: number)`](#reallocaddr-number-size-number)
+ - [`reallocArray(buf: TypedArray, num: number)`](#reallocarraybuf-typedarray-num-number)
- [`free(addr: number | TypedArray)`](#freeaddr-number--typedarray)
- [`freeAll()`](#freeall)
- [`release()`](#release)
@@ -35,8 +37,9 @@ TypeScript port of
[thi.ng/tinyalloc](https://github.com/thi-ng/tinyalloc), for raw or
typed array memory pooling and/or hybrid JS/WASM use cases etc. Supports
free block compaction and configurable splitting. Unlike the original,
-this implementation does not constrain the overall number of blocks in
-use and the only imposed limit is that of the underlying array buffer.
+this implementation also supports `realloc()` and does not constrain the
+overall number of blocks in use and the only imposed limit is that of
+the underlying array buffer.
Each `MemPool` instance operates on a single large `ArrayBuffer` used as
backing memory chunk, e.g. the same buffer used by a WASM module.
@@ -172,6 +175,19 @@ preferred over `malloc()`.
Like `mallocAs()` but zeroes allocated block before returning.
+### `realloc(addr: number, size: number)`
+
+Attempts to adjust the size of the block at the given allocated address
+to new `size` or if not possible, attempt to allocate a new block and
+copies contents of current block (if successful, automatically frees old
+address). Returns new address if successful or else 0.
+
+### `reallocArray(buf: TypedArray, num: number)`
+
+Similar to `realloc()`, but takes a typed array created with
+`mallocAs()` / `callocAs()` and returns new arrays of same type or
+`null` if re-allocation wasn't possible.
+
### `free(addr: number | TypedArray)`
Releases given address or array view back into the pool. Returns `true`
diff --git a/packages/malloc/package.json b/packages/malloc/package.json
index 9e23c2bab2..b83373a766 100644
--- a/packages/malloc/package.json
+++ b/packages/malloc/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/malloc",
- "version": "2.0.0",
+ "version": "2.0.2",
"description": "ArrayBuffer based malloc() impl for hybrid JS/WASM use cases, based on thi.ng/tinyalloc",
"module": "./index.js",
"main": "./lib/index.js",
@@ -34,7 +34,7 @@
"dependencies": {
"@thi.ng/api": "^5.0.2",
"@thi.ng/binary": "^1.0.2",
- "@thi.ng/checks": "^2.0.2",
+ "@thi.ng/checks": "^2.1.0",
"@thi.ng/errors": "^1.0.2"
},
"keywords": [
diff --git a/packages/matrices/CHANGELOG.md b/packages/matrices/CHANGELOG.md
index 913c853714..dd4041c2ab 100644
--- a/packages/matrices/CHANGELOG.md
+++ b/packages/matrices/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.
+## [0.1.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/matrices@0.1.4...@thi.ng/matrices@0.1.5) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/matrices
+
+
+
+
+
+## [0.1.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/matrices@0.1.3...@thi.ng/matrices@0.1.4) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/matrices
+
+
+
+
+
## [0.1.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/matrices@0.1.2...@thi.ng/matrices@0.1.3) (2019-02-05)
**Note:** Version bump only for package @thi.ng/matrices
diff --git a/packages/matrices/package.json b/packages/matrices/package.json
index c0779719ad..7a199f3b26 100644
--- a/packages/matrices/package.json
+++ b/packages/matrices/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/matrices",
- "version": "0.1.3",
+ "version": "0.1.5",
"description": "Matrix & quaternion operations for 2D/3D geometry processing",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,9 +33,9 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/checks": "^2.0.2",
+ "@thi.ng/checks": "^2.1.0",
"@thi.ng/math": "^1.1.0",
- "@thi.ng/vectors": "^2.2.0"
+ "@thi.ng/vectors": "^2.3.0"
},
"keywords": [
"2D",
diff --git a/packages/paths/CHANGELOG.md b/packages/paths/CHANGELOG.md
index 858010759e..80b7aaaead 100644
--- a/packages/paths/CHANGELOG.md
+++ b/packages/paths/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.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/paths@2.0.2...@thi.ng/paths@2.0.3) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/paths
+
+
+
+
+
## [2.0.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/paths@2.0.1...@thi.ng/paths@2.0.2) (2019-02-05)
**Note:** Version bump only for package @thi.ng/paths
diff --git a/packages/paths/package.json b/packages/paths/package.json
index c69e5c0471..7855732bf8 100644
--- a/packages/paths/package.json
+++ b/packages/paths/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/paths",
- "version": "2.0.2",
+ "version": "2.0.3",
"description": "immutable, optimized path-based object property / array accessors",
"module": "./index.js",
"main": "./lib/index.js",
@@ -32,7 +32,7 @@
"typescript": "^3.2.2"
},
"dependencies": {
- "@thi.ng/checks": "^2.0.2",
+ "@thi.ng/checks": "^2.1.0",
"@thi.ng/errors": "^1.0.2"
},
"keywords": [
diff --git a/packages/pointfree-lang/CHANGELOG.md b/packages/pointfree-lang/CHANGELOG.md
index 10cfd68253..c92c3c7cb5 100644
--- a/packages/pointfree-lang/CHANGELOG.md
+++ b/packages/pointfree-lang/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.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/pointfree-lang@1.0.3...@thi.ng/pointfree-lang@1.0.4) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/pointfree-lang
+
+
+
+
+
+## [1.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/pointfree-lang@1.0.2...@thi.ng/pointfree-lang@1.0.3) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/pointfree-lang
+
+
+
+
+
## [1.0.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/pointfree-lang@1.0.1...@thi.ng/pointfree-lang@1.0.2) (2019-02-05)
**Note:** Version bump only for package @thi.ng/pointfree-lang
diff --git a/packages/pointfree-lang/package.json b/packages/pointfree-lang/package.json
index 8476afc9d3..5050553a92 100644
--- a/packages/pointfree-lang/package.json
+++ b/packages/pointfree-lang/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/pointfree-lang",
- "version": "1.0.2",
+ "version": "1.0.4",
"description": "Forth style syntax layer/compiler for the @thi.ng/pointfree DSL",
"module": "./index.js",
"main": "./lib/index.js",
@@ -36,7 +36,7 @@
"dependencies": {
"@thi.ng/api": "^5.0.2",
"@thi.ng/errors": "^1.0.2",
- "@thi.ng/pointfree": "^1.0.2"
+ "@thi.ng/pointfree": "^1.0.4"
},
"keywords": [
"concatenative",
diff --git a/packages/pointfree/CHANGELOG.md b/packages/pointfree/CHANGELOG.md
index 7ad897310a..9ed528f2b0 100644
--- a/packages/pointfree/CHANGELOG.md
+++ b/packages/pointfree/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.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/pointfree@1.0.3...@thi.ng/pointfree@1.0.4) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/pointfree
+
+
+
+
+
+## [1.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/pointfree@1.0.2...@thi.ng/pointfree@1.0.3) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/pointfree
+
+
+
+
+
## [1.0.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/pointfree@1.0.1...@thi.ng/pointfree@1.0.2) (2019-02-05)
**Note:** Version bump only for package @thi.ng/pointfree
diff --git a/packages/pointfree/package.json b/packages/pointfree/package.json
index bf0c60284f..1724c3a32d 100644
--- a/packages/pointfree/package.json
+++ b/packages/pointfree/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/pointfree",
- "version": "1.0.2",
+ "version": "1.0.4",
"description": "Pointfree functional composition / Forth style stack execution engine",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,8 +33,8 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/checks": "^2.0.2",
- "@thi.ng/compose": "^1.0.2",
+ "@thi.ng/checks": "^2.1.0",
+ "@thi.ng/compose": "^1.1.0",
"@thi.ng/equiv": "^1.0.2",
"@thi.ng/errors": "^1.0.2"
},
diff --git a/packages/poisson/CHANGELOG.md b/packages/poisson/CHANGELOG.md
index a379a23a56..c42e51cda9 100644
--- a/packages/poisson/CHANGELOG.md
+++ b/packages/poisson/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.
+## [0.2.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/poisson@0.2.1...@thi.ng/poisson@0.2.2) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/poisson
+
+
+
+
+
+## [0.2.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/poisson@0.2.0...@thi.ng/poisson@0.2.1) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/poisson
+
+
+
+
+
# [0.2.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/poisson@0.1.2...@thi.ng/poisson@0.2.0) (2019-02-05)
diff --git a/packages/poisson/package.json b/packages/poisson/package.json
index 5f59bb1c3c..3d8efe79f8 100644
--- a/packages/poisson/package.json
+++ b/packages/poisson/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/poisson",
- "version": "0.2.0",
+ "version": "0.2.2",
"description": "nD Poisson-disc sampling w/ support for spatial density functions and custom PRNGs",
"module": "./index.js",
"main": "./lib/index.js",
@@ -32,10 +32,10 @@
"typescript": "^3.2.2"
},
"dependencies": {
- "@thi.ng/checks": "^2.0.2",
- "@thi.ng/geom-api": "^0.1.0",
- "@thi.ng/random": "^1.0.2",
- "@thi.ng/vectors": "^2.2.0"
+ "@thi.ng/checks": "^2.1.0",
+ "@thi.ng/geom-api": "^0.1.2",
+ "@thi.ng/random": "^1.1.0",
+ "@thi.ng/vectors": "^2.3.0"
},
"keywords": [
"2d",
diff --git a/packages/random/CHANGELOG.md b/packages/random/CHANGELOG.md
index 8048a3412f..a45bc81e55 100644
--- a/packages/random/CHANGELOG.md
+++ b/packages/random/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.1.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/random@1.0.2...@thi.ng/random@1.1.0) (2019-02-15)
+
+
+### Bug Fixes
+
+* **random:** add opt scale arg to IRandom.float() ([5a7e448](https://github.com/thi-ng/umbrella/commit/5a7e448))
+
+
+### Features
+
+* **random:** add randomID() & weightedRandom() ([f719724](https://github.com/thi-ng/umbrella/commit/f719724))
+
+
+
+
+
## [1.0.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/random@1.0.1...@thi.ng/random@1.0.2) (2019-02-05)
**Note:** Version bump only for package @thi.ng/random
diff --git a/packages/random/package.json b/packages/random/package.json
index d14851532e..441e05ede0 100644
--- a/packages/random/package.json
+++ b/packages/random/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/random",
- "version": "1.0.2",
+ "version": "1.1.0",
"description": "Pseudo-random number generators w/ unified API",
"module": "./index.js",
"main": "./lib/index.js",
diff --git a/packages/random/src/api.ts b/packages/random/src/api.ts
index 3cc92b0296..2e405bc872 100644
--- a/packages/random/src/api.ts
+++ b/packages/random/src/api.ts
@@ -2,7 +2,7 @@ import { ICopy } from "@thi.ng/api";
export interface IRandom {
int(): number;
- float(): number;
+ float(norm?: number): number;
norm(scale?: number): number;
minmax(min: number, max: number): number;
gaussian(samples?: number, offset?: number, scale?: number): number;
diff --git a/packages/random/src/index.ts b/packages/random/src/index.ts
index ce7ff7a364..d928606e8f 100644
--- a/packages/random/src/index.ts
+++ b/packages/random/src/index.ts
@@ -4,3 +4,6 @@ export * from "./system";
export * from "./xorshift128";
export * from "./xorwow";
export * from "./xsadd";
+
+export * from "./random-id";
+export * from "./weighted-random";
diff --git a/packages/transducers/src/func/random-id.ts b/packages/random/src/random-id.ts
similarity index 53%
rename from packages/transducers/src/func/random-id.ts
rename to packages/random/src/random-id.ts
index f4901cbb38..fe032f51eb 100644
--- a/packages/transducers/src/func/random-id.ts
+++ b/packages/random/src/random-id.ts
@@ -1,5 +1,5 @@
-import { choices } from "../iter/choices";
-import { take } from "../xform/take";
+import { IRandom } from "./api";
+import { SYSTEM } from "./system";
/**
* Generates and returns a random string of `len` characters (default
@@ -17,7 +17,12 @@ import { take } from "../xform/take";
* @param len
* @param prefix
* @param syms
+ * @param rnd
*/
export const randomID =
- (len = 4, prefix = "", syms = "abcdefghijklmnopqrstuvwxyz") =>
- [prefix, ...take(len, choices(syms))].join("");
+ (len = 4, prefix = "", syms = "abcdefghijklmnopqrstuvwxyz", rnd: IRandom = SYSTEM) => {
+ for (const n = syms.length; --len >= 0;) {
+ prefix += syms[rnd.float(n) | 0];
+ }
+ return prefix;
+ };
diff --git a/packages/random/src/weighted-random.ts b/packages/random/src/weighted-random.ts
new file mode 100644
index 0000000000..6abe7d89f1
--- /dev/null
+++ b/packages/random/src/weighted-random.ts
@@ -0,0 +1,40 @@
+import { IRandom } from "./api";
+import { SYSTEM } from "./system";
+
+/**
+ * Returns a no-arg function which produces a random choice of given
+ * weighted `choices` and using given `IRandom` instance (default:
+ * `SYSTEM`). If `weights` are given, it must be the same size as
+ * `choices`. If omitted, each choice will have same probability.
+ *
+ * https://www.electricmonk.nl/log/2009/12/23/weighted-random-distribution/
+ *
+ * @param choices
+ * @param weights
+ */
+export const weightedRandom = (
+ choices: Array,
+ weights?: ArrayLike,
+ rnd: IRandom = SYSTEM
+) => {
+ const opts = choices.map(
+ weights ?
+ (x, i) => <[T, number]>[x, weights[i]] :
+ (x) => <[T, number]>[x, 1]
+ ).sort((a, b) => b[1] - a[1]);
+ const n = choices.length;
+ let total = 0, i: number, r: number, sum: number;
+ for (i = 0; i < n; i++) {
+ total += opts[i][1];
+ }
+ return () => {
+ r = rnd.float(total);
+ sum = total;
+ for (i = 0; i < n; i++) {
+ sum -= opts[i][1];
+ if (sum <= r) {
+ return opts[i][0];
+ }
+ }
+ };
+};
diff --git a/packages/range-coder/CHANGELOG.md b/packages/range-coder/CHANGELOG.md
index 399baf03b2..8a8560be2e 100644
--- a/packages/range-coder/CHANGELOG.md
+++ b/packages/range-coder/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.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/range-coder@1.0.4...@thi.ng/range-coder@1.0.5) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/range-coder
+
+
+
+
+
+## [1.0.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/range-coder@1.0.3...@thi.ng/range-coder@1.0.4) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/range-coder
+
+
+
+
+
## [1.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/range-coder@1.0.2...@thi.ng/range-coder@1.0.3) (2019-02-05)
**Note:** Version bump only for package @thi.ng/range-coder
diff --git a/packages/range-coder/package.json b/packages/range-coder/package.json
index 9b42703331..73684596d8 100644
--- a/packages/range-coder/package.json
+++ b/packages/range-coder/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/range-coder",
- "version": "1.0.3",
+ "version": "1.0.5",
"description": "Binary data range encoder / decoder",
"module": "./index.js",
"main": "./lib/index.js",
@@ -24,7 +24,7 @@
"pub": "yarn build && yarn publish --access public"
},
"devDependencies": {
- "@thi.ng/transducers": "^4.0.0",
+ "@thi.ng/transducers": "^5.0.0",
"@types/mocha": "^5.2.5",
"@types/node": "^10.12.15",
"mocha": "^5.2.0",
diff --git a/packages/resolve-map/CHANGELOG.md b/packages/resolve-map/CHANGELOG.md
index 7295b268e5..8c37dfc990 100644
--- a/packages/resolve-map/CHANGELOG.md
+++ b/packages/resolve-map/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.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/resolve-map@4.0.2...@thi.ng/resolve-map@4.0.3) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/resolve-map
+
+
+
+
+
## [4.0.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/resolve-map@4.0.1...@thi.ng/resolve-map@4.0.2) (2019-02-05)
**Note:** Version bump only for package @thi.ng/resolve-map
diff --git a/packages/resolve-map/package.json b/packages/resolve-map/package.json
index 1343c34d5c..04539b8bb0 100644
--- a/packages/resolve-map/package.json
+++ b/packages/resolve-map/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/resolve-map",
- "version": "4.0.2",
+ "version": "4.0.3",
"description": "DAG resolution of vanilla objects & arrays with internally linked values",
"module": "./index.js",
"main": "./lib/index.js",
@@ -32,9 +32,9 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/checks": "^2.0.2",
+ "@thi.ng/checks": "^2.1.0",
"@thi.ng/errors": "^1.0.2",
- "@thi.ng/paths": "^2.0.2"
+ "@thi.ng/paths": "^2.0.3"
},
"keywords": [
"configuration",
diff --git a/packages/router/CHANGELOG.md b/packages/router/CHANGELOG.md
index 5800608d25..58c42a4f21 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.
+## [1.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/router@1.0.2...@thi.ng/router@1.0.3) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/router
+
+
+
+
+
## [1.0.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/router@1.0.1...@thi.ng/router@1.0.2) (2019-02-05)
**Note:** Version bump only for package @thi.ng/router
diff --git a/packages/router/package.json b/packages/router/package.json
index 900e4a50ad..bd05fef14d 100644
--- a/packages/router/package.json
+++ b/packages/router/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/router",
- "version": "1.0.2",
+ "version": "1.0.3",
"description": "Generic router for browser & non-browser based applications",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,7 +33,7 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/checks": "^2.0.2",
+ "@thi.ng/checks": "^2.1.0",
"@thi.ng/equiv": "^1.0.2",
"@thi.ng/errors": "^1.0.2"
},
diff --git a/packages/rstream-csp/CHANGELOG.md b/packages/rstream-csp/CHANGELOG.md
index 1428d964a8..a154cba34c 100644
--- a/packages/rstream-csp/CHANGELOG.md
+++ b/packages/rstream-csp/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.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-csp@1.0.4...@thi.ng/rstream-csp@1.0.5) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/rstream-csp
+
+
+
+
+
+## [1.0.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-csp@1.0.3...@thi.ng/rstream-csp@1.0.4) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/rstream-csp
+
+
+
+
+
## [1.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-csp@1.0.2...@thi.ng/rstream-csp@1.0.3) (2019-02-05)
**Note:** Version bump only for package @thi.ng/rstream-csp
diff --git a/packages/rstream-csp/package.json b/packages/rstream-csp/package.json
index 79d18e49fd..86de0aa266 100644
--- a/packages/rstream-csp/package.json
+++ b/packages/rstream-csp/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/rstream-csp",
- "version": "1.0.3",
+ "version": "1.0.5",
"description": "@thi.ng/csp bridge module for @thi.ng/rstream",
"module": "./index.js",
"main": "./lib/index.js",
@@ -32,8 +32,8 @@
"typescript": "^3.2.2"
},
"dependencies": {
- "@thi.ng/csp": "^1.0.3",
- "@thi.ng/rstream": "^2.0.3"
+ "@thi.ng/csp": "^1.0.5",
+ "@thi.ng/rstream": "^2.0.5"
},
"keywords": [
"bridge",
diff --git a/packages/rstream-dot/CHANGELOG.md b/packages/rstream-dot/CHANGELOG.md
index 5be53ee0bc..f019c50fb1 100644
--- a/packages/rstream-dot/CHANGELOG.md
+++ b/packages/rstream-dot/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.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-dot@1.0.4...@thi.ng/rstream-dot@1.0.5) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/rstream-dot
+
+
+
+
+
+## [1.0.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-dot@1.0.3...@thi.ng/rstream-dot@1.0.4) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/rstream-dot
+
+
+
+
+
## [1.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-dot@1.0.2...@thi.ng/rstream-dot@1.0.3) (2019-02-05)
**Note:** Version bump only for package @thi.ng/rstream-dot
diff --git a/packages/rstream-dot/package.json b/packages/rstream-dot/package.json
index 8e16e2d151..a96d83d847 100644
--- a/packages/rstream-dot/package.json
+++ b/packages/rstream-dot/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/rstream-dot",
- "version": "1.0.3",
+ "version": "1.0.5",
"description": "Graphviz DOT conversion of @thi.ng/rstream dataflow graph topologies",
"module": "./index.js",
"main": "./lib/index.js",
@@ -32,7 +32,7 @@
"typescript": "^3.2.2"
},
"dependencies": {
- "@thi.ng/rstream": "^2.0.3"
+ "@thi.ng/rstream": "^2.0.5"
},
"keywords": [
"conversion",
diff --git a/packages/rstream-gestures/CHANGELOG.md b/packages/rstream-gestures/CHANGELOG.md
index 16dd58594f..11a8b23dc6 100644
--- a/packages/rstream-gestures/CHANGELOG.md
+++ b/packages/rstream-gestures/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.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-gestures@1.0.4...@thi.ng/rstream-gestures@1.0.5) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/rstream-gestures
+
+
+
+
+
+## [1.0.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-gestures@1.0.3...@thi.ng/rstream-gestures@1.0.4) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/rstream-gestures
+
+
+
+
+
## [1.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-gestures@1.0.2...@thi.ng/rstream-gestures@1.0.3) (2019-02-05)
**Note:** Version bump only for package @thi.ng/rstream-gestures
diff --git a/packages/rstream-gestures/package.json b/packages/rstream-gestures/package.json
index 9656aaf6a0..6bd105df37 100644
--- a/packages/rstream-gestures/package.json
+++ b/packages/rstream-gestures/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/rstream-gestures",
- "version": "1.0.3",
+ "version": "1.0.5",
"description": "Unified mouse, mouse wheel & single-touch event stream abstraction",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,8 +33,8 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/rstream": "^2.0.3",
- "@thi.ng/transducers": "^4.0.0"
+ "@thi.ng/rstream": "^2.0.5",
+ "@thi.ng/transducers": "^5.0.0"
},
"keywords": [
"dataflow",
diff --git a/packages/rstream-graph/CHANGELOG.md b/packages/rstream-graph/CHANGELOG.md
index 140199259c..903f337850 100644
--- a/packages/rstream-graph/CHANGELOG.md
+++ b/packages/rstream-graph/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.
+## [3.0.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-graph@3.0.4...@thi.ng/rstream-graph@3.0.5) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/rstream-graph
+
+
+
+
+
+## [3.0.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-graph@3.0.3...@thi.ng/rstream-graph@3.0.4) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/rstream-graph
+
+
+
+
+
## [3.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-graph@3.0.2...@thi.ng/rstream-graph@3.0.3) (2019-02-05)
**Note:** Version bump only for package @thi.ng/rstream-graph
diff --git a/packages/rstream-graph/package.json b/packages/rstream-graph/package.json
index 8acd6fde68..128147f2ea 100644
--- a/packages/rstream-graph/package.json
+++ b/packages/rstream-graph/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/rstream-graph",
- "version": "3.0.3",
+ "version": "3.0.5",
"description": "Declarative dataflow graph construction for @thi.ng/rstream",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,12 +33,12 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/checks": "^2.0.2",
+ "@thi.ng/checks": "^2.1.0",
"@thi.ng/errors": "^1.0.2",
- "@thi.ng/paths": "^2.0.2",
- "@thi.ng/resolve-map": "^4.0.2",
- "@thi.ng/rstream": "^2.0.3",
- "@thi.ng/transducers": "^4.0.0"
+ "@thi.ng/paths": "^2.0.3",
+ "@thi.ng/resolve-map": "^4.0.3",
+ "@thi.ng/rstream": "^2.0.5",
+ "@thi.ng/transducers": "^5.0.0"
},
"keywords": [
"compute",
diff --git a/packages/rstream-log/CHANGELOG.md b/packages/rstream-log/CHANGELOG.md
index 19fca79623..5b93fc1a71 100644
--- a/packages/rstream-log/CHANGELOG.md
+++ b/packages/rstream-log/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.0.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-log@2.0.4...@thi.ng/rstream-log@2.0.5) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/rstream-log
+
+
+
+
+
+## [2.0.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-log@2.0.3...@thi.ng/rstream-log@2.0.4) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/rstream-log
+
+
+
+
+
## [2.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-log@2.0.2...@thi.ng/rstream-log@2.0.3) (2019-02-05)
**Note:** Version bump only for package @thi.ng/rstream-log
diff --git a/packages/rstream-log/package.json b/packages/rstream-log/package.json
index eb5c1a9f83..2c1beec213 100644
--- a/packages/rstream-log/package.json
+++ b/packages/rstream-log/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/rstream-log",
- "version": "2.0.3",
+ "version": "2.0.5",
"description": "Structured, multilevel & hierarchical loggers based on @thi.ng/rstream",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,10 +33,10 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/checks": "^2.0.2",
+ "@thi.ng/checks": "^2.1.0",
"@thi.ng/errors": "^1.0.2",
- "@thi.ng/rstream": "^2.0.3",
- "@thi.ng/transducers": "^4.0.0"
+ "@thi.ng/rstream": "^2.0.5",
+ "@thi.ng/transducers": "^5.0.0"
},
"keywords": [
"ES6",
diff --git a/packages/rstream-query/CHANGELOG.md b/packages/rstream-query/CHANGELOG.md
index a5fd6d905f..835685d87f 100644
--- a/packages/rstream-query/CHANGELOG.md
+++ b/packages/rstream-query/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.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-query@1.0.4...@thi.ng/rstream-query@1.0.5) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/rstream-query
+
+
+
+
+
+## [1.0.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-query@1.0.3...@thi.ng/rstream-query@1.0.4) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/rstream-query
+
+
+
+
+
## [1.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream-query@1.0.2...@thi.ng/rstream-query@1.0.3) (2019-02-05)
**Note:** Version bump only for package @thi.ng/rstream-query
diff --git a/packages/rstream-query/package.json b/packages/rstream-query/package.json
index c2835ff4e2..1b38446570 100644
--- a/packages/rstream-query/package.json
+++ b/packages/rstream-query/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/rstream-query",
- "version": "1.0.3",
+ "version": "1.0.5",
"description": "@thi.ng/rstream based triple store & reactive query engine",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,13 +33,13 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/associative": "^1.0.3",
- "@thi.ng/checks": "^2.0.2",
+ "@thi.ng/associative": "^1.0.5",
+ "@thi.ng/checks": "^2.1.0",
"@thi.ng/equiv": "^1.0.2",
"@thi.ng/errors": "^1.0.2",
- "@thi.ng/rstream": "^2.0.3",
- "@thi.ng/rstream-dot": "^1.0.3",
- "@thi.ng/transducers": "^4.0.0"
+ "@thi.ng/rstream": "^2.0.5",
+ "@thi.ng/rstream-dot": "^1.0.5",
+ "@thi.ng/transducers": "^5.0.0"
},
"keywords": [
"dataflow",
diff --git a/packages/rstream/CHANGELOG.md b/packages/rstream/CHANGELOG.md
index 7d9e7f1201..e6340b3bfb 100644
--- a/packages/rstream/CHANGELOG.md
+++ b/packages/rstream/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.0.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream@2.0.4...@thi.ng/rstream@2.0.5) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/rstream
+
+
+
+
+
+## [2.0.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream@2.0.3...@thi.ng/rstream@2.0.4) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/rstream
+
+
+
+
+
## [2.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/rstream@2.0.2...@thi.ng/rstream@2.0.3) (2019-02-05)
**Note:** Version bump only for package @thi.ng/rstream
diff --git a/packages/rstream/package.json b/packages/rstream/package.json
index e81b3bebb5..8385322cc8 100644
--- a/packages/rstream/package.json
+++ b/packages/rstream/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/rstream",
- "version": "2.0.3",
+ "version": "2.0.5",
"description": "Reactive multi-tap streams, dataflow & transformation pipeline constructs",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,12 +33,12 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/associative": "^1.0.3",
- "@thi.ng/atom": "^2.0.2",
- "@thi.ng/checks": "^2.0.2",
+ "@thi.ng/associative": "^1.0.5",
+ "@thi.ng/atom": "^2.0.3",
+ "@thi.ng/checks": "^2.1.0",
"@thi.ng/errors": "^1.0.2",
- "@thi.ng/paths": "^2.0.2",
- "@thi.ng/transducers": "^4.0.0"
+ "@thi.ng/paths": "^2.0.3",
+ "@thi.ng/transducers": "^5.0.0"
},
"keywords": [
"datastructure",
diff --git a/packages/sax/CHANGELOG.md b/packages/sax/CHANGELOG.md
index 52319c7441..2e3f1f0a16 100644
--- a/packages/sax/CHANGELOG.md
+++ b/packages/sax/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.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/sax@1.0.4...@thi.ng/sax@1.0.5) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/sax
+
+
+
+
+
+## [1.0.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/sax@1.0.3...@thi.ng/sax@1.0.4) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/sax
+
+
+
+
+
## [1.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/sax@1.0.2...@thi.ng/sax@1.0.3) (2019-02-05)
**Note:** Version bump only for package @thi.ng/sax
diff --git a/packages/sax/package.json b/packages/sax/package.json
index f2d702c0bb..c2af85f289 100644
--- a/packages/sax/package.json
+++ b/packages/sax/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/sax",
- "version": "1.0.3",
+ "version": "1.0.5",
"description": "Transducer-based, SAX-like, non-validating, speedy & tiny XML parser",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,8 +33,8 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/transducers": "^4.0.0",
- "@thi.ng/transducers-fsm": "^1.0.3"
+ "@thi.ng/transducers": "^5.0.0",
+ "@thi.ng/transducers-fsm": "^1.0.5"
},
"keywords": [
"ES6",
diff --git a/packages/transducers-binary/CHANGELOG.md b/packages/transducers-binary/CHANGELOG.md
index a82fc17903..61d09a43bc 100644
--- a/packages/transducers-binary/CHANGELOG.md
+++ b/packages/transducers-binary/CHANGELOG.md
@@ -3,6 +3,30 @@
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/transducers-binary@0.1.1...@thi.ng/transducers-binary@0.2.0) (2019-02-15)
+
+
+### Bug Fixes
+
+* **transducers-binary:** update juxt import ([77ed4c5](https://github.com/thi-ng/umbrella/commit/77ed4c5))
+
+
+### Features
+
+* **transducers-binary:** add utf8Length() ([7cf98ef](https://github.com/thi-ng/umbrella/commit/7cf98ef))
+
+
+
+
+
+## [0.1.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-binary@0.1.0...@thi.ng/transducers-binary@0.1.1) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/transducers-binary
+
+
+
+
+
# 0.1.0 (2019-02-05)
diff --git a/packages/transducers-binary/package.json b/packages/transducers-binary/package.json
index 849ec5529f..3d530a0ebe 100644
--- a/packages/transducers-binary/package.json
+++ b/packages/transducers-binary/package.json
@@ -1,7 +1,7 @@
{
"name": "@thi.ng/transducers-binary",
- "version": "0.1.0",
- "description": "TODO",
+ "version": "0.2.0",
+ "description": "Binary data related transducers & reducers",
"module": "./index.js",
"main": "./lib/index.js",
"umd:main": "./lib/index.umd.js",
@@ -32,8 +32,9 @@
"typescript": "^3.2.2"
},
"dependencies": {
+ "@thi.ng/compose": "^1.1.0",
"@thi.ng/strings": "^1.0.3",
- "@thi.ng/transducers": "^4.0.0"
+ "@thi.ng/transducers": "^5.0.0"
},
"keywords": [
"base64",
diff --git a/packages/transducers-binary/src/hex-dump.ts b/packages/transducers-binary/src/hex-dump.ts
index 5956e2868f..91a7ded3a1 100644
--- a/packages/transducers-binary/src/hex-dump.ts
+++ b/packages/transducers-binary/src/hex-dump.ts
@@ -1,9 +1,9 @@
+import { juxt } from "@thi.ng/compose";
import { U32, U8 } from "@thi.ng/strings";
import {
$iter,
comp,
iterator,
- juxt,
map,
mapIndexed,
padLast,
diff --git a/packages/transducers-binary/src/utf8.ts b/packages/transducers-binary/src/utf8.ts
index 26534f462e..60a6d9603f 100644
--- a/packages/transducers-binary/src/utf8.ts
+++ b/packages/transducers-binary/src/utf8.ts
@@ -153,3 +153,29 @@ const codePoint = (x) =>
x < 0x10000 ?
String.fromCharCode(x) :
(x -= 0x10000, String.fromCharCode(0xd800 | (x >> 10), 0xdc00 | (x & 0x3ff)));
+
+export const utf8Length =
+ (str: string) => {
+ const n = str.length;
+ let len = 0;
+ for (let i = 0; i < n; ++i) {
+ let u = str.charCodeAt(i);
+ if (u >= 0xd800 && u <= 0xdfff) {
+ u = 0x10000 + ((u & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff);
+ }
+ if (u <= 0x7f) {
+ len++;
+ } else if (u <= 0x7ff) {
+ len += 2;
+ } else if (u <= 0xffff) {
+ len += 3;
+ } else if (u <= 0x1fffff) {
+ len += 4;
+ } else if (u <= 0x3ffffff) {
+ len += 5;
+ } else {
+ len += 6;
+ }
+ }
+ return len;
+ };
diff --git a/packages/transducers-fsm/CHANGELOG.md b/packages/transducers-fsm/CHANGELOG.md
index 647193537e..7be60fe509 100644
--- a/packages/transducers-fsm/CHANGELOG.md
+++ b/packages/transducers-fsm/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.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-fsm@1.0.4...@thi.ng/transducers-fsm@1.0.5) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/transducers-fsm
+
+
+
+
+
+## [1.0.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-fsm@1.0.3...@thi.ng/transducers-fsm@1.0.4) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/transducers-fsm
+
+
+
+
+
## [1.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-fsm@1.0.2...@thi.ng/transducers-fsm@1.0.3) (2019-02-05)
**Note:** Version bump only for package @thi.ng/transducers-fsm
diff --git a/packages/transducers-fsm/package.json b/packages/transducers-fsm/package.json
index 192515030f..e0537257e8 100644
--- a/packages/transducers-fsm/package.json
+++ b/packages/transducers-fsm/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/transducers-fsm",
- "version": "1.0.3",
+ "version": "1.0.5",
"description": "Transducer-based Finite State Machine transformer",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,7 +33,7 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/transducers": "^4.0.0"
+ "@thi.ng/transducers": "^5.0.0"
},
"keywords": [
"ES6",
diff --git a/packages/transducers-hdom/CHANGELOG.md b/packages/transducers-hdom/CHANGELOG.md
index cc88740393..d6f3eaad13 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.
+## [2.0.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-hdom@2.0.4...@thi.ng/transducers-hdom@2.0.5) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/transducers-hdom
+
+
+
+
+
+## [2.0.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-hdom@2.0.3...@thi.ng/transducers-hdom@2.0.4) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/transducers-hdom
+
+
+
+
+
## [2.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-hdom@2.0.2...@thi.ng/transducers-hdom@2.0.3) (2019-02-05)
**Note:** Version bump only for package @thi.ng/transducers-hdom
diff --git a/packages/transducers-hdom/package.json b/packages/transducers-hdom/package.json
index 1e197208db..b6018fedb3 100644
--- a/packages/transducers-hdom/package.json
+++ b/packages/transducers-hdom/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/transducers-hdom",
- "version": "2.0.3",
+ "version": "2.0.5",
"description": "Transducer based UI updater for @thi.ng/hdom",
"module": "./index.js",
"main": "./lib/index.js",
@@ -32,9 +32,9 @@
"typescript": "^3.2.2"
},
"dependencies": {
- "@thi.ng/hdom": "^7.0.2",
- "@thi.ng/hiccup": "^3.0.2",
- "@thi.ng/transducers": "^4.0.0"
+ "@thi.ng/hdom": "^7.1.0",
+ "@thi.ng/hiccup": "^3.0.3",
+ "@thi.ng/transducers": "^5.0.0"
},
"keywords": [
"diff",
diff --git a/packages/transducers-stats/CHANGELOG.md b/packages/transducers-stats/CHANGELOG.md
index 5af97d3f1f..b8e276328b 100644
--- a/packages/transducers-stats/CHANGELOG.md
+++ b/packages/transducers-stats/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.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-stats@1.0.4...@thi.ng/transducers-stats@1.0.5) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/transducers-stats
+
+
+
+
+
+## [1.0.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-stats@1.0.3...@thi.ng/transducers-stats@1.0.4) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/transducers-stats
+
+
+
+
+
## [1.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers-stats@1.0.2...@thi.ng/transducers-stats@1.0.3) (2019-02-05)
**Note:** Version bump only for package @thi.ng/transducers-stats
diff --git a/packages/transducers-stats/package.json b/packages/transducers-stats/package.json
index 5a1c542525..120a4488c6 100644
--- a/packages/transducers-stats/package.json
+++ b/packages/transducers-stats/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/transducers-stats",
- "version": "1.0.3",
+ "version": "1.0.5",
"description": "Transducers for statistical / technical analysis",
"module": "./index.js",
"main": "./lib/index.js",
@@ -32,10 +32,10 @@
"typescript": "^3.2.2"
},
"dependencies": {
- "@thi.ng/checks": "^2.0.2",
- "@thi.ng/dcons": "^2.0.3",
+ "@thi.ng/checks": "^2.1.0",
+ "@thi.ng/dcons": "^2.0.5",
"@thi.ng/errors": "^1.0.2",
- "@thi.ng/transducers": "^4.0.0"
+ "@thi.ng/transducers": "^5.0.0"
},
"keywords": [
"ES6",
diff --git a/packages/transducers/CHANGELOG.md b/packages/transducers/CHANGELOG.md
index 35b56abac7..d7927bcacc 100644
--- a/packages/transducers/CHANGELOG.md
+++ b/packages/transducers/CHANGELOG.md
@@ -3,6 +3,57 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [5.0.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers@4.0.1...@thi.ng/transducers@5.0.0) (2019-02-15)
+
+
+### Code Refactoring
+
+* **transducers:** remove obsolete fns, update to use [@thi](https://github.com/thi).ng/arrays ([83cb816](https://github.com/thi-ng/umbrella/commit/83cb816))
+* **transducers:** remove obsolete randomID() & weightedRandom() ([4b0eec6](https://github.com/thi-ng/umbrella/commit/4b0eec6))
+* **transducers:** restructure, migrate / remove various functions ([05bf213](https://github.com/thi-ng/umbrella/commit/05bf213))
+
+
+### BREAKING CHANGES
+
+* **transducers:** migrate / remove various functions to other packages
+
+- constantly(), delay(), identity() => @thi.ng/compose
+- randomID(), weightedRandom() => @thi.ng/random
+- remove re-exports:
+ - even(), odd() (from @thi.ng/checks)
+ - juxt() (from @thi.ng/compose)
+- remove obsolete hex() fn (use @thi.ng/strings fns instead)
+* **transducers:** migrate randomID() & weightedRandom() to @thi.ng/random
+
+- update choices() iterator
+* **transducers:** migrate various support fns to @thi.ng/arrays
+
+- remove/migrate functions:
+ - binarySearch()
+ - ensureArray() / ensureIterable()
+ - fuzzyMatch()
+ - peek()
+ - shuffleN()
+ - swizzler()
+- add support for IRandom in:
+ - randomID()
+ - choices()
+ - weightedRandom()
+ - sample()
+- update deps / readme
+
+
+
+
+
+## [4.0.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers@4.0.0...@thi.ng/transducers@4.0.1) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/transducers
+
+
+
+
+
# [4.0.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/transducers@3.0.2...@thi.ng/transducers@4.0.0) (2019-02-05)
diff --git a/packages/transducers/README.md b/packages/transducers/README.md
index d686b3a97a..190446be2b 100644
--- a/packages/transducers/README.md
+++ b/packages/transducers/README.md
@@ -10,6 +10,7 @@ This project is part of the
- [About](#about)
+ - [5.0.0 release](#500-release)
- [Related packages](#related-packages)
- [Installation](#installation)
- [Dependencies](#dependencies)
@@ -32,7 +33,7 @@ This project is part of the
- [Types](#types)
- [IReducible](#ireducible)
- [Transducer](#transducer)
- - [Transformations](#transformations)
+ - [Composition & execution](#composition--execution)
- [Transducers](#transducers)
- [Generators / Iterators](#generators--iterators)
- [Reducers](#reducers)
@@ -43,7 +44,7 @@ This project is part of the
## About
-This library provides altogether 130+ transducers, reducers, sequence
+This library provides altogether ~120 transducers, reducers, sequence
generators (iterators) and other supporting functions for composing data
transformation pipelines.
@@ -53,13 +54,27 @@ though the implementation does heavily differ (also in contrast to some
other JS based implementations) and dozens of less common, but generally
highly useful operators have been added. See full list below.
-Furthermore, since v2.0.0 most transducers & reducers provided here
-accept an optional input iterable, which allows them to be used
-directly instead of having to wrap their call in one of the execution
-functions (i.e. `transduce()`, `reduce()`, `iterator()`, `run()`). If
-executed this way, transducer functions will return a transforming ES6
-iterator (generator) and reducing functions will return a reduced result
-of the given input iterable.
+Furthermore, most transducers & reducers provided here accept an
+optional input iterable, which allows them to be used directly instead
+of having to wrap their call in one of the execution functions (i.e.
+`transduce()`, `reduce()`, `iterator()`, `run()`). If executed this way,
+transducer functions will return a transforming ES6 iterator (generator)
+and reducing functions will return a reduced result of the given input
+iterable.
+
+### 5.0.0 release
+
+Several previously included internal support functions have been
+migrated to the
+[@thi.ng/arrays](https://github.com/thi-ng/umbrella/tree/master/packages/arrays)
+package. You'll need to update your imports if you've been using any of
+these directly. Note that some of these functions also have changes to
+their arg order.
+
+Functions using randomness now all support an optional PRNG
+implementation of the `IRandom` interface from the
+[@thi.ng/random](https://github.com/thi-ng/umbrella/tree/master/packages/random)
+package.
### Related packages
@@ -574,7 +589,7 @@ function dedupe(): Transducer {
}
```
-### Transformations
+### Composition & execution
#### `comp(f1, f2, ...)`
diff --git a/packages/transducers/package.json b/packages/transducers/package.json
index 16d667712c..65698c2f11 100644
--- a/packages/transducers/package.json
+++ b/packages/transducers/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/transducers",
- "version": "4.0.0",
+ "version": "5.0.0",
"description": "Lightweight transducer implementations for ES6 / TypeScript",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,23 +33,33 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/checks": "^2.0.2",
+ "@thi.ng/arrays": "^0.1.0",
+ "@thi.ng/checks": "^2.1.0",
"@thi.ng/compare": "^1.0.2",
- "@thi.ng/compose": "^1.0.2",
+ "@thi.ng/compose": "^1.1.0",
"@thi.ng/equiv": "^1.0.2",
"@thi.ng/errors": "^1.0.2",
+ "@thi.ng/random": "^1.1.0",
"@thi.ng/strings": "^1.0.3"
},
"keywords": [
"array",
"composition",
"data",
+ "dedupe",
"ES6",
+ "flatten",
"functional",
"generators",
+ "iterables",
"iterators",
+ "interleave",
+ "paging",
+ "partition",
"pipeline",
"reducers",
+ "stepwise",
+ "stream",
"transducers",
"transformation",
"typescript"
diff --git a/packages/transducers/src/func/binary-search.ts b/packages/transducers/src/func/binary-search.ts
deleted file mode 100644
index 1e0086b713..0000000000
--- a/packages/transducers/src/func/binary-search.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import { Comparator, Fn } from "@thi.ng/api";
-
-/**
- * Returns the supposed index of `x` in pre-sorted array-like collection
- * `arr`. The `key` function first is used to obtain the actual sort
- * value of `x` and each array item. The `cmp` comparator is then used to
- * identify the index of `x`.
- *
- * @param arr
- * @param key
- * @param cmp
- * @param x
- * @returns index of `x`, else `-index` if item could not be found
- */
-export const binarySearch = (
- arr: ArrayLike,
- key: Fn,
- cmp: Comparator,
- x: A
-) => {
- const kx = key(x);
- let low = 0;
- let high = arr.length - 1;
- while (low <= high) {
- const mid = (low + high) >>> 1;
- const c = cmp(key(arr[mid]), kx);
- if (c < 0) {
- low = mid + 1;
- } else if (c > 0) {
- high = mid - 1;
- } else {
- return mid;
- }
- }
- return -low;
-};
diff --git a/packages/transducers/src/func/constantly.ts b/packages/transducers/src/func/constantly.ts
deleted file mode 100644
index 514541cc8d..0000000000
--- a/packages/transducers/src/func/constantly.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export const constantly =
- (x: T): (...args: any[]) => T => () => x;
diff --git a/packages/transducers/src/func/even.ts b/packages/transducers/src/func/even.ts
deleted file mode 100644
index 4fecc9bc95..0000000000
--- a/packages/transducers/src/func/even.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { isEven as even } from "@thi.ng/checks";
diff --git a/packages/transducers/src/func/hex.ts b/packages/transducers/src/func/hex.ts
deleted file mode 100644
index c2d5d6eb94..0000000000
--- a/packages/transducers/src/func/hex.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { radix, Stringer } from "@thi.ng/strings";
-
-/**
- * @deprecated use thi.ng/strings `radix()` instead
- *
- * @param digits
- * @param prefix
- */
-export const hex = (digits = 2, prefix = ""): Stringer =>
- radix(16, digits, prefix);
diff --git a/packages/transducers/src/func/juxt.ts b/packages/transducers/src/func/juxt.ts
deleted file mode 100644
index 00b819d738..0000000000
--- a/packages/transducers/src/func/juxt.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { juxt as _juxt } from "@thi.ng/compose";
-
-export const juxt = _juxt;
diff --git a/packages/transducers/src/func/odd.ts b/packages/transducers/src/func/odd.ts
deleted file mode 100644
index ab3065656e..0000000000
--- a/packages/transducers/src/func/odd.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { isOdd as odd } from "@thi.ng/checks";
diff --git a/packages/transducers/src/func/shuffle.ts b/packages/transducers/src/func/shuffle.ts
deleted file mode 100644
index 9a3b355215..0000000000
--- a/packages/transducers/src/func/shuffle.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-export const shuffleN =
- (buf: any[], n: number) => {
- const l = buf.length;
- n = n < l ? n : l;
- while (--n >= 0) {
- const a = (Math.random() * l) | 0;
- const b = (Math.random() * l) | 0;
- const t = buf[a];
- buf[a] = buf[b];
- buf[b] = t;
- }
- };
diff --git a/packages/transducers/src/func/weighted-random.ts b/packages/transducers/src/func/weighted-random.ts
deleted file mode 100644
index 290a15f564..0000000000
--- a/packages/transducers/src/func/weighted-random.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import { repeat } from "../iter/repeat";
-import { zip } from "../iter/zip";
-
-/**
- * If `weights` are given, it must be the same size as `choices`. If omitted,
- * each choice will have same probability.
- *
- * https://www.electricmonk.nl/log/2009/12/23/weighted-random-distribution/
- *
- * @param choices
- * @param weights
- */
-export const weightedRandom = (
- choices: ArrayLike & Iterable,
- weights?: ArrayLike & Iterable
-) => {
- const n = choices.length;
- const opts = [...zip(choices, weights || repeat(1))].sort((a, b) => b[1] - a[1]);
- let total = 0, i, r, sum;
- for (i = 0; i < n; i++) {
- total += weights[i];
- }
- return () => {
- r = Math.random() * total;
- sum = total;
- for (i = 0; i < n; i++) {
- sum -= opts[i][1];
- if (sum <= r) {
- return opts[i][0];
- }
- }
- };
-};
diff --git a/packages/transducers/src/index.ts b/packages/transducers/src/index.ts
index 8410a549bc..9201dedd9c 100644
--- a/packages/transducers/src/index.ts
+++ b/packages/transducers/src/index.ts
@@ -92,28 +92,13 @@ export * from "./xform/throttle-time";
export * from "./xform/trace";
export * from "./xform/word-wrap";
-export * from "./func/binary-search";
export * from "./func/comp";
export * from "./func/compr";
-export * from "./func/constantly";
export * from "./func/deep-transform";
-export * from "./func/delay";
-export * from "./func/ensure-array";
-export * from "./func/ensure-iterable";
-export * from "./func/even";
-export * from "./func/fuzzy-match";
-export * from "./func/hex";
-export * from "./func/identity";
-export * from "./func/juxt";
export * from "./func/juxtr";
export * from "./func/key-selector";
export * from "./func/lookup";
-export * from "./func/odd";
-export * from "./func/peek";
-export * from "./func/random-id";
export * from "./func/renamer";
-export * from "./func/swizzler";
-export * from "./func/weighted-random";
export * from "./iter/as-iterable";
export * from "./iter/choices";
diff --git a/packages/transducers/src/iter/choices.ts b/packages/transducers/src/iter/choices.ts
index 8abd5b830a..7b21adae5e 100644
--- a/packages/transducers/src/iter/choices.ts
+++ b/packages/transducers/src/iter/choices.ts
@@ -1,4 +1,5 @@
-import { weightedRandom } from "../func/weighted-random";
+import { ensureArray } from "@thi.ng/arrays";
+import { IRandom, SYSTEM, weightedRandom } from "@thi.ng/random";
import { repeatedly } from "./repeatedly";
/**
@@ -6,22 +7,23 @@ import { repeatedly } from "./repeatedly";
* weights. If `weights` is given, it must have at least the same size
* as `choices`. If omitted, each choice will have same probability.
*
- * See: `weightedRandom()`
- *
* ```
* transduce(take(1000), frequencies(), choices("abcd", [1, 0.5, 0.25, 0.125]))
* // Map { 'c' => 132, 'a' => 545, 'b' => 251, 'd' => 72 }
* ```
*
+ * @see weightedRandom
+ *
* @param choices
* @param weights
*/
export const choices = (
choices: ArrayLike & Iterable,
- weights?: ArrayLike & Iterable
+ weights?: ArrayLike,
+ rnd: IRandom = SYSTEM
) =>
repeatedly(
weights ?
- weightedRandom(choices, weights) :
- () => choices[(Math.random() * choices.length) | 0]
+ weightedRandom(ensureArray(choices), weights, rnd) :
+ () => choices[(rnd.float(choices.length) | 0)]
);
diff --git a/packages/transducers/src/iter/concat.ts b/packages/transducers/src/iter/concat.ts
index f03550abd5..a4f89396aa 100644
--- a/packages/transducers/src/iter/concat.ts
+++ b/packages/transducers/src/iter/concat.ts
@@ -1,4 +1,4 @@
-import { ensureIterable } from "../func/ensure-iterable";
+import { ensureIterable } from "@thi.ng/arrays";
/**
* Yields iterator producing concatenation of given iterables.
diff --git a/packages/transducers/src/iter/permutations.ts b/packages/transducers/src/iter/permutations.ts
index 67c7fd2c50..abe70d1df6 100644
--- a/packages/transducers/src/iter/permutations.ts
+++ b/packages/transducers/src/iter/permutations.ts
@@ -1,5 +1,5 @@
+import { ensureArrayLike } from "@thi.ng/arrays";
import { illegalArgs } from "@thi.ng/errors";
-import { ensureArrayLike } from "../func/ensure-array";
import { range } from "./range";
/**
diff --git a/packages/transducers/src/iter/reverse.ts b/packages/transducers/src/iter/reverse.ts
index 332b18ddac..e889121d6f 100644
--- a/packages/transducers/src/iter/reverse.ts
+++ b/packages/transducers/src/iter/reverse.ts
@@ -1,4 +1,4 @@
-import { ensureArray } from "../func/ensure-array";
+import { ensureArray } from "@thi.ng/arrays";
/**
* Yields iterator which consumes input and yield its values in reverse
diff --git a/packages/transducers/src/iter/wrap.ts b/packages/transducers/src/iter/wrap.ts
index 100e857528..79ff2e0269 100644
--- a/packages/transducers/src/iter/wrap.ts
+++ b/packages/transducers/src/iter/wrap.ts
@@ -1,5 +1,5 @@
+import { ensureArray } from "@thi.ng/arrays";
import { illegalArgs } from "@thi.ng/errors";
-import { ensureArray } from "../func/ensure-array";
/**
* Yields iterator of `src` with the last `n` values of `src` prepended
diff --git a/packages/transducers/src/rfn/frequencies.ts b/packages/transducers/src/rfn/frequencies.ts
index 1fa9467aa0..ac8794560d 100644
--- a/packages/transducers/src/rfn/frequencies.ts
+++ b/packages/transducers/src/rfn/frequencies.ts
@@ -1,6 +1,6 @@
import { Fn } from "@thi.ng/api";
+import { identity } from "@thi.ng/compose";
import { Reducer } from "../api";
-import { identity } from "../func/identity";
import { $$reduce } from "../reduce";
import { count } from "./count";
import { groupByMap } from "./group-by-map";
diff --git a/packages/transducers/src/rfn/group-by-map.ts b/packages/transducers/src/rfn/group-by-map.ts
index 279d2b1eb8..cfeef605b5 100644
--- a/packages/transducers/src/rfn/group-by-map.ts
+++ b/packages/transducers/src/rfn/group-by-map.ts
@@ -1,5 +1,5 @@
-import { Reducer, GroupByOpts } from "../api";
-import { identity } from "../func/identity";
+import { identity } from "@thi.ng/compose";
+import { GroupByOpts, Reducer } from "../api";
import { $$reduce, reducer } from "../reduce";
import { push } from "./push";
diff --git a/packages/transducers/src/rfn/group-by-obj.ts b/packages/transducers/src/rfn/group-by-obj.ts
index 0e075ed96c..5128f646c3 100644
--- a/packages/transducers/src/rfn/group-by-obj.ts
+++ b/packages/transducers/src/rfn/group-by-obj.ts
@@ -1,6 +1,6 @@
import { IObjectOf } from "@thi.ng/api";
+import { identity } from "@thi.ng/compose";
import { GroupByOpts, Reducer } from "../api";
-import { identity } from "../func/identity";
import { $$reduce, reducer } from "../reduce";
import { push } from "./push";
diff --git a/packages/transducers/src/step.ts b/packages/transducers/src/step.ts
index eda33f1227..c6ab9d9c99 100644
--- a/packages/transducers/src/step.ts
+++ b/packages/transducers/src/step.ts
@@ -22,7 +22,7 @@ import { push } from "./rfn/push";
* // [ 1, 2, 3 ]
*
* // no result
- * f = step(filter(even))
+ * f = step(filter((x) => !(x & 1)))
* f(1); // undefined
* f(2); // 2
*
diff --git a/packages/transducers/src/xform/delayed.ts b/packages/transducers/src/xform/delayed.ts
index 5cadd02718..0b8718d2bd 100644
--- a/packages/transducers/src/xform/delayed.ts
+++ b/packages/transducers/src/xform/delayed.ts
@@ -1,9 +1,9 @@
import { Transducer } from "../api";
-import { delay } from "../func/delay";
+import { delayed as _delayed } from "@thi.ng/compose";
import { map } from "./map";
/**
- * Yields transducer which wraps incoming values in promises, which
+ * Yields transducer which wraps incoming values in promises, which each
* resolve after specified delay time (in ms).
*
* **Only to be used in async contexts and NOT with `transduce`
@@ -13,4 +13,4 @@ import { map } from "./map";
*/
export const delayed =
(t: number): Transducer> =>
- map((x) => delay(x, t));
+ map((x) => _delayed(x, t));
diff --git a/packages/transducers/src/xform/filter-fuzzy.ts b/packages/transducers/src/xform/filter-fuzzy.ts
index 9679fdc655..34235a37bf 100644
--- a/packages/transducers/src/xform/filter-fuzzy.ts
+++ b/packages/transducers/src/xform/filter-fuzzy.ts
@@ -1,6 +1,6 @@
import { Fn, Predicate2 } from "@thi.ng/api";
+import { fuzzyMatch } from "@thi.ng/arrays";
import { Transducer } from "../api";
-import { fuzzyMatch } from "../func/fuzzy-match";
import { $iter } from "../iterator";
import { filter } from "./filter";
@@ -17,7 +17,7 @@ export interface FilterFuzzyOpts {
* @thi.ng/equiv by default.
*
* ```
- * [...filterFuzzy({query: "ho"}, ["hello", "hallo", "hey", "heyoka"])]
+ * [...filterFuzzy("ho", ["hello", "hallo", "hey", "heyoka"])]
* // ["hello", "hallo", "heyoka"]
* ```
*
diff --git a/packages/transducers/src/xform/keep.ts b/packages/transducers/src/xform/keep.ts
index 56110331d0..4b16e7fc3a 100644
--- a/packages/transducers/src/xform/keep.ts
+++ b/packages/transducers/src/xform/keep.ts
@@ -1,6 +1,6 @@
+import { identity } from "@thi.ng/compose";
import { Reducer, Transducer } from "../api";
import { compR } from "../func/compr";
-import { identity } from "../func/identity";
import { $iter } from "../iterator";
export function keep(pred?: (x: T) => any): Transducer;
diff --git a/packages/transducers/src/xform/moving-median.ts b/packages/transducers/src/xform/moving-median.ts
index 7833f27d1a..8f8b044075 100644
--- a/packages/transducers/src/xform/moving-median.ts
+++ b/packages/transducers/src/xform/moving-median.ts
@@ -1,7 +1,7 @@
import { compare as cmp } from "@thi.ng/compare";
+import { identity } from "@thi.ng/compose";
import { SortOpts, Transducer } from "../api";
import { comp } from "../func/comp";
-import { identity } from "../func/identity";
import { $iter } from "../iterator";
import { map } from "./map";
import { partition } from "./partition";
diff --git a/packages/transducers/src/xform/multiplex.ts b/packages/transducers/src/xform/multiplex.ts
index 5b0d6c25d0..8d3ab9c5d5 100644
--- a/packages/transducers/src/xform/multiplex.ts
+++ b/packages/transducers/src/xform/multiplex.ts
@@ -1,5 +1,5 @@
+import { juxt } from "@thi.ng/compose";
import { Transducer } from "../api";
-import { juxt } from "../func/juxt";
import { step } from "../step";
import { map } from "./map";
diff --git a/packages/transducers/src/xform/partition-sort.ts b/packages/transducers/src/xform/partition-sort.ts
index 625d3032c5..d4efaa780d 100644
--- a/packages/transducers/src/xform/partition-sort.ts
+++ b/packages/transducers/src/xform/partition-sort.ts
@@ -1,8 +1,7 @@
import { compare as cmp } from "@thi.ng/compare";
-
+import { identity } from "@thi.ng/compose";
import { SortOpts, Transducer } from "../api";
import { comp } from "../func/comp";
-import { identity } from "../func/identity";
import { $iter, iterator } from "../iterator";
import { mapcat } from "./mapcat";
import { partition } from "./partition";
diff --git a/packages/transducers/src/xform/partition-sync.ts b/packages/transducers/src/xform/partition-sync.ts
index c02e180bde..8b6f1b9afd 100644
--- a/packages/transducers/src/xform/partition-sync.ts
+++ b/packages/transducers/src/xform/partition-sync.ts
@@ -1,7 +1,7 @@
import { IObjectOf } from "@thi.ng/api";
import { isArray } from "@thi.ng/checks";
+import { identity } from "@thi.ng/compose";
import { Reducer, Transducer } from "../api";
-import { identity } from "../func/identity";
import { $iter, iterator } from "../iterator";
export interface PartitionSyncOpts {
diff --git a/packages/transducers/src/xform/sample.ts b/packages/transducers/src/xform/sample.ts
index 51e3af2bdf..df487474cd 100644
--- a/packages/transducers/src/xform/sample.ts
+++ b/packages/transducers/src/xform/sample.ts
@@ -1,6 +1,7 @@
+import { IRandom, SYSTEM } from "@thi.ng/random";
import { Reducer, Transducer } from "../api";
import { compR } from "../func/compr";
-import { iterator1 } from "../iterator";
+import { $iter } from "../iterator";
/**
* Transducer which only yields values with given `prob` probability
@@ -16,13 +17,19 @@ import { iterator1 } from "../iterator";
* @param src
*/
export function sample(prob: number): Transducer;
+export function sample(prob: number, rnd: IRandom): Transducer;
export function sample(prob: number, src: Iterable): IterableIterator;
-export function sample(prob: number, src?: Iterable): any {
- return src ?
- iterator1(sample(prob), src) :
- (rfn: Reducer) => {
- const r = rfn[2];
- return compR(rfn,
- (acc, x: T) => Math.random() < prob ? r(acc, x) : acc);
- }
+export function sample(prob: number, rnd: IRandom, src: Iterable): IterableIterator;
+export function sample(...args: any[]): any {
+ const iter = $iter(sample, args);
+ if (iter) {
+ return iter;
+ }
+ const prob = args[0];
+ const rnd: IRandom = args[1] || SYSTEM;
+ return (rfn: Reducer) => {
+ const r = rfn[2];
+ return compR(rfn,
+ (acc, x: T) => rnd.float() < prob ? r(acc, x) : acc);
+ };
}
diff --git a/packages/transducers/src/xform/stream-shuffle.ts b/packages/transducers/src/xform/stream-shuffle.ts
index b0472d45f3..686efa7e28 100644
--- a/packages/transducers/src/xform/stream-shuffle.ts
+++ b/packages/transducers/src/xform/stream-shuffle.ts
@@ -1,5 +1,5 @@
+import { shuffle } from "@thi.ng/arrays";
import { Reducer, Transducer } from "../api";
-import { shuffleN } from "../func/shuffle";
import { $iter, iterator } from "../iterator";
import { isReduced } from "../reduced";
@@ -30,7 +30,7 @@ export function streamShuffle(...args: any[]): any {
init,
(acc) => {
while (buf.length && !isReduced(acc)) {
- shuffleN(buf, maxSwaps);
+ shuffle(buf, maxSwaps);
acc = reduce(acc, buf.shift());
}
acc = complete(acc);
@@ -38,7 +38,7 @@ export function streamShuffle(...args: any[]): any {
},
(acc, x: T) => {
buf.push(x);
- shuffleN(buf, maxSwaps);
+ shuffle(buf, maxSwaps);
if (buf.length === n) {
acc = reduce(acc, buf.shift());
}
diff --git a/packages/transducers/src/xform/stream-sort.ts b/packages/transducers/src/xform/stream-sort.ts
index 935fd79ed3..86b42e6927 100644
--- a/packages/transducers/src/xform/stream-sort.ts
+++ b/packages/transducers/src/xform/stream-sort.ts
@@ -1,8 +1,7 @@
+import { binarySearch } from "@thi.ng/arrays";
import { compare as cmp } from "@thi.ng/compare";
-
+import { identity } from "@thi.ng/compose";
import { Reducer, SortOpts, Transducer } from "../api";
-import { binarySearch } from "../func/binary-search";
-import { identity } from "../func/identity";
import { $iter, iterator } from "../iterator";
import { isReduced } from "../reduced";
@@ -45,8 +44,8 @@ export function streamSort(...args: any[]): any {
return complete(acc);
},
(acc, x) => {
- const idx = binarySearch(buf, key, compare, x);
- buf.splice(Math.abs(idx), 0, x);
+ const idx = binarySearch(buf, x, key, compare);
+ buf.splice(idx < 0 ? -(idx + 1) : idx, 0, x);
if (buf.length === n) {
acc = reduce(acc, buf.shift());
}
diff --git a/packages/transducers/src/xform/swizzle.ts b/packages/transducers/src/xform/swizzle.ts
index 62e5128e3f..698002bbb5 100644
--- a/packages/transducers/src/xform/swizzle.ts
+++ b/packages/transducers/src/xform/swizzle.ts
@@ -1,5 +1,5 @@
+import { swizzle as _swizzle } from "@thi.ng/arrays";
import { Transducer } from "../api";
-import { swizzler } from "../func/swizzler";
import { iterator1 } from "../iterator";
import { map } from "./map";
@@ -8,8 +8,6 @@ import { map } from "./map";
* property order. Accepts arrays or objects as input, but always yields
* arrays.
*
- * Also see `swizzler()` for standalone (non-transducer) usage.
- *
* ```
* [...swizzle([3,0,2,1], [[1,2,3,4], [10,20,30,40]])]
* // [ [ 4, 1, 3, 2 ], [ 40, 10, 30, 20 ] ]
@@ -21,6 +19,8 @@ import { map } from "./map";
* // [ [ 3, 1 ] ]
* ```
*
+ * @see thi.ng/arrays/swizzle
+ *
* @param order key order
*/
export function swizzle(order: PropertyKey[]): Transducer;
@@ -28,5 +28,5 @@ export function swizzle(order: PropertyKey[], src: Iterable): IterableIt
export function swizzle(order: PropertyKey[], src?: Iterable): any {
return src ?
iterator1(swizzle(order), src) :
- map(swizzler(order));
+ map(_swizzle(order));
}
diff --git a/packages/transducers/test/permutations.ts b/packages/transducers/test/permutations.ts
index ccb6a233e3..241f45b265 100644
--- a/packages/transducers/test/permutations.ts
+++ b/packages/transducers/test/permutations.ts
@@ -1,4 +1,4 @@
-import { swizzler } from "../src/func/swizzler";
+import { swizzle } from "@thi.ng/arrays";
import { permutations, permutationsN } from "../src/iter/permutations";
import { range } from "../src/iter/range";
import { iterator } from "../src/iterator";
@@ -41,7 +41,7 @@ describe("permutations", () => {
});
it("swizzle", () => {
assert.deepEqual(
- [...iterator(map((x: string[]) => swizzler(x)({ x: 0, y: 1, z: 2 })), permutations("xyz", "xyz", "xyz"))],
+ [...iterator(map((x: string[]) => swizzle(x)({ x: 0, y: 1, z: 2 })), permutations("xyz", "xyz", "xyz"))],
[...permutationsN(3)]
);
});
diff --git a/packages/vector-pools/CHANGELOG.md b/packages/vector-pools/CHANGELOG.md
index ea360bcc41..9597776ef7 100644
--- a/packages/vector-pools/CHANGELOG.md
+++ b/packages/vector-pools/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.
+## [0.2.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/vector-pools@0.2.1...@thi.ng/vector-pools@0.2.2) (2019-02-15)
+
+**Note:** Version bump only for package @thi.ng/vector-pools
+
+
+
+
+
+## [0.2.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/vector-pools@0.2.0...@thi.ng/vector-pools@0.2.1) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/vector-pools
+
+
+
+
+
# [0.2.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/vector-pools@0.1.2...@thi.ng/vector-pools@0.2.0) (2019-02-05)
diff --git a/packages/vector-pools/package.json b/packages/vector-pools/package.json
index 89446b5be5..2cb82189ce 100644
--- a/packages/vector-pools/package.json
+++ b/packages/vector-pools/package.json
@@ -1,7 +1,7 @@
{
"name": "@thi.ng/vector-pools",
- "version": "0.2.0",
- "description": "TODO",
+ "version": "0.2.2",
+ "description": "Data structures for managing & working with strided, memory mapped vectors",
"module": "./index.js",
"main": "./lib/index.js",
"umd:main": "./lib/index.umd.js",
@@ -33,8 +33,8 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/malloc": "^2.0.0",
- "@thi.ng/vectors": "^2.2.0"
+ "@thi.ng/malloc": "^2.0.2",
+ "@thi.ng/vectors": "^2.3.0"
},
"keywords": [
"ES6",
diff --git a/packages/vectors/CHANGELOG.md b/packages/vectors/CHANGELOG.md
index 084f7d3511..a38cfb3772 100644
--- a/packages/vectors/CHANGELOG.md
+++ b/packages/vectors/CHANGELOG.md
@@ -3,6 +3,25 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [2.3.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/vectors@2.2.1...@thi.ng/vectors@2.3.0) (2019-02-15)
+
+
+### Features
+
+* **vectors:** add fit, fit01, fit11 fns ([161d19d](https://github.com/thi-ng/umbrella/commit/161d19d))
+
+
+
+
+
+## [2.2.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/vectors@2.2.0...@thi.ng/vectors@2.2.1) (2019-02-10)
+
+**Note:** Version bump only for package @thi.ng/vectors
+
+
+
+
+
# [2.2.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/vectors@2.1.1...@thi.ng/vectors@2.2.0) (2019-02-05)
diff --git a/packages/vectors/README.md b/packages/vectors/README.md
index 30106d2959..c17ae662c4 100644
--- a/packages/vectors/README.md
+++ b/packages/vectors/README.md
@@ -276,6 +276,9 @@ Functions for memory mapped, strided vectors (without requiring wrappers):
### Interpolation
+- `fit` / `fit2` / `fit3` / `fit4`
+- `fit01` / `fit01_2` / `fit01_3` / `fit01_4`
+- `fit11` / `fit11_2` / `fit11_3` / `fit11_4`
- `mix` / `mix2` / `mix3` / `mix4`
- `mixN` / `mixN2` / `mixN3` / `mixN4`
- `mixBilinear` / `mixBilinear2` / `mixBilinear3` / `mixBilinear4`
diff --git a/packages/vectors/package.json b/packages/vectors/package.json
index 2a89d58ce0..b82a2a77c4 100644
--- a/packages/vectors/package.json
+++ b/packages/vectors/package.json
@@ -1,6 +1,6 @@
{
"name": "@thi.ng/vectors",
- "version": "2.2.0",
+ "version": "2.3.0",
"description": "Optimized 2d/3d/4d and arbitrary length vector operations",
"module": "./index.js",
"main": "./lib/index.js",
@@ -33,13 +33,13 @@
},
"dependencies": {
"@thi.ng/api": "^5.0.2",
- "@thi.ng/checks": "^2.0.2",
+ "@thi.ng/checks": "^2.1.0",
"@thi.ng/equiv": "^1.0.2",
"@thi.ng/errors": "^1.0.2",
"@thi.ng/math": "^1.1.0",
"@thi.ng/memoize": "^1.0.2",
- "@thi.ng/random": "^1.0.2",
- "@thi.ng/transducers": "^4.0.0"
+ "@thi.ng/random": "^1.1.0",
+ "@thi.ng/transducers": "^5.0.0"
},
"keywords": [
"2D",
diff --git a/packages/vectors/src/fit.ts b/packages/vectors/src/fit.ts
new file mode 100644
index 0000000000..e40ec05aa0
--- /dev/null
+++ b/packages/vectors/src/fit.ts
@@ -0,0 +1,12 @@
+import { fit as _fit, fit01 as _fit01, fit11 as _fit11 } from "@thi.ng/math";
+import { ARGS_VVV, defHofOp } from "./internal/codegen";
+import { HOF_VVV, HOF_VVVVV } from "./internal/templates";
+
+export const [fit, fit2, fit3, fit4] =
+ defHofOp(_fit, HOF_VVVVV, "o,a,b,c,d,e");
+
+export const [fit01, fit01_2, fit01_3, fit01_4] =
+ defHofOp(_fit01, HOF_VVV, ARGS_VVV);
+
+export const [fit11, fit11_2, fit11_3, fit11_4] =
+ defHofOp(_fit11, HOF_VVV, ARGS_VVV);
diff --git a/packages/vectors/src/index.ts b/packages/vectors/src/index.ts
index 668fa0a8c2..355e027bc5 100644
--- a/packages/vectors/src/index.ts
+++ b/packages/vectors/src/index.ts
@@ -46,6 +46,7 @@ export * from "./empty";
export * from "./eqdelta";
export * from "./exp";
export * from "./face-forward";
+export * from "./fit";
export * from "./floor";
export * from "./fract";
export * from "./gvec";
diff --git a/packages/vectors/src/internal/templates.ts b/packages/vectors/src/internal/templates.ts
index a8acfdd1e3..2381cd3260 100644
--- a/packages/vectors/src/internal/templates.ts
+++ b/packages/vectors/src/internal/templates.ts
@@ -10,6 +10,7 @@ export const SET = ([o, a]) => `${o}=${a};`;
export const SET_N = ([a]) => `${a}=n;`
export const HOF_VVV = ([o, a, b, c]) => `${o}=op(${a},${b},${c});`;
+export const HOF_VVVVV = ([o, a, b, c, d, e]) => `${o}=op(${a},${b},${c},${d},${e});`
export const ADDM = ([o, a, b, c]) => `${o}=(${a}+${b})*${c};`;
export const ADDM_N = ([o, a, b]) => `${o}=(${a}+${b})*n;`;
diff --git a/packages/vectors/src/max.ts b/packages/vectors/src/max.ts
index 020df3486b..dfb842f521 100644
--- a/packages/vectors/src/max.ts
+++ b/packages/vectors/src/max.ts
@@ -1,5 +1,6 @@
import { MultiVecOpVV, VecOpVV } from "./api";
import { defOp } from "./internal/codegen";
+import { FN2 } from "./internal/templates";
export const [max, max2, max3, max4] =
- defOp(([o, a, b]) => `${o}=Math.max(${a},${b});`);
+ defOp(FN2("Math.max"));
diff --git a/packages/vectors/src/min.ts b/packages/vectors/src/min.ts
index b118587dcf..c70b77a965 100644
--- a/packages/vectors/src/min.ts
+++ b/packages/vectors/src/min.ts
@@ -1,5 +1,6 @@
import { MultiVecOpVV, VecOpVV } from "./api";
import { defOp } from "./internal/codegen";
+import { FN2 } from "./internal/templates";
export const [min, min2, min3, min4] =
- defOp(([o, a, b]) => `${o}=Math.min(${a},${b});`);
+ defOp(FN2("Math.min"));
diff --git a/packages/vectors/src/mod.ts b/packages/vectors/src/mod.ts
index c5bb5091cc..2909107024 100644
--- a/packages/vectors/src/mod.ts
+++ b/packages/vectors/src/mod.ts
@@ -1,5 +1,3 @@
-import { MultiVecOpVV, VecOpVV } from "./api";
-import { defOp } from "./internal/codegen";
+import { defMathOp } from "./internal/codegen";
-export const [mod, mod2, mod3, mod4] =
- defOp(([o, a, b]) => `${o}=${a}%${b};`);
+export const [mod, mod2, mod3, mod4] = defMathOp("%");
diff --git a/packages/vectors/src/modn.ts b/packages/vectors/src/modn.ts
index 4f570a719e..3ce1a88e85 100644
--- a/packages/vectors/src/modn.ts
+++ b/packages/vectors/src/modn.ts
@@ -1,5 +1,3 @@
-import { MultiVecOpVN, VecOpVN } from "./api";
-import { ARGS_VN, defOp } from "./internal/codegen";
+import { defMathNOp } from "./internal/codegen";
-export const [modN, modN2, modN3, modN4] =
- defOp(([o, a]) => `${o}=${a}%n;`, ARGS_VN);
+export const [modN, modN2, modN3, modN4] = defMathNOp("%");