Skip to content

Welshman Docs / @welshman/lib

@welshman/lib

Classes

Type Aliases

CustomPromise<T, E>

CustomPromise<T, E> = Promise<T> & object

Defined in: packages/lib/src/Deferred.ts:2

Promise type with strongly typed error

Type declaration

__errorType

__errorType: E

Type Parameters

T

T

E

E


Deferred<T, E>

Deferred<T, E> = CustomPromise<T, E> & object

Defined in: packages/lib/src/Deferred.ts:18

Promise with exposed resolve/reject functions and typed error

Type declaration

reject()

reject: (arg) => void

Parameters
arg

E

Returns

void

resolve()

resolve: (arg) => void

Parameters
arg

T

Returns

void

Type Parameters

T

T

E

E = T


MakeNonOptional<T>

MakeNonOptional<T> = { [K in keyof T]-?: T[K] }

Defined in: packages/lib/src/Tools.ts:25

Type Parameters

T

T


MakeOptional<T, K>

MakeOptional<T, K> = Override<T, Partial<Pick<T, K>>>

Defined in: packages/lib/src/Tools.ts:23

Type Parameters

T

T

K

K extends keyof T


Maybe<T>

Maybe<T> = T | undefined

Defined in: packages/lib/src/Tools.ts:5

Type Parameters

T

T


MaybeAsync<T>

MaybeAsync<T> = T | Promise<T>

Defined in: packages/lib/src/Tools.ts:7

Type Parameters

T

T


Obj<T>

Obj<T> = Record<string, T>

Defined in: packages/lib/src/Tools.ts:3

Type Parameters

T

T = any


Override<T, R>

Override<T, R> = Omit<T, keyof R> & R

Defined in: packages/lib/src/Tools.ts:21

Type Parameters

T

T

R

R


PollOptions

PollOptions = object

Defined in: packages/lib/src/Tools.ts:1175

Properties

condition()

condition: () => unknown

Defined in: packages/lib/src/Tools.ts:1177

Returns

unknown

interval?

optional interval: number

Defined in: packages/lib/src/Tools.ts:1178

signal

signal: AbortSignal

Defined in: packages/lib/src/Tools.ts:1176


TaskQueueOptions<Item>

TaskQueueOptions<Item> = object

Defined in: packages/lib/src/TaskQueue.ts:3

Type Parameters

Item

Item

Properties

batchDelay

batchDelay: number

Defined in: packages/lib/src/TaskQueue.ts:5

batchSize

batchSize: number

Defined in: packages/lib/src/TaskQueue.ts:4

processItem()

processItem: (item) => unknown

Defined in: packages/lib/src/TaskQueue.ts:6

Parameters
item

Item

Returns

unknown

Variables

dateFormatter

const dateFormatter: DateTimeFormat

Defined in: packages/lib/src/Tools.ts:325

Formatter for date


dateTimeFormatter

const dateTimeFormatter: DateTimeFormat

Defined in: packages/lib/src/Tools.ts:312

Formatter for date+time


DAY

const DAY: number

Defined in: packages/lib/src/Tools.ts:238

One day in seconds


HOUR

const HOUR: number

Defined in: packages/lib/src/Tools.ts:235

One hour in seconds


LOCALE

const LOCALE: string

Defined in: packages/lib/src/Tools.ts:253

User's default locale


MINUTE

const MINUTE: 60 = 60

Defined in: packages/lib/src/Tools.ts:232

One minute in seconds


MONTH

const MONTH: number

Defined in: packages/lib/src/Tools.ts:244

One month in seconds (approximate)


QUARTER

const QUARTER: number

Defined in: packages/lib/src/Tools.ts:247

One quarter in seconds (approximate)


textDecoder

const textDecoder: TextDecoder

Defined in: packages/lib/src/Tools.ts:1831


textEncoder

const textEncoder: TextEncoder

Defined in: packages/lib/src/Tools.ts:1829


timeFormatter

const timeFormatter: DateTimeFormat

Defined in: packages/lib/src/Tools.ts:339

Formatter for time


TIMEZONE

const TIMEZONE: string

Defined in: packages/lib/src/Tools.ts:256

User's default timezone


WEEK

const WEEK: number

Defined in: packages/lib/src/Tools.ts:241

One week in seconds


YEAR

const YEAR: number

Defined in: packages/lib/src/Tools.ts:250

One year in seconds (approximate)

Functions

add()

add(x, y): number

Defined in: packages/lib/src/Tools.ts:146

Adds two numbers, handling undefined values

Parameters

x

undefined | number

y

undefined | number

Returns

number


addToKey()

addToKey<T>(m, k, v): void

Defined in: packages/lib/src/Tools.ts:1711

Adds value to Set at key in object

Type Parameters

T

T

Parameters

m

Record<string, Set<T>>

Object mapping keys to Sets

k

string

Key to add to

v

T

Value to add

Returns

void


addToMapKey()

addToMapKey<K, T>(m, k, v): void

Defined in: packages/lib/src/Tools.ts:1747

Adds value to Set at key in Map

Type Parameters

K

K

T

T

Parameters

m

Map<K, Set<T>>

Map of Sets

k

K

Key to add to

v

T

Value to add

Returns

void


ago()

ago(unit, count): number

Defined in: packages/lib/src/Tools.ts:279

Returns Unix timestamp from specified time ago

Parameters

unit

number

Time unit in seconds

count

number = 1

Number of units

Returns

number

Timestamp in seconds


allPass()

allPass<T>(...predicates): (x) => boolean

Defined in: packages/lib/src/Tools.ts:1691

Returns a function that checks whether all predicates pass

Type Parameters

T

T

Parameters

predicates

...(x) => unknown[]

Returns

(x): boolean

Parameters
x

T

Returns

boolean


always()

always<T>(x, ...args): () => T

Defined in: packages/lib/src/Tools.ts:49

Creates a function that always returns the same value

Type Parameters

T

T

Parameters

x

T

Value to return

args

...unknown[]

Returns

Function that returns x

(): T

Returns

T


append()

append<T>(x, xs): T[]

Defined in: packages/lib/src/Tools.ts:448

Appends element to array

Type Parameters

T

T

Parameters

x

T

Element to append

xs

Iterable<T>

Array to append to

Returns

