Skip to content

Utils Reference

Coverage License NPM Version Open Issues Size

⚒️ Lou’s Code TypeScript curried functional utils.

Usage

📦 Node

Install @lou.codes/utils as a dependency:

Terminal window
1
pnpm add @lou.codes/utils
2
# or
3
npm install @lou.codes/utils
4
# or
5
yarn add @lou.codes/utils

Import it and use it:

1
import { get } from "@lou.codes/utils";
2
3
get("foo")({ foo: "bar" }); // "bar"

🦕 Deno

Import @lou.codes/utils using the npm: prefix, and use it directly:

1
import { get } from "npm:@lou.codes/utils";
2
3
get("foo")({ foo: "bar" }); // "bar"

🌎 Browser

Import @lou.codes/utils using esm.sh, and use it directly:

1
<script type="module">
2
import { get } from "https://esm.sh/@lou.codes/utils";
3
4
get("foo")({ foo: "bar" }); // "bar"
5
</script>

Classes

bind()

1
function bind<Context>(context: Context): <Method>(method: Method) => Method;

Bounds the given context to the given method.

Type parameters

Type parameter
Context

Parameters

ParameterType
contextContext

Returns

Function

Curried function with context in context.

Type parameters
Type parameter
Method extends Function
Parameters
ParameterType
methodMethod
Returns

Method

Example

1
const bindConsole = bind(console);
2
const log = bindConsole(console.log);
3
4
log("Hello world!"); // Logs "Hello world!" without context errors.

View source


construct()

1
function construct<Constructor>(
2
constructor: Constructor,
3
): (
4
...constructorArguments: ConstructorParameters<Constructor>
5
) => Unbound<InstanceType<Constructor>>;

Creates a new instance of the given constructor with the given arguments. This also binds all functions to the instance.

Type parameters

Type parameter
Constructor extends Class<never>

Parameters

ParameterType
constructorConstructor

Returns

Function

Curried function with constructor in context.

Parameters
ParameterType
constructorArgumentsConstructorParameters<Constructor>
Returns

Unbound<InstanceType<Constructor>>

Example

1
const constructDate = construct(Date);
2
const { getTime } = constructDate(); // Works because all methods are binded.

View source


constructArray()

constructArray(length)

1
function constructArray<Item>(length: number): object;

Functional alias for new Array().

Type parameters
Type parameter
Item
Parameters
ParameterType
lengthnumber
Returns

object

MemberTypeDescription
[unscopables]objectIs an object whose properties have the value ‘true’
when they will be absent when used in a ‘with’ statement.
[unscopables].[unscopables]booleanIs an object whose properties have the value ‘true’
when they will be absent when used in a ‘with’ statement.
[unscopables].lengthbooleanGets the length of the array. This is a number one higher than the highest element defined in an array.
[unscopables].[iterator]-
[unscopables].at-
[unscopables].concat-
[unscopables].entries-
[unscopables].every-
[unscopables].filter-
[unscopables].find-
[unscopables].findIndex-
[unscopables].findLast-
[unscopables].findLastIndex-
[unscopables].flat-
[unscopables].flatMap-
[unscopables].forEach-
[unscopables].includes-
[unscopables].indexOf-
[unscopables].join-
[unscopables].keys-
[unscopables].lastIndexOf-
[unscopables].map-
[unscopables].reduce-
[unscopables].reduceRight-
[unscopables].slice-
[unscopables].some-
[unscopables].toLocaleString-
[unscopables].toReversed-
[unscopables].toSorted-
[unscopables].toSpliced-
[unscopables].toString-
[unscopables].values-
[unscopables].with-
lengthnumberGets the length of the array. This is a number one higher than the highest element defined in an array.
[iterator]IterableIterator<Item>-
atundefined | Item-
concatItem[]-
entriesIterableIterator<[number, Item]>-
everyboolean-
filterItem[]-
findundefined | Item-
findIndexnumber-
findLastundefined | Item-
findLastIndexnumber-
flatunknown[]-
flatMapunknown[]-
forEachvoid-
includesboolean-
indexOfnumber-
joinstring-
keysIterableIterator<number>-
lastIndexOfnumber-
mapunknown[]-
reduceunknown-
reduceRightunknown-
sliceItem[]-
someboolean-
toLocaleStringstring-
toReversedItem[]-
toSortedItem[]-
toSplicedItem[]-
toStringstring-
valuesIterableIterator<Item>-
withItem[]-

View source

constructArray(items)

1
function constructArray<Items>(...items: Items): object;

Functional alias for new Array().

Type parameters
Type parameter
Items extends ReadOnlyArray
Parameters
ParameterType
itemsItems
Returns

object

MemberTypeDescription
[unscopables]objectIs an object whose properties have the value ‘true’
when they will be absent when used in a ‘with’ statement.
[unscopables].[unscopables]booleanIs an object whose properties have the value ‘true’
when they will be absent when used in a ‘with’ statement.
[unscopables].lengthbooleanGets the length of the array. This is a number one higher than the highest element defined in an array.
[unscopables].[iterator]-
[unscopables].at-
[unscopables].concat-
[unscopables].entries-
[unscopables].every-
[unscopables].filter-
[unscopables].find-
[unscopables].findIndex-
[unscopables].findLast-
[unscopables].findLastIndex-
[unscopables].flat-
[unscopables].flatMap-
[unscopables].forEach-
[unscopables].includes-
[unscopables].indexOf-
[unscopables].join-
[unscopables].keys-
[unscopables].lastIndexOf-
[unscopables].map-
[unscopables].reduce-
[unscopables].reduceRight-
[unscopables].slice-
[unscopables].some-
[unscopables].toLocaleString-
[unscopables].toReversed-
[unscopables].toSorted-
[unscopables].toSpliced-
[unscopables].toString-
[unscopables].values-
[unscopables].with-
lengthnumberGets the length of the array. This is a number one higher than the highest element defined in an array.
[iterator]IterableIterator<Items[number]>-
atundefined | Items[number]-
concatItems[number][]-
entriesIterableIterator<[number, Items[number]]>-
everyboolean-
filterItems[number][]-
findundefined | Items[number]-
findIndexnumber-
findLastundefined | Items[number]-
findLastIndexnumber-
flatunknown[]-
flatMapunknown[]-
forEachvoid-
includesboolean-
indexOfnumber-
joinstring-
keysIterableIterator<number>-
lastIndexOfnumber-
mapunknown[]-
reduceunknown-
reduceRightunknown-
sliceItems[number][]-
someboolean-
toLocaleStringstring-
toReversedItems[number][]-
toSortedItems[number][]-
toSplicedItems[number][]-
toStringstring-
valuesIterableIterator<Items[number]>-
withItems[number][]-

View source


constructDataView()

1
function constructDataView(
2
...constructorArguments: [ArrayBufferLike & object, number, number]
3
): object;

Functional alias for new DataView().

Parameters

ParameterType
constructorArguments[ArrayBufferLike & object, number, number]

Returns

object

MemberType
[toStringTag]string
bufferArrayBuffer
byteLengthnumber
byteOffsetnumber
getBigInt64bigint
getBigUint64bigint
getFloat32number
getFloat64number
getInt16number
getInt32number
getInt8number
getUint16number
getUint32number
getUint8number
setBigInt64void
setBigUint64void
setFloat32void
setFloat64void
setInt16void
setInt32void
setInt8void
setUint16void
setUint32void
setUint8void

