# jfn

> Joins functions into a single function that runs them in serial or in parallel.

Latest version **1.0.0** (published 2018-05-14) · MIT license · 0 weekly downloads

## Install

```sh
npm install jfn
pnpm add jfn
yarn add jfn
bun add jfn
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.0 |
| Published | 2018-05-14 |
| First published | 2018-05-14 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=6.0.0 |
| Dependencies | 2 |
| Unpacked size | 3.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | John Lamansky |
| Maintainers | lamansky |
| Keywords | join, joined, functions, sequence, serial, parallel |

## Links

- npm: https://www.npmjs.com/package/jfn
- Repository: https://github.com/lamansky/jfn
- Issues: https://github.com/lamansky/jfn/issues
- npm.io page: https://npm.io/package/jfn

## Dependencies (2)

- [vfn](https://npm.io/package/vfn.md) ^1.1.0
- [@lamansky/flatten](https://npm.io/package/@lamansky/flatten.md) ^1.0.0

## Alternatives

- [@regle/core](https://npm.io/package/@regle/core.md) — 47.0K weekly downloads
- [typeof-arguments](https://npm.io/package/typeof-arguments.md) — 12.5K weekly downloads
- [@lokalise/projects-engine-contracts](https://npm.io/package/@lokalise/projects-engine-contracts.md) — 978 weekly downloads
- [@osjwnpm/nam-laboriosam-quibusdam](https://npm.io/package/@osjwnpm/nam-laboriosam-quibusdam.md) — 70 weekly downloads
- [@oridune/validator](https://npm.io/package/@oridune/validator.md) — 16 weekly downloads

## Recent versions

- 1.0.0 (latest) — 2018-05-14

## README

# Joined Function (jfn)

Creates a function that runs multiple functions in serial or in parallel.

## Installation

Requires [Node.js](https://nodejs.org/) 6.0.0 or above.

```bash
npm i jfn
```

## API

The module exports a single function.

### Parameters

1. Variadic: `...fns` (one or more of: function, or array of functions): The functions to be combined into one.
2. Optional: Object argument:
    * `parallel` or `p` (boolean): If `true`, runs the functions in parallel, giving the same arguments to each function, and compiling the returned results into an array. If `false`, runs the functions in serial, passing the result of each function to the next in the list, and returning a single value at the end. Defaults to `false`.
    * `arg` (positive integer): If in serial mode, the result of each function will be passed to the next as an argument at this index. Defaults to `0`.

### Return Value

The return value of the last function in `fns` (if in serial mode) or an array of `fns` return values (if in parallel mode).

## Examples

### Serial Mode

```javascript
const jfn = require('jfn')

const add1 = n => n + 1
const add2 = n => n + 2
const add3 = jfn(add1, add2)

add3(1) // 4
```

### Parallel Mode

```javascript
const jfn = require('jfn')

const add1 = n => n + 1
const add2 = n => n + 2
const add = jfn(add1, add2, {parallel: true})

add(1) // [2, 3]
```

## Related

For more projects like this, check out [@lamansky/fn](https://github.com/lamansky/fn).

---
_Source: https://npm.io/package/jfn · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