T[]

New array with element appended


assertDefined()

assertDefined<T>(x, ...args): NonNullable<T>

Defined in: packages/lib/src/Tools.ts:15

Type Parameters

T

T

Parameters

x

T

args

...unknown[]

Returns

NonNullable<T>


assoc()

assoc<K, T>(k, v): <U>(o) => U

Defined in: packages/lib/src/Tools.ts:1673

Returns a function that adds/updates a property on object

Type Parameters

K

K extends string

T

T

Parameters

k

K

v

T

Returns

<U>(o): U

Type Parameters
U

U

Parameters
o

U

Returns

U


avg()

avg(xs): number

Defined in: packages/lib/src/Tools.ts:192

Returns average of array values, handling undefined values

Parameters

xs

(undefined | number)[]

Returns

number


batch()

batch<T>(t, f): (x) => void

Defined in: packages/lib/src/Tools.ts:1288

Creates batching function that collects items this function does not delay execution, if a series of items is passed in sequence the first item will be processed immediately, and the rest will be batched

Type Parameters

T

T

Parameters

t

number

Time window for batching

f

(xs) => void

Function to process batch

Returns

Function that adds items to batch

(x): void

Parameters
x

T

Returns

void


batcher()

batcher<T, U>(t, execute): (request) => Promise<U>

Defined in: packages/lib/src/Tools.ts:1317

Creates batching function that returns results

Type Parameters

T

T

U

U

Parameters

t

number

Time window for batching

execute

(request) => U[] | Promise<U[]>

Function to process batch

Returns

Function that returns promise of result

(request): Promise<U>

Parameters
request

T

Returns

Promise<U>


bech32ToHex()

bech32ToHex(b32): string

Defined in: packages/lib/src/Tools.ts:1791

Converts bech32 string to hex format

Parameters

b32

string

Bech32 string to convert

Returns

string

Hex encoded string


between()

between(bounds, n): boolean

Defined in: packages/lib/src/Tools.ts:200

Checks if a number is between two values (exclusive)

Parameters

bounds

[number, number]

Lower and upper bounds

n

number

Number to check

Returns

boolean

True if n is between low and high


bind()

bind<F>(f, ...args): (...args) => any

Defined in: packages/lib/src/Tools.ts:65

Bind function

Type Parameters

F

F extends (...args) => any

Parameters

f

F

Function to bind

args

...Parameters<F>

Returns

bound function

(...args): any

Parameters
args

...any[]

Returns

any


bytesToHex()

bytesToHex(buffer): string

Defined in: packages/lib/src/Tools.ts:1807

Converts an array buffer or Uint8Array to hex format

Parameters

buffer

ArrayBuffer or Uint8Array to convert

ArrayBuffer | Uint8Array<ArrayBufferLike>

Returns

string

Hex encoded string


cached()

cached<T, V, Args>(__namedParameters): {(...args): NonNullable<V>; cache: LRUCache<T, V>; getKey: (args) => T; getValue: (args) => V; pop: (...args) => V; }

Defined in: packages/lib/src/LRUCache.ts:52

Creates a memoized function with LRU caching

Type Parameters

T

T

Cache key type

V

V

Cache value type

Args

Args extends any[]

Function argument types

Parameters

__namedParameters
getKey

(args) => T

getValue

(args) => V

maxSize

number

Returns

(...args): NonNullable<V>

Parameters
args

...Args

Returns

NonNullable<V>

cache

cache: LRUCache<T, V>

getKey()

getKey: (args) => T

Parameters
args

Args

Returns

T

getValue()

getValue: (args) => V

Parameters
args

Args

Returns

V

pop()

pop: (...args) => V

Parameters
args

...Args

Returns

V


call()

call<T>(f, ...args): T

Defined in: packages/lib/src/Tools.ts:1087

Calls a function

Type Parameters

T

T

Parameters

f

() => T

Function to call

args

...unknown[]

Returns

T

Whatever f returns


choice()

choice<T>(xs): T

Defined in: packages/lib/src/Tools.ts:814

Returns random element from array

Type Parameters

T

T

Parameters

xs

T[]

Returns

T


chunk()

chunk<T>(chunkLength, xs): T[][]

Defined in: packages/lib/src/Tools.ts:768

Splits array into chunks of specified length

Type Parameters

T

T

Parameters

chunkLength

number

Maximum length of each chunk

xs

Iterable<T>

Array to split

Returns

T[][]

Array of chunks


chunks()

chunks<T>(n, xs): T[][]

Defined in: packages/lib/src/Tools.ts:794

Splits array into specified number of chunks

Type Parameters

T

T

Parameters

n

number

Number of chunks

xs

T[]

Array to split

Returns

T[][]

Array of n chunks


clamp()

clamp(bounds, n): number

Defined in: packages/lib/src/Tools.ts:216

Constrains number between min and max values

Parameters

bounds

[number, number]

Minimum and maximum allowed values

n

number

Number to clamp

Returns

number

Clamped value


complement()

complement<T>(f): (...args) => boolean

Defined in: packages/lib/src/Tools.ts:1031

Returns a function that returns the boolean negation of the given function

Type Parameters

T

T extends unknown[]

Parameters

f

(...args) => any

Returns

(...args): boolean

Parameters
args

...T

Returns

boolean


concat()

concat<T>(...xs): T[]

Defined in: packages/lib/src/Tools.ts:440

Concatenates multiple arrays, filtering out null/undefined

Type Parameters

T

T

Parameters

xs

...T[][]

Arrays to concatenate

Returns

T[]

Combined array


countBy()

countBy<T, K>(f, xs): Map<K, number>

Defined in: packages/lib/src/Tools.ts:721

Counts array elements by key function

Type Parameters

T

T

K

K

Parameters

f

(x) => K

Function to generate group key

xs

T[]

Array to count entries

Returns

Map<K, number>

Map of counts


createLocalDate()

createLocalDate(dateString, timezone): Date

Defined in: packages/lib/src/Tools.ts:308

Creates a local date from a date string

Parameters

dateString

any

date string

timezone

string = TIMEZONE

timezone string

Returns

Date

timezone-aware Date object


dateToSeconds()

dateToSeconds(date): number

Defined in: packages/lib/src/Tools.ts:300

Converts date object to seconds

