A very tiny and fast compose function.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci
benchmark
.gitignore
LICENSE
README.md
compose-tiny.d.ts
index.js
package.json
test.js
yarn.lock

README.md

compose-tiny

A very tiny and fast compose function.

CircleCI Codecov npm bundle size code style: prettier

Function composition is an act or mechanism to combine simple functions to build more complicated ones.

compose-tiny aims to provide a simple function for composition at the smallest possible size and the fasted possible speed. It's typescript friendly too!

Installation

npm install compose-tiny

Usage

const compose = require('compose-tiny');

const add = x => x + 2;
const sqr = x => x ** 2;

const blastOff = compose(
  x => `🚀 ${x} 🚀`
  sqr,
  add
);

blastOff(2);

Output:

🚀 16 🚀

Multiple Arguments

The first function in the composition can take multiple arguments.

const compose = require('compose-tiny');

const add = x => x + 2;
const sqr = x => x ** 2;

const blastOff = compose(
  sqr,
  add,
  (x, y, z) => (x + y) * z
);

blastOff(1, 2, 4);

Performance

NOTE: bundlephobia includes all files in package

NAME OPS/SEC RELATIVE MARGIN OF ERROR SAMPLE SIZE BUNDLE SIZE
compose-tiny 1108,413 ± 0.72% 187 (112B)[https://bundlephobia.com/result?p=compose-tiny]
squad 105,070 ± 0.62% 185 (517B)[https://bundlephobia.com/result?p=squad]
just-compose 46,964 ± 1.88% 181 (334B)[https://bundlephobia.com/result?p=just-compose]
chain-function 22,556 ± 0.50% 187 (341B)[https://bundlephobia.com/result?p=chain-function]
compose-function 20,817 ± 0.49% 186 (1.2kB)[https://bundlephobia.com/result?p=compose-function]
fj-compose 8,581 ± 0.61% 184 (334B)[https://bundlephobia.com/result?p=fj-compose]
compose-funcs 356 ± 1.58% 176 (594B)[https://bundlephobia.com/result?p=compose-funcs]

To rerun this benchmark

node benchmark