Functional composition helpers.
yarn add funcom
Sequential composition of functions invoked in reverse order. Passes return value of the previous function as an argument to the next one.
import { compose } from 'funcom'
const add4 = (a: number) => a + 4
const mult2 = (a: number) => a * 2
const composed = compose(mult2, add4)
console.log(
composed(2)
)
// (2 + 4) * 2 => 12
import { composeAsync } from 'funcom'
const add4Async= (arg: number) => Promise.resolve(arg + 40)
const mult2 = (a: number) => a * 2
const composed = composeAsync(mult2, add4Async)
console.log(
await composed(2)
)
// (2 + 4) * 2 => 12
Sequential composition of functions invoked in direct order. Passes return value of the previous function as an argument to the next one.
import { pipe } from 'funcom'
const add4 = (a: number) => a + 4
const mult2 = (a: number) => a * 2
const piped = pipe(mult2, add4)
console.log(
piped(2)
)
// (2 * 2) + 4 => 8
import { pipeAsync } from 'funcom'
const mult2Async = (a: number) => Promise.resolve(a * 2)
const add4 = (a: number) => a + 4
const piped = pipeAsync(mult2Async, add4)
console.log(
await piped(2)
)
// (2 * 2) + 4 => 8
Composition of multiple functions invoked with same initial value. Returns an array of results.
import { all } from 'funcom'
const mult2 = (a: number) => a * 2
const add4 = (a: number) => a + 4
const toString = (a: number) => `${a}`
const piped = all(mult2, add4, toString)
console.log(
piped(2)
)
// [8, 6, '2']
import { allAsync } from 'funcom'
const mult2 = (a: number) => a * 2
const add4 = (a: number) => a + 4
const toStringAsync = (a: number) => Promise.resolve(`${a}`)
const piped = allAsync(mult2Async, add4, toStringAsync)
console.log(
await piped(2)
)
// [8, 6, '2']