cashify
Version:
Lightweight currency conversion library, successor of money.js
33 lines (32 loc) • 1.07 kB
JavaScript
import getRate from './lib/get-rate.js';
import parse from './utils/parser.js';
/**
* Function, which converts currencies based on provided rates.
*
* @param {number | string} amount - Amount of money you want to convert.
* @param {Object} options - Conversion options.
* @param {new (value: BigSource) => Big} fn - Optional, Big.js constructor - useful to avoid floating point errors.
* @return {number} Conversion result.
*
* @example
* const rates = {
* GBP: 0.92,
* EUR: 1.00,
* USD: 1.12
* };
*
* convert(10, {from: 'EUR', to: 'GBP', base: 'EUR', rates}); //=> 9.2
*/
export default function convert(amount, { from, to, base, rates, BigJs }) {
// If provided `amount` is a string, use parsing
if (typeof amount === 'string') {
const data = parse(amount);
amount = data.amount;
from = data.from ?? from;
to = data.to ?? to;
}
if (BigJs) {
return new BigJs(amount).times(getRate(base, rates, from, to)).toNumber();
}
return (amount * 100) * getRate(base, rates, from, to) / 100;
}