UNPKG

es-toolkit

Version:

A state-of-the-art, high-performance JavaScript utility library with a small bundle size and strong type annotations.

26 lines (25 loc) 975 B
const require_bigIntRangeLength = require("../_internal/bigIntRangeLength.js"); //#region src/bigint/rangeRight.ts /** * Returns an array of bigints from `start` up to, but not including, `end`, incrementing by `step`, * in descending order. * * @param start - The exclusive end of the range when called with one argument, otherwise the inclusive start. * @param end - The exclusive end of the range. * @param step - The amount to increment by. Must not be `0n`. * @returns An array of bigints. * @throws {Error} If `step` is `0n`. */ function rangeRight(start, end, step = 1n) { if (end == null) { end = start; start = 0n; } if (step === 0n) throw new Error("The step value must be a non-zero bigint."); const length = require_bigIntRangeLength.bigIntRangeLength(start, end, step); const result = new Array(length); for (let i = 0; i < length; i++) result[i] = start + BigInt(length - i - 1) * step; return result; } //#endregion exports.rangeRight = rangeRight;