nhb-toolbox
Version:
A versatile collection of smart, efficient, and reusable utility functions, classes and types for everyday development needs.
36 lines (35 loc) • 1.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isMultiple = exports.isOdd = exports.isEven = void 0;
exports.isPerfectSquare = isPerfectSquare;
exports.isFibonacci = isFibonacci;
exports.areInvalidNumbers = areInvalidNumbers;
const primitives_1 = require("../guards/primitives");
const utilities_1 = require("./utilities");
const isEven = (input) => {
const parsed = (0, utilities_1.normalizeNumber)(input);
if ((0, primitives_1.isUndefined)(parsed))
return false;
return parsed % 2 === 0;
};
exports.isEven = isEven;
const isOdd = (input) => {
const parsed = (0, utilities_1.normalizeNumber)(input);
if ((0, primitives_1.isUndefined)(parsed))
return false;
return parsed % 2 !== 0;
};
exports.isOdd = isOdd;
const isMultiple = (input, multipleOf) => {
return input % multipleOf === 0;
};
exports.isMultiple = isMultiple;
function isPerfectSquare(num) {
return Number.isInteger(Math.sqrt(num));
}
function isFibonacci(num) {
return isPerfectSquare(5 * num * num + 4) || isPerfectSquare(5 * num * num - 4);
}
function areInvalidNumbers(...numbers) {
return numbers?.some((n) => !Number.isFinite(n));
}