View source


constructDate()

1
function constructDate(date?: string | number | Readonly<Date>): object;

Functional alias for new Date().

Parameters

ParameterType
date?string | number | Readonly<Date>

Returns

object

MemberType
getVarDate(this: void, …methodArguments: []) => VarDate
[toPrimitive]string | number
getDatenumber
getDaynumber
getFullYearnumber
getHoursnumber
getMillisecondsnumber
getMinutesnumber
getMonthnumber
getSecondsnumber
getTimenumber
getTimezoneOffsetnumber
getUTCDatenumber
getUTCDaynumber
getUTCFullYearnumber
getUTCHoursnumber
getUTCMillisecondsnumber
getUTCMinutesnumber
getUTCMonthnumber
getUTCSecondsnumber
setDatenumber
setFullYearnumber
setHoursnumber
setMillisecondsnumber
setMinutesnumber
setMonthnumber
setSecondsnumber
setTimenumber
setUTCDatenumber
setUTCFullYearnumber
setUTCHoursnumber
setUTCMillisecondsnumber
setUTCMinutesnumber
setUTCMonthnumber
setUTCSecondsnumber
toDateStringstring
toISOStringstring
toJSONstring
toLocaleDateStringstring
toLocaleStringstring
toLocaleTimeStringstring
toStringstring
toTimeStringstring
toUTCStringstring
valueOfnumber

View source


constructError()

1
function constructError(
2
...constructorArguments: [string, ErrorOptions]
3
): object;

Functional alias for new Error().

Parameters

ParameterType
constructorArguments[string, ErrorOptions]

Returns

object

MemberType
causeunknown
messagestring
namestring
stackstring

View source


constructIntlCollator()

1
function constructIntlCollator(
2
...constructorArguments: [LocalesArgument, CollatorOptions]
3
): object;

Functional alias for new Intl.Collator(), which enables language-sensitive string comparison.

Parameters

ParameterType
constructorArguments[LocalesArgument, CollatorOptions]

Returns

object

MemberType
comparenumber
resolvedOptionsResolvedCollatorOptions

See

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Collator

View source


constructIntlDateTimeFormat()

1
function constructIntlDateTimeFormat(
2
...constructorArguments: [LocalesArgument, DateTimeFormatOptions]
3
): object;

Functional alias for new Intl.DateTimeFormat(), which enables language-sensitive date and time formatting.

Parameters

ParameterType
constructorArguments[LocalesArgument, DateTimeFormatOptions]

Returns

object

MemberType
formatstring
formatRangestring
formatRangeToPartsDateTimeRangeFormatPart[]
formatToPartsDateTimeFormatPart[]
resolvedOptionsResolvedDateTimeFormatOptions

See

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat

View source


constructIntlLocale()

1
function constructIntlLocale(
2
tag: Readonly<Locale | LocaleIdentifier>,
3
options?: Readonly<LocaleOptions>,
4
): object;

Functional alias for new Intl.Locale(), which represents a Unicode locale identifier.

Parameters

ParameterType
tagReadonly<Locale | LocaleIdentifier>
options?Readonly<LocaleOptions>

Returns

object

MemberTypeDescription
baseNamestringA string containing the language, and the script and region if available.
calendarstringThe part of the Locale that indicates the locale’s calendar era.
caseFirstLocaleCollationCaseFirstFlag that defines whether case is taken into account for the locale’s collation rules.
collationstringThe collation type used for sorting
hourCycleLocaleHourCycleKeyThe time keeping format convention used by the locale.
languagestringThe primary language subtag associated with the locale.
numberingSystemstringThe numeral system used by the locale.
numericbooleanFlag that defines whether the locale has special collation handling for numeric characters.
regionstringThe region of the world (usually a country) associated with the locale. Possible values are region codes as defined by ISO 3166-1.
scriptstringThe script used for writing the particular language used in the locale. Possible values are script codes as defined by ISO 15924.
maximizeLocale-
minimizeLocale-
toStringstring-

See

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale

View source


constructIntlNumberFormat()

1
function constructIntlNumberFormat(
2
...constructorArguments: [LocalesArgument, NumberFormatOptions]
3
): object;

Functional alias for new Intl.NumberFormat(), which enables language-sensitive number formatting.

Parameters

ParameterType
constructorArguments[LocalesArgument, NumberFormatOptions]

Returns

object

MemberType
formatstring
formatRangestring
formatRangeToPartsNumberRangeFormatPart[]
formatToPartsNumberFormatPart[]
resolvedOptionsResolvedNumberFormatOptions

See

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat

View source


constructIntlPluralRules()

1
function constructIntlPluralRules(
2
...constructorArguments: [LocalesArgument, PluralRulesOptions]
3
): object;

Functional alias for new Intl.PluralRules(), which enables plural-sensitive formatting and plural-related language rules.

Parameters

ParameterType
constructorArguments[LocalesArgument, PluralRulesOptions]

Returns

object

MemberType
resolvedOptionsResolvedPluralRulesOptions
selectLDMLPluralRule

See

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/PluralRules

View source


constructIntlRelativeTimeFormat()

1
function constructIntlRelativeTimeFormat(
2
...constructorArguments: [LocalesArgument, RelativeTimeFormatOptions]
3
): object;

Functional alias for new Intl.RelativeTimeFormat(), which enables language-sensitive relative time formatting.

Parameters

ParameterType
constructorArguments[LocalesArgument, RelativeTimeFormatOptions]

Returns

object

MemberType
formatstring
formatToPartsRelativeTimeFormatPart[]
resolvedOptionsResolvedRelativeTimeFormatOptions

See

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat

View source


constructMap()

1
function constructMap<Key, Value>(
2
iterable?: Iterable<readonly [Key, Value]>,
3
): object;

Functional alias for new Map().

Type parameters

Type parameter
Key
Value

Parameters

ParameterType
iterable?Iterable<readonly [Key, Value]>

Returns

object

MemberTypeDescription
[toStringTag]string-
sizenumber
[iterator]IterableIterator<[Key, Value]>-
clearvoid-
deleteboolean-
entriesIterableIterator<[Key, Value]>-
forEachvoid-
getundefined | Value-
hasboolean-
keysIterableIterator<Key>-
setMap<Key, Value>-
valuesIterableIterator<Value>-

View source


constructPromise()

1
function constructPromise<Value>(
2
executor: (
3
resolve: (value: Value) => void,
4
reject: (reason?: unknown) => void,
5
) => void,
6
): object;

Functional alias for new Promise().

Type parameters

Type parameter
Value

Parameters

ParameterType
executor(resolve: (value: Value) => void, reject: (reason?: unknown) => void) => void

Returns

object

MemberTypeDescription
catch<RejectedValue>(this: void, onrejected?: Unary<unknown, RejectedValue | PromiseLike<RejectedValue>>) => Promise<Value | RejectedValue>See
Promise#then
then<ResolvedValue, RejectedValue>(this: void, onResolved?: Unary<Value, ResolvedValue | PromiseLike<ResolvedValue>>, onRejected?: Unary<unknown, RejectedValue | PromiseLike<RejectedValue>>) => Promise<ResolvedValue | RejectedValue>See
Promise#then