Parameters

date

Date

Date object

Returns

number

timestamp in seconds


dec()

dec(x): number

Defined in: packages/lib/src/Tools.ts:161

Decrements a number by 1, handling undefined values

Parameters

x

undefined | number

Returns

number


deepMergeLeft()

deepMergeLeft(a, b): Obj<any>

Defined in: packages/lib/src/Tools.ts:987

Deep merge two objects, prioritizing the first argument.

Parameters

a

Obj

b

Obj

Returns

Obj<any>


deepMergeRight()

deepMergeRight(a, b): Obj<any>

Defined in: packages/lib/src/Tools.ts:990

Deep merge two objects, prioritizing the second argument.

Parameters

a

Obj

b

Obj

Returns

Obj<any>


defer()

defer<T, E>(): Deferred<T, E>

Defined in: packages/lib/src/Deferred.ts:27

Creates a Deferred promise

Type Parameters

T

T

E

E = T

Returns

Deferred<T, E>

Promise with resolve/reject methods exposed


difference()

difference<T>(a, b): T[]

Defined in: packages/lib/src/Tools.ts:484

Returns elements in first array not present in second

Type Parameters

T

T

Parameters

a

Iterable<T>

Source array

b

Iterable<T>

Array of elements to exclude

Returns

T[]

Array containing elements unique to first array


displayDomain()

displayDomain(url): string

Defined in: packages/lib/src/Tools.ts:1419

Extracts and formats domain from URL

Parameters

url

string

URL to process

Returns

string

Formatted domain name


displayList()

displayList<T>(xs, conj, n): string

Defined in: packages/lib/src/Tools.ts:1572

Displays a list of items with oxford commas and a chosen conjunction

Type Parameters

T

T

Parameters

xs

T[]

conj

string = "and"

n

number = 6

Returns

string


displayUrl()

displayUrl(url): string

Defined in: packages/lib/src/Tools.ts:1409

Formats URL for display by removing protocol, www, and trailing slash

Parameters

url

string

URL to format

Returns

string

Formatted URL


dissoc()

dissoc<K, T>(k): (o) => T

Defined in: packages/lib/src/Tools.ts:1679

Returns a function that removes a property on object

Type Parameters

K

K extends string

T

T extends Obj<any>

Parameters

k

K

Returns

(o): T

Parameters
o

T

Returns

T


div()

div(x, y): number

Defined in: packages/lib/src/Tools.ts:155

Divides two numbers, handling undefined values

Parameters

x

undefined | number

y

number

Returns

number


doLet()

doLet<T>(x, f): unknown

Defined in: packages/lib/src/Tools.ts:1114

Executes a function on the given value

Type Parameters

T

T

Parameters

x

T

The value

f

<R>(x) => R

Function to execute

Returns

unknown

result of f(x)


drop()

drop<T>(n, xs): T[]

Defined in: packages/lib/src/Tools.ts:425

Returns array with first n elements removed

Type Parameters

T

T

Parameters

n

number

Number of elements to drop

xs

Iterable<T>

Input array

Returns

T[]

Array with first n elements removed


ellipsize()

ellipsize(s, l, suffix): string

Defined in: packages/lib/src/Tools.ts:1559

Truncates string to length, breaking at word boundaries

Parameters

s

string

String to truncate

l

number

Maximum length

suffix

string = "..."

String to append if truncated

Returns

string

Truncated string


ensureNumber()

ensureNumber(x): number

Defined in: packages/lib/src/Tools.ts:140

Converts string or number to number

Parameters

x

string | number

Returns

number


ensurePlural()

ensurePlural<T>(x): T[]

Defined in: packages/lib/src/Tools.ts:830

Ensures value is array by wrapping if needed

Type Parameters

T

T

Parameters

x

T | T[]

Returns

T[]


enumerate()

enumerate<T>(items): Generator<[number, T], void, unknown>

Defined in: packages/lib/src/Tools.ts:540

Yields indexed items

Type Parameters

T

T

Parameters

items

T[]

A collection of items

Returns

Generator<[number, T], void, unknown>

Yields

tuples of [index, item]


eq()

eq<T>(v): (x, ...args) => boolean

Defined in: packages/lib/src/Tools.ts:1649

Returns a function that checks equality with value

Type Parameters

T

T

Parameters

v

T

Returns

(x, ...args): boolean

Parameters
x

T

args

...unknown[]

Returns

boolean


equals()

equals(a, b): boolean

Defined in: packages/lib/src/Tools.ts:86

Deep equality comparison

Parameters

a

any

First value

b

any

Second value

Returns

boolean

True if values are deeply equal


fetchJson()

fetchJson(url, opts): Promise<any>

Defined in: packages/lib/src/Tools.ts:1468

Fetches JSON from URL with options

Parameters

url

string

URL to fetch from

opts

FetchOpts = {}

Fetch options

Returns

Promise<any>

Promise of parsed JSON response


ffirst()

ffirst<T>(xs, ...args): undefined | T

Defined in: packages/lib/src/Tools.ts:400

Returns the first element of the first array in a nested array

Type Parameters

T

T

Parameters

xs

Iterable<Iterable<T, any, any>>

Array of arrays

args

...unknown[]

Returns

undefined | T

First element of first array or undefined


filter()

filter<T>(f, xs): T[]

Defined in: packages/lib/src/Tools.ts:603

Keeps items based on predicate

Type Parameters

T

T

Parameters

f

(x) => any

Whether to keep an item

xs

Iterable<T>

Items to filter

Returns

T[]

Filtered array


filterVals()

filterVals<T>(f, x): T

Defined in: packages/lib/src/Tools.ts:920

Filters object values based on predicate

Type Parameters

T

T extends Record<string, any>

Parameters

f

(v) => boolean

Function to test values

x

T

Object to filter

Returns

T

Object with only values that pass predicate


find()

find<T>(f, xs): undefined | T

Defined in: packages/lib/src/Tools.ts:619

Finds a single item based on predicate

Type Parameters

T

T

Parameters

f

(x) => any

Whether an item matches

xs

Iterable<T>

Items to filter

Returns

undefined | T

first matching item


first()

first<T>(xs, ...args): undefined | T

Defined in: packages/lib/src/Tools.ts:389

Returns the first element of an array

