rubico
Version:
[a]synchronous functional programming
28 lines (25 loc) • 559 B
JavaScript
const isPromise = require('./isPromise')
/**
* @name funcConcat
*
* @synopsis
* ```coffeescript [specscript]
* funcConcat<
* args ...any,
* intermediate any,
* result any,
* >(
* funcA ...args=>Promise|intermediate,
* funcB intermediate=>result
* ) -> pipedFunction ...args=>Promise|result
* ```
*/
const funcConcat = (
funcA, funcB,
) => function pipedFunction(...args) {
const intermediate = funcA(...args)
return isPromise(intermediate)
? intermediate.then(funcB)
: funcB(intermediate)
}
module.exports = funcConcat