View source


constructProxy()

1
function constructProxy<Target>(
2
target: Target,
3
handler: ProxyHandler<Target>,
4
): Unbound<Target>;

Functional alias for new Proxy().

Type parameters

Type parameter
Target extends object

Parameters

ParameterType
targetTarget
handlerProxyHandler<Target>

Returns

Unbound<Target>

View source


constructRangeError()

1
function constructRangeError(
2
...constructorArguments: [string, ErrorOptions]
3
): object;

Functional alias for new RangeError().

Parameters

ParameterType
constructorArguments[string, ErrorOptions]

Returns

object

MemberType
causeunknown
messagestring
namestring
stackstring

View source


constructReferenceError()

1
function constructReferenceError(
2
...constructorArguments: [string, ErrorOptions]
3
): object;

Functional alias for new ReferenceError().

Parameters

ParameterType
constructorArguments[string, ErrorOptions]

Returns

object

MemberType
causeunknown
messagestring
namestring
stackstring

View source


constructRegExp()

1
function constructRegExp(
2
...constructorArguments: [string | RegExp, string]
3
): object;

Functional alias for new RegExp().

Parameters

ParameterType
constructorArguments[string | RegExp, string]

Returns

object

MemberTypeDescription
dotAllbooleanReturns a Boolean value indicating the state of the dotAll flag (s) used with a regular expression.
Default is false. Read-only.
flagsstringReturns a string indicating the flags of the regular expression in question. This field is read-only.
The characters in this string are sequenced and concatenated in the following order:

- “g” for global
- “i” for ignoreCase
- “m” for multiline
- “u” for unicode
- “y” for sticky

If no flags are set, the value is the empty string.
globalbooleanReturns a Boolean value indicating the state of the global flag (g) used with a regular expression. Default is false. Read-only.
hasIndicesbooleanReturns a Boolean value indicating the state of the hasIndices flag (d) used with with a regular expression.
Default is false. Read-only.
ignoreCasebooleanReturns a Boolean value indicating the state of the ignoreCase flag (i) used with a regular expression. Default is false. Read-only.
lastIndexnumber-
multilinebooleanReturns a Boolean value indicating the state of the multiline flag (m) used with a regular expression. Default is false. Read-only.
sourcestringReturns a copy of the text of the regular expression pattern. Read-only. The regExp argument is a Regular expression object. It can be a variable name or a literal.
stickybooleanReturns a Boolean value indicating the state of the sticky flag (y) used with a regular
expression. Default is false. Read-only.
unicodebooleanReturns a Boolean value indicating the state of the Unicode flag (u) used with a regular
expression. Default is false. Read-only.
[matchAll]IterableIterator<RegExpMatchArray>-
[match]null | RegExpMatchArray-
[replace]string-
[search]number-
[split]string[]-
compileRegExp-
execnull | RegExpExecArray-
testboolean-

View source


constructSet()

1
function constructSet<Value>(iterable?: Iterable<Value>): object;

Functional alias for new Set().

Type parameters

Type parameter
Value

Parameters

ParameterType
iterable?Iterable<Value>

Returns

object

MemberTypeDescription
[toStringTag]string-
sizenumber
[iterator]IterableIterator<Value>-
addSet<Value>-
clearvoid-
deleteboolean-
entriesIterableIterator<[Value, Value]>-
forEachvoid-
hasboolean-
keysIterableIterator<Value>-
valuesIterableIterator<Value>-

View source


constructSyntaxError()

1
function constructSyntaxError(
2
...constructorArguments: [string, ErrorOptions]
3
): object;

Functional alias for new SyntaxError().

Parameters

ParameterType
constructorArguments[string, ErrorOptions]

Returns

object

MemberType
causeunknown
messagestring
namestring
stackstring

View source


constructTextEncoder()

1
function constructTextEncoder(...constructorArguments: []): object;

Functional alias for new TextEncoder().

Parameters

ParameterType
constructorArguments[]

Returns

object

MemberTypeDescription
encodingstringReturns “utf-8”.

MDN Reference
encodeUint8Array-
encodeIntoTextEncoderEncodeIntoResult-

View source


constructTypeError()

1
function constructTypeError(
2
...constructorArguments: [string, ErrorOptions]
3
): object;

Functional alias for new TypeError().

Parameters

ParameterType
constructorArguments[string, ErrorOptions]

Returns

object

MemberType
causeunknown
messagestring
namestring
stackstring

View source


constructURIError()

1
function constructURIError(
2
...constructorArguments: [string, ErrorOptions]
3
): object;

Functional alias for new URIError().

Parameters

ParameterType
constructorArguments[string, ErrorOptions]

Returns

object

MemberType
causeunknown
messagestring
namestring
stackstring

View source


constructWeakMap()

1
function constructWeakMap<Key, Value>(
2
iterable?: Iterable<readonly [Key, Value]>,
3
): object;

Functional alias for new WeakMap().

Type parameters

Type parameter
Key extends object
Value

Parameters

ParameterType
iterable?Iterable<readonly [Key, Value]>

Returns

object

MemberType
[toStringTag]string
deleteboolean
getundefined | Value
hasboolean
setWeakMap<Key, Value>

View source


constructWeakSet()

1
function constructWeakSet<Value>(iterable?: Iterable<Value>): object;

Functional alias for new WeakSet().

Type parameters

Type parameter
Value extends object

Parameters

ParameterType
iterable?Iterable<Value>

Returns

object

MemberType
[toStringTag]string
addWeakSet<Value>
deleteboolean
hasboolean

View source

Common

toString()

1
function toString<Input>(input: Input): Input extends Strigifiable ?
2
`${Input<Input>}`
3
: Input extends object ? ReturnType<Input<Input>["toString"]>
4
: string;

Parses given value to string.

Type parameters

Type parameter
Input extends Strigifiable | object

Parameters

ParameterType
inputInput

Returns

Input extends Strigifiable ? `${Input<Input>}` : Input extends object ? ReturnType<Input<Input>["toString"]> : string

stringified value.

Example

1
toString(10); // "10"
2
toString({}); // "[object Object]"
3
toString({ toString: _ => "test" }); // "test"

View source

Conditions

when()

1
function when<Value, Predicated>(
2
predicate: Single<Predicated> extends Single<never> ? Filter<Value>
3
: Predicate<Value, Predicated>,
4
): <TrueOutput>(
5
truthyHandler: Unary<Predicated & Value, TrueOutput>,
6
) => <FalseInput, FalseOutput>(
7
falsyHandler: Unary<FalseInput, FalseOutput>,
8
) => (value: Value) => TrueOutput | FalseOutput;

Curried conditional (like a functional ternary).

Type parameters

Type parameterValue
Value-
Predicatednever

Parameters

ParameterTypeDescription
predicateSingle<Predicated> extends Single<never> ? Filter<Value> : Predicate<Value, Predicated>Predicate to check value against.

Returns

Function

Curried function with predicate in context.

Type parameters
Type parameter
TrueOutput
Parameters
ParameterType
truthyHandlerUnary<Predicated & Value, TrueOutput>
Returns

Function

