compose
🛠 Compose functions and promises
Code can become complex when several functions wrap others or reduce()
is used
to combine a list of funtions.
This allows composing a pipeline of functions. compose
calls each function
from right-to-left and passes the output from the previous to the next. pipe
is the same, but works from left-to-right.
Install
Using Yarn:
$ yarn add @blakek/compose
…or using npm:
$ npm i --save @blakek/compose
Usage
import { compose, pipe } from '@blakek/compose';
const fetchUsers = () =>
Promise.resolve([
{ sites: { github: { username: 'blakek' } } },
{ sites: { github: { username: 'gsandf' } } },
{ sites: { github: { username: 'google' } } }
]);
const getUsers = compose(
users => users.map(user => user.sites.github.username),
fetchUsers
);
const getUsersPipe = pipe(fetchUsers, users =>
users.map(user => user.sites.github.username)
);
getUsers().then(console.log);
pipe(
n => n + 2,
n => n * 3
)(3);
await pipe(
() => delay(500),
n => n + 2,
n => n * 3
)(3);
API
compose
function compose(...[fn, ...fns]: Function[]): Function;
pipe
function pipe(...[fn, ...fns]: Function[]): Function;
Contributing
Node.js and Yarn are required to work with this project.
To install all dependencies, run:
yarn
Useful Commands
| |
---|
yarn build | Builds the project to ./dist |
yarn format | Format the source following the Prettier styles |
yarn test | Run project tests |
yarn test --watch | Run project tests, watching for file changes |
License
MIT