UNPKG

iter-tools-es

Version:
40 lines (32 loc) 955 B
const { isInteger, isPositiveInteger, isIntegerOrInfinite } = require('../../../internal/number.js'); const { isObject } = require('../../is-object/is-object.js'); const makeValidateArgs = methodName => function validateArgs(args) { let [, optsOrStart = 0, end = Infinity, step = 1] = args; let start = typeof optsOrStart === 'number' ? optsOrStart : undefined; if (isObject(optsOrStart)) { ({ start = 0, end = Infinity, step = 1 } = optsOrStart); } if (!isInteger(start)) { throw new TypeError(`start argument to ${methodName} must be a number`); } if (!isIntegerOrInfinite(end)) { throw new TypeError(`end argument to ${methodName} must be an integer or infinte`); } if (!isPositiveInteger(step)) { throw new TypeError(`step argument to ${methodName} must be a integer > 0`); } args[1] = start; args[2] = end; args[3] = step; }; exports.makeValidateArgs = makeValidateArgs;