Type parameters
Type parameterValue
FalseInputValue extends Predicated ? Value<Value> : Predicated
FalseOutputTrueOutput
Parameters
ParameterType
falsyHandlerUnary<FalseInput, FalseOutput>
Returns

Function

Parameters
ParameterType
valueValue
Returns

TrueOutput | FalseOutput

Example

1
const isEven = (value: number) => value % 2 === 0;
2
const whenIsEven = when(isEven);
3
const double = (value: number) => value * 2;
4
const doubleWhenEven = whenIsEven(double);
5
const triple = (value: number) => value * 3;
6
const tripleWhenOdd = whenIsEven(triple);
7
8
tripleWhenOdd(2); // 4
9
tripleWhenOdd(3); // 9

View source


whenFalsy()

1
function whenFalsy<Value, Predicated>(
2
predicate: Single<Predicated> extends Single<never> ? Filter<Value>
3
: Predicate<Value, Predicated>,
4
): <FalseInput, FalseOutput>(
5
falsyHandler: Unary<FalseInput, FalseOutput>,
6
) => (value: Value) => (Predicated & Value) | FalseOutput;

Like when, but when is falsy the value is returned as is.

Type parameters

Type parameterValue
Value-
Predicatednever

Parameters

ParameterTypeDescription
predicateSingle<Predicated> extends Single<never> ? Filter<Value> : Predicate<Value, Predicated>Predicate to check value against.

Returns

Function

Curried function with predicate in context.

Type parameters
Type parameterValue
FalseInputValue extends Predicated ? Value<Value> : Predicated
FalseOutputPredicated & Value
Parameters
ParameterType
falsyHandlerUnary<FalseInput, FalseOutput>
Returns

Function

Parameters
ParameterType
valueValue
Returns

Predicated & Value | FalseOutput

Example

1
const isEven = (value: number) => value % 2 === 0;
2
const whenIsOdd = whenFalsy(isEven);
3
const double = (value: number) => value * 2;
4
const doubleWhenOdd = whenIsOdd(double);
5
6
doubleWhenOdd(2); // 2
7
doubleWhenOdd(3); // 6

View source


whenIsArray()

1
function whenIsArray<TrueOutput>(
2
truthyHandler: Unary<ReadOnlyArray<unknown>, TrueOutput>,
3
): <FalseInput, FalseOutput>(
4
falsyHandler: Unary<FalseInput, FalseOutput>,
5
) => (value: unknown) => TrueOutput | FalseOutput;

Conditional handler for when something is an Array.

Type parameters

Type parameter
TrueOutput

Parameters

ParameterType
truthyHandlerUnary<ReadOnlyArray<unknown>, TrueOutput>

Returns

Function

Type parameters
Type parameterValue
FalseInputReadOnlyArray<unknown>
FalseOutputTrueOutput
Parameters
ParameterType
falsyHandlerUnary<FalseInput, FalseOutput>
Returns

Function

Parameters
ParameterType
valueunknown
Returns

TrueOutput | FalseOutput

View source


whenIsAsyncIterable()

1
function whenIsAsyncIterable<TrueOutput>(
2
truthyHandler: Unary<Readonly<AsyncIterable<unknown>>, TrueOutput>,
3
): <FalseInput, FalseOutput>(
4
falsyHandler: Unary<FalseInput, FalseOutput>,
5
) => (value: unknown) => TrueOutput | FalseOutput;

Conditional handler for when something is an AsyncIterable.

Type parameters

Type parameter
TrueOutput

Parameters

ParameterType
truthyHandlerUnary<Readonly<AsyncIterable<unknown>>, TrueOutput>

Returns

Function

Type parameters
Type parameterValue
FalseInputReadonly<AsyncIterable<unknown>>
FalseOutputTrueOutput
Parameters
ParameterType
falsyHandlerUnary<FalseInput, FalseOutput>
Returns

Function

Parameters
ParameterType
valueunknown
Returns

TrueOutput | FalseOutput

View source


whenIsBigInt()

1
function whenIsBigInt<TrueOutput>(
2
truthyHandler: Unary<bigint, TrueOutput>,
3
): <FalseInput, FalseOutput>(
4
falsyHandler: Unary<FalseInput, FalseOutput>,
5
) => (value: unknown) => TrueOutput | FalseOutput;

Conditional handler for when something is a BigInt.

Type parameters

Type parameter
TrueOutput

Parameters

ParameterType
truthyHandlerUnary<bigint, TrueOutput>

Returns

Function

Type parameters
Type parameterValue
FalseInputbigint
FalseOutputTrueOutput
Parameters
ParameterType
falsyHandlerUnary<FalseInput, FalseOutput>
Returns

Function

Parameters
ParameterType
valueunknown
Returns

TrueOutput | FalseOutput

View source


whenIsBoolean()

1
function whenIsBoolean<TrueOutput>(
2
truthyHandler: Unary<boolean, TrueOutput>,
3
): <FalseInput, FalseOutput>(
4
falsyHandler: Unary<FalseInput, FalseOutput>,
5
) => (value: unknown) => TrueOutput | FalseOutput;

Conditional handler for when something is a Boolean.

Type parameters

Type parameter
TrueOutput

Parameters

ParameterType
truthyHandlerUnary<boolean, TrueOutput>

Returns

Function

Type parameters
Type parameterValue
FalseInputboolean
FalseOutputTrueOutput
Parameters
ParameterType
falsyHandlerUnary<FalseInput, FalseOutput>
Returns

Function

Parameters
ParameterType
valueunknown
Returns

TrueOutput | FalseOutput

View source


whenIsDate()

1
function whenIsDate<TrueOutput>(
2
truthyHandler: Unary<Date, TrueOutput>,
3
): <FalseInput, FalseOutput>(
4
falsyHandler: Unary<FalseInput, FalseOutput>,
5
) => (value: unknown) => TrueOutput | FalseOutput;

Conditional handler for when something is a Date.

Type parameters

Type parameter
TrueOutput

Parameters

ParameterType
truthyHandlerUnary<Date, TrueOutput>

Returns

Function

Type parameters
Type parameterValue
FalseInputDate
FalseOutputTrueOutput
Parameters
ParameterType
falsyHandlerUnary<FalseInput, FalseOutput>
Returns

Function

Parameters
ParameterType
valueunknown
Returns

TrueOutput | FalseOutput

View source


whenIsFalsy()

1
function whenIsFalsy<TrueOutput>(
2
truthyHandler: Unary<Falsy, TrueOutput>,
3
): <FalseInput, FalseOutput>(
4
falsyHandler: Unary<FalseInput, FalseOutput>,
5
) => (value: unknown) => TrueOutput | FalseOutput;

Conditional handler for when something is a Falsy value.

Type parameters

Type parameter
TrueOutput

Parameters

ParameterType
truthyHandlerUnary<Falsy, TrueOutput>

Returns

Function

Type parameters
Type parameterValue
FalseInputFalsy
FalseOutputTrueOutput
Parameters
ParameterType
falsyHandlerUnary<FalseInput, FalseOutput>
Returns

Function

Parameters
ParameterType
valueunknown
Returns

TrueOutput | FalseOutput

View source


whenIsFunction()

