callback-chain-resolver

16.0.0 • Public • Published

callback-chain-resolver

Version 16 introduces series and parallel functions and removes earlier functions.

Helps you generate values out of functions in series or in parallel.

Installation

npm i callback-chain-resolver

Usage example

import {series, parallel} from 'callback-chain-resolver'

const incrementBy1 = (x) => x + 1;
const decrementBy1 = (x) => x - 1;
const double = x => 2 * x
const square = x => x * x
const cube = x => x * square(x)

series(1, [incrementBy1, incrementBy1, incrementBy1]) // === 4
series(1, [incrementBy1, incrementBy1, incrementBy1, double, square]) // === 64
series(1, [incrementBy1, incrementBy1, incrementBy1, cube]) // === 64
series(1, [decrementBy1, decrementBy1, decrementBy1]) // === -2
series(1, [incrementBy1, decrementBy1]) // === 1
series(1, [incrementBy1, cube, decrementBy1]) // === 7
series(1, [decrementBy1, incrementBy1]) // === 1

parallel(1, [incrementBy1, incrementBy1, incrementBy1]) // === [2, 2, 2]
parallel(1, [incrementBy1, incrementBy1, incrementBy1, double, square]) // [2, 2, 2, 2, 1]

Check test cases for more examples.

typed

Throws compile time error if you pass mixed output type functions.

For example when you add toString to the typedResolver test cases.

TS2345: Argument of type '(((x: number) => number) | ((x: number) => string))[]' is not assignable to parameter of type 'FnT<number>[]'.
    Type '((x: number) => number) | ((x: number) => string)' is not assignable to type 'FnT<number>'.
    Type '(x: number) => string' is not assignable to type 'FnT<number>'.
    Type 'string' is not assignable to type 'number'

Use any in <any> while invoking mixed functions.

License

MIT © 2016 - 2021

Package Sidebar

Install

npm i callback-chain-resolver

Weekly Downloads

1

Version

16.0.0

License

MIT

Unpacked Size

23.5 kB

Total Files

23

Last publish

Collaborators

  • iamanubhavsaini
  • git.faf
  • anusaini