UNPKG

@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
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); }