1
function whenIsFunction<TrueOutput>(
2
truthyHandler: Unary<Function, TrueOutput>,
3
): <FalseInput, FalseOutput>(
4
falsyHandler: Unary<FalseInput, FalseOutput>,
5
) => (value: unknown) => TrueOutput | FalseOutput;

Conditional handler for when something is a Function.

Type parameters

Type parameter
TrueOutput

Parameters

ParameterType
truthyHandlerUnary<Function, TrueOutput>

Returns

Function

Type parameters
Type parameterValue
FalseInputFunction
FalseOutputTrueOutput
Parameters
ParameterType
falsyHandlerUnary<FalseInput, FalseOutput>
Returns

Function

Parameters
ParameterType
valueunknown
Returns

TrueOutput | FalseOutput

View source


whenIsIsomorphicIterable()

1
function whenIsIsomorphicIterable<TrueOutput>(
2
truthyHandler: Unary<IsomorphicIterable<unknown>, TrueOutput>,
3
): <FalseInput, FalseOutput>(
4
falsyHandler: Unary<FalseInput, FalseOutput>,
5
) => (value: unknown) => TrueOutput | FalseOutput;

Conditional handler for when something is an AsynchronousIterable.

Type parameters

Type parameter
TrueOutput

Parameters

ParameterType
truthyHandlerUnary<IsomorphicIterable<unknown>, TrueOutput>

Returns

Function

Type parameters
Type parameterValue
FalseInputIsomorphicIterable<unknown>
FalseOutputTrueOutput
Parameters
ParameterType
falsyHandlerUnary<FalseInput, FalseOutput>
Returns

Function

Parameters
ParameterType
valueunknown
Returns

TrueOutput | FalseOutput

View source


whenIsIterable()

1
function whenIsIterable<TrueOutput>(
2
truthyHandler: Unary<Readonly<Iterable<unknown>>, TrueOutput>,
3
): <FalseInput, FalseOutput>(
4
falsyHandler: Unary<FalseInput, FalseOutput>,
5
) => (value: unknown) => TrueOutput | FalseOutput;

Conditional handler for when something is an Iterable.

Type parameters

Type parameter
TrueOutput

Parameters

ParameterType
truthyHandlerUnary<Readonly<Iterable<unknown>>, TrueOutput>

Returns

Function

Type parameters
Type parameterValue
FalseInputReadonly<Iterable<unknown>>
FalseOutputTrueOutput
Parameters
ParameterType
falsyHandlerUnary<FalseInput, FalseOutput>
Returns

Function

Parameters
ParameterType
valueunknown
Returns

TrueOutput | FalseOutput

View source


whenIsNull()

1
function whenIsNull<TrueOutput>(
2
truthyHandler: Unary<null, TrueOutput>,
3
): <FalseInput, FalseOutput>(
4
falsyHandler: Unary<FalseInput, FalseOutput>,
5
) => (value: unknown) => TrueOutput | FalseOutput;

Conditional handler for when something is null.

Type parameters

Type parameter
TrueOutput

Parameters

ParameterType
truthyHandlerUnary<null, TrueOutput>

Returns

Function

Type parameters
Type parameterValue
FalseInputnull
FalseOutputTrueOutput
Parameters
ParameterType
falsyHandlerUnary<FalseInput, FalseOutput>
Returns

Function

Parameters
ParameterType
valueunknown
Returns

TrueOutput | FalseOutput

View source


whenIsNullish()

1
function whenIsNullish<TrueOutput>(
2
truthyHandler: Unary<Nullish, TrueOutput>,
3
): <FalseInput, FalseOutput>(
4
falsyHandler: Unary<FalseInput, FalseOutput>,
5
) => (value: unknown) => TrueOutput | FalseOutput;

Conditional handler for when something is a Nullish value.

Type parameters

Type parameter
TrueOutput

Parameters

ParameterType
truthyHandlerUnary<Nullish, TrueOutput>

Returns

Function

Type parameters
Type parameterValue
FalseInputNullish
FalseOutputTrueOutput
Parameters
ParameterType
falsyHandlerUnary<FalseInput, FalseOutput>
Returns

Function

Parameters
ParameterType
valueunknown
Returns

TrueOutput | FalseOutput

View source


whenIsNumber()

1
function whenIsNumber<TrueOutput>(
2
truthyHandler: Unary<number, TrueOutput>,
3
): <FalseInput, FalseOutput>(
4
falsyHandler: Unary<FalseInput, FalseOutput>,
5
) => (value: unknown) => TrueOutput | FalseOutput;

Conditional handler for when something is a Number.

Type parameters

Type parameter
TrueOutput

Parameters

ParameterType
truthyHandlerUnary<number, TrueOutput>

Returns

Function

Type parameters
Type parameterValue
FalseInputnumber
FalseOutputTrueOutput
Parameters
ParameterType
falsyHandlerUnary<FalseInput, FalseOutput>
Returns

Function

Parameters
ParameterType
valueunknown
Returns

TrueOutput | FalseOutput

View source


whenIsObject()

1
function whenIsObject<TrueOutput>(
2
truthyHandler: Unary<object, TrueOutput>,
3
): <FalseInput, FalseOutput>(
4
falsyHandler: Unary<FalseInput, FalseOutput>,
5
) => (value: unknown) => TrueOutput | FalseOutput;

Conditional handler for when something is an Object.

Type parameters

Type parameter
TrueOutput

Parameters

ParameterType
truthyHandlerUnary<object, TrueOutput>

Returns

Function

Type parameters
Type parameterValue
FalseInputobject
FalseOutputTrueOutput
Parameters
ParameterType
falsyHandlerUnary<FalseInput, FalseOutput>
Returns

Function

Parameters
ParameterType
valueunknown
Returns

TrueOutput | FalseOutput

View source


whenIsPromise()

1
function whenIsPromise<TrueOutput>(
2
truthyHandler: Unary<Promise<unknown>, TrueOutput>,
3
): <FalseInput, FalseOutput>(
4
falsyHandler: Unary<FalseInput, FalseOutput>,
5
) => (value: unknown) => TrueOutput | FalseOutput;

Conditional handler for when something is a Promise.

Type parameters

Type parameter
TrueOutput

Parameters

ParameterType
truthyHandlerUnary<Promise<unknown>, TrueOutput>

Returns

Function

Type parameters
Type parameterValue
FalseInputPromise<unknown>
FalseOutputTrueOutput
Parameters
ParameterType
falsyHandlerUnary<FalseInput, FalseOutput>
Returns

Function

Parameters
ParameterType
valueunknown
Returns

TrueOutput | FalseOutput

View source


whenIsPropertyKey()

1
function whenIsPropertyKey<TrueOutput>(
2
truthyHandler: Unary<PropertyKey, TrueOutput>,
3
): <FalseInput, FalseOutput>(
4
falsyHandler: Unary<FalseInput, FalseOutput>,
5
) => (value: unknown) => TrueOutput | FalseOutput;

Conditional handler for when something is a PropertyKey.

Type parameters

Type parameter
TrueOutput

Parameters

ParameterType
truthyHandlerUnary<PropertyKey, TrueOutput>

Returns

Function

Type parameters
Type parameterValue
FalseInputPropertyKey
FalseOutputTrueOutput
Parameters
ParameterType
falsyHandlerUnary<FalseInput, FalseOutput>
Returns

