Skip to content

calmm-js/kefir.combines

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Apr 30, 2018
929f250 · Apr 30, 2018

History

72 Commits
Apr 25, 2018
Apr 25, 2018
Apr 25, 2018
Apr 3, 2018
Apr 22, 2018
Sep 17, 2017
Apr 1, 2018
Apr 28, 2018
Mar 17, 2017
Oct 3, 2016
Apr 30, 2018
Apr 19, 2017
Apr 30, 2018
Apr 30, 2018
Apr 22, 2018

Repository files navigation

npm version Bower version Build Status Code Coverage

WARNING: This library has been superseded by the Karet Lift library.

The default export of this library

import K from "kefir.combines"

is a special purpose Kefir observable combinator designed for combining properties for a sink that accepts both observables and constant values such as VDOM extended to accept observables.

Unlike typical observable combinators, when K is invoked with only constants (no observables), then the result is computed immediately and returned as a plain value. This optimization eliminates redundant observables.

The basic semantics of K can be described as

K(x1, ..., xN, fn) === combine([x1, ..., xN], fn).skipDuplicates(identical)

where combine and skipDuplicates come from Kefir and identical from Ramda. Duplicates are skipped, because that can reduce unnecessary updates. Ramda's identical provides a semantics of equality that works well within the context of embedding properties to VDOM.

Unlike with combine, any argument of K is allowed to be

  • a constant,
  • an observable (including the combiner function), or
  • an array or object containing observables.

In other words, K also provides functionality similar to combineTemplate.

Note: K is carefully optimized for space—if you write equivalent combinations using Kefir's own operators, they will likely take more memory.