
⚒️ Lou’s Code TypeScript curried
functional utils.
Usage
📦 Node
Install @lou.codes/utils
as a dependency:
pnpm add @lou.codes/utils
npm install @lou.codes/utils
yarn add @lou.codes/utils
Import it and use it:
import { get } from "@lou.codes/utils";
get("foo")({ foo: "bar" }); // "bar"
🦕 Deno
Import @lou.codes/utils
using the npm:
prefix, and use it directly:
import { get } from "npm:@lou.codes/utils";
get("foo")({ foo: "bar" }); // "bar"
🌎 Browser
Import @lou.codes/utils
using esm.sh, and use it directly:
import { get } from "https://esm.sh/@lou.codes/utils";
get("foo")({ foo: "bar" }); // "bar"
Useful links
Common
toString()
function toString<Input>(input: Input): Input extends Strigifiable ?
: Input extends object ? ReturnType<Input<Input>["toString"]>
Parses given value to string.
Type parameters
Type parameter |
---|
Input extends Strigifiable | object |
Parameters
Returns
Input
extends Strigifiable
? `${Input<Input>}` : Input
extends
object
? ReturnType
<Input
<Input
>["toString"
]> : string
stringified value.
Example
toString({}); // "[object Object]"
toString({ toString: _ => "test" }); // "test"
View source
Conditions
when()
function when<Value, Predicated>(
predicate: Single<Predicated> extends Single<never> ? Filter<Value>
: Predicate<Value, Predicated>,
truthyHandler: Unary<Predicated & Value, TrueOutput>,
) => <FalseInput, FalseOutput>(
falsyHandler: Unary<FalseInput, FalseOutput>,
) => (value: Value) => TrueOutput | FalseOutput;
Curried conditional (like a functional ternary).
Type parameters
Type parameter | Value |
---|
Value | - |
Predicated | never |
Parameters
Parameter | Type | Description |
---|
predicate | Single <Predicated > extends Single <never > ? Filter <Value > : Predicate <Value , Predicated > | Predicate to check value against. |
Returns
Function
Curried function with predicate
in context.
Type parameters
Parameters
Parameter | Type |
---|
truthyHandler | Unary <Predicated & Value , TrueOutput > |
Returns
Function
Type parameters
Type parameter | Value |
---|
FalseInput | Value extends Predicated ? Value <Value > : Predicated |
FalseOutput | TrueOutput |
Parameters
Parameter | Type |
---|
falsyHandler | Unary <FalseInput , FalseOutput > |
Returns
Function
Parameters
Returns
TrueOutput
| FalseOutput
Example
const isEven = (value: number) => value % 2 === 0;
const whenIsEven = when(isEven);
const double = (value: number) => value * 2;
const doubleWhenEven = whenIsEven(double);
const triple = (value: number) => value * 3;
const tripleWhenOdd = whenIsEven(triple);
View source
whenFalsy()
function whenFalsy<Value, Predicated>(
predicate: Single<Predicated> extends Single<never> ? Filter<Value>
: Predicate<Value, Predicated>,
): <FalseInput, FalseOutput>(
falsyHandler: Unary<FalseInput, FalseOutput>,
) => (value: Value) => (Predicated & Value) | FalseOutput;
Like when
, but when is falsy the value is returned as is.
Type parameters
Type parameter | Value |
---|
Value | - |
Predicated | never |
Parameters
Parameter | Type | Description |
---|
predicate | Single <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 | Value |
---|
FalseInput | Value extends Predicated ? Value <Value > : Predicated |
FalseOutput | Predicated & Value |
Parameters
Parameter | Type |
---|
falsyHandler | Unary <FalseInput , FalseOutput > |
Returns
Function
Parameters
Returns
Predicated
& Value
| FalseOutput
Example
const isEven = (value: number) => value % 2 === 0;
const whenIsOdd = whenFalsy(isEven);
const double = (value: number) => value * 2;
const doubleWhenOdd = whenIsOdd(double);
View source
whenIsArray()
function whenIsArray<TrueOutput>(
truthyHandler: Unary<ReadOnlyArray<unknown>, TrueOutput>,
): <FalseInput, FalseOutput>(
falsyHandler: Unary<FalseInput, FalseOutput>,
) => (value: unknown) => TrueOutput | FalseOutput;
Conditional handler for when something is an Array
.
Type parameters
Parameters
Parameter | Type |
---|
truthyHandler | Unary <ReadOnlyArray <unknown >, TrueOutput > |
Returns
Function
Type parameters
Type parameter | Value |
---|
FalseInput | ReadOnlyArray <unknown > |
FalseOutput | TrueOutput |
Parameters
Parameter | Type |
---|
falsyHandler | Unary <FalseInput , FalseOutput > |
Returns
Function
Parameters
Parameter | Type |
---|
value | unknown |
Returns
TrueOutput
| FalseOutput
View source
whenIsAsyncIterable()
function whenIsAsyncIterable<TrueOutput>(
Readonly<AsyncIterable<unknown, any, any>>,
): <FalseInput, FalseOutput>(
falsyHandler: Unary<FalseInput, FalseOutput>,
) => (value: unknown) => TrueOutput | FalseOutput;
Conditional handler for when something is an AsyncIterable
.
Type parameters
Parameters
Parameter | Type |
---|
truthyHandler | Unary <Readonly <AsyncIterable <unknown , any , any >>, TrueOutput > |
Returns
Function
Type parameters
Type parameter | Value |
---|
FalseInput | Readonly <AsyncIterable <unknown , any , any >> |
FalseOutput | TrueOutput |
Parameters
Parameter | Type |
---|
falsyHandler | Unary <FalseInput , FalseOutput > |
Returns
Function
Parameters
Parameter | Type |
---|
value | unknown |
Returns
TrueOutput
| FalseOutput
View source
whenIsBigInt()
function whenIsBigInt<TrueOutput>(
truthyHandler: Unary<bigint, TrueOutput>,
): <FalseInput, FalseOutput>(
falsyHandler: Unary<FalseInput, FalseOutput>,
) => (value: unknown) => TrueOutput | FalseOutput;
Conditional handler for when something is a BigInt
.
Type parameters
Parameters
Parameter | Type |
---|
truthyHandler | Unary <bigint , TrueOutput > |
Returns
Function
Type parameters
Type parameter | Value |
---|
FalseInput | bigint |
FalseOutput | TrueOutput |
Parameters
Parameter | Type |
---|
falsyHandler | Unary <FalseInput , FalseOutput > |
Returns
Function
Parameters
Parameter | Type |
---|
value | unknown |
Returns
TrueOutput
| FalseOutput
View source
whenIsBoolean()
function whenIsBoolean<TrueOutput>(
truthyHandler: Unary<boolean, TrueOutput>,
): <FalseInput, FalseOutput>(
falsyHandler: Unary<FalseInput, FalseOutput>,
) => (value: unknown) => TrueOutput | FalseOutput;
Conditional handler for when something is a Boolean
.
Type parameters
Parameters
Parameter | Type |
---|
truthyHandler | Unary <boolean , TrueOutput > |
Returns
Function
Type parameters
Type parameter | Value |
---|
FalseInput | boolean |
FalseOutput | TrueOutput |
Parameters
Parameter | Type |
---|
falsyHandler | Unary <FalseInput , FalseOutput > |
Returns
Function
Parameters
Parameter | Type |
---|
value | unknown |
Returns
TrueOutput
| FalseOutput
View source
whenIsDate()
function whenIsDate<TrueOutput>(
truthyHandler: Unary<Date, TrueOutput>,
): <FalseInput, FalseOutput>(
falsyHandler: Unary<FalseInput, FalseOutput>,
) => (value: unknown) => TrueOutput | FalseOutput;
Conditional handler for when something is a Date
.
Type parameters
Parameters
Parameter | Type |
---|
truthyHandler | Unary <Date , TrueOutput > |
Returns
Function
Type parameters
Type parameter | Value |
---|
FalseInput | Date |
FalseOutput | TrueOutput |
Parameters
Parameter | Type |
---|
falsyHandler | Unary <FalseInput , FalseOutput > |
Returns
Function
Parameters
Parameter | Type |
---|
value | unknown |
Returns
TrueOutput
| FalseOutput
View source
whenIsFalsy()
function whenIsFalsy<TrueOutput>(
truthyHandler: Unary<Falsy, TrueOutput>,
): <FalseInput, FalseOutput>(
falsyHandler: Unary<FalseInput, FalseOutput>,
) => (value: unknown) => TrueOutput | FalseOutput;
Conditional handler for when something is a Falsy
value.
Type parameters
Parameters
Parameter | Type |
---|
truthyHandler | Unary <Falsy , TrueOutput > |
Returns
Function
Type parameters
Type parameter | Value |
---|
FalseInput | Falsy |
FalseOutput | TrueOutput |
Parameters
Parameter | Type |
---|
falsyHandler | Unary <FalseInput , FalseOutput > |
Returns
Function
Parameters
Parameter | Type |
---|
value | unknown |
Returns
TrueOutput
| FalseOutput
View source
whenIsFunction()
function whenIsFunction<TrueOutput>(
truthyHandler: Unary<Function, TrueOutput>,
): <FalseInput, FalseOutput>(
falsyHandler: Unary<FalseInput, FalseOutput>,
) => (value: unknown) => TrueOutput | FalseOutput;
Conditional handler for when something is a Function
.
Type parameters
Parameters
Parameter | Type |
---|
truthyHandler | Unary <Function , TrueOutput > |
Returns
Function
Type parameters
Type parameter | Value |
---|
FalseInput | Function |
FalseOutput | TrueOutput |
Parameters
Parameter | Type |
---|
falsyHandler | Unary <FalseInput , FalseOutput > |
Returns
Function
Parameters
Parameter | Type |
---|
value | unknown |
Returns
TrueOutput
| FalseOutput
View source
whenIsIsomorphicIterable()
function whenIsIsomorphicIterable<TrueOutput>(
truthyHandler: Unary<IsomorphicIterable<unknown>, TrueOutput>,
): <FalseInput, FalseOutput>(
falsyHandler: Unary<FalseInput, FalseOutput>,
) => (value: unknown) => TrueOutput | FalseOutput;
Conditional handler for when something is an AsynchronousIterable
.
Type parameters
Parameters
Parameter | Type |
---|
truthyHandler | Unary <IsomorphicIterable <unknown >, TrueOutput > |
Returns
Function
Type parameters
Type parameter | Value |
---|
FalseInput | IsomorphicIterable <unknown > |
FalseOutput | TrueOutput |
Parameters
Parameter | Type |
---|
falsyHandler | Unary <FalseInput , FalseOutput > |
Returns
Function
Parameters
Parameter | Type |
---|
value | unknown |
Returns
TrueOutput
| FalseOutput
View source
whenIsIterable()
function whenIsIterable<TrueOutput>(
truthyHandler: Unary<Readonly<Iterable<unknown, any, any>>, TrueOutput>,
): <FalseInput, FalseOutput>(
falsyHandler: Unary<FalseInput, FalseOutput>,
) => (value: unknown) => TrueOutput | FalseOutput;
Conditional handler for when something is an Iterable
.
Type parameters
Parameters
Parameter | Type |
---|
truthyHandler | Unary <Readonly <Iterable <unknown , any , any >>, TrueOutput > |
Returns
Function
Type parameters
Type parameter | Value |
---|
FalseInput | Readonly <Iterable <unknown , any , any >> |
FalseOutput | TrueOutput |
Parameters
Parameter | Type |
---|
falsyHandler | Unary <FalseInput , FalseOutput > |
Returns
Function
Parameters
Parameter | Type |
---|
value | unknown |
Returns
TrueOutput
| FalseOutput
View source
whenIsNull()
function whenIsNull<TrueOutput>(
truthyHandler: Unary<null, TrueOutput>,
): <FalseInput, FalseOutput>(
falsyHandler: Unary<FalseInput, FalseOutput>,
) => (value: unknown) => TrueOutput | FalseOutput;
Conditional handler for when something is null
.
Type parameters
Parameters
Parameter | Type |
---|
truthyHandler | Unary <null , TrueOutput > |
Returns
Function
Type parameters
Type parameter | Value |
---|
FalseInput | null |
FalseOutput | TrueOutput |
Parameters
Parameter | Type |
---|
falsyHandler | Unary <FalseInput , FalseOutput > |
Returns
Function
Parameters
Parameter | Type |
---|
value | unknown |
Returns
TrueOutput
| FalseOutput
View source
whenIsNullish()
function whenIsNullish<TrueOutput>(
truthyHandler: Unary<Nullish, TrueOutput>,
): <FalseInput, FalseOutput>(
falsyHandler: Unary<FalseInput, FalseOutput>,
) => (value: unknown) => TrueOutput | FalseOutput;
Conditional handler for when something is a Nullish
value.
Type parameters
Parameters
Parameter | Type |
---|
truthyHandler | Unary <Nullish , TrueOutput > |
Returns
Function
Type parameters
Type parameter | Value |
---|
FalseInput | Nullish |
FalseOutput | TrueOutput |
Parameters
Parameter | Type |
---|
falsyHandler | Unary <FalseInput , FalseOutput > |
Returns
Function
Parameters
Parameter | Type |
---|
value | unknown |
Returns
TrueOutput
| FalseOutput
View source
whenIsNumber()
function whenIsNumber<TrueOutput>(
truthyHandler: Unary<number, TrueOutput>,
): <FalseInput, FalseOutput>(
falsyHandler: Unary<FalseInput, FalseOutput>,
) => (value: unknown) => TrueOutput | FalseOutput;
Conditional handler for when something is a Number
.
Type parameters
Parameters
Parameter | Type |
---|
truthyHandler | Unary <number , TrueOutput > |
Returns
Function
Type parameters
Type parameter | Value |
---|
FalseInput | number |
FalseOutput | TrueOutput |
Parameters
Parameter | Type |
---|
falsyHandler | Unary <FalseInput , FalseOutput > |
Returns
Function
Parameters
Parameter | Type |
---|
value | unknown |
Returns
TrueOutput
| FalseOutput
View source
whenIsObject()
function whenIsObject<TrueOutput>(
truthyHandler: Unary<object, TrueOutput>,
): <FalseInput, FalseOutput>(
falsyHandler: Unary<FalseInput, FalseOutput>,
) => (value: unknown) => TrueOutput | FalseOutput;
Conditional handler for when something is an Object
.
Type parameters
Parameters
Parameter | Type |
---|
truthyHandler | Unary <object , TrueOutput > |
Returns
Function
Type parameters
Type parameter | Value |
---|
FalseInput | object |
FalseOutput | TrueOutput |
Parameters
Parameter | Type |
---|
falsyHandler | Unary <FalseInput , FalseOutput > |
Returns
Function
Parameters
Parameter | Type |
---|
value | unknown |
Returns
TrueOutput
| FalseOutput
View source
whenIsPromise()
function whenIsPromise<TrueOutput>(
truthyHandler: Unary<Promise<unknown>, TrueOutput>,
): <FalseInput, FalseOutput>(
falsyHandler: Unary<FalseInput, FalseOutput>,
) => (value: unknown) => TrueOutput | FalseOutput;
Conditional handler for when something is a Promise
.
Type parameters
Parameters
Parameter | Type |
---|
truthyHandler | Unary <Promise <unknown >, TrueOutput > |
Returns
Function
Type parameters
Type parameter | Value |
---|
FalseInput | Promise <unknown > |
FalseOutput | TrueOutput |
Parameters
Parameter | Type |
---|
falsyHandler | Unary <FalseInput , FalseOutput > |
Returns
Function
Parameters
Parameter | Type |
---|
value | unknown |
Returns
TrueOutput
| FalseOutput
View source
whenIsPropertyKey()
function whenIsPropertyKey<TrueOutput>(
truthyHandler: Unary<PropertyKey, TrueOutput>,
): <FalseInput, FalseOutput>(
falsyHandler: Unary<FalseInput, FalseOutput>,
) => (value: unknown) => TrueOutput | FalseOutput;
Conditional handler for when something is a PropertyKey
.
Type parameters
Parameters
Parameter | Type |
---|
truthyHandler | Unary <PropertyKey , TrueOutput > |
Returns
Function
Type parameters
Type parameter | Value |
---|
FalseInput | PropertyKey |
FalseOutput | TrueOutput |
Parameters
Parameter | Type |
---|
falsyHandler | Unary <FalseInput , FalseOutput > |
Returns
Function
Parameters
Parameter | Type |
---|
value | unknown |
Returns
TrueOutput
| FalseOutput
View source
whenIsPrototypeOfObject()
function whenIsPrototypeOfObject<TrueOutput>(
truthyHandler: Unary<never, TrueOutput>,
): <FalseInput, FalseOutput>(
falsyHandler: Unary<FalseInput, FalseOutput>,
) => (value: object) => TrueOutput | FalseOutput;
Conditional handler for when something has an Object
prototype.
Type parameters
Parameters
Parameter | Type |
---|
truthyHandler | Unary <never , TrueOutput > |
Returns
Function
Type parameters
Type parameter | Value |
---|
FalseInput | never |
FalseOutput | TrueOutput |
Parameters
Parameter | Type |
---|
falsyHandler | Unary <FalseInput , FalseOutput > |
Returns
Function
Parameters
Returns
TrueOutput
| FalseOutput
View source
whenIsRegExp()
function whenIsRegExp<TrueOutput>(
truthyHandler: Unary<RegExp, TrueOutput>,
): <FalseInput, FalseOutput>(
falsyHandler: Unary<FalseInput, FalseOutput>,
) => (value: unknown) => TrueOutput | FalseOutput;
Conditional handler for when something is a RegExp
.
Type parameters
Parameters
Parameter | Type |
---|
truthyHandler | Unary <RegExp , TrueOutput > |
Returns
Function
Type parameters
Type parameter | Value |
---|
FalseInput | RegExp |
FalseOutput | TrueOutput |
Parameters
Parameter | Type |
---|
falsyHandler | Unary <FalseInput , FalseOutput > |
Returns
Function
Parameters
Parameter | Type |
---|
value | unknown |
Returns
TrueOutput
| FalseOutput
View source
whenIsSafeInteger()
function whenIsSafeInteger<TrueOutput>(
truthyHandler: Unary<never, TrueOutput>,
): <FalseInput, FalseOutput>(
falsyHandler: Unary<FalseInput, FalseOutput>,
) => (value: number) => TrueOutput | FalseOutput;
Conditional handler for when a number is a SafeInteger
.
Type parameters
Parameters
Parameter | Type |
---|
truthyHandler | Unary <never , TrueOutput > |
Returns
Function
Type parameters
Type parameter | Value |
---|
FalseInput | never |
FalseOutput | TrueOutput |
Parameters
Parameter | Type |
---|
falsyHandler | Unary <FalseInput , FalseOutput > |
Returns
Function
Parameters
Returns
TrueOutput
| FalseOutput
View source
whenIsString()
function whenIsString<TrueOutput>(
truthyHandler: Unary<string, TrueOutput>,
): <FalseInput, FalseOutput>(
falsyHandler: Unary<FalseInput, FalseOutput>,
) => (value: unknown) => TrueOutput | FalseOutput;
Conditional handler for when something is a String
.
Type parameters
Parameters
Parameter | Type |
---|
truthyHandler | Unary <string , TrueOutput > |
Returns
Function
Type parameters
Type parameter | Value |
---|
FalseInput | string |
FalseOutput | TrueOutput |
Parameters
Parameter | Type |
---|
falsyHandler | Unary <FalseInput , FalseOutput > |
Returns
Function
Parameters
Parameter | Type |
---|
value | unknown |
Returns
TrueOutput
| FalseOutput
View source
whenIsSymbol()
function whenIsSymbol<TrueOutput>(
truthyHandler: Unary<symbol, TrueOutput>,
): <FalseInput, FalseOutput>(
falsyHandler: Unary<FalseInput, FalseOutput>,
) => (value: unknown) => TrueOutput | FalseOutput;
Conditional handler for when something is a Symbol
.
Type parameters
Parameters
Parameter | Type |
---|
truthyHandler | Unary <symbol , TrueOutput > |
Returns
Function
Type parameters
Type parameter | Value |
---|
FalseInput | symbol |
FalseOutput | TrueOutput |
Parameters
Parameter | Type |
---|
falsyHandler | Unary <FalseInput , FalseOutput > |
Returns
Function
Parameters
Parameter | Type |
---|
value | unknown |
Returns
TrueOutput
| FalseOutput
View source
whenIsTruthy()
function whenIsTruthy<TrueOutput>(
truthyHandler: Unary<Readonly<unknown>, TrueOutput>,
): <FalseInput, FalseOutput>(
falsyHandler: Unary<FalseInput, FalseOutput>,
) => (value: unknown) => TrueOutput | FalseOutput;
Conditional handler for when something is a Truthy
value.
Type parameters
Parameters
Parameter | Type |
---|
truthyHandler | Unary <Readonly <unknown >, TrueOutput > |
Returns
Function
Type parameters
Type parameter | Value |
---|
FalseInput | Readonly <unknown > |
FalseOutput | TrueOutput |
Parameters
Parameter | Type |
---|
falsyHandler | Unary <FalseInput , FalseOutput > |
Returns
Function
Parameters
Parameter | Type |
---|
value | unknown |
Returns
TrueOutput
| FalseOutput
View source
whenIsUndefined()
function whenIsUndefined<TrueOutput>(
truthyHandler: Unary<undefined, TrueOutput>,
): <FalseInput, FalseOutput>(
falsyHandler: Unary<FalseInput, FalseOutput>,
) => (value: unknown) => TrueOutput | FalseOutput;
Conditional handler for when something is undefined
.
Type parameters
Parameters
Parameter | Type |
---|
truthyHandler | Unary <undefined , TrueOutput > |
Returns
Function
Type parameters
Type parameter | Value |
---|
FalseInput | undefined |
FalseOutput | TrueOutput |
Parameters
Parameter | Type |
---|
falsyHandler | Unary <FalseInput , FalseOutput > |
Returns
Function
Parameters
Parameter | Type |
---|
value | unknown |
Returns
TrueOutput
| FalseOutput
View source
whenTruthy()
function whenTruthy<Value, Predicated>(
predicate: Single<Predicated> extends Single<never> ? Filter<Value>
: Predicate<Value, Predicated>,
truthyHandler: Unary<Predicated & Value, Output>,
) => (value: Value) => Value | Output;
Like when
, but when is falsy the value is returned as is.
Type parameters
Type parameter | Value |
---|
Value | - |
Predicated | never |
Parameters
Parameter | Type | Description |
---|
predicate | Single <Predicated > extends Single <never > ? Filter <Value > : Predicate <Value , Predicated > | Predicate to check value against. |
Returns
Function
Curried function with predicate
in context.
Type parameters
Parameters
Parameter | Type |
---|
truthyHandler | Unary <Predicated & Value , Output > |
Returns
Function
Parameters
Returns
Value
| Output
Example
const isEven = (value: number) => value % 2 === 0;
const whenIsEven = whenTruthy(isEven);
const double = (value: number) => value * 2;
const doubleWhenEven = whenIsEven(double);
View source
Functions
always()
function always<Input>(input: Input): () => Input;
Returns a function that always returns the same value.
Type parameters
Parameters
Returns
Function
Function that always return the given value.
Returns
Input
Example
const alwaysFoo = always("foo");
const fillWithFoo = map(alwaysFoo);
fillWithFoo([0, 1, 2]); // ["foo", "foo", "foo"]
View source
applyTo()
): <Output>(unary: Unary<Input, Output>) => Output;
Takes a value and applies a function to it.
Type parameters
Parameters
Returns
Function
Function that expects a function that will receive the input
.
Type parameters
Parameters
Parameter | Type |
---|
unary | Unary <Input , Output > |
Returns
Output
Example
const applyTo10 = applyTo(10);
applyTo10((value: number) => value * 2); // 20
applyTo10((value: number) => value / 2); // 5
View source
entryKey()
function entryKey<InputEntry>(entry: InputEntry): EntryKey<InputEntry>;
Get key of an Entry
.
Type parameters
Type parameter |
---|
InputEntry extends Entry |
Parameters
Parameter | Type | Description |
---|
entry | InputEntry | Entry to get key from. |
Returns
EntryKey
<InputEntry
>
Key of an Entry
.
Example
entryKey(["key", "value"]); // "key"
View source
entryValue()
function entryValue<InputEntry>(entry: InputEntry): EntryValue<InputEntry>;
Get value of an Entry
.
Type parameters
Type parameter |
---|
InputEntry extends Entry |
Parameters
Parameter | Type | Description |
---|
entry | InputEntry | Entry to get vale from. |
Returns
EntryValue
<InputEntry
>
Value of an Entry
.
Example
entryKey(["key", "value"]); // "value"
View source
flip()
function flip<UnaryToFlip>(
...secondArgument: Parameters<UnaryOutput<UnaryToFlip>>
...firstArgument: Parameters<UnaryToFlip>
) => UnaryOutput<UnaryOutput<UnaryToFlip>>;
Flips arguments of a curried function.
Type parameters
Type parameter |
---|
UnaryToFlip extends Unary <never , Unary <never , unknown >> |
Parameters
Parameter | Type |
---|
unary | UnaryToFlip |
Returns
Function
Curried function with unary
in context.
Parameters
Parameter | Type |
---|
…secondArgument | Parameters <UnaryOutput <UnaryToFlip >> |
Returns
Function
Parameters
Parameter | Type |
---|
…firstArgument | Parameters <UnaryToFlip > |
Returns
UnaryOutput
<UnaryOutput
<UnaryToFlip
>>
Example
const concat = (first: string) => (second: string) => `${first}${second}`;
const flippedConcat = flip(concat);
flippedConcat("1")("2"); // "21"
View source
identity()
function identity<Input>(input: Input): Input;
Identity function.
Type parameters
Parameters
Returns
Input
Same value given.
Example
identity("foo"); // "foo"
View source
memoize()
function memoize<MemoizedFunction>(unary: MemoizedFunction): MemoizedFunction;
Memoize function return values for expensive operations.
Type parameters
Type parameter |
---|
MemoizedFunction extends Unary <never , unknown > |
Parameters
Parameter | Type | Description |
---|
unary | MemoizedFunction | Function to memoize. |
Returns
MemoizedFunction
Curried function with unary
in context.
Example
const expensiveOperation = (value: number) => value * 2;
const memoizedOperation = memoize(expensiveOperation);
memoizedOperation(2); // 4
memoizedOperation(2); // 4 (cached)
View source
negate()
function negate<Item, Predicated>(
predicate: Single<Predicated> extends Single<never> ? Filter<Item>
: Predicate<Item, Predicated>,
): Single<Predicated> extends Single<never> ? Unary<Item, boolean>
: Predicate<Item, Exclude<Item, Predicated>>;
Takes a function and returns a copy with negated output.
Type parameters
Type parameter | Value |
---|
Item | - |
Predicated | never |
Parameters
Parameter | Type | Description |
---|
predicate | Single <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
const isPositive = (value: number) => value >= 0;
const isNegative = not(isPositive);
View source
once()
function once<OnceFunction>(
): (value: UnaryInput<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
Parameter | Type | Description |
---|
unary | OnceFunction | Function to run once. |
Returns
Function
Curried function with unary
in context.
Parameters
Parameter | Type |
---|
value | UnaryInput <OnceFunction > |
Returns
UnaryOutput
<OnceFunction
>
Example
const expensiveOperation = (value: number) => value * 2;
const onceOperation = once(expensiveOperation);
onceOperation(3); // 4 (cached)
View source
tap()
tapper: Unary<Input, unknown>,
): <Tapped>(tapped: Tapped) => Tapped;
Tap into a value before calling a function.
Type parameters
Parameters
Parameter | Type | Description |
---|
tapper | Unary <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
Parameter | Type |
---|
tapped | Tapped |
Returns
Tapped
Example
const log = tap(console.log);
const double = (value: number) => value * 2;
const doubleAndLog = log(double);
doubleAndLog(2); // 4 (returns and logs 4)
View source
thunk()
function thunk<Input, Output>(
unary: Unary<Input, Output>,
): (input: Input) => () => Output;
Delayed evaluation function.
Type parameters
Type parameter |
---|
Input |
Output |
Parameters
Parameter | Type |
---|
unary | Unary <Input , Output > |
Returns
Function
Function that will run the given function when called.
Parameters
Returns
Function
Returns
Output
Example
const always = thunk(id);
const alwaysFoo = always("foo");
View source
Numbers
cryptoNumber()
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
Parameter | Type | Description |
---|
seed | string | Numeric | Seed to be used to generate random numbers. |
Returns
Promise
<number
>
Pseudo-random number from seed.
Example
const seededRandom1 = await random("some seed");
const seededRandom2 = await random("some seed");
seededRandom1 === seededRandom2; // true because it has the same seed
See
SubtleCrypto#digest
View source
Objects
awaitableHandler()
function awaitableHandler<Value, Output>(
handler: (awaitable: Value) => Output,
awaitable: AwaitableValue,
) => 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
Parameter | Type | Description |
---|
handler | (awaitable : Value ) => Output | Handler function to be called with the value. |
Returns
Function
Curried function with handler
in context.
Type parameters
Type parameter |
---|
AwaitableValue |
Parameters
Parameter | Type |
---|
awaitable | AwaitableValue |
Returns
AwaitableValue
extends Promise
<Value
> ? Promise
<Output
> :
Output
Example
const double = maybePromiseHandler((value: number) => value * 2);
double(Promise.resolve(2)); // Promise<4>
View source
get()
): <Source>(object: Source) => Source[Key & keyof Source];
Get the value of a property in an object.
Type parameters
Type parameter |
---|
Key extends PropertyKey |
Parameters
Returns
Function
Curried function with key
in context.
Type parameters
Type parameter |
---|
Source extends Readonly <Record <Key , unknown >> |
Parameters
Parameter | Type |
---|
object | Source |
Returns
Source
[Key
& keyof Source
]
Example
const getFoo = get("foo");
getFoo({ foo: "bar" }); // "bar"
View source
mutate()
): <Target>(target: Target) => Target & Update;
Function to encapsulate object mutations.
Type parameters
Type parameter |
---|
Update extends object |
Parameters
Parameter | Type | Description |
---|
update | Update | Update to apply to given target. |
Returns
Function
Curried function with update
in context.
Type parameters
Type parameter |
---|
Target extends object |
Parameters
Parameter | Type |
---|
target | Target |
Returns
Target
& Update
Example
mutate(set("a")(2))(state);
console.log(state); // { a: 2 }
View source
omit()
function omit<Properties>(
...properties: Properties
): <Source>(object: Source) => Omit<Source, Properties[number]>;
Omits given properties from an object.
Type parameters
Type parameter |
---|
Properties extends ReadOnlyArray <PropertyKey > |
Parameters
Parameter | Type | Description |
---|
…properties | Properties | Properties to omit. |
Returns
Function
Curried function with properties
in context.
Type parameters
Type parameter |
---|
Source extends Readonly <Record <PropertyKey , unknown >> |
Parameters
Parameter | Type |
---|
object | Source |
Returns
Omit
<Source
, Properties
[number
]>
Example
const object = { a: 1, b: 2, c: 3 };
const omitAC = omit("a", "c");
const result = omitAC(object); // { b: 2 }
View source
pick()
function pick<Properties>(
...properties: Properties
): <Source>(object: Source) => Pick<Source, Properties[number]>;
Picks given properties from an object.
Type parameters
Type parameter |
---|
Properties extends ReadOnlyArray <PropertyKey > |
Parameters
Parameter | Type | Description |
---|
…properties | Properties | Properties to pick. |
Returns
Function
Curried function with properties
in context.
Type parameters
Type parameter |
---|
Source extends Readonly <Record <PropertyKey , unknown >> |
Parameters
Parameter | Type |
---|
object | Source |
Returns
Pick
<Source
, Properties
[number
]>
Example
const object = { a: 1, b: 2, c: 3 };
const pickAC = pick("a", "c");
const result = pickAC(object); // { a: 1, c: 3 }
View source
set()
) => 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
Returns
Function
Curried function with key
in context.
Type parameters
Parameters
Returns
Function
Type parameters
Type parameter |
---|
Source extends object |
Parameters
Parameter | Type |
---|
object | Source |
Returns
Omit
<Source
, Key
> & Readonly
<Record
<Key
, Value
>>
Example
const setFoo = set("foo");
setFoo("baz")({ foo: "bar" }); // { foo: "baz" }
setFoo("baz")({ bar: "foo" }); // { bar: "foo", foo: "baz" }
setFoo("baz")({}); // { foo: "baz" }
View source
Promises
otherwise()
function otherwise<Output>(
handler: Unary<unknown, Output | PromiseLike<Output>>,
promise: Promise<PromisedValue>,
) => Promise<Output | PromisedValue>;
Sets a promise catch
handler.
Type parameters
Parameters
Parameter | Type |
---|
handler | Unary <unknown , Output | PromiseLike <Output >> |
Returns
Function
Curried function with handler
set in context.
Type parameters
Type parameter |
---|
PromisedValue |
Parameters
Parameter | Type |
---|
promise | Promise <PromisedValue > |
Returns
Promise
<Output
| PromisedValue
>
Example
const otherwiseLog = otherwise(console.error);
otherwiseLog(fetch("/api")); // Logs on error.
View source
then()
function then<HandlerInput, Output>(
handler: Unary<HandlerInput, Output | PromiseLike<Output>>,
): <PromiseInstance>(promise: PromiseInstance) => Promise<Output>;
Sets a promise then
handler.
Type parameters
Type parameter |
---|
HandlerInput |
Output |
Parameters
Parameter | Type |
---|
handler | Unary <HandlerInput , Output | PromiseLike <Output >> |
Returns
Function
Curried function with handler
set in context.
Type parameters
Type parameter |
---|
PromiseInstance extends Promise <HandlerInput > |
Parameters
Parameter | Type |
---|
promise | PromiseInstance |
Returns
Promise
<Output
>
Example
const thenJson = then((response: Response) => response.json());
thenJson(fetch("/api")); // Parsed response
View source