Type Parameters

T

T

Parameters

xs

Iterable<T>

The array

args

...unknown[]

Returns

undefined | T

First element or undefined


flatten()

flatten<T>(xs, ...args): T[]

Defined in: packages/lib/src/Tools.ts:571

Flattens array of arrays into single array

Type Parameters

T

T

Parameters

xs

(T | T[])[]

Array of arrays to flatten

args

...unknown[]

Returns

T[]

Flattened array


formatTimestamp()

formatTimestamp(seconds): string

Defined in: packages/lib/src/Tools.ts:322

Formats seconds as a datetime

Parameters

seconds

number

timestamp in seconds

Returns

string

datetime string


formatTimestampAsDate()

formatTimestampAsDate(ts): string

Defined in: packages/lib/src/Tools.ts:336

Formats seconds as a date

Parameters

ts

number

Returns

string

date string


formatTimestampAsTime()

formatTimestampAsTime(ts): string

Defined in: packages/lib/src/Tools.ts:348

Formats seconds as a time

Parameters

ts

number

Returns

string

time string


formatTimestampRelative()

formatTimestampRelative(ts): string

Defined in: packages/lib/src/Tools.ts:355

Formats seconds as a relative date (x minutes ago)

Parameters

ts

number

Returns

string

relative date string


fromPairs()

fromPairs<T>(pairs): Record<string, T>

Defined in: packages/lib/src/Tools.ts:554

Creates object from array of key-value pairs

Type Parameters

T

T

Parameters

pairs

[string, T, ...args: unknown[]][]

Array of [key, value] tuples

Returns

Record<string, T>

Object with keys and values from pairs


getJson()

getJson(k): any

Defined in: packages/lib/src/Tools.ts:1445

Gets and parses JSON from localStorage

Parameters

k

string

Storage key

Returns

any

Parsed value or undefined if invalid/missing


groupBy()

groupBy<T, K>(f, xs): Map<K, T[]>

Defined in: packages/lib/src/Tools.ts:697

Groups array elements by key function

Type Parameters

T

T

K

K

Parameters

f

(x) => K

Function to generate group key

xs

Iterable<T>

Array to group

Returns

Map<K, T[]>

Map of groups


gt()

gt(x, y): boolean

Defined in: packages/lib/src/Tools.ts:170

Greater than comparison, handling undefined values

Parameters

x

undefined | number

y

undefined | number

Returns

boolean


gte()

gte(x, y): boolean

Defined in: packages/lib/src/Tools.ts:173

Greater than or equal comparison, handling undefined values

Parameters

x

undefined | number

y

undefined | number

Returns

boolean


hash()

hash(s): number

Defined in: packages/lib/src/Tools.ts:1585

Generates a hash from input string

Parameters

s

string

Returns

number


hexToBech32()

hexToBech32(prefix, hex): `${Lowercase<string>}1${string}`

Defined in: packages/lib/src/Tools.ts:1783

Converts hex string to bech32 format

Parameters

prefix

string

Bech32 prefix

hex

string

Hex string to convert

Returns

`${Lowercase<string>}1${string}`

Bech32 encoded string


hexToBytes()

hexToBytes(hex): Uint8Array<ArrayBuffer>

Defined in: packages/lib/src/Tools.ts:1822

Converts a hex string to an array buffer

Parameters

hex

string

hex string

Returns

Uint8Array<ArrayBuffer>

ArrayBuffer


identity()

identity<T>(x, ...args): T

Defined in: packages/lib/src/Tools.ts:41

Returns the input value unchanged

Type Parameters

T

T

Parameters

x

T

Any value

args

...unknown[]

Returns

T

The same value


ifLet()

ifLet<T>(x, f): void

Defined in: packages/lib/src/Tools.ts:1122

Executes a function if the value is defined

Type Parameters

T

T

Parameters

x

The value to check

undefined | T

f

(x) => void

Function to execute if x is defined

Returns

void

result of f(x) if x is defined, undefined otherwise


inc()

inc(x): number

Defined in: packages/lib/src/Tools.ts:158

Increments a number by 1, handling undefined values

Parameters

x

undefined | number

Returns

number


indexBy()

indexBy<T, K>(f, xs): Map<K, T>

Defined in: packages/lib/src/Tools.ts:736

Creates map from array using key function

Type Parameters

T

T

K

K

Parameters

f

(x) => K

Function to generate key

xs

T[]

Array to index

Returns

Map<K, T>

Map of values by key


initArray()

initArray<T>(n, f): T[]

Defined in: packages/lib/src/Tools.ts:752

Creates array of specified length using generator function

Type Parameters

T

T

Parameters

n

number

Length of array

f

() => T

Function to generate each element

Returns

T[]

Generated array


insertAt()

insertAt<T>(n, x, xs): T[]

Defined in: packages/lib/src/Tools.ts:808

Inserts element into array at index

Type Parameters

T

T

Parameters

n

number

x

T

xs

T[]

Returns

T[]


int()

int(unit, count): number

Defined in: packages/lib/src/Tools.ts:268

Multiplies time unit by count

Parameters

unit

number

Time unit in seconds

count

number = 1

Number of units

Returns

number

Total seconds


intersection()

intersection<T>(a, b): T[]

Defined in: packages/lib/src/Tools.ts:472

Returns elements common to both arrays

Type Parameters

T

T

Parameters

a

Iterable<T>

First array

b

Iterable<T>

Second array

Returns

T[]

Array of elements present in both inputs


isDefined()

isDefined<T>(x, ...args): x is T & (null | {})

Defined in: packages/lib/src/Tools.ts:11

Type Parameters

T

T

Parameters

x

T

args

...unknown[]

Returns

x is T & (null | {})


isHex32()

isHex32(s): boolean

Defined in: packages/lib/src/Tools.ts:1796

Parameters

s

string

Returns

boolean


isIterable()

isIterable(x): boolean

Defined in: packages/lib/src/Tools.ts:824

Checks if value is iterable

Parameters

x

any

Returns

boolean


isPojo()

isPojo(obj): boolean

Defined in: packages/lib/src/Tools.ts:854

Checks if value is a plain object

Parameters

obj

any

Value to check

Returns

boolean

True if value is a plain object


isUndefined()

isUndefined<T>(x, ...args): boolean

Defined in: packages/lib/src/Tools.ts:13

Type Parameters

T

T

Parameters

x

T

args

...unknown[]

Returns

boolean


last()

last<T>(xs, ...args): T

Defined in: packages/lib/src/Tools.ts:413

Returns the last element of an array

Type Parameters

T

T

Parameters

xs

Iterable<T>

The array

args

...unknown[]

Returns

T

Last element or undefined


lt()

lt(x, y): boolean

Defined in: packages/lib/src/Tools.ts:164

Less than comparison, handling undefined values

Parameters

x

undefined | number

y

undefined | number

Returns

boolean


lte()

lte(x, y): boolean

Defined in: packages/lib/src/Tools.ts:167

Less than or equal comparison, handling undefined values

Parameters

x

undefined | number

y

undefined | number

Returns

boolean


makePromise()

makePromise<T, E>(executor): CustomPromise<T, E>

Defined in: packages/lib/src/Deferred.ts:11

Creates a Promise with strongly typed error

Type Parameters

T

T

E

E

Parameters

executor

(resolve, reject) => void

Promise executor function

Returns

CustomPromise<T, E>

Promise with typed error


makeQueue()

makeQueue(): (f) => Promise<unknown>

Defined in: packages/lib/src/Tools.ts:1383

Creates a function that runs async tasks one at a time, in the order they were enqueued. Rejections are logged rather than chained, so a failed task doesn't drop the ones behind it

Returns

Function that enqueues a task and resolves once it has run

(f): Promise<unknown>

Parameters
f

() => Promise<unknown>

Returns

Promise<unknown>


map()

map<T, R>(f, xs): R[]

Defined in: packages/lib/src/Tools.ts:595

Maps any iterable

Type Parameters

T

T

R

R

Parameters

f

(x) => R

xs

Iterable<T>

Returns

R[]


mapKeys()

mapKeys<T>(f, x): T

Defined in: packages/lib/src/Tools.ts:938

Creates new object with transformed keys

Type Parameters

T

T extends Obj<any>

Parameters

f

(v) => string

Function to transform keys

x

T

Source object

Returns

T

Object with transformed keys


mapPop()

mapPop<K, T>(k, m): undefined | T

Defined in: packages/lib/src/Tools.ts:1017

Type Parameters

K

K

T

T

Parameters

k

K

m

Map<K, T>

Returns

undefined | T


mapVals()

mapVals<V, U>(f, x): Record<string, U>

Defined in: packages/lib/src/Tools.ts:954

Creates new object with transformed values

Type Parameters

V

V

U

U

Parameters

f

(v) => U

Function to transform values

x

Record<string, V>

Source object

Returns

Record<string, U>

Object with transformed values


max()

max(xs): number

Defined in: packages/lib/src/Tools.ts:176

Returns maximum value in array, handling undefined values

Parameters

xs

(undefined | number)[]

Returns

number


maybe()

maybe<T>(x?): undefined | T

Defined in: packages/lib/src/Tools.ts:9

Type Parameters

T

T

Parameters

x?

T

Returns

undefined | T


member()

member<T>(xs): (x) => boolean

Defined in: packages/lib/src/Tools.ts:1685

Returns a function that checks whether a value is in the given sequence

Type Parameters

T

T

Parameters

xs

Iterable<T>

Returns

(x): boolean

Parameters
x

T

Returns

boolean


memoize()

memoize<T, Args>(f): (...args) => T

Defined in: packages/lib/src/Tools.ts:1094

Memoizes function results based on arguments

Type Parameters

T

T

Args

Args extends any[]

Parameters

f

(...args) => T

Function to memoize

Returns

Memoized function

(...args): T

Parameters
args

...Args

Returns

T


mergeLeft()

mergeLeft<T>(a, b): T

Defined in: packages/lib/src/Tools.ts:970

Merges two objects, with left object taking precedence

Type Parameters

T

T extends Obj<any>

Parameters

a

T

Left object

b

T

Right object

Returns

T

Merged object with a"s properties overriding b"s


mergeRight()

mergeRight<T>(a, b): T

Defined in: packages/lib/src/Tools.ts:981

Merges two objects, with right object taking precedence

Type Parameters

T

T extends Obj<any>

Parameters

a

T

Left object

b

T

Right object

Returns

T

Merged object with b"s properties overriding a"s


min()

min(xs): number

Defined in: packages/lib/src/Tools.ts:180

Returns minimum value in array, handling undefined values

Parameters

xs

(undefined | number)[]

Returns

number


ms()

ms(seconds): number

Defined in: packages/lib/src/Tools.ts:286

Converts seconds to milliseconds

Parameters

seconds

number

Time in seconds

Returns

number

Time in milliseconds


mul()

mul(x, y): number

Defined in: packages/lib/src/Tools.ts:152

Multiplies two numbers, handling undefined values

Parameters

x

undefined | number

y

undefined | number

Returns

number


ne()

ne<T>(v): (x, ...args) => boolean

Defined in: packages/lib/src/Tools.ts:1655

Returns a function that checks inequality with value

Type Parameters

T

T

Parameters

v

T

Returns

(x, ...args): boolean

Parameters
x

T

args

...unknown[]

Returns

boolean


noop()

noop(...args): undefined

Defined in: packages/lib/src/Tools.ts:34

Function that does nothing and returns undefined

Parameters

args

...unknown[]

Returns

undefined


normalizeUrl()

normalizeUrl(urlString, opts?): string

Defined in: packages/lib/src/normalize-url/index.ts:372

Normalize a URL.

URLs with custom protocols are not normalized and just passed through by default. Supported protocols are: https, http, file, and data.

Parameters

urlString

string

opts?

Options

Returns

string

Example

import normalizeUrl from 'normalize-url';

normalizeUrl('sindresorhus.com');
//=> 'http://sindresorhus.com'

normalizeUrl('//www.sindresorhus.com:80/../baz?b=bar&a=foo');
//=> 'http://sindresorhus.com/baz?a=foo&b=bar'

not()

not(x, ...args): boolean

Defined in: packages/lib/src/Tools.ts:58

Returns the logical NOT of a value

Parameters

x

any

Value to negate

args

...unknown[]

Returns

boolean

!x


now()

now(): number

Defined in: packages/lib/src/Tools.ts:271

Returns current Unix timestamp in seconds

Returns

number


nth()

nth(i): <T>(xs, ...args) => T

Defined in: packages/lib/src/Tools.ts:1594

Returns a function that gets the nth element of an array

Parameters

i

number

Returns

<T>(xs, ...args): T

Type Parameters
T

T

Parameters
xs

T[]

args

...unknown[]

Returns

T


nthEq()

nthEq(i, v): (xs, ...args) => boolean

Defined in: packages/lib/src/Tools.ts:1606

Returns a function that checks if nth element equals value

Parameters

i

number

v

any

Returns

(xs, ...args): boolean

Parameters
xs

any[]

args

...unknown[]

Returns

boolean


nthIn()

nthIn(i, v): (xs, ...args) => boolean

Defined in: packages/lib/src/Tools.ts:1612

Returns a function that checks if nth element is in value

Parameters

i

number

v

any[]

Returns

(xs, ...args): boolean

Parameters
xs

any[]

args

...unknown[]

Returns

boolean


nthNe()

nthNe(i, v): (xs, ...args) => boolean

Defined in: packages/lib/src/Tools.ts:1618

Returns a function that checks if nth element does not equal value

Parameters

i

number

v

any

Returns

(xs, ...args): boolean

Parameters
xs

any[]

args

...unknown[]

Returns

boolean


nthNotIn()

nthNotIn(i, v): (xs, ...args) => boolean

Defined in: packages/lib/src/Tools.ts:1624

Returns a function that checks if nth element is not in value

Parameters

i

number

v

any[]

Returns

(xs, ...args): boolean

Parameters
xs

any[]

args

...unknown[]

Returns

boolean


nthPass()

nthPass<T>(i, f): (xs, ...args) => any

Defined in: packages/lib/src/Tools.ts:1600

Returns a function that checks if nth element equals value

Type Parameters

T

T

Parameters

i

number

f

(x) => any

Returns

(xs, ...args): any

Parameters
xs

T[]

args

...unknown[]

Returns

any


num()

num(x): number

Defined in: packages/lib/src/Tools.ts:143

Converts a number | undefined to a number, defaulting to 0

Parameters

x

undefined | number

Returns

number


omit()

omit<T>(ks, x): T

Defined in: packages/lib/src/Tools.ts:886

Creates new object with specified keys removed

Type Parameters

T

T extends Obj<any>

Parameters

ks

string[]

Keys to remove

x

T

Source object

Returns

T

New object without specified keys


omitVals()

omitVals<T>(xs, x): T

Defined in: packages/lib/src/Tools.ts:902

Creates new object excluding entries with specified values

Type Parameters

T

T extends Obj<any>

Parameters

xs

any[]

Values to exclude

x

T

Source object

Returns

T

New object without entries containing specified values


on()

on<EventMap, E>(target, eventName, callback): () => void

Defined in: packages/lib/src/Tools.ts:1533

A generic type-safe event listener function that works with event emitters.

Type Parameters

EventMap

EventMap extends Record<string | symbol, any[]>

E

E extends string | number | symbol

Parameters

target

The event target object with add/remove listener methods

off
on
eventName

E

The name of the event to listen for

callback

(...args) => void

The callback function to execute when the event occurs

Returns

A function that removes the event listener when called

(): void

Returns

void


once()

once(f): (...args) => void

Defined in: packages/lib/src/Tools.ts:1071

Creates function that only executes once

Parameters

f

(...args) => void

Function to wrap

Returns

Function that executes f only on first call

(...args): void

Parameters
args

...any

Returns

void


overlappingPairs()

overlappingPairs<T>(xs): T[][]

Defined in: packages/lib/src/Tools.ts:836

Returns a list of overlapping pairs of elements in xs

Type Parameters

T

T

Parameters

xs

T[]

Returns

T[][]


parseJson()

parseJson<T>(json): undefined | T

Defined in: packages/lib/src/Tools.ts:1430

Safely parses JSON string

Type Parameters

T

T = any

Parameters

json

JSON string to parse

undefined | string

Returns

undefined | T

Parsed object or null if invalid


partition()

partition<T>(f, xs): T[][]

Defined in: packages/lib/src/Tools.ts:579

Splits array into two arrays based on predicate

Type Parameters

T

T

Parameters

f

(x) => boolean

Function to test elements

xs

Iterable<T>

Array to partition

Returns

T[][]

Tuple of [matching, non-matching] arrays


pick()

pick<T>(ks, x): T

Defined in: packages/lib/src/Tools.ts:868

Creates new object with only specified keys

Type Parameters

T

T extends Obj<any>

Parameters

ks

string[]

Keys to keep

x

T

Source object

Returns

T

New object with only specified keys


pluck()

pluck<T>(k, xs): T[]

Defined in: packages/lib/src/Tools.ts:547

Returns a function that gets property value from object

Type Parameters

T

T

Parameters

k

string

xs

Record<string, unknown>[]

Returns

T[]


poll()

poll(options): Promise<void>

Defined in: packages/lib/src/Tools.ts:1186

Creates a promise that resolves after the condition completes or timeout

Parameters

options

PollOptions

PollOptions

Returns

Promise<void>

void Promise


postJson()

postJson<T>(url, data, opts): Promise<any>

Defined in: packages/lib/src/Tools.ts:1493

Posts JSON data to URL

Type Parameters

T

T

Parameters

url

string

URL to post to

data

T

Data to send

opts

FetchOpts = {}

Additional fetch options

Returns

Promise<any>

Promise of parsed JSON response


prepend()

prepend<T>(x, xs): T[]

Defined in: packages/lib/src/Tools.ts:456

Prepends element to array

Type Parameters

T

T

Parameters

x

T

Element to prepend

xs

Iterable<T>

Array to prepend to

Returns

T[]

New array with element prepended


prop()

prop<T>(k): (x) => T

Defined in: packages/lib/src/Tools.ts:1661

Returns a function that gets property value from object

Type Parameters

T

T

Parameters

k

string

Returns

(x): T

Parameters
x

Record<string, unknown>

Returns

T


propIn()

propIn<T>(k, xs): (x) => boolean

Defined in: packages/lib/src/Tools.ts:1667

Returns a function that checks whether the object's property value is in a list

