nhb-toolbox 4.0.57 → 4.0.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +10 -6
- package/dist/cjs/number/Currency.js +97 -0
- package/dist/cjs/number/Unit.js +177 -0
- package/dist/cjs/number/constants.js +81 -1
- package/dist/dts/date/constants.d.ts +1 -1
- package/dist/dts/index.d.ts +2 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/number/Currency.d.ts +53 -0
- package/dist/dts/number/Currency.d.ts.map +1 -0
- package/dist/dts/number/Unit.d.ts +101 -0
- package/dist/dts/number/Unit.d.ts.map +1 -0
- package/dist/dts/number/constants.d.ts +37 -0
- package/dist/dts/number/constants.d.ts.map +1 -1
- package/dist/dts/number/types.d.ts +20 -1
- package/dist/dts/number/types.d.ts.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/number/Currency.js +93 -0
- package/dist/esm/number/Unit.js +173 -0
- package/dist/esm/number/constants.js +80 -0
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
5
|
-
exports.
|
|
6
|
-
exports.
|
|
7
|
-
exports.
|
|
8
|
-
exports.isValidURL = exports.isValidEmail = exports.isUUID = exports.isURL = exports.isPhoneNumber = exports.isNumericString = exports.isNodeEnvironment = exports.isNodeENV = exports.isNode = exports.isIPAddress = exports.isExpectedNodeENV = exports.isEnvironment = exports.isEmailArray = exports.isEmail = exports.isDateString = exports.isBrowser = exports.isBase64 = exports.isValidSet = exports.isValidObject = exports.isValidMap = exports.isValidJSON = exports.isValidArray = exports.isSet = exports.isReturningPromise = exports.isRegularExpression = exports.isRegExp = exports.isPromise = exports.isObjectWithKeys = exports.isObjectEmpty = exports.isObject = exports.isNotEmptyObject = exports.isMethodDescriptor = exports.isMethod = exports.isMap = exports.isJSONObject = exports.isJSON = void 0;
|
|
3
|
+
exports.getFibonacciSeries = exports.getFibonacciNumbers = exports.getFibonacci = exports.generateFibonacci = exports.fibonacciGenerator = exports.calculatePercentage = exports.Unit = exports.Currency = exports.sumOfNumbers = exports.sumNumbers = exports.sumDigits = exports.reverseNumber = exports.getSumOfNumbers = exports.getRandomNumber = exports.getAverageOfNumbers = exports.getAverage = exports.convertToDecimal = exports.calculateLCM = exports.calculateLCD = exports.calculateHCF = exports.calculateGCD = exports.calculateAverage = exports.wordCount = exports.levenshteinDistance = exports.getLevenshteinDistance = exports.extractNumbersFromString = exports.countWordsInString = exports.countWords = exports.slugifyString = exports.reverseString = exports.replaceAllInString = exports.normalizeString = exports.maskString = exports.formatWithPlural = exports.formatUnitWithPlural = exports.formatNumberWithPluralUnit = exports.extractURLs = exports.extractEmails = exports.convertStringCase = exports.isSnakeCase = exports.isPascalCase = exports.isPalindrome = exports.isKebabCase = exports.isEmojiOnly = exports.isCamelCase = exports.generateAnagrams = exports.truncateString = exports.trimString = exports.generateRandomID = exports.capitalizeString = void 0;
|
|
4
|
+
exports.convertHslToRgb = exports.convertHslToHex = exports.convertHslaToRgba = exports.convertHslaToHex8 = exports.convertHexToRgb = exports.convertHexToHsl = exports.convertHex8ToRgba = exports.convertHex8ToHsla = exports.convertColorCode = exports.generateRandomHSLColor = exports.generateRandomColorInHexRGB = exports.getColorForInitial = exports.getNumbersInRange = exports.roundToNearestInterval = exports.roundToNearest = exports.roundNumberToNearestInterval = exports.roundNumber = exports.numberToOrdinal = exports.getRandomFloat = exports.getRandomDecimal = exports.getOrdinalNumber = exports.getOrdinal = exports.formatCurrency = exports.convertToOrdinal = exports.convertNumberToOrdinal = exports.convertNumberToCurrency = exports.clampNumber = exports.cardinalToOrdinal = exports.isPrimeNumber = exports.isPrime = exports.getPrimeNumbers = exports.findPrimeNumbers = exports.numberToWords = exports.convertToRomanNumerals = exports.convertNumberToWords = exports.isPerfectSquare = exports.isParOfFibonacciSeries = exports.isParOfFibonacci = exports.isOddNumber = exports.isOdd = exports.isMultiple = exports.isInvalidNumbers = exports.isFibonacci = exports.isEvenNumber = exports.isEven = exports.areInvalidNumbers = exports.getNthFibonacci = exports.getMemoizedFibonacciSeries = exports.getMemoizedFibonacci = exports.getFibonacciSeriesMemo = void 0;
|
|
5
|
+
exports.findMissingElements = exports.extractMissingElements = exports.extractDuplicatesFromArray = exports.extractDuplicates = exports.createOptionsArray = exports.sortAnArray = exports.shuffleArray = exports.isValidEmptyArray = exports.isInvalidOrEmptyArray = exports.getLastArrayElement = exports.flattenArray = exports.filterArrayOfObjects = exports.minutesToUTCOffset = exports.getTotalMinutesFromUTC = exports.getTotalMinutesFromTime = exports.getTotalMinutes = exports.getTimeStringFromUTC = exports.getMinutesFromUTC = exports.getCurrentTime = exports.getCurrentDateTime = exports.formatUTCOffset = exports.extractTotalMinutesFromTime = exports.extractTimeStringFromUTC = exports.extractTimeFromUTC = exports.extractMinutesFromUTC = exports.extractHourMinute = exports.convertMinutesToUTCOffset = exports.chronusts = exports.chronusjs = exports.chronus = exports.chronosts = exports.chronosjs = exports.chronos = exports.Chronus = exports.Chronos = exports.isValidUTCOffSet = exports.isValidUTC = exports.isValidTimeString = exports.isValidTime = exports.isLeapYear = exports.greet = exports.getGreeting = exports.generateGreeting = exports.Colour = exports.Color = exports.convertRgbToRgba = exports.convertRgbToHsl = exports.convertRgbToHex = exports.convertRgbaToHsla = exports.convertRgbaToHex8 = void 0;
|
|
6
|
+
exports.formatQueryParams = exports.createQueryParams = exports.remapObjectFields = exports.remapFields = exports.pickObjectFieldsByCondition = exports.pickObjectFields = exports.pickFieldsByCondition = exports.pickFields = exports.convertObjectValues = exports.sanitizeData = exports.parseStringifiedValues = exports.parseStringifiedPrimitives = exports.parseStringifiedObjectValues = exports.parsePrimitives = exports.parsePrimitiveData = exports.parseObjectValues = exports.parseJsonToObject = exports.mergeObjects = exports.mergeAndFlattenObjects = exports.flattenObjectKeyValue = exports.flattenObjectDotNotation = exports.extractUpdatedFields = exports.extractUpdatedAndNewFields = exports.extractNewFields = exports.countObjectFields = exports.cloneObject = exports.isValidFormData = exports.isOriginFileObj = exports.isFileUpload = exports.isFileList = exports.isFileArray = exports.isCustomFileArray = exports.isCustomFile = exports.serializeForm = exports.parseFormData = exports.createFormData = exports.createControlledFormData = exports.convertIntoFormData = exports.naturalSortForString = exports.naturalSort = exports.compareSorter = exports.compareNaturally = exports.splitArray = exports.rotateArray = exports.removeDuplicatesFromArray = exports.removeDuplicates = exports.moveArrayElement = exports.getMissingElements = exports.getDuplicatesFromArray = exports.getDuplicates = void 0;
|
|
7
|
+
exports.isEmptyObjectGuard = exports.isEmptyObject = exports.isDate = exports.isBigInt = exports.isArrayWithLength = exports.isArrayOfType = exports.isArray = exports.doesReturnPromise = exports.isUndefined = exports.isTruthy = exports.isSymbol = exports.isString = exports.isPrimitive = exports.isPositiveInteger = exports.isNumber = exports.isNull = exports.isNonEmptyString = exports.isInteger = exports.isFalsy = exports.isBoolean = exports.throttleAction = exports.parsePrimitivesDeep = exports.parseJsonDeep = exports.parseJSON = exports.isDeepEqual = exports.getStaticMethodsCount = exports.getStaticMethodNames = exports.getInstanceMethodsCount = exports.getInstanceMethodNames = exports.getClassDetails = exports.deepParsePrimitives = exports.debounceAction = exports.countStaticMethods = exports.countInstanceMethods = exports.convertArrayToString = exports.saveToSessionStorage = exports.saveToLocalStorage = exports.removeFromSessionStorage = exports.removeFromLocalStorage = exports.getFromSessionStorage = exports.getFromLocalStorage = exports.toggleFullScreen = exports.smoothScrollTo = exports.copyToClipboard = exports.updateQueryParam = exports.getQueryStringAsObject = exports.queryStringToObject = exports.parseQueryString = exports.getQueryParams = exports.generateQueryParams = void 0;
|
|
8
|
+
exports.isValidURL = exports.isValidEmail = exports.isUUID = exports.isURL = exports.isPhoneNumber = exports.isNumericString = exports.isNodeEnvironment = exports.isNodeENV = exports.isNode = exports.isIPAddress = exports.isExpectedNodeENV = exports.isEnvironment = exports.isEmailArray = exports.isEmail = exports.isDateString = exports.isBrowser = exports.isBase64 = exports.isValidSet = exports.isValidObject = exports.isValidMap = exports.isValidJSON = exports.isValidArray = exports.isSet = exports.isReturningPromise = exports.isRegularExpression = exports.isRegExp = exports.isPromise = exports.isObjectWithKeys = exports.isObjectEmpty = exports.isObject = exports.isNotEmptyObject = exports.isMethodDescriptor = exports.isMethod = exports.isMap = exports.isJSONObject = exports.isJSON = exports.isFunction = exports.isError = void 0;
|
|
9
9
|
// ! String Utilities
|
|
10
10
|
var basics_1 = require("./string/basics");
|
|
11
11
|
Object.defineProperty(exports, "capitalizeString", { enumerable: true, get: function () { return basics_1.capitalizeString; } });
|
|
@@ -56,6 +56,10 @@ Object.defineProperty(exports, "reverseNumber", { enumerable: true, get: functio
|
|
|
56
56
|
Object.defineProperty(exports, "sumDigits", { enumerable: true, get: function () { return basics_2.sumDigits; } });
|
|
57
57
|
Object.defineProperty(exports, "sumNumbers", { enumerable: true, get: function () { return basics_2.sumNumbers; } });
|
|
58
58
|
Object.defineProperty(exports, "sumOfNumbers", { enumerable: true, get: function () { return basics_2.sumNumbers; } });
|
|
59
|
+
var Currency_1 = require("./number/Currency");
|
|
60
|
+
Object.defineProperty(exports, "Currency", { enumerable: true, get: function () { return Currency_1.Currency; } });
|
|
61
|
+
var Unit_1 = require("./number/Unit");
|
|
62
|
+
Object.defineProperty(exports, "Unit", { enumerable: true, get: function () { return Unit_1.Unit; } });
|
|
59
63
|
var percent_1 = require("./number/percent");
|
|
60
64
|
Object.defineProperty(exports, "calculatePercentage", { enumerable: true, get: function () { return percent_1.calculatePercentage; } });
|
|
61
65
|
var fibonacci_1 = require("./number/fibonacci");
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Currency = void 0;
|
|
4
|
+
const utilities_1 = require("./utilities");
|
|
5
|
+
const rateCache = new Map();
|
|
6
|
+
/**
|
|
7
|
+
* * A utility class for handling currency operations like formatting and conversion.
|
|
8
|
+
*
|
|
9
|
+
* - Supports formatting based on locale.
|
|
10
|
+
* - Converts between **fiat currencies supported by `api.frankfurter.app`**.
|
|
11
|
+
* - Automatically caches conversion rates to reduce redundant API calls.
|
|
12
|
+
* - Intended for use with numeric inputs (number or numeric string).
|
|
13
|
+
*/
|
|
14
|
+
class Currency {
|
|
15
|
+
#amount;
|
|
16
|
+
#code;
|
|
17
|
+
/**
|
|
18
|
+
* * The formatted currency string (e.g., `$1,000.00`).
|
|
19
|
+
*
|
|
20
|
+
* - Generated using the `en-US` locale during construction.
|
|
21
|
+
* - This is a display-friendly version of the currency value.
|
|
22
|
+
* - For formatting with other locales, use the `format(locale)` method.
|
|
23
|
+
*/
|
|
24
|
+
currency;
|
|
25
|
+
/**
|
|
26
|
+
* Creates an instance of the Currency class.
|
|
27
|
+
*
|
|
28
|
+
* @param amount - The numeric amount of currency (e.g., `100`, `'99.99'`).
|
|
29
|
+
* @param code - The ISO 4217 currency code representing the currency (e.g., `'USD'`, `'EUR'`).
|
|
30
|
+
*/
|
|
31
|
+
constructor(amount, code) {
|
|
32
|
+
this.#amount = Number(amount);
|
|
33
|
+
this.#code = code;
|
|
34
|
+
this.currency = this.format('en-US');
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* @instance Formats the currency for a given locale.
|
|
38
|
+
* @param locale - The target locale (e.g., 'de-DE')
|
|
39
|
+
* @returns The formatted currency string
|
|
40
|
+
*/
|
|
41
|
+
format(locale) {
|
|
42
|
+
return (0, utilities_1.formatCurrency)(this.#amount, this.#code, locale);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* @instance Converts the current currency amount to a target currency using real-time exchange rates.
|
|
46
|
+
*
|
|
47
|
+
* - Uses `api.frankfurter.app` to fetch live exchange rates.
|
|
48
|
+
* - Supports **only the following fiat currencies**:
|
|
49
|
+
* `AUD`, `BGN`, `BRL`, `CAD`, `CHF`, `CNY`, `CZK`, `DKK`, `EUR`, `GBP`, `HKD`, `HUF`, `IDR`, `ILS`, `INR`, `ISK`, `JPY`,
|
|
50
|
+
* `KRW`, `MXN`, `MYR`, `NOK`, `NZD`, `PHP`, `PLN`, `RON`, `SEK`, `SGD`, `THB`, `TRY`, `USD`, `ZAR`.
|
|
51
|
+
* - Uses cached rates unless `forceRefresh` is set to `true`.
|
|
52
|
+
* - If API fails or currency not supported, falls back to `fallbackRate` if provided.
|
|
53
|
+
*
|
|
54
|
+
* @param to - The target currency code (must be one of the supported ones, e.g., `'EUR'`, `'USD'`).
|
|
55
|
+
* @param options - Optional settings:
|
|
56
|
+
* - `fallbackRate`: A manual exchange rate to use if the API call fails or currency is not supported.
|
|
57
|
+
* - `forceRefresh`: If true, ignores cached rates and fetches fresh data.
|
|
58
|
+
* @returns The converted amount as a number.
|
|
59
|
+
* @throws Will throw if the API call fails and no `fallbackRate` is provided.
|
|
60
|
+
*/
|
|
61
|
+
async convert(to, options) {
|
|
62
|
+
const key = `${this.#code}->${to}`;
|
|
63
|
+
if (!options?.forceRefresh && rateCache.has(key)) {
|
|
64
|
+
const cachedRate = rateCache.get(key);
|
|
65
|
+
return this.#amount * cachedRate;
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
const rate = await this.#fetchFromFrankfurter(to);
|
|
69
|
+
rateCache.set(key, rate);
|
|
70
|
+
return this.#amount * rate;
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
if (options?.fallbackRate != null) {
|
|
74
|
+
console.warn(`Currency conversion failed (${this.#code} → ${to}): ${JSON.stringify(error)}. Using fallback rate...`);
|
|
75
|
+
return this.#amount * options.fallbackRate;
|
|
76
|
+
}
|
|
77
|
+
throw new Error(`Currency conversion failed (${this.#code} → ${to}): ${JSON.stringify(error)}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* @private @instance Attempts to fetch rate from frankfurter.app
|
|
82
|
+
* @param to - Target currency code
|
|
83
|
+
* @returns Exchange rate (multiplier)
|
|
84
|
+
*/
|
|
85
|
+
async #fetchFromFrankfurter(to) {
|
|
86
|
+
const url = `https://api.frankfurter.app/latest?amount=${this.#amount}&from=${this.#code}&to=${to}`;
|
|
87
|
+
const res = await fetch(url, { redirect: 'error' });
|
|
88
|
+
if (!res.ok)
|
|
89
|
+
throw new Error(`Frankfurter error: ${res.status}`);
|
|
90
|
+
const data = (await res.json());
|
|
91
|
+
if (!data.rates?.[to]) {
|
|
92
|
+
throw new Error(`Currency "${to}" not found in rates`);
|
|
93
|
+
}
|
|
94
|
+
return data.rates[to] / this.#amount;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
exports.Currency = Currency;
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Unit = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* @class Represents a measurable unit and supports conversions between various types of units.
|
|
6
|
+
*
|
|
7
|
+
* Includes static methods for:
|
|
8
|
+
* - Length: meters, feet, kilometers, miles
|
|
9
|
+
* - Mass: kilograms, pounds, grams, ounces
|
|
10
|
+
* - Temperature: Celsius, Fahrenheit, Kelvin
|
|
11
|
+
* - Volume: liters, gallons
|
|
12
|
+
* - Area: square meters, square feet
|
|
13
|
+
* - Speed: km/h, mph
|
|
14
|
+
* - Time: hours, minutes, seconds, days
|
|
15
|
+
* - Digital Storage: kilobytes, megabytes, gigabytes
|
|
16
|
+
* - Energy: joules, calories
|
|
17
|
+
* - Pressure: atm, pascals
|
|
18
|
+
* - Frequency: Hz, kHz
|
|
19
|
+
*/
|
|
20
|
+
class Unit {
|
|
21
|
+
#value;
|
|
22
|
+
#unit;
|
|
23
|
+
/**
|
|
24
|
+
* * Creates an instance of the Unit class.
|
|
25
|
+
* @param value The numeric value to work with.
|
|
26
|
+
* @param unit The unit type of the value (e.g., 'kg', 'm', 'kb').
|
|
27
|
+
*/
|
|
28
|
+
constructor(value, unit) {
|
|
29
|
+
this.#value = value;
|
|
30
|
+
this.#unit = unit;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* @instance Returns the original value with unit (if passed in the constructor).
|
|
34
|
+
* @returns A string in the format "value unit".
|
|
35
|
+
*/
|
|
36
|
+
toString() {
|
|
37
|
+
return `${this.#value} ${this.#unit ?? ''}`.trim();
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* @instance Converts the value using a static method name from the Unit class.
|
|
41
|
+
*
|
|
42
|
+
* *Provides IntelliSense and type safety for method selection.*
|
|
43
|
+
*
|
|
44
|
+
* @param methodName - A key of Unit class static method accepting a number and returning a number.
|
|
45
|
+
* @returns The converted numeric value.
|
|
46
|
+
*/
|
|
47
|
+
convert(methodName) {
|
|
48
|
+
const method = Unit[methodName];
|
|
49
|
+
if (typeof method !== 'function') {
|
|
50
|
+
throw new Error(`Method ${methodName} is not a valid method!`);
|
|
51
|
+
}
|
|
52
|
+
// @ts-expect-error -_-
|
|
53
|
+
return method(this.#value);
|
|
54
|
+
}
|
|
55
|
+
// ----- Static Conversion Methods -----
|
|
56
|
+
/** Converts meters to feet. */
|
|
57
|
+
static metersToFeet(m) {
|
|
58
|
+
return m * 3.28084;
|
|
59
|
+
}
|
|
60
|
+
/** Converts feet to meters. */
|
|
61
|
+
static feetToMeters(ft) {
|
|
62
|
+
return ft / 3.28084;
|
|
63
|
+
}
|
|
64
|
+
/** Converts kilometers to miles. */
|
|
65
|
+
static kmToMiles(km) {
|
|
66
|
+
return km * 0.621371;
|
|
67
|
+
}
|
|
68
|
+
/** Converts miles to kilometers. */
|
|
69
|
+
static milesToKm(mi) {
|
|
70
|
+
return mi / 0.621371;
|
|
71
|
+
}
|
|
72
|
+
/** Converts kilograms to pounds. */
|
|
73
|
+
static kgToLbs(kg) {
|
|
74
|
+
return kg * 2.20462;
|
|
75
|
+
}
|
|
76
|
+
/** Converts pounds to kilograms. */
|
|
77
|
+
static lbsToKg(lbs) {
|
|
78
|
+
return lbs / 2.20462;
|
|
79
|
+
}
|
|
80
|
+
/** Converts grams to ounces. */
|
|
81
|
+
static gramsToOunces(g) {
|
|
82
|
+
return g * 0.035274;
|
|
83
|
+
}
|
|
84
|
+
/** Converts ounces to grams. */
|
|
85
|
+
static ouncesToGrams(oz) {
|
|
86
|
+
return oz / 0.035274;
|
|
87
|
+
}
|
|
88
|
+
/** Converts Celsius to Fahrenheit. */
|
|
89
|
+
static celsiusToFahrenheit(c) {
|
|
90
|
+
return (c * 9) / 5 + 32;
|
|
91
|
+
}
|
|
92
|
+
/** Converts Fahrenheit to Celsius. */
|
|
93
|
+
static fahrenheitToCelsius(f) {
|
|
94
|
+
return ((f - 32) * 5) / 9;
|
|
95
|
+
}
|
|
96
|
+
/** Converts Celsius to Kelvin. */
|
|
97
|
+
static celsiusToKelvin(c) {
|
|
98
|
+
return c + 273.15;
|
|
99
|
+
}
|
|
100
|
+
/** Converts Kelvin to Celsius. */
|
|
101
|
+
static kelvinToCelsius(k) {
|
|
102
|
+
return k - 273.15;
|
|
103
|
+
}
|
|
104
|
+
/** Converts liters to gallons. */
|
|
105
|
+
static litersToGallons(l) {
|
|
106
|
+
return l * 0.264172;
|
|
107
|
+
}
|
|
108
|
+
/** Converts gallons to liters. */
|
|
109
|
+
static gallonsToLiters(gal) {
|
|
110
|
+
return gal / 0.264172;
|
|
111
|
+
}
|
|
112
|
+
/** Converts square meters to square feet. */
|
|
113
|
+
static sqmToSqft(sqm) {
|
|
114
|
+
return sqm * 10.7639;
|
|
115
|
+
}
|
|
116
|
+
/** Converts square feet to square meters. */
|
|
117
|
+
static sqftToSqm(sqft) {
|
|
118
|
+
return sqft / 10.7639;
|
|
119
|
+
}
|
|
120
|
+
/** Converts kilometers per hour to miles per hour. */
|
|
121
|
+
static kmphToMph(kmph) {
|
|
122
|
+
return kmph * 0.621371;
|
|
123
|
+
}
|
|
124
|
+
/** Converts miles per hour to kilometers per hour. */
|
|
125
|
+
static mphToKmph(mph) {
|
|
126
|
+
return mph / 0.621371;
|
|
127
|
+
}
|
|
128
|
+
/** Converts hours to minutes. */
|
|
129
|
+
static hoursToMinutes(h) {
|
|
130
|
+
return h * 60;
|
|
131
|
+
}
|
|
132
|
+
/** Converts minutes to seconds. */
|
|
133
|
+
static minutesToSeconds(m) {
|
|
134
|
+
return m * 60;
|
|
135
|
+
}
|
|
136
|
+
/** Converts days to hours. */
|
|
137
|
+
static daysToHours(d) {
|
|
138
|
+
return d * 24;
|
|
139
|
+
}
|
|
140
|
+
/** Converts megabytes to gigabytes. */
|
|
141
|
+
static mbToGb(mb) {
|
|
142
|
+
return mb / 1024;
|
|
143
|
+
}
|
|
144
|
+
/** Converts gigabytes to megabytes. */
|
|
145
|
+
static gbToMb(gb) {
|
|
146
|
+
return gb * 1024;
|
|
147
|
+
}
|
|
148
|
+
/** Converts kilobytes to megabytes. */
|
|
149
|
+
static kbToMb(kb) {
|
|
150
|
+
return kb / 1024;
|
|
151
|
+
}
|
|
152
|
+
/** Converts joules to calories. */
|
|
153
|
+
static joulesToCalories(j) {
|
|
154
|
+
return j * 0.239006;
|
|
155
|
+
}
|
|
156
|
+
/** Converts calories to joules. */
|
|
157
|
+
static caloriesToJoules(cal) {
|
|
158
|
+
return cal / 0.239006;
|
|
159
|
+
}
|
|
160
|
+
/** Converts atmospheres to pascals. */
|
|
161
|
+
static atmToPascal(atm) {
|
|
162
|
+
return atm * 101325;
|
|
163
|
+
}
|
|
164
|
+
/** Converts pascals to atmospheres. */
|
|
165
|
+
static pascalToAtm(pa) {
|
|
166
|
+
return pa / 101325;
|
|
167
|
+
}
|
|
168
|
+
/** Converts hertz to kilohertz. */
|
|
169
|
+
static hzToKHz(hz) {
|
|
170
|
+
return hz / 1000;
|
|
171
|
+
}
|
|
172
|
+
/** Converts kilohertz to hertz. */
|
|
173
|
+
static kHzToHz(khz) {
|
|
174
|
+
return khz * 1000;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
exports.Unit = Unit;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CURRENCY_LOCALES = exports.LOCALE_CODES = exports.CURRENCY_CODES = exports.thousands = exports.tens = exports.teens = exports.ones = void 0;
|
|
3
|
+
exports.UNIT_LABELS = exports.SUPPORTED_CURRENCIES = exports.CURRENCY_LOCALES = exports.LOCALE_CODES = exports.CURRENCY_CODES = exports.thousands = exports.tens = exports.teens = exports.ones = void 0;
|
|
4
4
|
exports.ones = [
|
|
5
5
|
'',
|
|
6
6
|
'one',
|
|
@@ -505,3 +505,83 @@ exports.CURRENCY_LOCALES = {
|
|
|
505
505
|
ZMW: 'en-ZM', // Zambian Kwacha
|
|
506
506
|
ZWL: 'en-ZW', // Zimbabwean Dollar
|
|
507
507
|
};
|
|
508
|
+
/** * Fiat currencies supported by Frankfurter API */
|
|
509
|
+
exports.SUPPORTED_CURRENCIES = [
|
|
510
|
+
'AUD',
|
|
511
|
+
'BGN',
|
|
512
|
+
'BRL',
|
|
513
|
+
'CAD',
|
|
514
|
+
'CHF',
|
|
515
|
+
'CNY',
|
|
516
|
+
'CZK',
|
|
517
|
+
'DKK',
|
|
518
|
+
'EUR',
|
|
519
|
+
'GBP',
|
|
520
|
+
'HKD',
|
|
521
|
+
'HUF',
|
|
522
|
+
'IDR',
|
|
523
|
+
'ILS',
|
|
524
|
+
'INR',
|
|
525
|
+
'ISK',
|
|
526
|
+
'JPY',
|
|
527
|
+
'KRW',
|
|
528
|
+
'MXN',
|
|
529
|
+
'MYR',
|
|
530
|
+
'NOK',
|
|
531
|
+
'NZD',
|
|
532
|
+
'PHP',
|
|
533
|
+
'PLN',
|
|
534
|
+
'RON',
|
|
535
|
+
'SEK',
|
|
536
|
+
'SGD',
|
|
537
|
+
'THB',
|
|
538
|
+
'TRY',
|
|
539
|
+
'USD',
|
|
540
|
+
'ZAR',
|
|
541
|
+
];
|
|
542
|
+
/**
|
|
543
|
+
* @constant Unit names and their full readable labels.
|
|
544
|
+
*/
|
|
545
|
+
exports.UNIT_LABELS = {
|
|
546
|
+
// Length
|
|
547
|
+
m: 'Meter',
|
|
548
|
+
km: 'Kilometer',
|
|
549
|
+
mi: 'Mile',
|
|
550
|
+
ft: 'Foot',
|
|
551
|
+
// Mass / Weight
|
|
552
|
+
kg: 'Kilogram',
|
|
553
|
+
lbs: 'Pound',
|
|
554
|
+
g: 'Gram',
|
|
555
|
+
oz: 'Ounce',
|
|
556
|
+
// Temperature
|
|
557
|
+
C: 'Celsius',
|
|
558
|
+
F: 'Fahrenheit',
|
|
559
|
+
K: 'Kelvin',
|
|
560
|
+
// Volume
|
|
561
|
+
l: 'Liter',
|
|
562
|
+
gal: 'Gallon',
|
|
563
|
+
// Area
|
|
564
|
+
sqm: 'Square Meter',
|
|
565
|
+
sqft: 'Square Foot',
|
|
566
|
+
// Speed
|
|
567
|
+
kmph: 'Kilometer per Hour',
|
|
568
|
+
mph: 'Miles per Hour',
|
|
569
|
+
// Time
|
|
570
|
+
h: 'Hour',
|
|
571
|
+
min: 'Minute',
|
|
572
|
+
sec: 'Second',
|
|
573
|
+
d: 'Day',
|
|
574
|
+
// Digital Storage
|
|
575
|
+
kb: 'Kilobyte',
|
|
576
|
+
mb: 'Megabyte',
|
|
577
|
+
gb: 'Gigabyte',
|
|
578
|
+
// Energy
|
|
579
|
+
j: 'Joule',
|
|
580
|
+
cal: 'Calorie',
|
|
581
|
+
// Pressure
|
|
582
|
+
atm: 'Atmosphere',
|
|
583
|
+
pa: 'Pascal',
|
|
584
|
+
// Frequency
|
|
585
|
+
hz: 'Hertz',
|
|
586
|
+
khz: 'Kilohertz',
|
|
587
|
+
};
|
|
@@ -11,7 +11,7 @@ export declare const MINUTE_FORMATS: readonly ["mm", "m"];
|
|
|
11
11
|
export declare const SECOND_FORMATS: readonly ["ss", "s"];
|
|
12
12
|
export declare const MILLISECOND_FORMATS: readonly ["ms", "mss"];
|
|
13
13
|
export declare const TIME_FORMATS: readonly ["a", "A"];
|
|
14
|
-
export declare const sortedFormats: ("a" | "
|
|
14
|
+
export declare const sortedFormats: ("a" | "m" | "h" | "d" | "M" | "D" | "s" | "A" | "YYYY" | "YY" | "yyyy" | "yy" | "MM" | "mmm" | "mmmm" | "DD" | "Do" | "dd" | "ddd" | "H" | "HH" | "hh" | "mm" | "ss" | "ms" | "mss")[];
|
|
15
15
|
export declare const TIME_ZONES: {
|
|
16
16
|
/** International Date Line West (Baker Island, Howland Island) */
|
|
17
17
|
readonly IDLW: number;
|
package/dist/dts/index.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ export { isCamelCase, isEmojiOnly, isKebabCase, isPalindrome, isPascalCase, isSn
|
|
|
4
4
|
export { convertStringCase, extractEmails, extractURLs, formatUnitWithPlural as formatNumberWithPluralUnit, formatUnitWithPlural, formatUnitWithPlural as formatWithPlural, maskString, normalizeString, replaceAllInString, reverseString, slugifyString, } from './string/convert';
|
|
5
5
|
export { countWords, countWords as countWordsInString, extractNumbersFromString, getLevenshteinDistance, getLevenshteinDistance as levenshteinDistance, countWords as wordCount, } from './string/utilities';
|
|
6
6
|
export { getAverage as calculateAverage, calculateHCF as calculateGCD, calculateHCF, calculateLCM as calculateLCD, calculateLCM, convertToDecimal, getAverage, getAverage as getAverageOfNumbers, getRandomNumber, sumNumbers as getSumOfNumbers, reverseNumber, sumDigits, sumNumbers, sumNumbers as sumOfNumbers, } from './number/basics';
|
|
7
|
+
export { Currency } from './number/Currency';
|
|
8
|
+
export { Unit } from './number/Unit';
|
|
7
9
|
export { calculatePercentage } from './number/percent';
|
|
8
10
|
export { fibonacciGenerator, fibonacciGenerator as generateFibonacci, getFibonacciSeries as getFibonacci, getFibonacciSeries as getFibonacciNumbers, getFibonacciSeries, getFibonacciSeriesMemo, getFibonacciSeriesMemo as getMemoizedFibonacci, getFibonacciSeriesMemo as getMemoizedFibonacciSeries, getNthFibonacci, } from './number/fibonacci';
|
|
9
11
|
export { areInvalidNumbers, isEven, isEven as isEvenNumber, isFibonacci, areInvalidNumbers as isInvalidNumbers, isMultiple, isOdd, isOdd as isOddNumber, isFibonacci as isParOfFibonacci, isFibonacci as isParOfFibonacciSeries, isPerfectSquare, } from './number/guards';
|
package/dist/dts/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { Numeric } from '../types';
|
|
2
|
+
import type { ConvertOptions, CurrencyCode, LocaleCode, SupportedCurrency } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* * A utility class for handling currency operations like formatting and conversion.
|
|
5
|
+
*
|
|
6
|
+
* - Supports formatting based on locale.
|
|
7
|
+
* - Converts between **fiat currencies supported by `api.frankfurter.app`**.
|
|
8
|
+
* - Automatically caches conversion rates to reduce redundant API calls.
|
|
9
|
+
* - Intended for use with numeric inputs (number or numeric string).
|
|
10
|
+
*/
|
|
11
|
+
export declare class Currency {
|
|
12
|
+
#private;
|
|
13
|
+
/**
|
|
14
|
+
* * The formatted currency string (e.g., `$1,000.00`).
|
|
15
|
+
*
|
|
16
|
+
* - Generated using the `en-US` locale during construction.
|
|
17
|
+
* - This is a display-friendly version of the currency value.
|
|
18
|
+
* - For formatting with other locales, use the `format(locale)` method.
|
|
19
|
+
*/
|
|
20
|
+
readonly currency: string;
|
|
21
|
+
/**
|
|
22
|
+
* Creates an instance of the Currency class.
|
|
23
|
+
*
|
|
24
|
+
* @param amount - The numeric amount of currency (e.g., `100`, `'99.99'`).
|
|
25
|
+
* @param code - The ISO 4217 currency code representing the currency (e.g., `'USD'`, `'EUR'`).
|
|
26
|
+
*/
|
|
27
|
+
constructor(amount: Numeric, code: CurrencyCode);
|
|
28
|
+
/**
|
|
29
|
+
* @instance Formats the currency for a given locale.
|
|
30
|
+
* @param locale - The target locale (e.g., 'de-DE')
|
|
31
|
+
* @returns The formatted currency string
|
|
32
|
+
*/
|
|
33
|
+
format(locale?: LocaleCode): string;
|
|
34
|
+
/**
|
|
35
|
+
* @instance Converts the current currency amount to a target currency using real-time exchange rates.
|
|
36
|
+
*
|
|
37
|
+
* - Uses `api.frankfurter.app` to fetch live exchange rates.
|
|
38
|
+
* - Supports **only the following fiat currencies**:
|
|
39
|
+
* `AUD`, `BGN`, `BRL`, `CAD`, `CHF`, `CNY`, `CZK`, `DKK`, `EUR`, `GBP`, `HKD`, `HUF`, `IDR`, `ILS`, `INR`, `ISK`, `JPY`,
|
|
40
|
+
* `KRW`, `MXN`, `MYR`, `NOK`, `NZD`, `PHP`, `PLN`, `RON`, `SEK`, `SGD`, `THB`, `TRY`, `USD`, `ZAR`.
|
|
41
|
+
* - Uses cached rates unless `forceRefresh` is set to `true`.
|
|
42
|
+
* - If API fails or currency not supported, falls back to `fallbackRate` if provided.
|
|
43
|
+
*
|
|
44
|
+
* @param to - The target currency code (must be one of the supported ones, e.g., `'EUR'`, `'USD'`).
|
|
45
|
+
* @param options - Optional settings:
|
|
46
|
+
* - `fallbackRate`: A manual exchange rate to use if the API call fails or currency is not supported.
|
|
47
|
+
* - `forceRefresh`: If true, ignores cached rates and fetches fresh data.
|
|
48
|
+
* @returns The converted amount as a number.
|
|
49
|
+
* @throws Will throw if the API call fails and no `fallbackRate` is provided.
|
|
50
|
+
*/
|
|
51
|
+
convert(to: SupportedCurrency | CurrencyCode, options?: ConvertOptions): Promise<number>;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=Currency.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Currency.d.ts","sourceRoot":"","sources":["../../../src/number/Currency.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EACX,cAAc,EACd,YAAY,EAEZ,UAAU,EACV,iBAAiB,EACjB,MAAM,SAAS,CAAC;AAKjB;;;;;;;GAOG;AACH,qBAAa,QAAQ;;IAGpB;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;;;;OAKG;gBACS,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY;IAM/C;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM;IAInC;;;;;;;;;;;;;;;;OAgBG;IACG,OAAO,CACZ,EAAE,EAAE,iBAAiB,GAAG,YAAY,EACpC,OAAO,CAAC,EAAE,cAAc,GACtB,OAAO,CAAC,MAAM,CAAC;CAiDlB"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import type { UnitKey } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* @class Represents a measurable unit and supports conversions between various types of units.
|
|
4
|
+
*
|
|
5
|
+
* Includes static methods for:
|
|
6
|
+
* - Length: meters, feet, kilometers, miles
|
|
7
|
+
* - Mass: kilograms, pounds, grams, ounces
|
|
8
|
+
* - Temperature: Celsius, Fahrenheit, Kelvin
|
|
9
|
+
* - Volume: liters, gallons
|
|
10
|
+
* - Area: square meters, square feet
|
|
11
|
+
* - Speed: km/h, mph
|
|
12
|
+
* - Time: hours, minutes, seconds, days
|
|
13
|
+
* - Digital Storage: kilobytes, megabytes, gigabytes
|
|
14
|
+
* - Energy: joules, calories
|
|
15
|
+
* - Pressure: atm, pascals
|
|
16
|
+
* - Frequency: Hz, kHz
|
|
17
|
+
*/
|
|
18
|
+
export declare class Unit {
|
|
19
|
+
#private;
|
|
20
|
+
/**
|
|
21
|
+
* * Creates an instance of the Unit class.
|
|
22
|
+
* @param value The numeric value to work with.
|
|
23
|
+
* @param unit The unit type of the value (e.g., 'kg', 'm', 'kb').
|
|
24
|
+
*/
|
|
25
|
+
constructor(value: number, unit?: UnitKey);
|
|
26
|
+
/**
|
|
27
|
+
* @instance Returns the original value with unit (if passed in the constructor).
|
|
28
|
+
* @returns A string in the format "value unit".
|
|
29
|
+
*/
|
|
30
|
+
toString(): string;
|
|
31
|
+
/**
|
|
32
|
+
* @instance Converts the value using a static method name from the Unit class.
|
|
33
|
+
*
|
|
34
|
+
* *Provides IntelliSense and type safety for method selection.*
|
|
35
|
+
*
|
|
36
|
+
* @param methodName - A key of Unit class static method accepting a number and returning a number.
|
|
37
|
+
* @returns The converted numeric value.
|
|
38
|
+
*/
|
|
39
|
+
convert<T extends keyof typeof Unit>(methodName: T): (typeof Unit)[T] extends (value: number) => number ? number : never;
|
|
40
|
+
/** Converts meters to feet. */
|
|
41
|
+
static metersToFeet(m: number): number;
|
|
42
|
+
/** Converts feet to meters. */
|
|
43
|
+
static feetToMeters(ft: number): number;
|
|
44
|
+
/** Converts kilometers to miles. */
|
|
45
|
+
static kmToMiles(km: number): number;
|
|
46
|
+
/** Converts miles to kilometers. */
|
|
47
|
+
static milesToKm(mi: number): number;
|
|
48
|
+
/** Converts kilograms to pounds. */
|
|
49
|
+
static kgToLbs(kg: number): number;
|
|
50
|
+
/** Converts pounds to kilograms. */
|
|
51
|
+
static lbsToKg(lbs: number): number;
|
|
52
|
+
/** Converts grams to ounces. */
|
|
53
|
+
static gramsToOunces(g: number): number;
|
|
54
|
+
/** Converts ounces to grams. */
|
|
55
|
+
static ouncesToGrams(oz: number): number;
|
|
56
|
+
/** Converts Celsius to Fahrenheit. */
|
|
57
|
+
static celsiusToFahrenheit(c: number): number;
|
|
58
|
+
/** Converts Fahrenheit to Celsius. */
|
|
59
|
+
static fahrenheitToCelsius(f: number): number;
|
|
60
|
+
/** Converts Celsius to Kelvin. */
|
|
61
|
+
static celsiusToKelvin(c: number): number;
|
|
62
|
+
/** Converts Kelvin to Celsius. */
|
|
63
|
+
static kelvinToCelsius(k: number): number;
|
|
64
|
+
/** Converts liters to gallons. */
|
|
65
|
+
static litersToGallons(l: number): number;
|
|
66
|
+
/** Converts gallons to liters. */
|
|
67
|
+
static gallonsToLiters(gal: number): number;
|
|
68
|
+
/** Converts square meters to square feet. */
|
|
69
|
+
static sqmToSqft(sqm: number): number;
|
|
70
|
+
/** Converts square feet to square meters. */
|
|
71
|
+
static sqftToSqm(sqft: number): number;
|
|
72
|
+
/** Converts kilometers per hour to miles per hour. */
|
|
73
|
+
static kmphToMph(kmph: number): number;
|
|
74
|
+
/** Converts miles per hour to kilometers per hour. */
|
|
75
|
+
static mphToKmph(mph: number): number;
|
|
76
|
+
/** Converts hours to minutes. */
|
|
77
|
+
static hoursToMinutes(h: number): number;
|
|
78
|
+
/** Converts minutes to seconds. */
|
|
79
|
+
static minutesToSeconds(m: number): number;
|
|
80
|
+
/** Converts days to hours. */
|
|
81
|
+
static daysToHours(d: number): number;
|
|
82
|
+
/** Converts megabytes to gigabytes. */
|
|
83
|
+
static mbToGb(mb: number): number;
|
|
84
|
+
/** Converts gigabytes to megabytes. */
|
|
85
|
+
static gbToMb(gb: number): number;
|
|
86
|
+
/** Converts kilobytes to megabytes. */
|
|
87
|
+
static kbToMb(kb: number): number;
|
|
88
|
+
/** Converts joules to calories. */
|
|
89
|
+
static joulesToCalories(j: number): number;
|
|
90
|
+
/** Converts calories to joules. */
|
|
91
|
+
static caloriesToJoules(cal: number): number;
|
|
92
|
+
/** Converts atmospheres to pascals. */
|
|
93
|
+
static atmToPascal(atm: number): number;
|
|
94
|
+
/** Converts pascals to atmospheres. */
|
|
95
|
+
static pascalToAtm(pa: number): number;
|
|
96
|
+
/** Converts hertz to kilohertz. */
|
|
97
|
+
static hzToKHz(hz: number): number;
|
|
98
|
+
/** Converts kilohertz to hertz. */
|
|
99
|
+
static kHzToHz(khz: number): number;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=Unit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Unit.d.ts","sourceRoot":"","sources":["../../../src/number/Unit.ts"],"names":[],"mappings":"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"}
|
|
@@ -169,4 +169,41 @@ export declare const CURRENCY_LOCALES: {
|
|
|
169
169
|
readonly ZMW: "en-ZM";
|
|
170
170
|
readonly ZWL: "en-ZW";
|
|
171
171
|
};
|
|
172
|
+
/** * Fiat currencies supported by Frankfurter API */
|
|
173
|
+
export declare const SUPPORTED_CURRENCIES: readonly ["AUD", "BGN", "BRL", "CAD", "CHF", "CNY", "CZK", "DKK", "EUR", "GBP", "HKD", "HUF", "IDR", "ILS", "INR", "ISK", "JPY", "KRW", "MXN", "MYR", "NOK", "NZD", "PHP", "PLN", "RON", "SEK", "SGD", "THB", "TRY", "USD", "ZAR"];
|
|
174
|
+
/**
|
|
175
|
+
* @constant Unit names and their full readable labels.
|
|
176
|
+
*/
|
|
177
|
+
export declare const UNIT_LABELS: {
|
|
178
|
+
readonly m: "Meter";
|
|
179
|
+
readonly km: "Kilometer";
|
|
180
|
+
readonly mi: "Mile";
|
|
181
|
+
readonly ft: "Foot";
|
|
182
|
+
readonly kg: "Kilogram";
|
|
183
|
+
readonly lbs: "Pound";
|
|
184
|
+
readonly g: "Gram";
|
|
185
|
+
readonly oz: "Ounce";
|
|
186
|
+
readonly C: "Celsius";
|
|
187
|
+
readonly F: "Fahrenheit";
|
|
188
|
+
readonly K: "Kelvin";
|
|
189
|
+
readonly l: "Liter";
|
|
190
|
+
readonly gal: "Gallon";
|
|
191
|
+
readonly sqm: "Square Meter";
|
|
192
|
+
readonly sqft: "Square Foot";
|
|
193
|
+
readonly kmph: "Kilometer per Hour";
|
|
194
|
+
readonly mph: "Miles per Hour";
|
|
195
|
+
readonly h: "Hour";
|
|
196
|
+
readonly min: "Minute";
|
|
197
|
+
readonly sec: "Second";
|
|
198
|
+
readonly d: "Day";
|
|
199
|
+
readonly kb: "Kilobyte";
|
|
200
|
+
readonly mb: "Megabyte";
|
|
201
|
+
readonly gb: "Gigabyte";
|
|
202
|
+
readonly j: "Joule";
|
|
203
|
+
readonly cal: "Calorie";
|
|
204
|
+
readonly atm: "Atmosphere";
|
|
205
|
+
readonly pa: "Pascal";
|
|
206
|
+
readonly hz: "Hertz";
|
|
207
|
+
readonly khz: "Kilohertz";
|
|
208
|
+
};
|
|
172
209
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/number/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,uFAWP,CAAC;AAEX,eAAO,MAAM,KAAK,sHAWR,CAAC;AAEX,eAAO,MAAM,IAAI,oGAWP,CAAC;AAEX,eAAO,MAAM,SAAS,8JAaZ,CAAC;AAEX,sCAAsC;AACtC,eAAO,MAAM,cAAc,2mCAiKjB,CAAC;AAEX,2CAA2C;AAC3C,eAAO,MAAM,YAAY,mnCA8Hf,CAAC;AAEX,8CAA8C;AAC9C,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiKnB,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/number/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,uFAWP,CAAC;AAEX,eAAO,MAAM,KAAK,sHAWR,CAAC;AAEX,eAAO,MAAM,IAAI,oGAWP,CAAC;AAEX,eAAO,MAAM,SAAS,8JAaZ,CAAC;AAEX,sCAAsC;AACtC,eAAO,MAAM,cAAc,2mCAiKjB,CAAC;AAEX,2CAA2C;AAC3C,eAAO,MAAM,YAAY,mnCA8Hf,CAAC;AAEX,8CAA8C;AAC9C,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiKnB,CAAC;AAEX,qDAAqD;AACrD,eAAO,MAAM,oBAAoB,oOAgCvB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDd,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CURRENCY_CODES, CURRENCY_LOCALES, LOCALE_CODES } from './constants';
|
|
1
|
+
import type { CURRENCY_CODES, CURRENCY_LOCALES, LOCALE_CODES, SUPPORTED_CURRENCIES, UNIT_LABELS } from './constants';
|
|
2
2
|
/** - Options for random number generator */
|
|
3
3
|
export interface RandomNumberOptions {
|
|
4
4
|
/** Minimum number to start with. */
|
|
@@ -38,6 +38,21 @@ export type RangedNumbers<T extends GetAs> = T extends 'array' ? number[] : stri
|
|
|
38
38
|
export type CurrencyCode = keyof typeof CURRENCY_LOCALES | (typeof CURRENCY_CODES)[number];
|
|
39
39
|
/** - List of all supported BCP 47 locales */
|
|
40
40
|
export type LocaleCode = (typeof CURRENCY_LOCALES)[keyof typeof CURRENCY_LOCALES] | (typeof LOCALE_CODES)[number];
|
|
41
|
+
/** * Fiat currencies supported by Frankfurter API */
|
|
42
|
+
export type SupportedCurrency = (typeof SUPPORTED_CURRENCIES)[number];
|
|
43
|
+
/** - Options for `convert` method in `Currency` class */
|
|
44
|
+
export interface ConvertOptions {
|
|
45
|
+
/** A manual exchange rate to use if the API call fails. */
|
|
46
|
+
fallbackRate?: number;
|
|
47
|
+
/** If true, bypasses the cache and fetches fresh rate. */
|
|
48
|
+
forceRefresh?: boolean;
|
|
49
|
+
}
|
|
50
|
+
export interface FrankFurter {
|
|
51
|
+
amount: number;
|
|
52
|
+
base: CurrencyCode;
|
|
53
|
+
date: string;
|
|
54
|
+
rates: Record<CurrencyCode, number>;
|
|
55
|
+
}
|
|
41
56
|
/** * Options to calculate what percentage a `part` is of a `total`. */
|
|
42
57
|
export interface GetPercentOptions {
|
|
43
58
|
/** Mode to calculate percentage from `part` and `total` */
|
|
@@ -103,4 +118,8 @@ export interface InversePercentageOptions {
|
|
|
103
118
|
}
|
|
104
119
|
/** * Options for calculating percentages and related values. */
|
|
105
120
|
export type PercentageOptions = GetPercentOptions | GetValueOptions | GetOriginalOptions | GetChangeOptions | ApplyChangeOptions | GetDifferenceOptions | InversePercentageOptions;
|
|
121
|
+
/** * Short forms of units */
|
|
122
|
+
export type UnitKey = keyof typeof UNIT_LABELS;
|
|
123
|
+
/** Labels for the units */
|
|
124
|
+
export type UnitLabel = (typeof UNIT_LABELS)[UnitKey];
|
|
106
125
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/number/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/number/types.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.js
CHANGED
|
@@ -6,6 +6,8 @@ export { convertStringCase, extractEmails, extractURLs, formatUnitWithPlural as
|
|
|
6
6
|
export { countWords, countWords as countWordsInString, extractNumbersFromString, getLevenshteinDistance, getLevenshteinDistance as levenshteinDistance, countWords as wordCount, } from './string/utilities';
|
|
7
7
|
// ! Number Utilities
|
|
8
8
|
export { getAverage as calculateAverage, calculateHCF as calculateGCD, calculateHCF, calculateLCM as calculateLCD, calculateLCM, convertToDecimal, getAverage, getAverage as getAverageOfNumbers, getRandomNumber, sumNumbers as getSumOfNumbers, reverseNumber, sumDigits, sumNumbers, sumNumbers as sumOfNumbers, } from './number/basics';
|
|
9
|
+
export { Currency } from './number/Currency';
|
|
10
|
+
export { Unit } from './number/Unit';
|
|
9
11
|
export { calculatePercentage } from './number/percent';
|
|
10
12
|
export { fibonacciGenerator, fibonacciGenerator as generateFibonacci, getFibonacciSeries as getFibonacci, getFibonacciSeries as getFibonacciNumbers, getFibonacciSeries, getFibonacciSeriesMemo, getFibonacciSeriesMemo as getMemoizedFibonacci, getFibonacciSeriesMemo as getMemoizedFibonacciSeries, getNthFibonacci, } from './number/fibonacci';
|
|
11
13
|
export { areInvalidNumbers, isEven, isEven as isEvenNumber, isFibonacci, areInvalidNumbers as isInvalidNumbers, isMultiple, isOdd, isOdd as isOddNumber, isFibonacci as isParOfFibonacci, isFibonacci as isParOfFibonacciSeries, isPerfectSquare, } from './number/guards';
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { formatCurrency } from './utilities';
|
|
2
|
+
const rateCache = new Map();
|
|
3
|
+
/**
|
|
4
|
+
* * A utility class for handling currency operations like formatting and conversion.
|
|
5
|
+
*
|
|
6
|
+
* - Supports formatting based on locale.
|
|
7
|
+
* - Converts between **fiat currencies supported by `api.frankfurter.app`**.
|
|
8
|
+
* - Automatically caches conversion rates to reduce redundant API calls.
|
|
9
|
+
* - Intended for use with numeric inputs (number or numeric string).
|
|
10
|
+
*/
|
|
11
|
+
export class Currency {
|
|
12
|
+
#amount;
|
|
13
|
+
#code;
|
|
14
|
+
/**
|
|
15
|
+
* * The formatted currency string (e.g., `$1,000.00`).
|
|
16
|
+
*
|
|
17
|
+
* - Generated using the `en-US` locale during construction.
|
|
18
|
+
* - This is a display-friendly version of the currency value.
|
|
19
|
+
* - For formatting with other locales, use the `format(locale)` method.
|
|
20
|
+
*/
|
|
21
|
+
currency;
|
|
22
|
+
/**
|
|
23
|
+
* Creates an instance of the Currency class.
|
|
24
|
+
*
|
|
25
|
+
* @param amount - The numeric amount of currency (e.g., `100`, `'99.99'`).
|
|
26
|
+
* @param code - The ISO 4217 currency code representing the currency (e.g., `'USD'`, `'EUR'`).
|
|
27
|
+
*/
|
|
28
|
+
constructor(amount, code) {
|
|
29
|
+
this.#amount = Number(amount);
|
|
30
|
+
this.#code = code;
|
|
31
|
+
this.currency = this.format('en-US');
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* @instance Formats the currency for a given locale.
|
|
35
|
+
* @param locale - The target locale (e.g., 'de-DE')
|
|
36
|
+
* @returns The formatted currency string
|
|
37
|
+
*/
|
|
38
|
+
format(locale) {
|
|
39
|
+
return formatCurrency(this.#amount, this.#code, locale);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* @instance Converts the current currency amount to a target currency using real-time exchange rates.
|
|
43
|
+
*
|
|
44
|
+
* - Uses `api.frankfurter.app` to fetch live exchange rates.
|
|
45
|
+
* - Supports **only the following fiat currencies**:
|
|
46
|
+
* `AUD`, `BGN`, `BRL`, `CAD`, `CHF`, `CNY`, `CZK`, `DKK`, `EUR`, `GBP`, `HKD`, `HUF`, `IDR`, `ILS`, `INR`, `ISK`, `JPY`,
|
|
47
|
+
* `KRW`, `MXN`, `MYR`, `NOK`, `NZD`, `PHP`, `PLN`, `RON`, `SEK`, `SGD`, `THB`, `TRY`, `USD`, `ZAR`.
|
|
48
|
+
* - Uses cached rates unless `forceRefresh` is set to `true`.
|
|
49
|
+
* - If API fails or currency not supported, falls back to `fallbackRate` if provided.
|
|
50
|
+
*
|
|
51
|
+
* @param to - The target currency code (must be one of the supported ones, e.g., `'EUR'`, `'USD'`).
|
|
52
|
+
* @param options - Optional settings:
|
|
53
|
+
* - `fallbackRate`: A manual exchange rate to use if the API call fails or currency is not supported.
|
|
54
|
+
* - `forceRefresh`: If true, ignores cached rates and fetches fresh data.
|
|
55
|
+
* @returns The converted amount as a number.
|
|
56
|
+
* @throws Will throw if the API call fails and no `fallbackRate` is provided.
|
|
57
|
+
*/
|
|
58
|
+
async convert(to, options) {
|
|
59
|
+
const key = `${this.#code}->${to}`;
|
|
60
|
+
if (!options?.forceRefresh && rateCache.has(key)) {
|
|
61
|
+
const cachedRate = rateCache.get(key);
|
|
62
|
+
return this.#amount * cachedRate;
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
const rate = await this.#fetchFromFrankfurter(to);
|
|
66
|
+
rateCache.set(key, rate);
|
|
67
|
+
return this.#amount * rate;
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
if (options?.fallbackRate != null) {
|
|
71
|
+
console.warn(`Currency conversion failed (${this.#code} → ${to}): ${JSON.stringify(error)}. Using fallback rate...`);
|
|
72
|
+
return this.#amount * options.fallbackRate;
|
|
73
|
+
}
|
|
74
|
+
throw new Error(`Currency conversion failed (${this.#code} → ${to}): ${JSON.stringify(error)}`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* @private @instance Attempts to fetch rate from frankfurter.app
|
|
79
|
+
* @param to - Target currency code
|
|
80
|
+
* @returns Exchange rate (multiplier)
|
|
81
|
+
*/
|
|
82
|
+
async #fetchFromFrankfurter(to) {
|
|
83
|
+
const url = `https://api.frankfurter.app/latest?amount=${this.#amount}&from=${this.#code}&to=${to}`;
|
|
84
|
+
const res = await fetch(url, { redirect: 'error' });
|
|
85
|
+
if (!res.ok)
|
|
86
|
+
throw new Error(`Frankfurter error: ${res.status}`);
|
|
87
|
+
const data = (await res.json());
|
|
88
|
+
if (!data.rates?.[to]) {
|
|
89
|
+
throw new Error(`Currency "${to}" not found in rates`);
|
|
90
|
+
}
|
|
91
|
+
return data.rates[to] / this.#amount;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @class Represents a measurable unit and supports conversions between various types of units.
|
|
3
|
+
*
|
|
4
|
+
* Includes static methods for:
|
|
5
|
+
* - Length: meters, feet, kilometers, miles
|
|
6
|
+
* - Mass: kilograms, pounds, grams, ounces
|
|
7
|
+
* - Temperature: Celsius, Fahrenheit, Kelvin
|
|
8
|
+
* - Volume: liters, gallons
|
|
9
|
+
* - Area: square meters, square feet
|
|
10
|
+
* - Speed: km/h, mph
|
|
11
|
+
* - Time: hours, minutes, seconds, days
|
|
12
|
+
* - Digital Storage: kilobytes, megabytes, gigabytes
|
|
13
|
+
* - Energy: joules, calories
|
|
14
|
+
* - Pressure: atm, pascals
|
|
15
|
+
* - Frequency: Hz, kHz
|
|
16
|
+
*/
|
|
17
|
+
export class Unit {
|
|
18
|
+
#value;
|
|
19
|
+
#unit;
|
|
20
|
+
/**
|
|
21
|
+
* * Creates an instance of the Unit class.
|
|
22
|
+
* @param value The numeric value to work with.
|
|
23
|
+
* @param unit The unit type of the value (e.g., 'kg', 'm', 'kb').
|
|
24
|
+
*/
|
|
25
|
+
constructor(value, unit) {
|
|
26
|
+
this.#value = value;
|
|
27
|
+
this.#unit = unit;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* @instance Returns the original value with unit (if passed in the constructor).
|
|
31
|
+
* @returns A string in the format "value unit".
|
|
32
|
+
*/
|
|
33
|
+
toString() {
|
|
34
|
+
return `${this.#value} ${this.#unit ?? ''}`.trim();
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* @instance Converts the value using a static method name from the Unit class.
|
|
38
|
+
*
|
|
39
|
+
* *Provides IntelliSense and type safety for method selection.*
|
|
40
|
+
*
|
|
41
|
+
* @param methodName - A key of Unit class static method accepting a number and returning a number.
|
|
42
|
+
* @returns The converted numeric value.
|
|
43
|
+
*/
|
|
44
|
+
convert(methodName) {
|
|
45
|
+
const method = Unit[methodName];
|
|
46
|
+
if (typeof method !== 'function') {
|
|
47
|
+
throw new Error(`Method ${methodName} is not a valid method!`);
|
|
48
|
+
}
|
|
49
|
+
// @ts-expect-error -_-
|
|
50
|
+
return method(this.#value);
|
|
51
|
+
}
|
|
52
|
+
// ----- Static Conversion Methods -----
|
|
53
|
+
/** Converts meters to feet. */
|
|
54
|
+
static metersToFeet(m) {
|
|
55
|
+
return m * 3.28084;
|
|
56
|
+
}
|
|
57
|
+
/** Converts feet to meters. */
|
|
58
|
+
static feetToMeters(ft) {
|
|
59
|
+
return ft / 3.28084;
|
|
60
|
+
}
|
|
61
|
+
/** Converts kilometers to miles. */
|
|
62
|
+
static kmToMiles(km) {
|
|
63
|
+
return km * 0.621371;
|
|
64
|
+
}
|
|
65
|
+
/** Converts miles to kilometers. */
|
|
66
|
+
static milesToKm(mi) {
|
|
67
|
+
return mi / 0.621371;
|
|
68
|
+
}
|
|
69
|
+
/** Converts kilograms to pounds. */
|
|
70
|
+
static kgToLbs(kg) {
|
|
71
|
+
return kg * 2.20462;
|
|
72
|
+
}
|
|
73
|
+
/** Converts pounds to kilograms. */
|
|
74
|
+
static lbsToKg(lbs) {
|
|
75
|
+
return lbs / 2.20462;
|
|
76
|
+
}
|
|
77
|
+
/** Converts grams to ounces. */
|
|
78
|
+
static gramsToOunces(g) {
|
|
79
|
+
return g * 0.035274;
|
|
80
|
+
}
|
|
81
|
+
/** Converts ounces to grams. */
|
|
82
|
+
static ouncesToGrams(oz) {
|
|
83
|
+
return oz / 0.035274;
|
|
84
|
+
}
|
|
85
|
+
/** Converts Celsius to Fahrenheit. */
|
|
86
|
+
static celsiusToFahrenheit(c) {
|
|
87
|
+
return (c * 9) / 5 + 32;
|
|
88
|
+
}
|
|
89
|
+
/** Converts Fahrenheit to Celsius. */
|
|
90
|
+
static fahrenheitToCelsius(f) {
|
|
91
|
+
return ((f - 32) * 5) / 9;
|
|
92
|
+
}
|
|
93
|
+
/** Converts Celsius to Kelvin. */
|
|
94
|
+
static celsiusToKelvin(c) {
|
|
95
|
+
return c + 273.15;
|
|
96
|
+
}
|
|
97
|
+
/** Converts Kelvin to Celsius. */
|
|
98
|
+
static kelvinToCelsius(k) {
|
|
99
|
+
return k - 273.15;
|
|
100
|
+
}
|
|
101
|
+
/** Converts liters to gallons. */
|
|
102
|
+
static litersToGallons(l) {
|
|
103
|
+
return l * 0.264172;
|
|
104
|
+
}
|
|
105
|
+
/** Converts gallons to liters. */
|
|
106
|
+
static gallonsToLiters(gal) {
|
|
107
|
+
return gal / 0.264172;
|
|
108
|
+
}
|
|
109
|
+
/** Converts square meters to square feet. */
|
|
110
|
+
static sqmToSqft(sqm) {
|
|
111
|
+
return sqm * 10.7639;
|
|
112
|
+
}
|
|
113
|
+
/** Converts square feet to square meters. */
|
|
114
|
+
static sqftToSqm(sqft) {
|
|
115
|
+
return sqft / 10.7639;
|
|
116
|
+
}
|
|
117
|
+
/** Converts kilometers per hour to miles per hour. */
|
|
118
|
+
static kmphToMph(kmph) {
|
|
119
|
+
return kmph * 0.621371;
|
|
120
|
+
}
|
|
121
|
+
/** Converts miles per hour to kilometers per hour. */
|
|
122
|
+
static mphToKmph(mph) {
|
|
123
|
+
return mph / 0.621371;
|
|
124
|
+
}
|
|
125
|
+
/** Converts hours to minutes. */
|
|
126
|
+
static hoursToMinutes(h) {
|
|
127
|
+
return h * 60;
|
|
128
|
+
}
|
|
129
|
+
/** Converts minutes to seconds. */
|
|
130
|
+
static minutesToSeconds(m) {
|
|
131
|
+
return m * 60;
|
|
132
|
+
}
|
|
133
|
+
/** Converts days to hours. */
|
|
134
|
+
static daysToHours(d) {
|
|
135
|
+
return d * 24;
|
|
136
|
+
}
|
|
137
|
+
/** Converts megabytes to gigabytes. */
|
|
138
|
+
static mbToGb(mb) {
|
|
139
|
+
return mb / 1024;
|
|
140
|
+
}
|
|
141
|
+
/** Converts gigabytes to megabytes. */
|
|
142
|
+
static gbToMb(gb) {
|
|
143
|
+
return gb * 1024;
|
|
144
|
+
}
|
|
145
|
+
/** Converts kilobytes to megabytes. */
|
|
146
|
+
static kbToMb(kb) {
|
|
147
|
+
return kb / 1024;
|
|
148
|
+
}
|
|
149
|
+
/** Converts joules to calories. */
|
|
150
|
+
static joulesToCalories(j) {
|
|
151
|
+
return j * 0.239006;
|
|
152
|
+
}
|
|
153
|
+
/** Converts calories to joules. */
|
|
154
|
+
static caloriesToJoules(cal) {
|
|
155
|
+
return cal / 0.239006;
|
|
156
|
+
}
|
|
157
|
+
/** Converts atmospheres to pascals. */
|
|
158
|
+
static atmToPascal(atm) {
|
|
159
|
+
return atm * 101325;
|
|
160
|
+
}
|
|
161
|
+
/** Converts pascals to atmospheres. */
|
|
162
|
+
static pascalToAtm(pa) {
|
|
163
|
+
return pa / 101325;
|
|
164
|
+
}
|
|
165
|
+
/** Converts hertz to kilohertz. */
|
|
166
|
+
static hzToKHz(hz) {
|
|
167
|
+
return hz / 1000;
|
|
168
|
+
}
|
|
169
|
+
/** Converts kilohertz to hertz. */
|
|
170
|
+
static kHzToHz(khz) {
|
|
171
|
+
return khz * 1000;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
@@ -502,3 +502,83 @@ export const CURRENCY_LOCALES = {
|
|
|
502
502
|
ZMW: 'en-ZM', // Zambian Kwacha
|
|
503
503
|
ZWL: 'en-ZW', // Zimbabwean Dollar
|
|
504
504
|
};
|
|
505
|
+
/** * Fiat currencies supported by Frankfurter API */
|
|
506
|
+
export const SUPPORTED_CURRENCIES = [
|
|
507
|
+
'AUD',
|
|
508
|
+
'BGN',
|
|
509
|
+
'BRL',
|
|
510
|
+
'CAD',
|
|
511
|
+
'CHF',
|
|
512
|
+
'CNY',
|
|
513
|
+
'CZK',
|
|
514
|
+
'DKK',
|
|
515
|
+
'EUR',
|
|
516
|
+
'GBP',
|
|
517
|
+
'HKD',
|
|
518
|
+
'HUF',
|
|
519
|
+
'IDR',
|
|
520
|
+
'ILS',
|
|
521
|
+
'INR',
|
|
522
|
+
'ISK',
|
|
523
|
+
'JPY',
|
|
524
|
+
'KRW',
|
|
525
|
+
'MXN',
|
|
526
|
+
'MYR',
|
|
527
|
+
'NOK',
|
|
528
|
+
'NZD',
|
|
529
|
+
'PHP',
|
|
530
|
+
'PLN',
|
|
531
|
+
'RON',
|
|
532
|
+
'SEK',
|
|
533
|
+
'SGD',
|
|
534
|
+
'THB',
|
|
535
|
+
'TRY',
|
|
536
|
+
'USD',
|
|
537
|
+
'ZAR',
|
|
538
|
+
];
|
|
539
|
+
/**
|
|
540
|
+
* @constant Unit names and their full readable labels.
|
|
541
|
+
*/
|
|
542
|
+
export const UNIT_LABELS = {
|
|
543
|
+
// Length
|
|
544
|
+
m: 'Meter',
|
|
545
|
+
km: 'Kilometer',
|
|
546
|
+
mi: 'Mile',
|
|
547
|
+
ft: 'Foot',
|
|
548
|
+
// Mass / Weight
|
|
549
|
+
kg: 'Kilogram',
|
|
550
|
+
lbs: 'Pound',
|
|
551
|
+
g: 'Gram',
|
|
552
|
+
oz: 'Ounce',
|
|
553
|
+
// Temperature
|
|
554
|
+
C: 'Celsius',
|
|
555
|
+
F: 'Fahrenheit',
|
|
556
|
+
K: 'Kelvin',
|
|
557
|
+
// Volume
|
|
558
|
+
l: 'Liter',
|
|
559
|
+
gal: 'Gallon',
|
|
560
|
+
// Area
|
|
561
|
+
sqm: 'Square Meter',
|
|
562
|
+
sqft: 'Square Foot',
|
|
563
|
+
// Speed
|
|
564
|
+
kmph: 'Kilometer per Hour',
|
|
565
|
+
mph: 'Miles per Hour',
|
|
566
|
+
// Time
|
|
567
|
+
h: 'Hour',
|
|
568
|
+
min: 'Minute',
|
|
569
|
+
sec: 'Second',
|
|
570
|
+
d: 'Day',
|
|
571
|
+
// Digital Storage
|
|
572
|
+
kb: 'Kilobyte',
|
|
573
|
+
mb: 'Megabyte',
|
|
574
|
+
gb: 'Gigabyte',
|
|
575
|
+
// Energy
|
|
576
|
+
j: 'Joule',
|
|
577
|
+
cal: 'Calorie',
|
|
578
|
+
// Pressure
|
|
579
|
+
atm: 'Atmosphere',
|
|
580
|
+
pa: 'Pascal',
|
|
581
|
+
// Frequency
|
|
582
|
+
hz: 'Hertz',
|
|
583
|
+
khz: 'Kilohertz',
|
|
584
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nhb-toolbox",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.70",
|
|
4
4
|
"description": "A versatile collection of smart, efficient, and reusable utility functions and classes for everyday development needs.",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|