lifta-syntax-safe
v1.0.1
Published
Dot syntax for fluent construction of asynchronous arrows. Control over public lifting and backing properties.
Downloads
1
Maintainers
Readme
lifta-syntax-safe
Because lifta-syntax adds functions and properties to Function.prototype, you can run afoul of name collisions with other libraries that do the same. lifta-syntax-safe allows you to configure a "lift" property and a "backing" property for Function.prototype. These two properties are the only changes to Function.prototype. The two properties default to { lift: 'a', backing: '_a' }. You can set them by passing in an options object like this: let lifta = require('lifta-syntax-safe')({ lift: 'fred', backing: '_barney' });
Note that functions must be initially lifted in order to access the fluent syntax - the syntax is no longer on Function.prototype but is on a prototype only available to lifted functions. For example, note the "myFunction.a" below:
let lifta = require('lifta-syntax-safe')();
// [...]
function myFunction(x) {
return [x.first * 2, x.second]
}
// [...]
myFunction.a.then(myOtherFunction).then(yetAnotherFunction);
In the above example, myOtherFunction and yetAnotherFunction will be automatically lifted during construction after being passed into the fluent ".then".
Note that arrows (of the form function (x, cont, p)) you write also need to be lifted in order to pick up the fluent syntax. Unlike lifta-syntax, the alternative prototype is needed for your fluent syntax. It is installed when the function is lifted with the [lift], property (which defaults to "a"). So it is fairly simple to lift your own arrows:
function myArrow(x, cont, p) {
cont([x.first * 2, x.second], p);
}
myArrow.a.then(myOtherArrow);
Note that similarly to the first example, passing your arrow into a fluent ".then" will lift the function during construction.