UNPKG

easy-currencies

Version:

A tool for easy conversion of currencies.

153 lines 9.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.providers = exports.resolveProvider = void 0; /** * A function that constructs provider based on raw input data. * * @export * @param {ProviderReference} provider object containing provider name and api key * @returns {Provider} constructed provider */ function resolveProvider(provider) { const existentProvider = exports.providers[provider.name]; if (!existentProvider) { throw "No provider with this name. Please use a provider from the supported providers list."; } // attaching key existentProvider.key = provider.key; return existentProvider; } exports.resolveProvider = resolveProvider; /** * Provider map initialization */ exports.providers = { ExchangeRateAPI: { endpoint: { base: "https://api.exchangerate-api.com/v4/latest/", single: "%FROM%", multiple: "%FROM%" }, key: undefined, handler: function (data) { return data.rates; }, errors: { 400: "Malformed query.", 404: "Currency not found" }, errorHandler: function (data) { return data.status; } }, ExchangeRatesAPIIO: { endpoint: { base: "http://api.exchangeratesapi.io/latest?access_key=%KEY%", single: "&base=%FROM%&symbols=%TO%", multiple: "&base=%FROM%" }, errors: { 105: "A paid plan is required in order to use other base currencies!", 101: "Invalid API key!", 201: "Invalid base currency." }, key: undefined, handler: function (data) { return data.rates; }, errorHandler: function (data) { return data.status; } }, CurrencyLayer: { endpoint: { base: "http://apilayer.net/api/live?access_key=%KEY%", single: "&source=%FROM%", multiple: "&source=%FROM%&currencies=%TO%" }, key: undefined, handler: function (data) { const map = {}; Object.keys(data.quotes).map((key) => { map[key.slice(3)] = data.quotes[key]; }); return map; }, errors: { 105: "A paid plan is required in order to use CurrencyLayer (base currency use not allowed)", 101: "Invalid API key!", 201: "Invalid base currency.", 106: "No results." }, errorHandler: function (data) { return data.error ? data.error.code : null; } }, OpenExchangeRates: { endpoint: { base: "https://openexchangerates.org/api/latest.json?app_id=%KEY%", single: "&base=%FROM%", multiple: "&base=%FROM%" }, key: undefined, handler: function (data) { return data.rates; }, errors: { 401: "Invalid API key!" }, errorHandler: function (data) { return data.status; } }, AlphaVantage: { endpoint: { base: "https://www.alphavantage.co/query?function=CURRENCY_EXCHANGE_RATE&apikey=%KEY%", single: "&from_currency=%FROM%&to_currency=%TO%", multiple: "" }, key: undefined, handler: function (data) { const map = {}; const o = data[Object.keys(data)[0]]; map[o["3. To_Currency Code"]] = o["5. Exchange Rate"]; return map; }, errors: { 503: "Invalid API key or Malformed query." }, errorHandler: function (data) { if (!data) { return null; } // AlphaVantage does not return error codes in the response, // so we have to check if the response contains error messages // and translate them to error codes if possible. const hasError = data["Error Message"] || data["Information"]; if (hasError === null || hasError === void 0 ? void 0 : hasError.includes("API rate limit")) { return 429; } if (hasError) { return hasError; } return null; } }, Fixer: { endpoint: { base: "http://data.fixer.io/api/latest?access_key=%KEY%", single: "&base=%FROM%&symbols=%TO%", multiple: "&base=%FROM%" }, key: undefined, handler: function (data) { return data.rates; }, errors: { 105: "A paid plan is required in order to use Fixer.io (base currency use not allowed)", 101: "Invalid API key!", 201: "Invalid base currency." }, errorHandler: function (data) { return data.error ? data.error.code : null; } } }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BhcnRzL3Byb3ZpZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFnR0E7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLFFBQTJCO0lBQ3pELE1BQU0sZ0JBQWdCLEdBQUcsaUJBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEQsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDdEIsTUFBTSxzRkFBc0YsQ0FBQztJQUMvRixDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLGdCQUFnQixDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDO0lBQ3BDLE9BQU8sZ0JBQWdCLENBQUM7QUFDMUIsQ0FBQztBQVRELDBDQVNDO0FBRUQ7O0dBRUc7QUFDVSxRQUFBLFNBQVMsR0FBYztJQUNsQyxlQUFlLEVBQUU7UUFDZixRQUFRLEVBQUU7WUFDUixJQUFJLEVBQUUsNkNBQTZDO1lBQ25ELE1BQU0sRUFBRSxRQUFRO1lBQ2hCLFFBQVEsRUFBRSxRQUFRO1NBQ25CO1FBQ0QsR0FBRyxFQUFFLFNBQVM7UUFDZCxPQUFPLEVBQUUsVUFBVSxJQUFTO1lBQzFCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNwQixDQUFDO1FBQ0QsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsRUFBRSxvQkFBb0IsRUFBRTtRQUM5RCxZQUFZLEVBQUUsVUFBVSxJQUFTO1lBQy9CLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNyQixDQUFDO0tBQ0Y7SUFDRCxrQkFBa0IsRUFBRTtRQUNsQixRQUFRLEVBQUU7WUFDUixJQUFJLEVBQUUsd0RBQXdEO1lBQzlELE1BQU0sRUFBRSwyQkFBMkI7WUFDbkMsUUFBUSxFQUFFLGNBQWM7U0FDekI7UUFDRCxNQUFNLEVBQUU7WUFDTixHQUFHLEVBQUUsZ0VBQWdFO1lBQ3JFLEdB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