UNPKG

@toreda/time

Version:

Simple, small footprint library for common time operations and converting between units of time.

44 lines (43 loc) 1.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.canConvert = void 0; exports.timeConvert = timeConvert; const utils_1 = require("./utils"); const conversions_1 = require("./conversions"); /** * @deprecated Use `TimeUtils.canConvert` instead. This re-export will be removed in a future major release. */ exports.canConvert = utils_1.TimeUtils.canConvert; /** * Convert value to a different time unit. * @param from `TimeUnit` to convert from. * @param to `TimeUnit` to convert to. * @param value value to convert * @param decimals (optional) Decimals to use for precision. */ function timeConvert(from, to, value, decimals) { if (!utils_1.TimeUtils.canConvert(from, to, value)) { return null; } if (value === 0 || from === to) { return value; } const factor = conversions_1.timeConversions[from][to]; if (typeof factor !== 'number' || !isFinite(factor)) { return null; } const result = value * factor; if (!isFinite(result) || !utils_1.TimeUtils.withinSafeRange(result)) { return null; } if (Number.isInteger(result)) { return result; } const decimalCount = utils_1.TimeUtils.resolveDecimals(decimals); const rounded = utils_1.TimeUtils.roundToDecimals(result, decimalCount); if (rounded !== 0) { return rounded; } const preserved = Number(result.toPrecision(Math.max(decimalCount, 1))); return isFinite(preserved) ? preserved : null; }