@bsv/wallet-toolbox-client
Version:
Client only Wallet Storage
237 lines • 7.18 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.updateChaintracksFiatExchangeRates = updateChaintracksFiatExchangeRates;
exports.updateExchangeratesapi = updateExchangeratesapi;
exports.getExchangeRatesIo = getExchangeRatesIo;
const WERR_errors_1 = require("../../sdk/WERR_errors");
async function updateChaintracksFiatExchangeRates(targetCurrencies, options) {
const url = options.chaintracksFiatExchangeRatesUrl;
if (!url)
throw new WERR_errors_1.WERR_MISSING_PARAMETER('options.chaintracksFiatExchangeRatesUrl');
const response = await fetch(url);
const data = await response.json();
const r = { status: response.status, data };
if (r.status !== 200 || !r.data || r.data.status != 'success') {
throw new WERR_errors_1.WERR_BAD_REQUEST(`${url} returned status ${r.status}`);
}
const rates = r.data.value;
rates.timestamp = new Date(rates.timestamp);
return rates;
}
async function updateExchangeratesapi(targetCurrencies, options) {
if (!options.exchangeratesapiKey)
throw new WERR_errors_1.WERR_MISSING_PARAMETER('options.exchangeratesapiKey');
const iorates = await getExchangeRatesIo(options.exchangeratesapiKey);
if (!iorates.success)
throw new WERR_errors_1.WERR_BAD_REQUEST(`getExchangeRatesIo returned success ${iorates.success}`);
if (!iorates.rates['USD'] || !iorates.rates[iorates.base])
throw new WERR_errors_1.WERR_BAD_REQUEST(`getExchangeRatesIo missing rates for 'USD' or base`);
const r = {
timestamp: new Date(iorates.timestamp * 1000),
base: 'USD',
rates: {}
};
const basePerUsd = iorates.rates[iorates.base] / iorates.rates['USD'];
let updates = 0;
for (const [key, value] of Object.entries(iorates.rates)) {
if (targetCurrencies.indexOf(key) > -1) {
r.rates[key] = value * basePerUsd;
updates++;
}
}
if (updates !== targetCurrencies.length)
throw new WERR_errors_1.WERR_BAD_REQUEST(`getExchangeRatesIo failed to update all target currencies`);
//console.log(`new fiat rates=${JSON.stringify(r)}`)
return r;
}
async function getExchangeRatesIo(key) {
const url = `http://api.exchangeratesapi.io/v1/latest?access_key=${key}`;
const response = await fetch(url);
const data = await response.json();
const r = { status: response.status, data };
if (r.status !== 200 || !r.data) {
throw new WERR_errors_1.WERR_BAD_REQUEST(`getExchangeRatesIo returned status ${r.status}`);
}
const rates = r.data;
return rates;
}
/*
{
"success": true,
"timestamp": 1702405384,
"base": "EUR",
"date": "2023-12-12",
"rates": {
"AED": 3.96261,
"AFN": 74.453362,
"ALL": 101.807155,
"AMD": 435.489459,
"ANG": 1.944069,
"AOA": 897.226337,
"ARS": 395.468082,
"AUD": 1.646886,
"AWG": 1.942271,
"AZN": 1.832044,
"BAM": 1.95407,
"BBD": 2.177971,
"BDT": 118.654929,
"BGN": 1.956827,
"BHD": 0.406753,
"BIF": 3078.499675,
"BMD": 1.079039,
"BND": 1.446102,
"BOB": 7.4534,
"BRL": 5.35741,
"BSD": 1.07874,
"BTC": 0.000026145469,
"BTN": 89.916078,
"BWP": 14.715901,
"BYN": 3.553337,
"BYR": 21149.174075,
"BZD": 2.174364,
"CAD": 1.468287,
"CDF": 2875.640503,
"CHF": 0.945353,
"CLF": 0.034313,
"CLP": 948.09775,
"CNY": 7.743512,
"COP": 4307.525658,
"CRC": 569.093422,
"CUC": 1.079039,
"CUP": 28.594547,
"CVE": 110.978933,
"CZK": 24.507795,
"DJF": 191.766554,
"DKK": 7.457544,
"DOP": 61.505535,
"DZD": 145.236415,
"EGP": 33.367028,
"ERN": 16.185592,
"ETB": 60.199033,
"EUR": 1,
"FJD": 2.416779,
"FKP": 0.859886,
"GBP": 0.859574,
"GEL": 2.880527,
"GGP": 0.859886,
"GHS": 12.980915,
"GIP": 0.859886,
"GMD": 72.726644,
"GNF": 9285.134874,
"GTQ": 8.443457,
"GYD": 225.859997,
"HKD": 8.426031,
"HNL": 26.685156,
"HRK": 7.598132,
"HTG": 142.513142,
"HUF": 382.707793,
"IDR": 16801.292339,
"ILS": 4.007585,
"IMP": 0.859886,
"INR": 89.987955,
"IQD": 1414.081256,
"IRR": 45602.907562,
"ISK": 151.109018,
"JEP": 0.859886,
"JMD": 167.700721,
"JOD": 0.765366,
"JPY": 157.115675,
"KES": 165.523229,
"KGS": 96.379362,
"KHR": 4440.24707,
"KMF": 493.571281,
"KPW": 971.097551,
"KRW": 1417.685123,
"KWD": 0.332733,
"KYD": 0.8989,
"KZT": 493.04112,
"LAK": 22368.488843,
"LBP": 16154.243871,
"LKR": 352.747636,
"LRD": 203.02122,
"LSL": 20.582684,
"LTL": 3.186123,
"LVL": 0.6527,
"LYD": 5.211954,
"MAD": 10.976529,
"MDL": 19.340873,
"MGA": 4939.301335,
"MKD": 61.507276,
"MMK": 2265.283559,
"MNT": 3705.780074,
"MOP": 8.676817,
"MRU": 42.727878,
"MUR": 47.690625,
"MVR": 16.584924,
"MWK": 1816.023037,
"MXN": 18.69803,
"MYR": 5.052606,
"MZN": 68.249194,
"NAD": 20.588506,
"NGN": 865.924709,
"NIO": 39.6024,
"NOK": 11.848426,
"NPR": 143.865605,
"NZD": 1.761931,
"OMR": 0.415394,
"PAB": 1.07864,
"PEN": 4.073376,
"PGK": 4.025102,
"PHP": 59.974075,
"PKR": 306.446851,
"PLN": 4.334063,
"PYG": 7963.910929,
"QAR": 3.928776,
"RON": 4.973399,
"RSD": 117.196649,
"RUB": 97.248412,
"RWF": 1351.496966,
"SAR": 4.047186,
"SBD": 9.12268,
"SCR": 14.561036,
"SDG": 648.5028,
"SEK": 11.285032,
"SGD": 1.449037,
"SHP": 1.312921,
"SLE": 24.488188,
"SLL": 21311.029931,
"SOS": 616.131981,
"SRD": 40.655509,
"STD": 22333.938945,
"SYP": 14029.21897,
"SZL": 20.587826,
"THB": 38.597298,
"TJS": 11.757734,
"TMT": 3.776638,
"TND": 3.377493,
"TOP": 2.551714,
"TRY": 31.312865,
"TTD": 7.321483,
"TWD": 34.012943,
"TZS": 2697.598652,
"UAH": 39.917867,
"UGX": 4102.367289,
"USD": 1.079039,
"UYU": 42.422631,
"UZS": 13299.161683,
"VEF": 3838024.202021,
"VES": 38.392542,
"VND": 26188.28851,
"VUV": 129.693288,
"WST": 2.964402,
"XAF": 655.37362,
"XAG": 0.047456,
"XAU": 0.000545,
"XCD": 2.916158,
"XDR": 0.811478,
"XOF": 657.134976,
"XPF": 119.331742,
"YER": 270.110528,
"ZAR": 20.470755,
"ZMK": 9712.646776,
"ZMW": 26.319693,
"ZWL": 347.450277
}
}
*/
//# sourceMappingURL=exchangeRates.js.map