Function

Parameters
ParameterType
valueunknown
Returns

TrueOutput | FalseOutput

View source


whenIsPrototypeOfObject()

1
function whenIsPrototypeOfObject<TrueOutput>(
2
truthyHandler: Unary<never, TrueOutput>,
3
): <FalseInput, FalseOutput>(
4
falsyHandler: Unary<FalseInput, FalseOutput>,
5
) => (value: object) => TrueOutput | FalseOutput;

Conditional handler for when something has an Object prototype.

Type parameters

Type parameter
TrueOutput

Parameters

ParameterType
truthyHandlerUnary<never, TrueOutput>

Returns

Function

Type parameters
Type parameterValue
FalseInputnever
FalseOutputTrueOutput
Parameters
ParameterType
falsyHandlerUnary<FalseInput, FalseOutput>
Returns

Function

Parameters
ParameterType
valueobject
Returns

TrueOutput | FalseOutput

View source


whenIsRegExp()

1
function whenIsRegExp<TrueOutput>(
2
truthyHandler: Unary<RegExp, TrueOutput>,
3
): <FalseInput, FalseOutput>(
4
falsyHandler: Unary<FalseInput, FalseOutput>,
5
) => (value: unknown) => TrueOutput | FalseOutput;

Conditional handler for when something is a RegExp.

Type parameters

Type parameter
TrueOutput

Parameters

ParameterType
truthyHandlerUnary<RegExp, TrueOutput>

Returns

Function

Type parameters
Type parameterValue
FalseInputRegExp
FalseOutputTrueOutput
Parameters
ParameterType
falsyHandlerUnary<FalseInput, FalseOutput>
Returns

Function

Parameters
ParameterType
valueunknown
Returns

TrueOutput | FalseOutput

View source


whenIsSafeInteger()

1
function whenIsSafeInteger<TrueOutput>(
2
truthyHandler: Unary<never, TrueOutput>,
3
): <FalseInput, FalseOutput>(
4
falsyHandler: Unary<FalseInput, FalseOutput>,
5
) => (value: number) => TrueOutput | FalseOutput;

Conditional handler for when a number is a SafeInteger.

Type parameters

Type parameter
TrueOutput

Parameters

ParameterType
truthyHandlerUnary<never, TrueOutput>

Returns

Function

Type parameters
Type parameterValue
FalseInputnever
FalseOutputTrueOutput
Parameters
ParameterType
falsyHandlerUnary<FalseInput, FalseOutput>
Returns

Function

Parameters
ParameterType
valuenumber
Returns

TrueOutput | FalseOutput

View source


whenIsString()

1
function whenIsString<TrueOutput>(
2
truthyHandler: Unary<string, TrueOutput>,
3
): <FalseInput, FalseOutput>(
4
falsyHandler: Unary<FalseInput, FalseOutput>,
5
) => (value: unknown) => TrueOutput | FalseOutput;

Conditional handler for when something is a String.

Type parameters

Type parameter
TrueOutput

Parameters

ParameterType
truthyHandlerUnary<string, TrueOutput>

Returns

Function

Type parameters
Type parameterValue
FalseInputstring
FalseOutputTrueOutput
Parameters
ParameterType
falsyHandlerUnary<FalseInput, FalseOutput>
Returns

Function

Parameters
ParameterType
valueunknown
Returns

TrueOutput | FalseOutput

View source


whenIsSymbol()

1
function whenIsSymbol<TrueOutput>(
2
truthyHandler: Unary<symbol, TrueOutput>,
3
): <FalseInput, FalseOutput>(
4
falsyHandler: Unary<FalseInput, FalseOutput>,
5
) => (value: unknown) => TrueOutput | FalseOutput;

Conditional handler for when something is a Symbol.

Type parameters

Type parameter
TrueOutput

Parameters

ParameterType
truthyHandlerUnary<symbol, TrueOutput>

Returns

Function

Type parameters
Type parameterValue
FalseInputsymbol
FalseOutputTrueOutput
Parameters
ParameterType
falsyHandlerUnary<FalseInput, FalseOutput>
Returns

Function

Parameters
ParameterType
valueunknown
Returns

TrueOutput | FalseOutput

View source


whenIsTruthy()

1
function whenIsTruthy<TrueOutput>(
2
truthyHandler: Unary<Readonly<unknown>, TrueOutput>,
3
): <FalseInput, FalseOutput>(
4
falsyHandler: Unary<FalseInput, FalseOutput>,
5
) => (value: unknown) => TrueOutput | FalseOutput;

Conditional handler for when something is a Truthy value.

Type parameters

Type parameter
TrueOutput

Parameters

ParameterType
truthyHandlerUnary<Readonly<unknown>, TrueOutput>

Returns

Function

Type parameters
Type parameterValue
FalseInputReadonly<unknown>
FalseOutputTrueOutput
Parameters
ParameterType
falsyHandlerUnary<FalseInput, FalseOutput>
Returns

Function

Parameters
ParameterType
valueunknown
Returns

TrueOutput | FalseOutput

View source


whenIsUndefined()

1
function whenIsUndefined<TrueOutput>(
2
truthyHandler: Unary<undefined, TrueOutput>,
3
): <FalseInput, FalseOutput>(
4
falsyHandler: Unary<FalseInput, FalseOutput>,
5
) => (value: unknown) => TrueOutput | FalseOutput;

Conditional handler for when something is undefined.

Type parameters

Type parameter
TrueOutput

Parameters

ParameterType
truthyHandlerUnary<undefined, TrueOutput>

Returns

Function

Type parameters
Type parameterValue
FalseInputundefined
FalseOutputTrueOutput
Parameters
ParameterType
falsyHandlerUnary<FalseInput, FalseOutput>
Returns

Function

Parameters
ParameterType
valueunknown
Returns

TrueOutput | FalseOutput

View source


whenTruthy()

1
function whenTruthy<Value, Predicated>(
2
predicate: Single<Predicated> extends Single<never> ? Filter<Value>
3
: Predicate<Value, Predicated>,
4
): <Output>(
5
truthyHandler: Unary<Predicated & Value, Output>,
6
) => (value: Value) => Value | Output;

Like when, but when is falsy the value is returned as is.

Type parameters

Type parameterValue
Value-
Predicatednever

Parameters

ParameterTypeDescription
predicateSingle<Predicated> extends Single<never> ? Filter<Value> : Predicate<Value, Predicated>Predicate to check value against.

Returns

Function

Curried function with predicate in context.

Type parameters
Type parameter
Output
Parameters
ParameterType
truthyHandlerUnary<Predicated & Value, Output>
Returns

Function

Parameters
ParameterType
valueValue
Returns

Value | Output

Example

1
const isEven = (value: number) => value % 2 === 0;
2
const whenIsEven = whenTruthy(isEven);
3
const double = (value: number) => value * 2;
4
const doubleWhenEven = whenIsEven(double);
5
6
doubleWhenEven(2); // 4
7
doubleWhenEven(3); // 3

View source

Functions

always()

1
function always<Input>(input: Input): () => Input;

Returns a function that always returns the same value.

Type parameters

Type parameter
Input

Parameters

ParameterType
inputInput

Returns

Function

Function that always return the given value.

