@thi.ng/transducers 8.5.4 → 8.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -1
- package/README.md +59 -56
- package/api.d.ts +32 -0
- package/dedupe.d.ts +15 -0
- package/distinct.d.ts +4 -0
- package/dup.d.ts +4 -4
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/length.d.ts +18 -0
- package/length.js +10 -0
- package/multiplex.d.ts +7 -1
- package/package.json +14 -11
- package/scan.d.ts +20 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
-
- **Last updated**: 2023-08-
|
|
3
|
+
- **Last updated**: 2023-08-22T14:39:27Z
|
|
4
4
|
- **Generator**: [thi.ng/monopub](https://thi.ng/monopub)
|
|
5
5
|
|
|
6
6
|
All notable changes to this project will be documented in this file.
|
|
@@ -9,6 +9,12 @@ See [Conventional Commits](https://conventionalcommits.org/) for commit guidelin
|
|
|
9
9
|
**Note:** Unlisted _patch_ versions only involve non-code or otherwise excluded changes
|
|
10
10
|
and/or version bumps of transitive dependencies.
|
|
11
11
|
|
|
12
|
+
## [8.6.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/transducers@8.6.0) (2023-08-22)
|
|
13
|
+
|
|
14
|
+
#### 🚀 Features
|
|
15
|
+
|
|
16
|
+
- add length() transducer ([47a95b7](https://github.com/thi-ng/umbrella/commit/47a95b7))
|
|
17
|
+
|
|
12
18
|
### [8.5.3](https://github.com/thi-ng/umbrella/tree/@thi.ng/transducers@8.5.3) (2023-08-12)
|
|
13
19
|
|
|
14
20
|
#### ♻️ Refactoring
|
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
[](https://mastodon.thi.ng/@toxi)
|
|
9
9
|
|
|
10
10
|
This project is part of the
|
|
11
|
-
[@thi.ng/umbrella](https://github.com/thi-ng/umbrella/) monorepo.
|
|
11
|
+
[@thi.ng/umbrella](https://github.com/thi-ng/umbrella/) monorepo and anti-framework.
|
|
12
12
|
|
|
13
13
|
- [About](#about)
|
|
14
14
|
- [Status](#status)
|
|
@@ -174,7 +174,7 @@ For Node.js REPL:
|
|
|
174
174
|
const transducers = await import("@thi.ng/transducers");
|
|
175
175
|
```
|
|
176
176
|
|
|
177
|
-
Package sizes (brotli'd, pre-treeshake): ESM: 8.
|
|
177
|
+
Package sizes (brotli'd, pre-treeshake): ESM: 8.70 KB
|
|
178
178
|
|
|
179
179
|
## Dependencies
|
|
180
180
|
|
|
@@ -195,60 +195,62 @@ directory are using this package.
|
|
|
195
195
|
|
|
196
196
|
A selection:
|
|
197
197
|
|
|
198
|
-
| Screenshot | Description
|
|
199
|
-
|
|
200
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/adaptive-threshold.png" width="240"/> | Interactive image processing (adaptive threshold)
|
|
201
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
202
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
203
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
204
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
205
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/commit-
|
|
206
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
207
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
208
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
209
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
210
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
211
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
212
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
213
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/hdom-
|
|
214
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/hdom-canvas-
|
|
215
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/
|
|
216
|
-
|
|
|
217
|
-
| |
|
|
218
|
-
|
|
|
219
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/
|
|
220
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/
|
|
221
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
222
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
223
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
224
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
225
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
226
|
-
|
|
|
227
|
-
|
|
|
228
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/rdom-
|
|
229
|
-
|
|
|
230
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/rdom-
|
|
231
|
-
|
|
|
232
|
-
|
|
|
233
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
234
|
-
|
|
|
235
|
-
|
|
|
236
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/rstream-
|
|
237
|
-
|
|
|
238
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
239
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
240
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
241
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/svg-
|
|
242
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
243
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
244
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
245
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
246
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
247
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/webgl-
|
|
248
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/webgl-
|
|
249
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/webgl-
|
|
250
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
251
|
-
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/
|
|
198
|
+
| Screenshot | Description | Live demo | Source |
|
|
199
|
+
|:-------------------------------------------------------------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------|:-----------------------------------------------------------|:---------------------------------------------------------------------------------------|
|
|
200
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/adaptive-threshold.png" width="240"/> | Interactive image processing (adaptive threshold) | [Demo](https://demo.thi.ng/umbrella/adaptive-threshold/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/adaptive-threshold) |
|
|
201
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/ascii-raymarch.jpg" width="240"/> | ASCII art raymarching with thi.ng/shader-ast & thi.ng/text-canvas | [Demo](https://demo.thi.ng/umbrella/ascii-raymarch/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/ascii-raymarch) |
|
|
202
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/big-font.png" width="240"/> | Large ASCII font text generator using @thi.ng/rdom | [Demo](https://demo.thi.ng/umbrella/big-font/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/big-font) |
|
|
203
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/bitmap-font.gif" width="240"/> | Figlet-style bitmap font creation with transducers | [Demo](https://demo.thi.ng/umbrella/bitmap-font/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/bitmap-font) |
|
|
204
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/cellular-automata.png" width="240"/> | 2D transducer based cellular automata | [Demo](https://demo.thi.ng/umbrella/cellular-automata/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/cellular-automata) |
|
|
205
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/commit-heatmap.png" width="240"/> | Heatmap visualization of this mono-repo's commits | | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/commit-heatmap) |
|
|
206
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/commit-table-ssr.png" width="240"/> | Filterable commit log UI w/ minimal server to provide commit history | [Demo](https://demo.thi.ng/umbrella/commit-table-ssr/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/commit-table-ssr) |
|
|
207
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/crypto-chart.png" width="240"/> | Basic crypto-currency candle chart with multiple moving averages plots | [Demo](https://demo.thi.ng/umbrella/crypto-chart/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/crypto-chart) |
|
|
208
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/dominant-colors.png" width="240"/> | Color palette generation via dominant color extraction from uploaded images | [Demo](https://demo.thi.ng/umbrella/dominant-colors/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/dominant-colors) |
|
|
209
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/ellipse-proximity.png" width="240"/> | Interactive visualization of closest points on ellipses | [Demo](https://demo.thi.ng/umbrella/ellipse-proximity/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/ellipse-proximity) |
|
|
210
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/fft-synth.png" width="240"/> | Interactive inverse FFT toy synth | [Demo](https://demo.thi.ng/umbrella/fft-synth/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/fft-synth) |
|
|
211
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/fiber-basics.png" width="240"/> | Fiber-based cooperative multitasking basics | [Demo](https://demo.thi.ng/umbrella/fiber-basics/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/fiber-basics) |
|
|
212
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/grid-iterators.png" width="240"/> | Visualization of different grid iterator strategies | [Demo](https://demo.thi.ng/umbrella/grid-iterators/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/grid-iterators) |
|
|
213
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/hdom-benchmark2.png" width="240"/> | hdom update performance benchmark w/ config options | [Demo](https://demo.thi.ng/umbrella/hdom-benchmark2/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/hdom-benchmark2) |
|
|
214
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/hdom-canvas-clock.png" width="240"/> | Realtime analog clock demo | [Demo](https://demo.thi.ng/umbrella/hdom-canvas-clock/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/hdom-canvas-clock) |
|
|
215
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/hdom-canvas-draw.jpg" width="240"/> | Interactive pattern drawing demo using transducers | [Demo](https://demo.thi.ng/umbrella/hdom-canvas-draw/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/hdom-canvas-draw) |
|
|
216
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/hdom-canvas/hdom-canvas-shapes-results.png" width="240"/> | Various hdom-canvas shape drawing examples & SVG conversion / export | [Demo](https://demo.thi.ng/umbrella/hdom-canvas-shapes/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/hdom-canvas-shapes) |
|
|
217
|
+
| | Custom dropdown UI component w/ fuzzy search | [Demo](https://demo.thi.ng/umbrella/hdom-dropdown-fuzzy/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/hdom-dropdown-fuzzy) |
|
|
218
|
+
| | Isolated, component-local DOM updates | [Demo](https://demo.thi.ng/umbrella/hdom-local-render/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/hdom-local-render) |
|
|
219
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/imgui/imgui-all.png" width="240"/> | Canvas based Immediate Mode GUI components | [Demo](https://demo.thi.ng/umbrella/imgui/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/imgui) |
|
|
220
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/geom/geom-isoline.png" width="240"/> | Animated sine plasma effect visualized using contour lines | [Demo](https://demo.thi.ng/umbrella/iso-plasma/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/iso-plasma) |
|
|
221
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/json-components.jpg" width="240"/> | Transforming JSON into UI components | [Demo](https://demo.thi.ng/umbrella/json-components/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/json-components) |
|
|
222
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/mandelbrot.jpg" width="240"/> | Worker based, interactive Mandelbrot visualization | [Demo](https://demo.thi.ng/umbrella/mandelbrot/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/mandelbrot) |
|
|
223
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/package-stats.png" width="240"/> | CLI util to visualize umbrella pkg stats | | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/package-stats) |
|
|
224
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/parse-playground.png" width="240"/> | Parser grammar livecoding editor/playground & codegen | [Demo](https://demo.thi.ng/umbrella/parse-playground/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/parse-playground) |
|
|
225
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/poly-spline.png" width="240"/> | Polygon to cubic curve conversion & visualization | [Demo](https://demo.thi.ng/umbrella/poly-spline/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/poly-spline) |
|
|
226
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/ramp-synth.png" width="240"/> | Unison wavetable synth with waveform editor | [Demo](https://demo.thi.ng/umbrella/ramp-synth/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/ramp-synth) |
|
|
227
|
+
| | Demonstates various rdom usage patterns | [Demo](https://demo.thi.ng/umbrella/rdom-basics/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/rdom-basics) |
|
|
228
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/rdom-canvas-basics.png" width="240"/> | Minimal rdom-canvas animation | [Demo](https://demo.thi.ng/umbrella/rdom-canvas-basics/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/rdom-canvas-basics) |
|
|
229
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/rdom-key-sequences.jpg" width="240"/> | rstream & transducer-based FSM for converting key event sequences into high-level commands | [Demo](https://demo.thi.ng/umbrella/rdom-key-sequences/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/rdom-key-sequences) |
|
|
230
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/rdom-lissajous.png" width="240"/> | rdom & hiccup-canvas interop test | [Demo](https://demo.thi.ng/umbrella/rdom-lissajous/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/rdom-lissajous) |
|
|
231
|
+
| | Full umbrella repo doc string search w/ paginated results | [Demo](https://demo.thi.ng/umbrella/rdom-search-docs/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/rdom-search-docs) |
|
|
232
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/rdom-svg-nodes.png" width="240"/> | rdom powered SVG graph with draggable nodes | [Demo](https://demo.thi.ng/umbrella/rdom-svg-nodes/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/rdom-svg-nodes) |
|
|
233
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/rotating-voronoi.jpg" width="240"/> | Animated Voronoi diagram, cubic splines & SVG download | [Demo](https://demo.thi.ng/umbrella/rotating-voronoi/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/rotating-voronoi) |
|
|
234
|
+
| | Minimal rstream dataflow graph | [Demo](https://demo.thi.ng/umbrella/rstream-dataflow/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/rstream-dataflow) |
|
|
235
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/rstream-event-loop.png" width="240"/> | Minimal demo of using rstream constructs to form an interceptor-style event loop | [Demo](https://demo.thi.ng/umbrella/rstream-event-loop/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/rstream-event-loop) |
|
|
236
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/rstream-grid.jpg" width="240"/> | Interactive grid generator, SVG generation & export, undo/redo support | [Demo](https://demo.thi.ng/umbrella/rstream-grid/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/rstream-grid) |
|
|
237
|
+
| | rstream based UI updates & state handling | [Demo](https://demo.thi.ng/umbrella/rstream-hdom/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/rstream-hdom) |
|
|
238
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/rstream-sync.png" width="240"/> | Minimal rstream sync() example using rdom | [Demo](https://demo.thi.ng/umbrella/rstream-sync/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/rstream-sync) |
|
|
239
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/scenegraph.png" width="240"/> | 2D scenegraph & shape picking | [Demo](https://demo.thi.ng/umbrella/scenegraph/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/scenegraph) |
|
|
240
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/shader-ast-workers.jpg" width="240"/> | Fork-join worker-based raymarch renderer (JS/CPU only) | [Demo](https://demo.thi.ng/umbrella/shader-ast-workers/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/shader-ast-workers) |
|
|
241
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/svg-barchart.png" width="240"/> | Simplistic SVG bar chart component | [Demo](https://demo.thi.ng/umbrella/svg-barchart/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/svg-barchart) |
|
|
242
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/svg-resample.png" width="240"/> | SVG path parsing & dynamic resampling | [Demo](https://demo.thi.ng/umbrella/svg-resample/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/svg-resample) |
|
|
243
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/svg-waveform.jpg" width="240"/> | Additive waveform synthesis & SVG visualization with undo/redo | [Demo](https://demo.thi.ng/umbrella/svg-waveform/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/svg-waveform) |
|
|
244
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/talk-slides.png" width="240"/> | hdom based slide deck viewer & slides from my ClojureX 2018 keynote | [Demo](http://media.thi.ng/2018/talks/clojurex/index.html) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/talk-slides) |
|
|
245
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/trace-bitmap.jpg" width="240"/> | Multi-layer vectorization & dithering of bitmap images | [Demo](https://demo.thi.ng/umbrella/trace-bitmap/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/trace-bitmap) |
|
|
246
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/triple-query.png" width="240"/> | Triple store query results & sortable table | [Demo](https://demo.thi.ng/umbrella/triple-query/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/triple-query) |
|
|
247
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/webgl-channel-mixer.jpg" width="240"/> | rdom & WebGL-based image channel editor | [Demo](https://demo.thi.ng/umbrella/webgl-channel-mixer/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/webgl-channel-mixer) |
|
|
248
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/webgl-cube.png" width="240"/> | WebGL multi-colored cube mesh | [Demo](https://demo.thi.ng/umbrella/webgl-cube/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/webgl-cube) |
|
|
249
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/webgl-float-fbo.jpg" width="240"/> | Drawing to floating point offscreen / multi-pass shader pipeline | [Demo](https://demo.thi.ng/umbrella/webgl-float-fbo/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/webgl-float-fbo) |
|
|
250
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/webgl-grid.jpg" width="240"/> | WebGL instancing, animated grid | [Demo](https://demo.thi.ng/umbrella/webgl-grid/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/webgl-grid) |
|
|
251
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/webgl-msdf.jpg" width="240"/> | WebGL MSDF text rendering & particle system | [Demo](https://demo.thi.ng/umbrella/webgl-msdf/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/webgl-msdf) |
|
|
252
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/wolfram.png" width="240"/> | 1D Wolfram automata with OBJ point cloud export | [Demo](https://demo.thi.ng/umbrella/wolfram/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/wolfram) |
|
|
253
|
+
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/xml-converter.png" width="240"/> | XML/HTML/SVG to hiccup/JS conversion | [Demo](https://demo.thi.ng/umbrella/xml-converter/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/xml-converter) |
|
|
252
254
|
|
|
253
255
|
### Basic usage patterns
|
|
254
256
|
|
|
@@ -886,6 +888,7 @@ transduce(map((x) => x*10), push(), range(4))
|
|
|
886
888
|
- [interpose](https://github.com/thi-ng/umbrella/tree/develop/packages/transducers/src/interpose.ts)
|
|
887
889
|
- [keep](https://github.com/thi-ng/umbrella/tree/develop/packages/transducers/src/keep.ts)
|
|
888
890
|
- [labeled](https://github.com/thi-ng/umbrella/tree/develop/packages/transducers/src/labeled.ts)
|
|
891
|
+
- [length](https://github.com/thi-ng/umbrella/tree/develop/packages/transducers/src/length.ts)
|
|
889
892
|
- [mapDeep](https://github.com/thi-ng/umbrella/tree/develop/packages/transducers/src/map-deep.ts)
|
|
890
893
|
- [mapIndexed](https://github.com/thi-ng/umbrella/tree/develop/packages/transducers/src/map-indexed.ts)
|
|
891
894
|
- [mapKeys](https://github.com/thi-ng/umbrella/tree/develop/packages/transducers/src/map-keys.ts)
|
package/api.d.ts
CHANGED
|
@@ -11,9 +11,24 @@ export type TxLike<A, B> = Transducer<A, B> | IXform<A, B>;
|
|
|
11
11
|
*/
|
|
12
12
|
export type MultiplexTxLike<T, A> = TxLike<T, A> | [TxLike<T, A>, boolean];
|
|
13
13
|
export type ReductionFn<A, B> = (acc: A, x: B) => A | Reduced<A>;
|
|
14
|
+
/**
|
|
15
|
+
* A 3-tuple of functions defining the different stages of a reduction process.
|
|
16
|
+
*/
|
|
14
17
|
export interface Reducer<A, B> extends Array<any> {
|
|
18
|
+
/**
|
|
19
|
+
* Initialization function to produce a default initial result (only used if
|
|
20
|
+
* no such initial result was given by the user)
|
|
21
|
+
*/
|
|
15
22
|
[0]: Fn0<A>;
|
|
23
|
+
/**
|
|
24
|
+
* Completion function to post-process an already reduced result (for most
|
|
25
|
+
* reducers this is merely the identity function). Also see {@link reducer}.
|
|
26
|
+
*/
|
|
16
27
|
[1]: Fn<A, A>;
|
|
28
|
+
/**
|
|
29
|
+
* Accumulation function, merging a new input value with the currently
|
|
30
|
+
* existing (partially) reduced result.
|
|
31
|
+
*/
|
|
17
32
|
[2]: ReductionFn<A, B>;
|
|
18
33
|
}
|
|
19
34
|
/**
|
|
@@ -55,6 +70,23 @@ export interface IXform<A, B> {
|
|
|
55
70
|
xform(): Transducer<A, B>;
|
|
56
71
|
}
|
|
57
72
|
export interface IReducible<A, B> {
|
|
73
|
+
/**
|
|
74
|
+
* Used for optimized (rather than generic) iteration of a data structure
|
|
75
|
+
* for reduction purposes. Supported by {@link reduce} and
|
|
76
|
+
* {@link transduce}.
|
|
77
|
+
*
|
|
78
|
+
* @remarks
|
|
79
|
+
* Example implementations:
|
|
80
|
+
*
|
|
81
|
+
* - [`SortedMap`](https://docs.thi.ng/umbrella/associative/classes/SortedMap.html)
|
|
82
|
+
* - [`SortedSet`](https://docs.thi.ng/umbrella/associative/classes/SortedSet.html)
|
|
83
|
+
* - [`DCons`](https://docs.thi.ng/umbrella/dcons/classes/DCons.html)
|
|
84
|
+
* - [`DRing`](https://docs.thi.ng/umbrella/dcons/classes/DRing.html)
|
|
85
|
+
* - [`SOL`](https://docs.thi.ng/umbrella/dcons/classes/SOL.html)
|
|
86
|
+
*
|
|
87
|
+
* @param rfn
|
|
88
|
+
* @param acc
|
|
89
|
+
*/
|
|
58
90
|
$reduce(rfn: ReductionFn<A, B>, acc: A): A | Reduced<A>;
|
|
59
91
|
}
|
|
60
92
|
export type TransformFn = (x: any) => any;
|
package/dedupe.d.ts
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
import type { Predicate2 } from "@thi.ng/api";
|
|
2
2
|
import type { Transducer } from "./api.js";
|
|
3
|
+
/**
|
|
4
|
+
* Transducer. Deduplicates **consecutive** values which are equal according to
|
|
5
|
+
* given (optional) predicate (default: `===`).
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* See {@link distinct} to remove **any** duplicates.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* [...dedupe([1, 1, 2, 3, 3, 3, 1])]
|
|
13
|
+
* // [ 1, 2, 3, 1 ]
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @param equiv
|
|
17
|
+
*/
|
|
3
18
|
export declare function dedupe<T>(equiv?: Predicate2<T>): Transducer<T, T>;
|
|
4
19
|
export declare function dedupe<T>(src: Iterable<T>): IterableIterator<T>;
|
|
5
20
|
export declare function dedupe<T>(equiv: Predicate2<T>, src: Iterable<T>): IterableIterator<T>;
|
package/distinct.d.ts
CHANGED
|
@@ -12,6 +12,10 @@ export interface DistinctOpts<T> {
|
|
|
12
12
|
cache: Fn0<Set<any>>;
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
|
+
* Stateful transducer. Removes any duplicate input values by keeping an
|
|
16
|
+
* internal cache (user configurable) of previously seen inputs. See
|
|
17
|
+
* {@link DistinctOpts}.
|
|
18
|
+
*
|
|
15
19
|
* @example
|
|
16
20
|
* ```ts
|
|
17
21
|
* [...distinct({ key: (x) => x.id }, [{id: 1, x: 2}, {id: 1, x: 3}])]
|
package/dup.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Returns the concatentation of `x` with itself. If input is an
|
|
3
|
-
*
|
|
2
|
+
* Returns the concatentation of `x` with itself. If input is an iterable, it
|
|
3
|
+
* MUST be finite!
|
|
4
4
|
*
|
|
5
5
|
* @remarks
|
|
6
|
-
* Also see the {@link
|
|
7
|
-
*
|
|
6
|
+
* Also see the {@link concat}, {@link duplicate}, {@link repeat} and
|
|
7
|
+
* {@link repeatedly} for achieving a different kinds of value duplication.
|
|
8
8
|
*
|
|
9
9
|
* @example
|
|
10
10
|
* ```ts
|
package/index.d.ts
CHANGED
|
@@ -70,6 +70,7 @@ export * from "./interpolate-linear.js";
|
|
|
70
70
|
export * from "./interpose.js";
|
|
71
71
|
export * from "./keep.js";
|
|
72
72
|
export * from "./labeled.js";
|
|
73
|
+
export * from "./length.js";
|
|
73
74
|
export * from "./map-deep.js";
|
|
74
75
|
export * from "./map-indexed.js";
|
|
75
76
|
export * from "./map-keys.js";
|
package/index.js
CHANGED
|
@@ -73,6 +73,7 @@ export * from "./interpolate-linear.js";
|
|
|
73
73
|
export * from "./interpose.js";
|
|
74
74
|
export * from "./keep.js";
|
|
75
75
|
export * from "./labeled.js";
|
|
76
|
+
export * from "./length.js";
|
|
76
77
|
export * from "./map-deep.js";
|
|
77
78
|
export * from "./map-indexed.js";
|
|
78
79
|
export * from "./map-keys.js";
|
package/length.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Transducer } from "./api.js";
|
|
2
|
+
import type { ILength } from "@thi.ng/api";
|
|
3
|
+
/**
|
|
4
|
+
* Similar to `map((x) => x.length)`. A transducer which returns the `.length`
|
|
5
|
+
* of each input (optionally with offset `n` added, default: 0) and yields
|
|
6
|
+
* sequence of these values.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* [...length(0, ["a", "bc", "def"])]
|
|
11
|
+
* // [1, 2, 3]
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* @param n - optional offset
|
|
15
|
+
*/
|
|
16
|
+
export declare function length(n?: number): Transducer<ILength, number>;
|
|
17
|
+
export declare function length(n: number, src: Iterable<ILength>): IterableIterator<number>;
|
|
18
|
+
//# sourceMappingURL=length.d.ts.map
|
package/length.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { isIterable } from "@thi.ng/checks/is-iterable";
|
|
2
|
+
import { iterator1 } from "./iterator.js";
|
|
3
|
+
import { map } from "./map.js";
|
|
4
|
+
export function length(n = 0, src) {
|
|
5
|
+
return isIterable(src)
|
|
6
|
+
? iterator1(length(n), src)
|
|
7
|
+
: map(n === 0
|
|
8
|
+
? (x) => x.length
|
|
9
|
+
: (x) => x.length + n);
|
|
10
|
+
}
|
package/multiplex.d.ts
CHANGED
|
@@ -12,7 +12,13 @@ import type { MultiplexTxLike, Transducer } from "./api.js";
|
|
|
12
12
|
* varying number of) outputs for each received input:** If only a single output
|
|
13
13
|
* is produced per step, the default behavior of {@link step} is to unwrap it,
|
|
14
14
|
* i.e. `[42]` => `42`. To override this behavior, individual transducers given
|
|
15
|
-
* to `multiplex()` can be given as tuple `[xform, false]` (see 2nd example
|
|
15
|
+
* to `multiplex()` can be given as tuple `[xform, false]` (see 2nd example
|
|
16
|
+
* below).
|
|
17
|
+
*
|
|
18
|
+
* Beware: Any reducers used inside a `multiplex` processing lane (i.e. via
|
|
19
|
+
* {@link scan}) will **not** be able to execute their {@link Reducer}
|
|
20
|
+
* completion function, thus only reducers without any post-processing step
|
|
21
|
+
* should be used.
|
|
16
22
|
*
|
|
17
23
|
* @example
|
|
18
24
|
* ```ts
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thi.ng/transducers",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.6.0",
|
|
4
4
|
"description": "Lightweight transducer implementations for ES6 / TypeScript",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "./index.js",
|
|
@@ -38,18 +38,18 @@
|
|
|
38
38
|
"test": "testament test"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@thi.ng/api": "^8.9.
|
|
42
|
-
"@thi.ng/arrays": "^2.5.
|
|
43
|
-
"@thi.ng/checks": "^3.4.
|
|
44
|
-
"@thi.ng/compare": "^2.1.
|
|
45
|
-
"@thi.ng/compose": "^2.1.
|
|
46
|
-
"@thi.ng/errors": "^2.3.
|
|
47
|
-
"@thi.ng/math": "^5.5.
|
|
48
|
-
"@thi.ng/random": "^3.6.
|
|
41
|
+
"@thi.ng/api": "^8.9.4",
|
|
42
|
+
"@thi.ng/arrays": "^2.5.20",
|
|
43
|
+
"@thi.ng/checks": "^3.4.4",
|
|
44
|
+
"@thi.ng/compare": "^2.1.37",
|
|
45
|
+
"@thi.ng/compose": "^2.1.39",
|
|
46
|
+
"@thi.ng/errors": "^2.3.4",
|
|
47
|
+
"@thi.ng/math": "^5.5.5",
|
|
48
|
+
"@thi.ng/random": "^3.6.2"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@microsoft/api-extractor": "^7.36.4",
|
|
52
|
-
"@thi.ng/testament": "^0.3.
|
|
52
|
+
"@thi.ng/testament": "^0.3.22",
|
|
53
53
|
"rimraf": "^5.0.1",
|
|
54
54
|
"tools": "^0.0.1",
|
|
55
55
|
"typedoc": "^0.24.8",
|
|
@@ -276,6 +276,9 @@
|
|
|
276
276
|
"./last": {
|
|
277
277
|
"default": "./last.js"
|
|
278
278
|
},
|
|
279
|
+
"./length": {
|
|
280
|
+
"default": "./length.js"
|
|
281
|
+
},
|
|
279
282
|
"./line": {
|
|
280
283
|
"default": "./line.js"
|
|
281
284
|
},
|
|
@@ -576,5 +579,5 @@
|
|
|
576
579
|
],
|
|
577
580
|
"year": 2016
|
|
578
581
|
},
|
|
579
|
-
"gitHead": "
|
|
582
|
+
"gitHead": "74cfe3fb8de5bfcbfc1109e67604541cbd7b77aa\n"
|
|
580
583
|
}
|
package/scan.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ import type { Reducer, Transducer } from "./api.js";
|
|
|
8
8
|
* default.
|
|
9
9
|
*
|
|
10
10
|
* @remarks
|
|
11
|
+
* Reference:
|
|
11
12
|
* https://en.wikipedia.org/wiki/Prefix_sum#Scan_higher_order_function
|
|
12
13
|
*
|
|
13
14
|
* @example
|
|
@@ -15,8 +16,25 @@ import type { Reducer, Transducer } from "./api.js";
|
|
|
15
16
|
* [...iterator(scan(add()), range(10))]
|
|
16
17
|
* // [ 0, 1, 3, 6, 10, 15, 21, 28, 36, 45 ]
|
|
17
18
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
19
|
+
* // directly as iterator and with initial result
|
|
20
|
+
* [...scan(add(), 100, range(10))]
|
|
21
|
+
* // [ 100, 101, 103, 106, 110, 115, 121, 128, 136, 145 ]
|
|
22
|
+
*
|
|
23
|
+
* // as transducer
|
|
24
|
+
* transduce(
|
|
25
|
+
* // parallel processing lanes for each input
|
|
26
|
+
* multiplex(
|
|
27
|
+
* // join strings
|
|
28
|
+
* scan(str(" ")),
|
|
29
|
+
* // compute total length (+1)
|
|
30
|
+
* comp(length(1), scan(add()))
|
|
31
|
+
* ),
|
|
32
|
+
* // only keep final value
|
|
33
|
+
* last(),
|
|
34
|
+
* // inputs
|
|
35
|
+
* ["alpha", "beta", "gamma", "delta"]
|
|
36
|
+
* )
|
|
37
|
+
* // [ 'alpha beta gamma delta', 23 ]
|
|
20
38
|
* ```
|
|
21
39
|
*
|
|
22
40
|
* @param rfn - reducer used as scan operator
|