Skip to content

All Functions

464 implemented helpers + 60 covered by native JavaScript APIs, sorted alphabetically.

FunctionCategoryDescription
AbortSignalLiketypeWhat helpers4 needs of an `AbortSignal`: whether it is aborted, why, and a way to listen for the abort.
add / subtract (date arithmetic)datenative JS Temporal.PlainDate.prototype.add(duration) / .subtract(duration) (Temporal (Stage 3))
addDaysdateAdds days to a date.
addMonthsdateAdds months to a date.
addYearsdateAdds years to a date.
agreelicenseWhether two raw license strings agree closely enough to count as “no real conflict” — true when their family sets share…
AlpineDependencypackageOne package reference of an Alpine (apk) `depends` list.
AlpineOperatorpackageThe operators of an Alpine (apk) version constraint, as apk writes them: the five comparisons;
analyzeCommitscommitAnalyses a list of commits to suggest a semantic version bump.
applyToPointgeometryTransforms a point by a matrix.
applyToRectgeometryTransforms a rectangle by a matrix and returns its bounding box: the smallest axis-aligned rectangle that contains it.
ArchDependencypackageOne package reference of an Arch Linux `depends` array.
argbToRgbcolorConverts a 32-bit packed ARGB integer (as used by e.g.
blendColorscolorComposites a source color over a backdrop with a blend mode, as the browser does for `mix-blend-mode` (W3C Compositing…
BrandtypeBrands a base type `T` with a phantom tag `B` to create a nominal type.
buildConventionalCommitRegexcommitBuilds a regular expression matching the **subject line** of a Conventional Commits message.
buildStatusTableciBuilds a Markdown table body from a map of job names to CI/CD statuses.
camelCasestringConverts a string to camelCase.
camelCaseKeysobjectRecursively transforms every key of a plain object (including keys nested inside arrays and nested objects) to camelCas…
capitalizestringCapitalizes the first letter of a string.
cartesianProductarrayComputes the Cartesian product of the provided arrays.
ceil / floornumbernative JS Math.ceil() / Math.floor() (ES1)
chunkarrayChunks an array into smaller arrays of specified size.
clampnumberClamps a number between min and max values
clampDatedateClamps a date to a [min, max] range.
cleanPathurlClean an URL by removing duplicate slashes.
cloneobjectCreates a shallow copy of a value — one level deep, unlike cloneDeep.
cloneDeepobjectCreates a deep copy of an object or array.
combineobservableCombine two observables with a map function and an optional pre-treatment.
combineLatestobservableCombines multiple Observables to create an Observable whose values are calculated from the latest values of each of its…
combineSortFnsarrayChains multiple sort functions into a single comparator: the first function decides the order unless it reports a tie (…
compactarrayRemoves all falsy values (`false`, `null`, `undefined`, `0`, `""`, `NaN`) from an array.
compactobjectRemoves all entries with falsy values (`false`, `null`, `undefined`, `0`, `""`, `NaN`) from an object.
comparedateComparison of two dates.
compareversionCompares two version strings, according to the given `scheme`.
compare (ordering)datenative JS Temporal.PlainDate.compare(a, b) / Temporal.Instant.compare(a, b) (Temporal (Stage 3))
ComparisonOperatorpackageThe operators of an RPM or Arch Linux version constraint.
composefunctionComposes functions right-to-left: `compose(f, g)(x)` is equivalent to `f(g(x))`.
consoleLogPromisepromiseReturns a function that logs data to the console and passes it through.
containsgeometryWhether a point or a rectangle is inside a rectangle.
contrastRatiocolorComputes the WCAG 2 contrast ratio between two colors, from 1 (identical) to 21 (black on white).
correctFloatnumberCorrects floating-point arithmetic errors by rounding to a given number of significant digits.
countByarrayGroups the elements of an array by the key returned by `keyFn` and returns a record mapping each key to the number of m…
countBymapGroups the entries of a Map by a derived key and counts how many fall into each group.
countBysetGroups the values of a Set by a derived key and counts how many fall into each group.
createBackStackstructureCreates a back stack: a stack that always has a current entry (the one on top), with the previous ones underneath to go…
createByteReaderbinaryCreates a cursor over bytes, for decoding binary formats: fixed-size integers and floats, LEB128 varints (signed ones z…
createByteWriterbinaryCreates a growable buffer to encode binary formats: the counterpart of createByteReader, with the same types, byte orde…
createCachedResolverfunctionCreates a lazy, cached resolver: `resolve(key)` computes and caches `compute(key)` the first time a given key is seen,…
createFileStorebrowserCreates a file store on a named Cache API cache: keep a computed set of files (a bake, a download, extracted layers) un…
createGlobMatcherstringcreateMatcher with every string read as a glob (`*`, `?`): no string is ever taken for a regular expression, so it neve…
createMatcherstringTurns user-supplied filters (a setting, a CLI flag, a list of rules) into one predicate.
createMutexpromiseCreates a mutex: a lock allowing at most one holder at a time, queueing excess `acquire()` callers in FIFO order.
createRegexMatcherstringcreateMatcher with every string read as the source of a regular expression, without slashes or flags (`’^(Home|Login)$’…
createSafeMatcherstringLike createMatcher, but returns `null` instead of throwing when a string pattern is an invalid regular expression, to r…
createSemaphorepromiseCreates a semaphore limiting concurrent access to `permits` holders at a time, queueing excess `acquire()` callers in F…
createSortByBooleanFnarrayCreates a sort function for objects by a boolean property.
createSortByDateFnarrayCreates a sort function for objects by date property.
createSortByNaturalFnarrayCreates a sort function for objects by one or more string properties using natural ordering.
createSortByNumberFnarrayCreates a sort function for objects by number property.
createSortByStringFnarrayCreates a sort function for objects by one or more string properties.
createUnionFindstructureCreates a disjoint-set (union-find) structure: tracks a partition of items into non-overlapping sets, merging two sets…
cubicBezieranimationBuilds the easing function of CSS `cubic-bezier(x1, y1, x2, y2)`: given the progress of time (`0` to `1`), it returns t…
curryfunctionTransforms a multi-argument function into a chain of single-argument functions (Haskell-style currying).
daysInMonthdateReturns the number of days in the given month of the given year.
DebianDependencypackageOne package reference of a Debian relationship field: `name[:arch] [(op version)] [[archs]] []`.
DebianDependencyOptionspackageOptions of the Debian format of parseDependencies.
DebianOperatorpackageThe operators of a Debian version constraint (Debian Policy 7.1): `<<` (strictly earlier), `<=`, `=`, `>=` and `>>` (st…
debouncefunctionCreates a debounced function that delays invoking func until after delay milliseconds have elapsed since the last time…
decodeImagebrowserLoads an image and waits until it is decoded, so it can be painted without a flash or a decoding pause (e.g.
dedentstringStrips the common leading whitespace from every line of a multi-line string, and trims a single leading/trailing blank…
DeepGettypeResolves the value type at a given `Path` within `T`.
DeepPartialtypeRecursively makes all properties of T optional, including nested objects and array elements.
DeepSettypeProduces the type of `T` after replacing the value at `Path` with `V`.
DeepWritabletypeRecursively removes `readonly` from all properties of T, including nested objects, array elements, and tuple positions.
DEFAULT_PERCENTAGE_TIERSciDefault tiers, geared towards coverage/quality-gate style percentages.
deferpromiseRuns an async function and guarantees that all deferred callbacks are executed afterwards, in LIFO order (last register…
delaypromiseCreates a promise that resolves after specified delay
deobfuscatestringReverses obfuscate.
DependencyConstraintpackageA version constraint such as the `(>= 2.34)` of `libc6 (>= 2.34)`, with the operator spelled as the format spells it.
diffobjectStructural object diff.
differencearrayReturns the difference between two arrays (items in first array but not in second).
differencedateCalculates the difference between two dates in the specified unit.
differencesetnative JS Set.prototype.difference() (ES2025 (Set methods))
distancegeographyGreat-circle distance between two WGS84 points, in kilometres (haversine formula, mean Earth radius of 6371 km).
droparraynative JS Array.prototype.slice(n) (ES3)
eachDaydateReturns an array of `Date` objects for each day from `start` to `end` (inclusive).
eachMonthdateReturns an array of `Date` objects for the first day of each month from `start` to `end` (inclusive).
ellipsePathgeometryThe path of the ellipse that fills a box, as SVG path data: two half-turn arcs.
endOfdateReturns a new `Date` set to the **end** of the given unit.
ensureArrayarrayWraps a value in an array if it is not already one.
ensureDatedateSafely converts a date-like value to a valid `Date` object, or returns `null`.
equalsDeeparrayRecursive structural array equality.
equalsDeepobjectRecursive structural object equality.
equalsShallowarrayPositional, one-level (shallow) array equality.
equalsShallowobjectOne-level (shallow) object equality.
equalsUnorderedarrayOrder-independent (set-style) array equality.
escapemarkdownEscapes all Markdown special characters in a string so they render as literal text rather than formatting syntax.
escapeHtmlstringEscapes the HTML special characters `&`, `<`, `>`, `”`, and `’` in a string.
escapeRegExpstringEscapes regular expression metacharacters (`.
everymapChecks if every entry of a Map satisfies the predicate.
excerptstringDerives a short, readable excerpt from a longer text — for a card/header/preview where a full paragraph doesn’t fit.
extractErrorMessagestringConvert an error to a readable message.
extractNumbernumberExtracts the first number embedded anywhere in a string, or passes through a `number`.
extractPureURIurlExtracts the pure URI from a URL by removing query parameters and fragments.
falsyPromiseOrThrowpromiseReturns a function that passes through falsy data or throws an error.
familieslicenseGroups a raw, possibly compound license string into its coarse family set — e.g.
fetchJsonfetchFetches a URL and returns its parsed JSON body, retrying transient failures.
fetchJsonpromiseFetches a URL and returns its parsed JSON body, retrying transient failures (network errors, `5xx` and `429`).
fetchOrThrowfetchWraps `fetch` so that a non-2xx response rejects with an HttpError, instead of resolving like any other response — the…
fetchOrThrowpromiseWraps `fetch` so that a non-2xx response rejects with an HttpError.
filtermapCreates a new Map containing only the entries for which the predicate returns true.
filtersetCreates a new Set containing only the values for which the predicate returns true.
filterAsyncarrayThe async counterpart to `Array.prototype.filter`: runs `predicate` for every item and resolves to the items whose pred…
find / findIndexarraynative JS Array.prototype.find() / findIndex() (ES2015)
findKeymapReturns the first key of a Map whose entry satisfies the predicate, in insertion order.
findKey / findValuemapnative JS map.entries().find(([k, v]) => pred(v, k))?.[0 or 1] (ES2025 (Iterator Helpers))
findMaparrayReturns the first non-`undefined` result of mapping `fn` over `array`, short-circuiting as soon as one is found.
findValuemapReturns the first value of a Map whose entry satisfies the predicate, in insertion order.
fitgeometryPlaces content in a box like CSS `object-fit` and `object-position`, e.g.
fitContaingeometryPlaces content in a box, as large as possible while staying entirely inside the box (CSS `object-fit: contain`).
fitCovergeometryPlaces content in a box, as small as possible while covering the whole box (CSS `object-fit: cover`).
fitFillgeometryPlaces content in a box, stretched to the box on each axis, without keeping its proportions (CSS `object-fit: fill`).
fitNonegeometryPlaces content in a box, at its own size, only positioned (CSS `object-fit: none`).
fitScaleDowngeometryPlaces content in a box, like fitContain, but never enlarged (CSS `object-fit: scale-down`).
flattenobjectFlattens a nested object into a single-level object whose keys are the dot-notation path to each leaf value.
flatten / flatarraynative JS Array.prototype.flat(depth?) (ES2019)
flipfunctionCreates a function that invokes `fn` with the first two arguments swapped.
forEachmapnative JS Map.prototype.forEach((value, key, map) => ...) (ES2015)
forEachsetnative JS Set.prototype.forEach((value, value2, set) => ...) (ES2015)
forEachAsyncarrayThe async counterpart to `Array.prototype.forEach`: runs `fn` for every item for its side effects, discarding any retur…
formatdateFormats a date as a short label that does not depend on the machine: UTC, English, and `Jul 27, 2026` by default.
formatCompactnumberFormats a number using compact notation (e.g.
formatDurationdateFormats a duration in milliseconds as a compact human-readable string.
formatInTimezonedateFormats a date in a specific IANA timezone using `Intl.DateTimeFormat`.
formatPartialdateFormats a partial ISO date at the precision it was given, in UTC: a year alone is approximate and reads `c.
formatPathgeometryWrites path commands back as SVG path data: letters and numbers separated by single spaces, numbers rounded to `precisi…
formatProgressBarstringFormats a value as a text progress bar, repeating `filledChar`/`emptyChar` across `width` cells proportional to `value…
formatSizenumberFormat a byte count into a human-readable string with the appropriate unit.
frameLoopanimationCalls `onFrame` once per animation frame with the time elapsed since the start, until it returns `false` or the loop is…
from (parse temporal string)datenative JS Temporal.Instant.from(str) / Temporal.PlainDate.from(str) / etc. (Temporal (Stage 3))
fromBase64stringDecodes Base64 text.
fromMillisdateCreates a `Date` from a timestamp in **milliseconds**.
fromSecondsdateCreates a `Date` from a timestamp in **seconds**.
getobjectGets a value from an object using a dot/bracket-notated path or explicit key array.
getTimezoneOffsetdateReturns the UTC offset **in minutes** for the given IANA timezone at a specific point in time.
globToRegExpstringCompiles a glob pattern into a `RegExp` that matches the whole string.
groupBymapnative JS Map.groupBy(map.entries(), ([k, v]) => groupFn(v, k)) (ES2024)
groupByobjectGroups an array of items by a key derived from each item.
groupBysetnative JS Map.groupBy(set.values(), fn) (ES2024)
groupBy / grouparraynative JS Object.groupBy(arr, fn) (ES2024)
guardpromiseWraps a function so that if it throws, a default value is returned instead of propagating the error.
hasobjectnative JS Object.hasOwn(obj, key) (ES2022)
hasValuemapChecks whether a value exists anywhere in a Map (`Map.prototype.has` checks keys, not values).
hasValuemapnative JS map.values().some(v => Object.is(v, value)) (ES2025 (Iterator Helpers))
head / firstarraynative JS Array.prototype.at(0) (ES2022)
hexToRgbcolorParses a hex color string (`#rgb`, `#rgba`, `#rrggbb`, `#rrggbbaa` — the leading `#` is optional) into its RGB(A) chann…
hsbToRgbcolorConverts an HSB(A) color (also called HSV), as shown by design tool color pickers, into RGB(A).
hslToCsscolorFormats an HSL(A) color as a CSS `hsl()` value, in the modern space-separated syntax.
hslToRgbcolorConverts an HSL(A) color into RGB(A).
identityfunctionReturns the given value unchanged Useful as a default transform, in function composition, or as a placeholder mapper.
identitygeometryThe matrix that changes nothing.
includesarraynative JS Array.prototype.includes() (ES2016)
incrementversionIncrements a version, according to the given `scheme`.
incrementPrereleaseversionIncrements the prerelease portion of a version, according to the given `scheme` — the semantics `npm version prerelease…
injectWordBreaksstringAdds word-break opportunities to a string so it can wrap cleanly in narrow UI containers such as side panels or table c…
inRangenumberChecks whether a number falls within `[min, max]` (both inclusive by default).
interpolateanimationBlends two values of the same shape: every number goes from its value in `from` (`t = 0`) to its value in `to` (`t = 1`…
intersectionarrayCompute the intersection of two arrays, meaning the elements that are present in both arrays.
intersectiongeometryThe area two rectangles have in common.
intersectionsetnative JS Set.prototype.intersection() (ES2025 (Set methods))
intersectsarraySimple helper that check if two lists shared at least an item in common.
intersectsgeometryWhether two rectangles have an area in common, exactly when intersection returns a rectangle: rectangles that only touc…
invertgeometryThe matrix that undoes `m`, e.g.
invertobjectReturns a new object with keys and values swapped.
isArrayguardChecks if a value is an array.
isArrayBufferguardChecks if a value is an ArrayBuffer instance.
isArrayLikeguardChecks if a value is array-like: has a non-negative integer `length` property.
isAsyncFunctionguardChecks if a value is an async function.
isAsyncGeneratorguardChecks if a value is an async generator object (the result of calling an `async function*`).
isAsyncGeneratorFunctionguardChecks if a value is an async generator function (an `async function*` declaration or expression).
isAsyncIterableguardChecks if a value implements the async iterable protocol.
isBigIntguardChecks if a value is a bigint.
isBlankstringChecks if a string is blank — empty or contains only whitespace characters.
isBlobguardChecks if a value is a Blob instance.
isBooleanguardChecks if a value is a boolean.
isBrowserguardChecks whether the code is currently running in a browser-like environment (`window` and `window.document` both defined…
isBuffernodeChecks if a value is a Node.js Buffer instance.
isBusinessDaydateChecks whether a date falls on a business day (i.e.
isCanonicalJsonguardChecks whether a value is a string that is already canonical JSON (RFC 8785, JSON Canonicalization Scheme) — byte for b…
isConventionalCommitcommitChecks whether a commit message’s subject line follows the Conventional Commits format constrained by the given options.
isCssColorguardChecks whether a value is a syntactically-safe, plain CSS color: a hex color (`#rgb`, `#rgba`, `#rrggbb`, `#rrggbbaa`),…
isDateguardChecks if a value is a Date instance.
isDefinedguardChecks if a value is defined (not undefined nor null).
isDirectInstanceOftypenative JS value.constructor === Foo (ES1)
isEmptyarrayChecks if an array is empty (has no elements).
isEmptyobjectChecks if a plain object has no own enumerable string-keyed properties.
isEmptystringChecks if a string is empty (`""`), `null`, or `undefined`.
isErrorguardChecks if a value is an Error instance.
isEvennumberChecks if a value is an even integer.
isExternalurlWhether a link points to another origin than `base`: an absolute `http(s)` URL or a protocol-relative one (`//host/path…
isFalsyguardChecks if a value is falsy (`false`, `null`, `undefined`, `0`, `""`, `NaN`).
isFinite / isFiniteNumbertypenative JS Number.isFinite(value) (ES2015)
isFormDataguardChecks if a value is a FormData instance.
isFunctionguardChecks if a value is a function.
isGeneratorguardChecks if a value is a generator object (the result of calling a `function*`).
isGeneratorFunctionguardChecks if a value is a generator function (a `function*` declaration or expression).
isHostnameguardChecks whether a value is a syntactically valid DNS hostname (RFC 952, RFC 1123, RFC 3696 section 2).
isHtmlElement / isUrlInstance / isUrlSearchParamstypenative JS value instanceof HTMLElement / URL / URLSearchParams (Web API)
isIJsonguardChecks whether a value is a string holding I-JSON (RFC 7493, the Internet JSON message format): strict JSON that every…
isInfinitetypenative JS value === Infinity || value === -Infinity / !Number.isFinite(value) && !Number.isNaN(value) (ES2015)
isIntegertypenative JS Number.isInteger(value) (ES2015)
isIterableguardChecks if a value is iterable (has a `Symbol.iterator` method).
isJSONguardChecks whether a value is a string containing valid, parseable JSON text.
isJson5guardChecks whether a value is a string holding valid JSON5 (JSON5 1.0.0) — JSON with comments, trailing commas, unquoted ke…
isJSONArrayguardChecks whether a value is an array whose every element is a valid JSON value (see isJSONValue).
isJsoncguardChecks whether a value is a string holding valid JSONC — JSON with comments and trailing commas, the dialect of `tsconf…
isJSONObjectguardChecks whether a value is a plain object whose every own value is a valid JSON value (see isJSONValue).
isJsonSequenceguardChecks whether a value is a string holding a valid JSON text sequence (RFC 7464, `application/json-seq`): records that…
isJSONValueguardChecks whether a value is composed entirely of JSON-representable types: `string`, finite `number`, `boolean`, `null`,…
isKnownlicenseWhether a raw license string resolves to at least one recognized family — `false` for an empty string, a purely non-inf…
isLeapYeardateReturns `true` if the given year is a leap year.
isLengthguardChecks whether a value is a valid array-like `length`: a non-negative safe integer (`0 <= value <= Number.MAX_SAFE_INTE…
isLight / isDark (pick a readable text color)colornative JS contrast-color(<color>) (CSS Color 6 (Baseline newly available since April 2026 — Chrome 147, Firefox 146, Safari 26.0))
isMapguardChecks if a value is a Map instance.
isNaNtypenative JS Number.isNaN(value) (ES2015)
isNdjsonguardChecks whether a value is a string holding valid newline-delimited JSON — one strict JSON value per line, as NDJSON and…
isNegativenumberChecks if a value is a number less than 0.
isNodeguardChecks whether the code is currently running in a Node.js-like environment (`process.versions.node` is defined — also t…
isNodeStreamnodeChecks if a value is a Node.js stream (has a `.pipe()` method).
isNonEmptyarrayChecks if an array is non-empty (has at least one element).
isNonEmptyobjectChecks if a plain object has at least one own enumerable string-keyed property.
isNonEmptystringChecks if a string is non-empty (has at least one character).
isNotBlankstringChecks if a string is not blank — non-empty and contains at least one non-whitespace character.
isNullguardChecks if a value is `null`.
isNullishguardChecks if a value is null or undefined (nullish).
isNumberguardChecks if a value is a number.
isObservableobservableChecks if a value is an RxJS Observable or any compatible observable.
isOddnumberChecks if a value is an odd integer.
isoWeekdateISO 8601 week of a date: weeks start on Monday and week 1 is the one that contains the first Thursday of the year, so t…
isPlainObjectguardChecks if a value is a plain object.
isPositivenumberChecks if a value is a number greater than 0.
isPrereleaseversionReturns `true` when the version string has a prerelease suffix, according to the given `scheme`.
isPrimitiveguardChecks if a value is a JavaScript primitive.
isPromiseguardChecks if a value is a Promise or a thenable.
isPromiseLikeguardChecks if a value is a thenable (has a `.then()` method).
isPropertyKeyguardChecks if a value is a valid property key: `string`, `number`, or `symbol`.
isRegExpguardChecks if a value is a RegExp instance.
isSafeIntegertypenative JS Number.isSafeInteger(value) (ES2015)
isSameDaydateChecks if two dates are the same day.
isSameMonthdateChecks if two dates are in the same month (and year).
isSameYeardateChecks if two dates are in the same year.
isSetguardChecks if a value is a Set instance.
isSet (Set data structure)typenative JS value instanceof Set (ES2015)
isSharedArrayBuffernodeChecks if a value is a `SharedArrayBuffer` instance.
isSpecialObjectguardDetermines if a value is a special object that should not have its properties compared deeply.
isStringguardChecks if a value is a string.
isSymbolguardChecks if a value is a symbol.
isTemporalDurationguardChecks if a value is a `Temporal.Duration`.
isTemporalInstantguardChecks if a value is a `Temporal.Instant`.
isTemporalPlainDateguardChecks if a value is a `Temporal.PlainDate`.
isTemporalPlainDateTimeguardChecks if a value is a `Temporal.PlainDateTime`.
isTemporalPlainTimeguardChecks if a value is a `Temporal.PlainTime`.
isTemporalZonedDateTimeguardChecks if a value is a `Temporal.ZonedDateTime`.
isTimestampguardChecks if a value is a valid timestamp (milliseconds or Unix seconds).
isTimestampInSecondsdateChecks if a timestamp is likely in seconds (Java/Unix style) vs milliseconds (JavaScript style)
isTruthyguardChecks if a value is truthy (not `false`, `null`, `undefined`, `0`, `""`, or `NaN`).
isUndefinedguardChecks if a value is `undefined`.
isValiddateChecks if a value is a valid Date instance (not `Invalid Date`).
isValidversionWhether `version` is a valid version in the given `scheme`.
isValidDateStringdateChecks whether a string can be parsed into a valid `Date`.
isValidRegexguardChecks if a string is a valid regex pattern.
isWeakMapguardChecks if a value is a WeakMap instance.
isWeakMap / isWeakSet / isWeakReftypenative JS value instanceof WeakMap / WeakSet / WeakRef (ES2015 / ES2021)
isWeakMapKeyguardChecks whether a value can be used as a key in a `WeakMap` (or a `WeakSet` member / `WeakRef` target) — an object, a fu…
isWeakSetguardChecks if a value is a WeakSet instance.
isWeekenddateChecks whether a date falls on a weekend day.
isWithinDistancegeographyWhether a point lies within a radius of a center, the border included.
isWithinRangedateChecks whether a date falls within a range (inclusive on both ends).
kebabCasestringConverts a string to kebab-case.
kebabCaseKeysobjectRecursively transforms every key of a plain object (including keys nested inside arrays and nested objects) to kebab-ca…
keys / valuesobjectnative JS Object.keys() / Object.values() (ES2017)
KeysOfTypetypeExtracts the keys of `T` whose values extend `V`.
lastarraynative JS Array.prototype.at(-1) (ES2022)
leadingSentencestringExtracts the leading sentence from a string.
lerpnumberLinearly interpolates between `start` and `end` by the factor `t`.
levenshteinDistancestringLevenshtein edit distance between two strings — the minimum number of single-character insertions, deletions, or substi…
levenshteinSimilaritystringNormalized Levenshtein similarity between two strings, in `[0, 1]` — `1` means identical, `0` means completely dissimil…
lighten / darkencolornative JS color-mix(in oklch, <color> <percent>, white|black) (CSS Color 5 (Baseline widely available since 2023 — Chrome 111, Firefox 113, Safari 16.2))
listTimezonesdateReturns the list of IANA timezone identifiers supported by the runtime.
loadFontbrowserLoads a font and registers it in `document.fonts`, so CSS and canvas can use `family` right away.
mapobjectTransforms the values and/or keys of a plain object in a single pass.
mapsetCreates a new Set with each value transformed by a function.
map / filtersetnative JS new Set(set.values().map(fn)) / new Set(set.values().filter(fn)) (ES2025 (Iterator Helpers))
mapAsyncarrayThe async counterpart to `Array.prototype.map`: applies `fn` to every item and resolves to an array of the results, in…
mapDeepobjectRecursively transforms the keys and/or values of a plain object — the deep counterpart to map, which only transforms th…
mapKeysmapCreates a new Map with the same values but with each key transformed by a function.
mapSettledarrayLike mapAsync, but never rejects: each item gets its own result, in the shape of `Promise.allSettled`, so one failure d…
mapValuesmapCreates a new Map with the same keys but with each value transformed by a function.
matchesMediabrowserWhether the document currently matches a CSS media query.
matchGlobstringWhether `text` matches a glob pattern in full: `*` matches any run of characters, `?` exactly one.
matrixToCssgeometryWrites a matrix as a CSS `transform` or SVG `transform` value.
maxarrayReturns the maximum value in an array using a loop instead of spread, avoiding the call stack overflow that occurs with…
maxByarrayReturns the element of an array with the greatest derived key, computed by `keyFn`.
MaybetypeType for values that can be T, undefined, or null.
meanarrayCalculates the arithmetic mean (average) of an array of numbers.
meanByarrayCalculates the arithmetic mean of numbers derived from each item of an array via an iteratee.
meaningPromiseOrThrowpromiseReturns a function that passes through meaningful data or throws an error.
medianarrayCalculates the median (middle value) of an array of numbers.
mediaTypeOfbinaryFinds the media type of an image from its first bytes (its magic number), whatever its name says: PNG, JPEG, GIF, WebP,…
mediaTypeOfPathbinaryFinds the media type of a file from the extension of its path or URL: images, fonts, web documents, scripts and styles,…
memoizefunctionReturns a memoized version of the function that caches results.
merge (shallow)objectnative JS { ...a, ...b } or Object.assign({}, a, b) (ES2015)
mergeDeepobjectMerges two or more objects deeply, returning a **new** object without mutating any input.
minarrayReturns the minimum value in an array using a loop instead of spread, avoiding the call stack overflow that occurs with…
min / maxnumbernative JS Math.min(...arr) / Math.max(...arr) (ES1)
minByarrayReturns the element of an array with the smallest derived key, computed by `keyFn`.
mixColorscolorMixes two colors in sRGB, as CSS `color-mix(in srgb, color P%, base)` does: `percent`% of `color` and the rest of `base…
multiplygeometryMultiplies matrices, in the mathematical order: the last one applies first.
negatefunctionCreates a function that negates the result of `predicate`.
noopfunctionA no-operation function that does nothing and returns `undefined` Useful as a default callback, placeholder, or to exp…
normalizeTimestampdateConverts a timestamp to JavaScript milliseconds format
now (date/time/instant)datenative JS Temporal.Now.instant() / .zonedDateTimeISO() / .plainDateISO() / .plainTimeISO() (Temporal (Stage 3))
NullabletypeAdds `null` to a type (`T | null`).
NullishtypeAdds `null` and `undefined` to a type (`T | null | undefined`).
obfuscatestringHides a text from anything that reads the raw page source: the text is reversed (by Unicode code point, so emoji stay w…
observeIntersectionbrowserCalls `callback` each time `element` enters or leaves the viewport (or `options.root`), with an `IntersectionObserver`…
observeResizebrowserCalls `callback` each time the size of `element` changes, with a `ResizeObserver` dedicated to it.
omitobjectCreates a new object without the specified keys.
omitByobjectCreates a new object without the own enumerable entries for which `predicate` returns `true`.
OmitByValuetypeConstructs a type by omitting all entries of `T` whose values extend `V`.
oncefunctionCreates a function that is restricted to be called only once.
onlyPathurlExtract only the path from an URI with optional query and fragments.
onPointerIntentbrowserTells a tap from a drag, and hover from touch, on one element: the pointer-event logic every draggable or clickable wid…
OptionalKeystypeExtracts the optional keys of an object type `T`.
overlapsdateChecks whether two date ranges overlap.
padStart / padEndstringnative JS String.prototype.padStart() / padEnd() (ES2017)
paginatepromiseCollects every item of a paginated source by requesting pages one after the other, from page 1, until the source runs o…
parallelpromiseRuns an array of async functions with a concurrency limit.
parallelSettlepromiseRuns an array of async functions with a concurrency limit, partitioning the outcomes instead of rejecting on the first…
parsejsonParses JSON permissively: strict JSON, JSONC (the dialect of `tsconfig.json` and VS Code’s `settings.json`, also known…
parseversionParses a version string into its components, according to the given `scheme`.
parseConventionalCommitcommitParses a Conventional Commits message into a structured object.
parseDeb822packageParses a deb822 document, the format of Debian `Packages`, `Sources` and `Release` indexes, `control` and `.dsc` and `.…
parseDependenciespackageParses the value of a package dependency field (`Depends`, `Requires`, `depends`, …) into a structure: groups of alte…
parseDurationdateParses a compact duration string (as produced by formatDuration, e.g.
ParsedVersionversionA version parsed according to SemVer 2.0.0 — alias of ParsedSemVerVersion, kept under this name for backward compatibil…
parseEasinganimationReads a CSS easing into an easing function, to play in JavaScript the timing a stylesheet or a design tool export descr…
parseLinesjsonParses newline-delimited JSON — one JSON value per line.
parsePackageRepositoryurlParse the `repository` field from `package.json` into a structured object.
parsePartialdateParses an ISO date that may only be known to the year or the month: `YYYY`, `YYYY-MM` or `YYYY-MM-DD`.
parsePathgeometryParses SVG path data (the `d` attribute) into commands, as written: the letters keep their case (absolute or relative),…
parsePatternOrRegExpstringReads a setting that is either a regular expression or a glob: `/source/flags` is a regular expression when every flag…
parsePropertyPathobjectParses a dot/bracket-notation property path into an array of string/number key segments — the same notation accepted by…
parseSequencejsonParses a JSON text sequence (RFC 7464, `application/json-seq`): records that each start with the ASCII record separator…
parseStrictjsonParses strict JSON (RFC 8259) — exactly what `JSON.parse` accepts, nothing more.
partialfunctionPartially applies arguments to a function, returning a new function that accepts the remaining arguments.
partitionarraySplits an array into two groups based on a predicate function.
pascalCasestringConverts a string to PascalCase.
pascalCaseKeysobjectRecursively transforms every key of a plain object (including keys nested inside arrays and nested objects) to PascalCa…
Pep508DependencypackageOne requirement of a PEP 508 dependency specification.
Pep508OperatorpackageThe operators of a PEP 440 version specifier, as PEP 508 requirements use them.
percentageToTierciMaps a numeric percentage to a tier (icon, color, label) using configurable thresholds.
percentilearrayCalculates the p-th percentile of an array of numbers using linear interpolation between the closest ranks.
pickobjectCreates a new object with only the specified keys.
pickByobjectCreates a new object with only the own enumerable entries for which `predicate` returns `true`.
PickByValuetypeConstructs a type by picking all entries of `T` whose values extend `V`.
pickClosestfontPicks the face that CSS would use for a request, among the faces of one family: the CSS Fonts Level 4 matching algorith…
pipefunctionComposes functions left-to-right: the output of each function is passed as input to the next.
prefersReducedMotionbrowserWhether the user asked the system to reduce motion (`prefers-reduced-motion: reduce`).
preloadImagesbrowserLoads and decodes several images with decodeImage, a few at a time, with `mapSettled` from `helpers4/array`.
premultiplycolorMultiplies the color channels by the alpha channel (premultiplied alpha), the form compositing and GPU blending work in.
PrettifytypeFlattens an intersection type into a single readable object type.
randomBetweennumberGenerates a random number between min and max (inclusive)
randomIntBetweennumberGenerates a random integer between min and max (inclusive)
rangearrayGenerates an array of sequential numbers from start to end (exclusive).
rectToRectgeometryThe translation and scale that put one rectangle exactly on another, for animating or fitting between two boxes.
reducemapReduces a Map to a single value by applying a function to each entry, in insertion order.
reduce / some / everymapnative JS map.entries().reduce(fn, init) / .some(fn) / .every(fn) (ES2025 (Iterator Helpers))
reduce / some / every / findsetnative JS set.values().reduce(fn, init) / .some(fn) / .every(fn) / .find(fn) (ES2025 (Iterator Helpers))
reflectAttributebrowserDefines a property on `element` that is backed by an HTML attribute — what a custom element needs for `<my-card heading…
relativeLuminancecolorComputes the WCAG 2.x relative luminance of a color: the perceived brightness from 0 (black) to 1 (white), after linear…
relativeURLToAbsoluteurlConverts a relative URL to an absolute URL, using `base` when given, or else the current document base URI (and the win…
removeDiacriticsstringRemoves diacritical marks (accents) from a string, e.g.
removeUndefinedNullobjectRemove null and undefined values from an object.
repeatstringnative JS String.prototype.repeat() (ES2015)
replaceOrAppendarrayReturns a new array with the first item matching `predicate` replaced by `item` — or `item` appended at the end if no m…
requestWorkerbrowserRuns one job in a module worker: starts it, posts the request, relays its progress, resolves with its result and ends i…
RequiredKeystypeExtracts the required (non-optional) keys of an object type `T`.
resolveRecordpromiseResolves an array of keys into a record by calling an async mapper for each key.
retrypromiseRetries a promise-returning function until it succeeds or runs out of attempts, then rejects with the last error, waiti…
returnOrThrowErrorfunctionReturn a value or throw an error if null or undefined.
reversearraynative JS Array.prototype.toReversed() (ES2023)
reverseSortFnarrayReverses the order of a sort function: `reverseSortFn(fn)(a, b)` is `fn(b, a)`.
rgbToCsscolorFormats an RGB(A) color as a CSS `rgb()` value, in the modern space-separated syntax that every current browser and SVG…
rgbToHexcolorConverts an RGB(A) color into a hex color string.
rgbToHsbcolorConverts an RGB(A) color into HSB(A), the model design tools (Figma, Sketch, XD) show in their color pickers.
rgbToHslcolorConverts an RGB(A) color into HSL(A).
rgbToUnitcolorConverts an RgbColor (channels from `0` to `255`) into a color whose channels are floats from `0` to `1`, the way Figma…
rotategeometryA matrix that rotates points around the origin.
roundedRectPathgeometryThe path of a rectangle with a radius per corner, as SVG path data.
roundTonumberRounds a number to specified decimal places
RpmDependencypackageOne package reference of an RPM `Requires` field.
safeFetchfetchWraps `fetch` with built-in error handling: returns `null` when the request fails (network error, non-OK status, or par…
safeFetchpromiseWraps `fetch` and returns `null` when the request fails (network error, non-OK status, or parse error) instead of throw…
safeJsonParseobjectParses a JSON string, returning `null` (or a fallback) on any parse failure.
safeParsejsonParses JSON permissively like parse — strict JSON, JSONC (HuJSON, JWCC) and JSON5 — but returns `null` (or `fallback`)…
safeParseLinesjsonParses newline-delimited JSON (NDJSON, JSON Lines) like parseLines, but returns `null` (or `fallback`) instead of throw…
safeParseSequencejsonParses a JSON text sequence (RFC 7464) like parseSequence, but returns `null` (or `fallback`) instead of throwing on in…
safeParseStrictjsonParses strict JSON like parseStrict, but returns `null` (or `fallback`) instead of throwing on invalid input.
safeReadJsonFilenodeReads a file and parses its contents as JSON, returning `null` (or a fallback) on any failure — a missing/unreadable fi…
samplearrayPicks one or more random elements from an array.
satisfiesRangeversionChecks if a version satisfies a range, according to the given `scheme` (simple implementation — see each scheme’s own d…
scalegeometryA matrix that scales points from the origin.
selectarrayFilters and transforms an array in a single pass.
select / filterMaparraynative JS Array.prototype.filter().map() (ES5)
setobjectSets a value in an object at the given path, creating intermediate objects as needed.
settlepromiseRuns an array of promises concurrently and partitions the outcomes instead of rejecting on the first failure, unlike `P…
sha256HexbrowserThe SHA-256 digest of some data as a hexadecimal string, optionally cut short: a compact content key, not a security ch…
shufflearrayRandomly reorders elements of an array using the Fisher-Yates algorithm.
simplifyPolylinegeometryRemoves the points of a polyline that change its shape by less than `tolerance`, with the Ramer–Douglas–Peucker algorit…
slugifystringConverts a string into a URL-friendly slug.
snakeCasestringConverts a string to snake_case.
snakeCaseKeysobjectRecursively transforms every key of a plain object (including keys nested inside arrays and nested objects) to snake_ca…
somemapChecks if at least one entry of a Map satisfies the predicate.
sort (immutable)arraynative JS Array.prototype.toSorted(compareFn?) (ES2023)
sortBy / orderByarraynative JS Array.prototype.toSorted(fn?) (ES2023)
sortKeysobjectCreates a new object with the same entries as the input, but with its own keys sorted.
sortNumberAscFnarraySort numbers in ascending order
sortNumberDescFnarraySort numbers in descending order
sortStringAscFnarraySort strings in ascending order
sortStringAscInsensitiveFnarraySort strings in ascending order (case insensitive)
sortStringDescFnarraySort strings in descending order
sortStringNaturalAscFnarraySort strings in ascending order using natural (human-friendly) ordering.
sortStringNaturalAscInsensitiveFnarraySort strings in ascending natural order, ignoring case **and diacritics** (`Intl.Collator { sensitivity: ‘base’ }` — tr…
sortStringNaturalDescFnarraySort strings in descending order using natural (human-friendly) ordering.
sortStringNaturalDescInsensitiveFnarraySort strings in descending natural order, ignoring case **and diacritics** (`Intl.Collator { sensitivity: ‘base’ }` — t…
sortVersionsversionSorts version strings by version, not by text (`1.10.0` after `1.9.0`), in the given scheme: the same as `versions.sort…
springanimationSimulates a damped spring going from `0` to `1`, the curve behind “spring” transitions of design tools, and computes ho…
startOfdateReturns a new `Date` set to the **start** of the given unit.
startsWith / endsWithstringnative JS String.prototype.startsWith() / endsWith() (ES2015)
statusToBadgeciMaps a CI/CD job status to an inline code badge string.
statusToIconciMaps a CI/CD job status to an emoji icon.
stepsanimationBuilds the easing function of CSS `steps(count, position)`: progress moves by jumps instead of continuously, for frame-…
stringifyjsonSerializes a value to JSON text — pretty-printed with 2 spaces by default, or canonical.
stringifyversionReconstructs a version string from a AnyParsedVersion object — the scheme is read from the object’s own `scheme` field,…
stringifyDependenciespackageWrites dependency groups back as a field value, the inverse of parseDependencies;
stringifyForHtmljsonSerializes a value to compact JSON that is safe to inline in an HTML page, typically in a `<script type=“application/js…
stringifyLinesjsonSerializes values as newline-delimited JSON — one compact JSON value per line, each followed by `\n`.
stringifySequencejsonSerializes values as a JSON text sequence (RFC 7464, `application/json-seq`): each value is written as the ASCII record…
stripHtmlstringPlain text of an HTML fragment: tags removed, `
stripVversionStrip the leading “v” from a version string if it exists.
sumarrayCalculates the sum of an array of numbers.
sumByarrayCalculates the sum of numbers derived from each item of an array via an iteratee.
symmetricDifferencearrayReturns the symmetric difference between two arrays: items present in exactly one of the two arrays (in either, but not…
symmetricDifferencesetnative JS Set.prototype.symmetricDifference() (ES2025 (Set methods))
tailarraynative JS Array.prototype.slice(1) (ES3)
takearraynative JS Array.prototype.slice(0, n) (ES3)
templatestringInterpolates `{{key}}` placeholders in a template string with values from a data record.
throttlefunctionCreates a throttled function that only invokes func at most once per every wait milliseconds Call `cancel()`, or abort…
timeAgodateFormats a date as a human-readable relative time string.
timeoutpromiseWraps a promise to reject with a `TimeoutError` if it does not resolve within the specified duration.
titleCasestringConverts a string to Title Case.
titleCaseKeysobjectRecursively transforms every key of a plain object (including keys nested inside arrays and nested objects) to Title Ca…
toBase64stringEncodes a string (as UTF-8) or raw bytes to Base64, without relying on `btoa` or `Buffer`, so it behaves the same in a…
toCssLinearanimationSamples an easing function into a CSS `linear()` easing, so any curve (a spring, a custom bounce) can be played by CSS…
togglearrayReturns a new array with `item` removed if present, or appended if absent — the common “toggle a selection” pattern.
toHexbinaryWrites bytes as lowercase hexadecimal, two digits per byte.
toInt / toFloatnumbernative JS parseInt(str, 10) / parseFloat(str) (ES1)
toISO8601dateConverts a date to ISO 8601 format Format: YYYY-MM-DDTHH:mm:ss.sssZ
toMapByKeymapBuilds a Map from an iterable of items, keyed by a derived key.
toMapByKeysetBuilds a Map from a Set, keyed by a derived key.
toMillisdateConverts a date to a timestamp in **milliseconds** (epoch millis).
toPairs / fromPairsobjectnative JS Object.entries() / Object.fromEntries() (ES2019)
toPlainDate / toPlainDateTime / toPlainTimedatenative JS Temporal.ZonedDateTime.prototype.toPlainDate() / toPlainDateTime() / toPlainTime() (Temporal (Stage 3))
toRFC2822dateConverts a date to RFC 2822 format Format: Day, DD Mon YYYY HH:mm:ss +0000 Used in email headers (Date field) and HTTP…
toRFC3339dateConverts a date to RFC 3339 format Format: YYYY-MM-DDTHH:mm:ssZ or YYYY-MM-DDTHH:mm:ss+HH:mm RFC 3339 is a profile of I…
toSecondsdateConverts a date to a timestamp in **seconds** (epoch seconds).
toTemporalInstantdatenative JS Date.prototype.toTemporalInstant() (Temporal (Stage 3))
toZonedDateTimedatenative JS Temporal.Instant.prototype.toZonedDateTimeISO(tz) (Temporal (Stage 3))
transformPathgeometryTransforms SVG path data by a matrix.
translategeometryA matrix that moves points by `(tx, ty)`.
trimstringTrims both leading and trailing characters from a string, at a configurable level of aggressiveness (see TrimMode).
trim / trimStart / trimEndstringnative JS String.prototype.trim() / trimStart() / trimEnd() (ES2019)
trimEndstringTrims trailing characters from a string, at a configurable level of aggressiveness (see TrimMode).
trimStartstringTrims leading characters from a string, at a configurable level of aggressiveness (see TrimMode).
truncatestringTruncates a string to `maxLength` characters, appending an ellipsis when cut.
truthyPromiseOrThrowpromiseReturns a function that passes through truthy data or throws an error.
tryitpromiseWraps a function so it never throws.
tweenanimationAnimates a value from `from` to `to` over `durationMs`, calling `onUpdate` with the blended value at each frame, for wh…
TypedArrays (isInt8Array, isFloat32Array, ...)typenative JS value instanceof Int8Array / Float32Array / ... (ES2015)
unaryfunctionCreates a function that calls `fn` with only its first argument, discarding any others.
unescapeHtmlstringUnescapes the HTML entities `&`, `<`, `>`, `”`, and `&#39;` back to `&`, `<`, `>`, `”`, and `’`.
unflattenobjectRebuilds a nested object from a single-level object whose keys are dot-notation paths.
unionarraynative JS unique([...a, ...b]) (ES2015)
uniongeometryThe smallest rectangle that contains all the given rectangles, e.g.
unionsetnative JS Set.prototype.union() (ES2025 (Set methods))
UnionToIntersectiontypeConverts a union type to an intersection type: `A | B | C` → `A & B & C`.
uniquearrayRemoves duplicate values from an array.
uniqueByarrayRemoves duplicate items from an array, using a derived key instead of value equality.
unitToRgbcolorConverts a color whose channels are floats from `0` to `1` (as Figma, Sketch and Penpot store them) into an RgbColor, w…
unorderedPairKeystringBuilds a canonical, order-independent key for an unordered pair of strings — the same result for `(a, b)` and `(b, a)`.
unpremultiplycolorDivides the color channels by the alpha channel: the inverse of premultiply.
unsetobjectRemoves the value at a dot/bracket-notation path or explicit key array, mutating the object in place.
until / since (difference)datenative JS Temporal.PlainDate.prototype.until(other) / .since(other) (Temporal (Stage 3))
unziparraySplits an array of tuples into separate arrays, one per position.
updateobjectUpdates the value at a path by applying a function to its current value, creating intermediate objects as needed.
uuid7idGenerates a UUID v7 string (RFC 9562).
ValueOftypeProduces a union of all value types of an object type `T`.
watchMediabrowserCalls `listener` each time a CSS media query starts or stops matching.
WeekDaysdateNamed day-of-week constants following the JavaScript `Date.getDay()` convention.
whenIdlebrowserRuns `callback` when the browser is idle, with `requestIdleCallback`, for work that can wait (prefetching, analytics, w…
withAlpha (change the alpha channel of an existing color)colornative JS rgb(from <color> r g b / <alpha>) (CSS Color 5 relative color syntax (Baseline widely available since September 2024 — Chrome 119+))
withLeadingSlashurlAdds a leading slash `/` to the given URL if it is not already present.
withoutarrayReturns a new array with all occurrences of the given values removed.
withoutLeadingSlashurlRemoves the leading slash `/` from the given URL if it is present.
withoutTrailingSlashurlRemoves the trailing slash `/` from the given URL if it is present.
withResolverspromisenative JS Promise.withResolvers() (ES2024)
withTempDirnodeCreates a fresh temporary directory under the OS temp root, runs `fn` with its path, and always removes it (recursively…
withTrailingSlashurlAdds a trailing slash `/` to the given URL if it is not already present.
wordsstringSplits a string into an array of words.
zigzagDecodebinaryThe inverse of zigzagEncode: maps an unsigned 64-bit zigzag value back to the signed integer.
zigzagEncodebinaryMaps a signed 64-bit integer to an unsigned one so that values near zero stay small (`0, -1, 1, -2` become `0, 1, 2, 3`…
ziparrayCombines multiple arrays element-by-element into an array of tuples.