2.0.1 • Published 2 years ago

compose-ts v2.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

compose-ts

compose-ts is a TypeScript library that simplifies function composition, transforming nested calls into a manageable sequence.

Installation

Install via npm or yarn:

npm install compose-ts
# or
yarn add compose-ts

Usage

Import compose from compose-ts and use it to chain functions together.

Basic Example

import { compose } from 'compose-ts';

const add = (n: number, num = 1) => n + num;
const multiply = (n: number, num = 2) => n * num;
const toString = (n: number) => n.toString();

const num = compose(42)(add)(multiply)(add, 5)(toString)();
// Equivalent: const num = toString(add(multiply(add(42)), 5));

console.log(num); // "91"

Advanced Example with Function Enhancers

import { compose } from 'compose-ts';

type Func<TParameters extends any[], TReturnType> =
  (...args: TParameters) => TReturnType;

const addH =
  <TParameters extends any[]>(func: Func<TParameters, number>, num = 1) =>
    (...args: TParameters) => func(...args) + num;

const multiplyH =
  <TParameters extends any[]>(func: Func<TParameters, number>, num = 2) =>
    (...args: TParameters) => func(...args) * num;

const parseIntH =
  (func: Func<[number], number>) =>
    (arg: string) => func(parseInt(arg));

const I = (result: number) => result;

const enhanced = compose(I)(addH)(multiplyH)(addH, 5)(parseIntH)();
// Equivalent: const enhanced = parseIntH(addH(multiplyH(addH(I)), 5));

console.log(enhanced("42")); // 91

Features

  • Transforms complex nested function calls into linear sequences.
  • Enhances readability and maintainability of TypeScript code.
  • Supports function enhancers for advanced composition.

Versioning

Follows Semantic Versioning 2.0.0.

Contributing

Contributions are welcome. Feel free to submit pull requests or open issues.

License

Licensed under the MIT License.

1.0.0

2 years ago

1.0.0-pre5

2 years ago

2.0.1

2 years ago

2.0.0

2 years ago

1.0.0-pre4

2 years ago

1.0.0-pre3

2 years ago

1.0.0-pre2

2 years ago

1.0.0-pre1

2 years ago

1.0.0-pre0

2 years ago