range
EditGenerates an ascending or descending numeric range that excludes its end.
/** Generates numbers from start toward end, excluding end. */export const range = (start: number, end: number, step?: number): number[] => { if (!Number.isFinite(start) || !Number.isFinite(end)) { throw new RangeError("start and end must be finite numbers"); } const direction = end >= start ? 1 : -1; const resolvedStep = step ?? direction; if (!Number.isFinite(resolvedStep) || resolvedStep === 0) { throw new RangeError("step must be a finite non-zero number"); } if (Math.sign(resolvedStep) !== direction && start !== end) { throw new RangeError("step must move from start toward end"); }
const length = Math.ceil((end - start) / resolvedStep); if (!Number.isSafeInteger(length) || length > 10_000_000) { throw new RangeError("range would contain too many values"); } return Array.from({ length }, (_, index) => start + index * resolvedStep);};Download
Section titled “Download”wget -O src/lib/range.ts https://raw.githubusercontent.com/jrTilak/lazykit/HEAD/registry/functions/range.tstemp_dir="$(mktemp -d)" && bunx degit jrTilak/lazykit/registry/functions "$temp_dir" && mv "$temp_dir/range.ts" src/lib/range.ts && rm -r "$temp_dir"Examples
Section titled “Examples”import { range } from "./range";
const pages = range(1, 5);// [1, 2, 3, 4]start(number) — Included boundary.end(number) — Excluded boundary.step(number) — Optional non-zero step pointing towardend.