dechainer v0.3.2
Dechainer
Dechainer is a Node.js library written in TypeScript containing versatile utilities designed to aid development in the functional programming paradigm.
Installation
npm i dechainerImports
Contrived examples demonstrating how to import functions and types from this library.
JavaScript
import { identity } from 'dechainer'
const example = identity('a string')
// example === 'a string'TypeScript
import type { IdentityCallback } from 'dechainer'
import { identity } from 'dechainer'
const stringIdentity: IdentityCallback<string> = (param: string): string =>
identity(param),
example: string = stringIdentity('a string')
// example === 'a string'Interface
Partial documentation of functions available in this library.
async
delay
Delay code execution by a specified duration.
delayableis a callback function with an optionaldurationparameter (e.g.:(duration) => console.log(duration)).durationis the time in milliseconds that should elapse beforedelayableis called.
Unary
await delay({ delayable, duration })Binary
Parameters can be provided in any order.
await delay(delayable, duration)
// or
await delay(duration, delayable)Curried
Parameters can be provided in any order.
await delay(delayable)(duration)
// or
await delay(duration)(delayable)race
Race asynchronous code execution against a specified timeout.
contenderis an asynchronous function that resolves only if the elapsed time is less than thetimeoutduration.timeoutis the time in milliseconds that should elapse before aRangeErroris thrown.
Unary
await race({ contender, timeout })Binary
Parameters can be provided in any order.
await race(contender, timeout)
// or
await race(timeout, contender)Curried
Parameters can be provided in any order.
await race(contender)(timeout)
// or
await race(timeout)(contender)counter
Counter with optional (im-)persistent internal state and respective tradeoffs. Multiple unique counters of both types may exist without overlapping state.
Persistent
Persistent counter that is purely functional and side effect free with a smaller, simpler interface. Resetting is achieved by declaring a new variable. Return value(s) should be stored to be practical.
const { decrement, increment, state } = counter({ impersistent: false })
// state === 0
// increment().state === 1Methods
Methods returned by calling counter({ impersistent: false }), each returning a new persistent counter:
decrementdecreases the current value by1.incrementincreases the current value by1.
Properties
Properties returned by calling counter({ impersistent: false }):
stateis a number representing the counter's current value.
Impersistent
Impersistent counter that provides many methods that mutate its internal state. However, it only needs to be declared once. State is unique to each counter and not shared globally.
const { count, decrement, increment, reset } = counter({ impersistent: true })
// count() === 0
// increment()
// count() === 1Methods
Methods returned by calling counter({ impersistent: true }):
countreturns the counter's current number value.decrementis a side effect that decreases the internal value by1.incrementis a side effect that increases the internal value by1.resetis a side effect that sets the internal value to0.
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago