API Reference

clamp

Clamp a number between a minimum and maximum value.

function clamp(value: number, min: number, max: number): number
ParameterTypeDescription
valuenumberInput value
minnumberLower bound
maxnumberUpper bound

Returns the clamped value.

clamp(150, 0, 100) // 100
clamp(-5, 0, 100) // 0
clamp(50, 0, 100) // 50

debounce

Create a debounced version of a function that delays invocation until after ms milliseconds have elapsed since the last call.

function debounce<T extends (...args: unknown[]) => void>(
  fn: T,
  ms: number
): (...args: Parameters<T>) => void
ParameterTypeDescription
fnTFunction to debounce
msnumberDelay in milliseconds

Returns a debounced wrapper function.

const save = debounce(() => writeFile(), 500)
// Only fires 500ms after the last call
save()
save()
save() // only this one executes

groupBy

Group an array of items by a key derived from each item.

function groupBy<T>(items: readonly T[], keyFn: (item: T) => string): Record<string, readonly T[]>
ParameterTypeDescription
itemsreadonly T[]Array to group
keyFn(item: T) => stringKey extractor function

Returns an object mapping keys to arrays of items.

const users = [
  { name: 'Alice', role: 'admin' },
  { name: 'Bob', role: 'user' },
  { name: 'Carol', role: 'admin' },
]

groupBy(users, (u) => u.role)
// {
//   admin: [{ name: 'Alice', role: 'admin' }, { name: 'Carol', role: 'admin' }],
//   user: [{ name: 'Bob', role: 'user' }],
// }