UNPKG

continuable-fantasy

Version:

Fantasy-land compliant continuables

52 lines (39 loc) 1.19 kB
var continuable = require('continuable') var consume = require('consume') module.exports = ContFantasy function ContFantasy(source, decorate) { if (typeof source !== 'function') throw new Error('Continuable only works with functions') var continuable = decorate ? source : function (callback) { return source(callback) // Do what source does } continuable.constructor = ContFantasy continuable.chain = chainer continuable.map = maper continuable.join = joiner continuable.consume = consumer return continuable } ContFantasy.of = function(value) { return ContFantasy( continuable.of(value) ) } ContFantasy.error = function(error) { return ContFantasy( continuable.error(error) ) } ContFantasy.join = function(cont) { return ContFantasy( continuable.join(cont) ) } function chainer(lambda) { return ContFantasy( continuable.chain(this, lambda) ) } function maper(lambda) { return ContFantasy( continuable.map(this, lambda) ) } function consumer(onError, onValue) { return this(consume(onError, onValue)) } function joiner() { return ContFantasy( continuable.join(this) ) }