@blakek/compose
v4.0.1
Published
🛠 Compose functions and promises
Downloads
16
Readme
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' } } }
]);
// using `compose`
const getUsers = compose(
users => users.map(user => user.sites.github.username),
fetchUsers
);
// using `pipe`
const getUsersPipe = pipe(fetchUsers, users =>
users.map(user => user.sites.github.username)
);
getUsers().then(console.log); //» [ 'blakek', 'gsandf', 'google' ]
// NOTE: awaiting is only required if one of the arguments is a Promise
pipe(
n => n + 2,
n => n * 3
)(3); //» 15
await pipe(
() => delay(500),
n => n + 2,
n => n * 3
)(3); //» 15
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