Skip to content

afeiship/pipe

Repository files navigation

pipe

Pipe is a lightweight JavaScript library for function composition and execution.

version license size download

installation

npm install @jswork/pipe

methods

  • pipe === pipe.sync
  • pipe.sync (default)
  • pipe.async

usage

import pipe from '@jswork/pipe';

// fns
function addOne(n: number): number {
  return n + 1;
}

function double(n: number): number {
  return n * 2;
}

function divide(n: number): number {
  if (n === 0) {
    throw new Error('Divide by zero error.');
  }
  return 10 / n;
}

// use pipe
const calculate = pipe(
  addOne,
  double,
  divide,
  addOne
);

const result1 = calculate(3);
const result2 = calculate(-1);

// has result, without log
console.log('Result1:', result1); // 10 / (3 + 1)*2  + 1 = 2.25
// has result, but with warning log
console.log('Result2:', result2); // 10 / (-1+1)*2 + 1 => Throw error: Divide by zero error.

pipe vs compose

  • compose:常见于函数式编程库如 Redux、Ramda,因为其与数学定义一致。
  • pipe:常见于像 Elm、F# 或者 RxJS 中,因为它更符合“先做什么,再做什么”的自然阅读顺序。

license

Code released under the MIT license.

About

Pipe is a lightweight JavaScript library for function composition and execution.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published