4.0.1 • Published 4 years ago

@blakek/compose v4.0.1

Weekly downloads
7
License
MIT
Repository
github
Last release
4 years ago

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 buildBuilds the project to ./dist
yarn formatFormat the source following the Prettier styles
yarn testRun project tests
yarn test --watchRun project tests, watching for file changes

License

MIT

4.0.1

4 years ago

4.0.0

4 years ago

3.0.1

4 years ago

3.0.0

4 years ago

2.0.0

4 years ago

1.0.0

4 years ago