Returns

Input

Example

1
const alwaysFoo = always("foo");
2
const fillWithFoo = map(alwaysFoo);
3
4
fillWithFoo([0, 1, 2]); // ["foo", "foo", "foo"]

View source


applyTo()

1
function applyTo<Input>(
2
input: Input,
3
): <Output>(unary: Unary<Input, Output>) => Output;

Takes a value and applies a function to it.

Type parameters

Type parameter
Input

Parameters

ParameterType
inputInput

Returns

Function

Function that expects a function that will receive the input.

Type parameters
Type parameter
Output
Parameters
ParameterType
unaryUnary<Input, Output>
Returns

Output

Example

1
const applyTo10 = applyTo(10);
2
3
applyTo10((value: number) => value * 2); // 20
4
applyTo10((value: number) => value / 2); // 5

View source


entryKey()

1
function entryKey<InputEntry>(entry: InputEntry): EntryKey<InputEntry>;

Get key of an Entry.

Type parameters

Type parameter
InputEntry extends Entry

Parameters

ParameterTypeDescription
entryInputEntryEntry to get key from.

Returns

EntryKey<InputEntry>

Key of an Entry.

Example

1
entryKey(["key", "value"]); // "key"

View source


entryValue()

1
function entryValue<InputEntry>(entry: InputEntry): EntryValue<InputEntry>;

Get value of an Entry.

Type parameters

Type parameter
InputEntry extends Entry

Parameters

ParameterTypeDescription
entryInputEntryEntry to get vale from.

Returns

EntryValue<InputEntry>

Value of an Entry.

Example

1
entryKey(["key", "value"]); // "value"

View source


flip()

1
function flip<UnaryToFlip>(
2
unary: UnaryToFlip,
3
): (
4
...secondArgument: Parameters<UnaryOutput<UnaryToFlip>>
5
) => (
6
...firstArgument: Parameters<UnaryToFlip>
7
) => UnaryOutput<UnaryOutput<UnaryToFlip>>;

Flips arguments of a curried function.

Type parameters

Type parameter
UnaryToFlip extends Unary<never, Unary<never, unknown>>

Parameters

ParameterType
unaryUnaryToFlip

Returns

Function

Curried function with unary in context.

Parameters
ParameterType
secondArgumentParameters<UnaryOutput<UnaryToFlip>>
Returns

Function

Parameters
ParameterType
firstArgumentParameters<UnaryToFlip>
Returns

UnaryOutput<UnaryOutput<UnaryToFlip>>

Example

1
const concat = (first: string) => (second: string) => `${first}${second}`;
2
const flippedConcat = flip(concat);
3
4
flippedConcat("1")("2"); // "21"

View source


identity()

1
function identity<Input>(input: Input): Input;

Identity function.

Type parameters

Type parameter
Input

Parameters

ParameterType
inputInput

Returns

Input

Same value given.

Example

1
identity("foo"); // "foo"

View source


memoize()

1
function memoize<MemoizedFunction>(unary: MemoizedFunction): MemoizedFunction;

Memoize function return values for expensive operations.

Type parameters

Type parameter
MemoizedFunction extends Unary<never, unknown>

Parameters

ParameterTypeDescription
unaryMemoizedFunctionFunction to memoize.

Returns

MemoizedFunction

Curried function with unary in context.

Example

1
const expensiveOperation = (value: number) => value * 2;
2
const memoizedOperation = memoize(expensiveOperation);
3
4
memoizedOperation(2); // 4
5
memoizedOperation(2); // 4 (cached)

View source


negate()

1
function negate<Item, Predicated>(
2
predicate: Single<Predicated> extends Single<never> ? Filter<Item>
3
: Predicate<Item, Predicated>,
4
): Single<Predicated> extends Single<never> ? Unary<Item, boolean>
5
: Predicate<Item, Exclude<Item, Predicated>>;

Takes a function and returns a copy with negated output.

Type parameters

Type parameterValue
Item-
Predicatednever

Parameters

ParameterTypeDescription
predicateSingle<Predicated> extends Single<never> ? Filter<Item> : Predicate<Item, Predicated>Function to be negated.

Returns

Single<Predicated> extends Single<never> ? Unary<Item, boolean> : Predicate<Item, Exclude<Item, Predicated>>

Source function with negated output.

Example

1
const isPositive = (value: number) => value >= 0;
2
const isNegative = not(isPositive);
3
4
isPositive(1); // true
5
isNegative(1); // false

View source


once()

1
function once<OnceFunction>(
2
unary: OnceFunction,
3
): (
4
value: UnaryInput<OnceFunction>,
5
) => UnaryOutput<OnceFunction> | UnaryOutput<OnceFunction>;

Runs a function once, and after that returns always the same value.

Type parameters

Type parameter
OnceFunction extends Unary<never, unknown>

Parameters

ParameterTypeDescription
unaryOnceFunctionFunction to run once.

Returns

Function

Curried function with unary in context.

Parameters
ParameterType
valueUnaryInput<OnceFunction>
Returns

UnaryOutput<OnceFunction> | UnaryOutput<OnceFunction>

Example

1
const expensiveOperation = (value: number) => value * 2;
2
const onceOperation = once(expensiveOperation);
3
4
onceOperation(2); // 4
5
onceOperation(3); // 4 (cached)

View source


tap()

1
function tap<Input>(
2
tapper: Unary<Input, unknown>,
3
): <Tapped>(tapped: Tapped) => Tapped;

Tap into a value before calling a function.

Type parameters

Type parameter
Input

Parameters

ParameterTypeDescription
tapperUnary<Input, unknown>Tapper function to be called with the value.

Returns

Function

Curried function with tapper in context.

Type parameters
Type parameter
Tapped extends Unary<Input, unknown>
Parameters
ParameterType
tappedTapped
Returns

Tapped

Example

1
const log = tap(console.log);
2
const double = (value: number) => value * 2;
3
const doubleAndLog = log(double);
4
5
doubleAndLog(2); // 4 (returns and logs 4)

View source


thunk()

1
function thunk<Input, Output>(
2
unary: Unary<Input, Output>,
3
): (input: Input) => () => Output;

Delayed evaluation function.

Type parameters

Type parameter
Input
Output

Parameters

ParameterType
unaryUnary<Input, Output>

Returns

Function

Function that will run the given function when called.

Parameters
ParameterType
inputInput
Returns

Function

Returns

Output

Example

1
const always = thunk(id);
2
const alwaysFoo = always("foo");
3
alwaysFoo(); // "foo"

View source

Numbers

cryptoNumber()

1
function cryptoNumber(seed: string | Numeric): Promise<number>;

Generates number using SubtleCrypto#digest and the given seed.

⚠️ IMPORTANT: This only works in secure contexts (HTTPS/Node).

Parameters

ParameterTypeDescription
seedstring | NumericSeed to be used to generate random numbers.

Returns

Promise<number>

Pseudo-random number from seed.

Example

1
const seededRandom1 = await random("some seed");
2
const seededRandom2 = await random("some seed");
3
4
seededRandom1 === seededRandom2; // true because it has the same seed

See

View source

Objects

awaitableHandler()

