rambdax
Version:
Extended version of Rambda - a lightweight, faster alternative to Ramda
24 lines (19 loc) • 573 B
JavaScript
import { type } from './type'
export function pipeAsync(...inputArguments){
return async function (startArgument){
let argumentsToPass = startArgument
while (inputArguments.length !== 0){
const fn = inputArguments.shift()
const typeFn = type(fn)
if (typeFn === 'Async'){
argumentsToPass = await fn(argumentsToPass)
} else {
argumentsToPass = fn(argumentsToPass)
if (type(argumentsToPass) === 'Promise'){
argumentsToPass = await argumentsToPass
}
}
}
return argumentsToPass
}
}