@i-xi-dev/base64
Version:
A JavaScript Base64 encoder and decoder, implements Forgiving base64 defined in WHATWG Infra Standard.
57 lines (56 loc) • 1.85 kB
JavaScript
import * as _Utils from "./_utils.js";
import { NumberRange } from "./number_range.js";
export const ZERO = 0;
export const isNumber = _Utils._isNumber;
/**
* Determines whether the `test` is a positive number.
*
* @param test - The value to be tested
* @returns Whether the `test` is a positive number. (positive finite or positive infinity)
*/
export function isPositiveNumber(test) {
return isNumber(test) && (test > ZERO);
}
/**
* Determines whether the `test` is a non-negative number.
*
* @param test - The value to be tested
* @returns Whether the `test` is a non-negative number. (non-negative finite or positive infinity)
*/
export function isNonNegativeNumber(test) {
return isNumber(test) && (test >= ZERO);
}
export function isNonPositiveNumber(test) {
return isNumber(test) && (test <= ZERO);
}
export function isNegativeNumber(test) {
return isNumber(test) && (test < ZERO);
}
export function isOddInteger(test) {
return Number.isInteger(test) ? ((test % 2) !== ZERO) : false;
}
export function isEvenInteger(test) {
return Number.isInteger(test) ? ((test % 2) === ZERO) : false;
}
export function normalizeNumber(source) {
if (isNumber(source) !== true) {
throw new TypeError("source");
}
// -0は0とする
return (source === ZERO) ? ZERO : source;
}
export function clampNumber(source, range) {
if ((isNumber(source) !== true) || Number.isNaN(source)) {
throw new TypeError("source");
}
const [min, max] = NumberRange.resolve(range);
const clamped = Math.max(min, Math.min(max, source));
return normalizeNumber(clamped);
}
export function inRange(test, range) {
if ((isNumber(test) !== true) || Number.isNaN(test)) {
return false;
}
const [min, max] = NumberRange.resolve(range);
return (test >= min) && (test <= max);
}