1
function awaitableHandler<Value, Output>(
2
handler: (awaitable: Value) => Output,
3
): <AwaitableValue>(
4
awaitable: AwaitableValue,
5
) => AwaitableValue extends Promise<Value> ? Promise<Output> : Output;

If the given value is a promise, the handler is called when is resolved, otherwise the handler is called directly with the value.

Type parameters

Type parameter
Value
Output

Parameters

ParameterTypeDescription
handler(awaitable: Value) => OutputHandler function to be called with the value.

Returns

Function

Curried function with handler in context.

Type parameters
Type parameter
AwaitableValue
Parameters
ParameterType
awaitableAwaitableValue
Returns

AwaitableValue extends Promise<Value> ? Promise<Output> : Output

Example

1
const double = maybePromiseHandler((value: number) => value * 2);
2
3
double(2); // 4
4
double(Promise.resolve(2)); // Promise<4>

View source


get()

1
function get<Key>(
2
key: Key,
3
): <Source>(object: Source) => Source[Key & keyof Source];

Get the value of a property in an object.

Type parameters

Type parameter
Key extends PropertyKey

Parameters

ParameterType
keyKey

Returns

Function

Curried function with key in context.

Type parameters
Type parameter
Source extends Readonly<Record<Key, unknown>>
Parameters
ParameterType
objectSource
Returns

Source[Key & keyof Source]

Example

1
const getFoo = get("foo");
2
3
getFoo({ foo: "bar" }); // "bar"
4
getFoo({}); // undefined

View source


intercept()

1
function intercept<Interceptions>(
2
interceptions: Interceptions,
3
): <Target>(
4
target: Target,
5
) => keyof Target extends keyof Interceptions ?
6
Omit<Target, keyof Interceptions>
7
: Target & {
8
readonly [Property in string | number | symbol]: ReturnType<
9
Interceptions[Property]
10
>;
11
};

Function that takes a dictionary property -> getter and uses said getter in the matching property of the object by returning a proxy to it.

Type parameters

Type parameter
Interceptions extends Readonly<Record<PropertyKey, <ProxiedObject>(target: ProxiedObject) => unknown>>

Parameters

ParameterTypeDescription
interceptionsInterceptionsDictionary property -> handler.

Returns

Function

Curried function with interceptions in context.

Type parameters
Type parameter
Target extends object
Parameters
ParameterType
targetTarget
Returns

keyof Target extends keyof Interceptions ? Omit<Target, keyof Interceptions> : Target & { readonly [Property in string | number | symbol]: ReturnType<Interceptions[Property]> }

Example

1
const test = { foo: "foo" };
2
const barIntercept = intercept({ foo: () => "bar" });
3
4
const interceptedTest = barIntercept(test);
5
interceptedTest.foo; // "bar"
6
test.foo; // "foo"

View source


mutate()

1
function mutate<Update>(
2
update: Update,
3
): <Target>(target: Target) => Target & Update;

Function to encapsulate object mutations.

⚠️ IMPORTANT: Try to avoid this util, use intercept instead.

Type parameters

Type parameter
Update extends object

Parameters

ParameterTypeDescription
updateUpdateUpdate to apply to given target.

Returns

Function

Curried function with update in context.

Type parameters
Type parameter
Target extends object
Parameters
ParameterType
targetTarget
Returns

Target & Update

Example

1
const state = { a: 1 };
2
mutate(set("a")(2))(state);
3
console.log(state); // { a: 2 }

View source


omit()

1
function omit<Properties>(
2
...properties: Properties
3
): <Source>(object: Source) => Omit<Source, Properties[number]>;

Omits given properties from an object.

Type parameters

Type parameter
Properties extends ReadOnlyArray<PropertyKey>

Parameters

ParameterTypeDescription
propertiesPropertiesProperties to omit.

Returns

Function

Curried function with properties in context.

Type parameters
Type parameter
Source extends Readonly<Record<PropertyKey, unknown>>
Parameters
ParameterType
objectSource
Returns

Omit<Source, Properties[number]>

Example

1
const object = { a: 1, b: 2, c: 3 };
2
const omitAC = omit("a", "c");
3
const result = omitAC(object); // { b: 2 }

View source


pick()

1
function pick<Properties>(
2
...properties: Properties
3
): <Source>(object: Source) => Pick<Source, Properties[number]>;

Picks given properties from an object.

Type parameters

Type parameter
Properties extends ReadOnlyArray<PropertyKey>

Parameters

ParameterTypeDescription
propertiesPropertiesProperties to pick.

Returns

Function

Curried function with properties in context.

Type parameters
Type parameter
Source extends Readonly<Record<PropertyKey, unknown>>
Parameters
ParameterType
objectSource
Returns

Pick<Source, Properties[number]>

Example

1
const object = { a: 1, b: 2, c: 3 };
2
const pickAC = pick("a", "c");
3
const result = pickAC(object); // { a: 1, c: 3 }

View source


set()

1
function set<Key>(
2
key: Key,
3
): <Value>(
4
value: Value,
5
) => <Source>(
6
object: Source,
7
) => Omit<Source, Key> & Readonly<Record<Key, Value>>;

Set the value of a property in an object (read only).

Type parameters

Type parameter
Key extends PropertyKey

Parameters

ParameterType
keyKey

Returns

Function

Curried function with key in context.

Type parameters
Type parameter
Value
Parameters
ParameterType
valueValue
Returns

Function

Type parameters
Type parameter
Source extends object
Parameters
ParameterType
objectSource
Returns

Omit<Source, Key> & Readonly<Record<Key, Value>>

Example

1
const setFoo = set("foo");
2
3
setFoo("baz")({ foo: "bar" }); // { foo: "baz" }
4
setFoo("baz")({ bar: "foo" }); // { bar: "foo", foo: "baz" }
5
setFoo("baz")({}); // { foo: "baz" }

View source

Promises

otherwise()

1
function otherwise<Output>(
2
handler: Unary<unknown, Output | PromiseLike<Output>>,
3
): <PromisedValue>(
4
promise: Promise<PromisedValue>,
5
) => Promise<Output | PromisedValue>;

Sets a promise catch handler.

Type parameters

Type parameter
Output

Parameters

ParameterType
handlerUnary<unknown, Output | PromiseLike<Output>>

Returns

Function

Curried function with handler set in context.

Type parameters
Type parameter
PromisedValue
Parameters
ParameterType
promisePromise<PromisedValue>
Returns

Promise<Output | PromisedValue>

Example

1
const otherwiseLog = otherwise(console.error);
2
3
otherwiseLog(fetch("/api")); // Logs on error.

View source


then()

1
function then<HandlerInput, Output>(
2
handler: Unary<HandlerInput, Output | PromiseLike<Output>>,
3
): <PromiseInstance>(promise: PromiseInstance) => Promise<Output>;

Sets a promise then handler.

Type parameters

Type parameter
HandlerInput
Output

Parameters

ParameterType
handlerUnary<HandlerInput, Output | PromiseLike<Output>>

Returns

Function

Curried function with handler set in context.

Type parameters
Type parameter
PromiseInstance extends Promise<HandlerInput>
Parameters
ParameterType
promisePromiseInstance
Returns

Promise<Output>

Example

1
const thenJson = then((response: Response) => response.json());
2
3
thenJson(fetch("/api")); // Parsed response

View source