Type Parameters

T

T

Parameters

k

string

xs

T[]

Returns

(x): boolean

Parameters
x

Record<string, unknown>

Returns

boolean


pushToKey()

pushToKey<T>(m, k, v): void

Defined in: packages/lib/src/Tools.ts:1727

Pushes value to array at key in object

Type Parameters

T

T

Parameters

m

Record<string, T[]>

Object mapping keys to arrays

k

string

Key to push to

v

T

Value to push

Returns

void


pushToMapKey()

pushToMapKey<K, T>(m, k, v): void

Defined in: packages/lib/src/Tools.ts:1763

Pushes value to array at key in Map

Type Parameters

K

K

T

T

Parameters

m

Map<K, T[]>

Map of arrays

k

K

Key to push to

v

T

Value to push

Returns

void


race()

race(threshold, promises): Promise<void>

Defined in: packages/lib/src/Tools.ts:1358

Returns a promise that resolves after some proportion of promises complete

Parameters

threshold

number

number between 0 and 1 for how many promises to wait for

promises

Promise<unknown>[]

array of promises

Returns

Promise<void>

promise


randomId()

randomId(): string

Defined in: packages/lib/src/Tools.ts:1148

Generates random string ID

Returns

string

Random string suitable for use as an ID


randomInt()

randomInt(min, max): number

Defined in: packages/lib/src/Tools.ts:1135

Generates random integer between min and max (inclusive)

Parameters

min

number = 0

Minimum value

max

number = 9

Maximum value

Returns

number

Random integer


range()

range(a, b, step): Generator<number, void, unknown>

Defined in: packages/lib/src/Tools.ts:529

Generates sequence of numbers from a to b

Parameters

a

number

Start number (inclusive)

b

number

End number (exclusive)

step

number = 1

Increment between numbers

Returns

Generator<number, void, unknown>

Yields

Numbers in sequence


reject()

reject<T>(f, xs): T[]

Defined in: packages/lib/src/Tools.ts:611

Removes items based on predicate

Type Parameters

T

T

Parameters

f

(x) => any

Whether to remove an item from the array

xs

Iterable<T>

Items to filter

Returns

T[]

Filtered array


remove()

remove<T>(a, xs): T[]

Defined in: packages/lib/src/Tools.ts:496

Removes all instances of an element from array

Type Parameters

T

T

Parameters

a

T

Element to remove

xs

T[]

Source array

Returns

T[]

New array with element removed


removeAt()

removeAt<T>(i, xs): T[]

Defined in: packages/lib/src/Tools.ts:504

Removes element at index

Type Parameters

T

T

Parameters

i

number

Index to remove

xs

T[]

Source array

Returns

T[]

New array with element removed


removeUndefined()

removeUndefined<T>(xs): T & object[]

Defined in: packages/lib/src/Tools.ts:833

Ensures values are not undefined

Type Parameters

T

T

Parameters

xs

T[]

Returns

T & object[]


replaceAt()

replaceAt<T>(n, x, xs): T[]

Defined in: packages/lib/src/Tools.ts:811

Replaces array element at index

Type Parameters

T

T

Parameters

n

number

x

T

xs

T[]

Returns

T[]


round()

round(precision, x): number

Defined in: packages/lib/src/Tools.ts:224

Round a number to the nearest float precision

Parameters

precision

number

Number of decimal places

x

number

Number to round

Returns

number

Formatted number


sample()

sample<T>(n, xs): T[]

Defined in: packages/lib/src/Tools.ts:821

Returns n random elements from array

Type Parameters

T

T

Parameters

n

number

xs

T[]

Returns

T[]


secondsToDate()

secondsToDate(seconds): Date

Defined in: packages/lib/src/Tools.ts:293

Converts seconds to date

Parameters

seconds

number

Time in seconds

Returns

Date

Date object


setJson()

setJson(k, v): void

Defined in: packages/lib/src/Tools.ts:1452

Stringifies and stores value in localStorage

Parameters

k

string

Storage key

v

any

Value to store

Returns

void


sha256()

sha256(data): Promise<string>

Defined in: packages/lib/src/Tools.ts:1838

Computes SHA-256 hash of binary data

Parameters

data

Binary data to hash

ArrayBuffer | Uint8Array<ArrayBufferLike>

Returns

Promise<string>

Promise resolving to hex-encoded hash string


shuffle()

shuffle<T>(xs): T[]

Defined in: packages/lib/src/Tools.ts:817

Returns shuffled copy of iterable

Type Parameters

T

T

Parameters

xs

Iterable<T>

Returns

T[]


simpleCache()

simpleCache<V, Args>(getValue): {(...args): NonNullable<V>; cache: LRUCache<string, V>; getKey: (args) => string; getValue: (args) => V; pop: (...args) => V; }

Defined in: packages/lib/src/LRUCache.ts:92

Creates a simple memoized function with default settings

Type Parameters

V

V

Cache value type

Args

Args extends any[]

Function argument types

Parameters

getValue

(args) => V

Returns

(...args): NonNullable<V>

Parameters
args

...Args

Returns

NonNullable<V>

cache

cache: LRUCache<string, V>

getKey()

getKey: (args) => string

Parameters
args

Args

Returns

string

getValue()

getValue: (args) => V

Parameters
args

Args

Returns

V

pop()

pop: (...args) => V

Parameters
args

...Args

Returns

V


sleep()

sleep(t): Promise<unknown>

Defined in: packages/lib/src/Tools.ts:1173

Creates a promise that resolves after specified time

Parameters

t

number

Time in milliseconds

Returns

Promise<unknown>

Promise that resolves after t milliseconds


some()

some<T>(f, xs): boolean

Defined in: packages/lib/src/Tools.ts:631

Finds a single item based on predicate

Type Parameters

T

T

Parameters

f

(x) => any

Whether an item matches

xs

Iterable<T>

Items to filter

Returns

boolean

whether an item matches


somePass()

somePass<T>(...predicates): (x) => boolean

Defined in: packages/lib/src/Tools.ts:1697

Returns a function that checks whether some predicate passes

Type Parameters

T

T

Parameters

predicates

...(x) => unknown[]

Returns

(x): boolean

Parameters
x

T

Returns

boolean


sort()

sort<T>(xs): T[]

