UNPKG

unitify-ts

Version:

A TypeScript library for converting between various units of measurement, including length, weight, volume, temperature, speed, area, energy, pressure, power, data, angle, luminance and computation time.

51 lines (50 loc) 1.83 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); exports.UnitifyTS = void 0; const conversionFactors_1 = require('./utils/conversionFactors'); exports.UnitifyTS = (function () { function convert(value, fromUnit, toUnit, category) { try { if (category === 'temperature') { return convertTemperature(value, fromUnit, toUnit); } // @ts-ignore const factorFrom = conversionFactors_1.conversionFactors[category][fromUnit]; // @ts-ignore const factorTo = conversionFactors_1.conversionFactors[category][toUnit]; return (value / factorFrom) * factorTo; } catch (e) { console.error('No valid unit conversion'); } } function convertTemperature(value, fromUnit, toUnit) { const toCelsius = { celsius: (v) => v, fahrenheit: (v) => ((v - 32) * 5) / 9, kelvin: (v) => v - 273.15, rankine: (v) => ((v - 491.67) * 5) / 9, delisle: (v) => 100 - (v * 2) / 3, newton: (v) => (v * 100) / 33, reaumur: (v) => (v * 5) / 4, romer: (v) => ((v - 7.5) * 40) / 21, }; const fromCelsius = { celsius: (v) => v, fahrenheit: (v) => (v * 9) / 5 + 32, kelvin: (v) => v + 273.15, rankine: (v) => ((v + 273.15) * 9) / 5, delisle: (v) => ((100 - v) * 3) / 2, newton: (v) => (v * 33) / 100, reaumur: (v) => (v * 4) / 5, romer: (v) => (v * 21) / 40 + 7.5, }; // @ts-ignore const celsiusValue = toCelsius[fromUnit](value); // @ts-ignore return fromCelsius[toUnit](celsiusValue); } return { convert, }; })();