Defined in: packages/lib/src/Tools.ts:675

Returns sorted copy of array

Type Parameters

T

T

Parameters

xs

T[]

Array to sort

Returns

T[]

New sorted array


sortBy()

sortBy<T>(f, xs): T[]

Defined in: packages/lib/src/Tools.ts:683

Returns array sorted by key function

Type Parameters

T

T

Parameters

f

(x) => any

Function to generate sort key

xs

Iterable<T>

Array to sort

Returns

T[]

Sorted array


spec()

spec(values): (x, ...args) => boolean

Defined in: packages/lib/src/Tools.ts:1630

Returns a function that checks if key/value pairs of x match all pairs in spec

Parameters

values

any[] | Obj<any>

Returns

(x, ...args): boolean

Parameters
x

any[] | Obj<any>

args

...unknown[]

Returns

boolean


splitAt()

splitAt<T>(n, xs): T[][]

Defined in: packages/lib/src/Tools.ts:805

Splits array into two parts at index

Type Parameters

T

T

Parameters

n

number

xs

T[]

Returns

T[][]


stripProtocol()

stripProtocol(url): string

Defined in: packages/lib/src/Tools.ts:1402

Removes protocol (http://, https://, etc) from URL

Parameters

url

string

URL to process

Returns

string

URL without protocol


sub()

sub(x, y): number

Defined in: packages/lib/src/Tools.ts:149

Subtracts two numbers, handling undefined values

Parameters

x

undefined | number

y

undefined | number

Returns

number


sum()

sum(xs): number

Defined in: packages/lib/src/Tools.ts:189

Returns sum of array values, handling undefined values

Parameters

xs

(undefined | number)[]

Returns

number


switcher()

switcher<T>(k, m): T

Defined in: packages/lib/src/Tools.ts:1010

Switches on key in object, with default fallback

Type Parameters

T

T

Parameters

k

string

Key to look up

m

Record<string, T>

Object with values and optional default

Returns

T

Value at key or default value


take()

take<T>(n, xs): T[]

Defined in: packages/lib/src/Tools.ts:433

Returns first n elements of array

Type Parameters

T

T

Parameters

n

number

Number of elements to take

xs

Iterable<T>

Input array

Returns

T[]

Array of first n elements


tap()

tap<T, F>(f): (x) => T

Defined in: packages/lib/src/Tools.ts:74

Runs the provided function on the given value and returns the value

Type Parameters

T

T

F

F extends (x) => unknown

Parameters

f

F

Function to call

Returns

tapped function

(x): T

Parameters
x

T

Returns

T


throttle()

throttle<F>(ms, f): F | (...args) => void

Defined in: packages/lib/src/Tools.ts:1230

Creates throttled version of function

Type Parameters

F

F extends (...args) => any

Parameters

ms

number

Minimum time between calls

f

F

Function to throttle

Returns

F | (...args) => void

Throttled function


throttleWithValue()

throttleWithValue<T>(ms, f): () => T

Defined in: packages/lib/src/Tools.ts:1266

Creates throttled function that returns cached value

Type Parameters

T

T

Parameters

ms

number

Minimum time between updates

f

() => T

Function to throttle

Returns

Function returning latest value

(): T

Returns

T


thrower()

thrower(message): (...args) => never

Defined in: packages/lib/src/Tools.ts:1061

Throws an error with the given message

Parameters

message

string

Returns

(...args): never

Parameters
args

...unknown[]

Returns

never


toggle()

toggle<T>(x, xs): T[]

Defined in: packages/lib/src/Tools.ts:520

Toggles presence of element in array

Type Parameters

T

T

Parameters

x

T

Element to toggle

xs

T[]

Source array

Returns

T[]

New array with element added or removed


toInt()

toInt(x): undefined | number

Defined in: packages/lib/src/Tools.ts:1849

Parses a string or number to an integer

Parameters

x

undefined | string | number

Returns

undefined | number

number or undefined


toIterable()

toIterable(x): any

Defined in: packages/lib/src/Tools.ts:827

Ensures value is iterable by wrapping in array if needed

Parameters

x

any

Returns

any


tryCatch()

tryCatch<T>(f, onError?): undefined | T

Defined in: packages/lib/src/Tools.ts:1041

Safely executes function and handles errors

Type Parameters

T

T

Parameters

f

() => T

Function to execute

onError?

(e) => void

Optional error handler

Returns

undefined | T

Function result or undefined if error


union()

union<T>(a, b): T[]

Defined in: packages/lib/src/Tools.ts:464

Creates union of two arrays

Type Parameters

T

T

Parameters

a

Iterable<T>

First array

b

Iterable<T>

Second array

Returns

T[]

Array containing unique elements from both arrays


uniq()

uniq<T>(xs): T[]

Defined in: packages/lib/src/Tools.ts:644

Returns array with duplicate elements removed

Type Parameters

T

T

Parameters

xs

T[]

Array with possible duplicates

Returns

T[]

Array with unique elements


uniqBy()

uniqBy<T>(f, xs): T[]

Defined in: packages/lib/src/Tools.ts:652

Returns array with elements unique by key function

Type Parameters

T

T

Parameters

f

(x) => any

Function to generate key for each element

xs

Iterable<T>

Input array

Returns

T[]

Array with elements unique by key


uploadFile()

uploadFile(url, file): Promise<any>

Defined in: packages/lib/src/Tools.ts:1517

Uploads file to URL

Parameters

url

string

Upload URL

file

File

File to upload

Returns

Promise<any>

Promise of parsed JSON response


within()

within(bounds, n): boolean

Defined in: packages/lib/src/Tools.ts:208

Checks if a number is between two values (inclusive)

Parameters

bounds

[number, number]

Lower and upper bounds

n

number

Number to check

Returns

boolean

True if n is between low and high


without()

without<T>(a, b): T[]

Defined in: packages/lib/src/Tools.ts:512

Returns elements from second array not present in first

Type Parameters

T

T

Parameters

a

T[]

Array of elements to exclude

b

T[]

Source array

Returns

T[]

Filtered array


yieldThread()

yieldThread(): any

Defined in: packages/lib/src/Tools.ts:1210

Creates a microtask that yields to other tasks in the event loop

Returns

any

Promise that resolves after yielding