UNPKG

easy-currencies

Version:

A tool for easy conversion of currencies.

154 lines 9.05 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.resolveProviders = exports.Config = void 0; const axios_1 = __importDefault(require("axios")); const providers_1 = require("./providers"); const utils_1 = require("./utils"); /** * Config object that initializes with configuration data * passed in by the user. * * @export * @class Config */ class Config { /** * Provider getter. * * @returns {Provider[]} * @memberof Config */ get providers() { return this._active; } /** * Provider setter (adder). * * @param {Provider[]} providers - providers to be added * @param {boolean} [setActive=false] - should the new provider(s) be prioritized * @returns {void} * @memberof Config */ addProviders(providers, setActive) { providers = providers.filter((p) => { return !this._active.find((a) => a == p); }); if (setActive) { this._active.unshift(...providers); return; } this._active.push(...providers); return; } /** * Returns the current provider * * @returns {Provider} - current provider * @memberof Config */ activeProvider() { return this._active[0]; } /** * Creates an instance of Config. * @param {(...ProviderReference[] | undefined[] | string[])} config * @memberof Config */ constructor(...config) { /** * Active client. */ this._client = axios_1.default.create(); /** * Client setter. * @param client The client. */ this.setClient = (client) => { this._client = client; }; /** * Client getter. */ this.getClient = () => { return this._client; }; /** * Adds a single new, user-defined provider to the list of providers. * * @param {string} name - the new provider name * @param {Provider} provider - the new provider object * @param {boolean} [setActive=false] - should the new provider(s) be prioritized * @memberof Config */ this.add = (name, provider, setActive = false) => { this.addMultiple([{ name, provider }], setActive); }; /** * Adds multiple new, user-defined provider to the list of providers. * * @param {UserDefinedProvider[]} providers - providers to be added * @param {boolean} [setActive=false] - should the new provider(s) be prioritized * @memberof Config */ this.addMultiple = (newProviders, setActive = false) => { // Duplicate check newProviders.forEach((p) => { if (!(0, utils_1.checkIfUserDefinedProvider)(p)) { throw "Invalid provider format!"; } if (providers_1.providers[p.name]) { throw "A provider by this name is already registered!"; } providers_1.providers[p.name] = p.provider; }); // Adding provider to active providers this.addProviders(newProviders.map((p) => p.provider), setActive); }; /** * Removes a specific provider * @param {Provider} provider - provider to be removed * @memberof Config */ this.remove = (provider) => { this._active = this._active.filter((p) => p != provider); }; this._active = resolveProviders(...config); // adding default fallback this.addProviders([providers_1.providers.ExchangeRateAPI], false); } } exports.Config = Config; /** * Config resolver that normalizes configuration input into the config interface * * @export * @param {(...ProviderReference[] | undefined[] | string[])} configuration * @returns {Provider[]} */ function resolveProviders(...configuration) { // resolve default if none provided. if (typeof configuration === "undefined" || !configuration.length) { return [providers_1.providers.ExchangeRateAPI]; } // checking for incorrect config types if (typeof configuration[0] !== "object" && typeof configuration[0] !== "undefined" && typeof configuration[0] !== "string") { throw "You must either supply nothing or a config object (see the 'config' section to see the different APIs that can be used)"; } // returning single provider if (typeof configuration[0] === "string") { // constructing in initializationConfig object from string values return [(0, providers_1.resolveProvider)({ name: configuration[0], key: configuration[1] })]; } // configuration is an array of providers // casting const initializationConfig = configuration; // resolving all providers return initializationConfig.map((provider) => (0, providers_1.resolveProvider)(provider)); } exports.resolveProviders = resolveProviders; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BhcnRzL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrREFBNkM7QUFDN0MsMkNBTXFCO0FBRXJCLG1DQUFxRDtBQVdyRDs7Ozs7O0dBTUc7QUFDSCxNQUFhLE1BQU07SUFTakI7Ozs7O09BS0c7SUFDSCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQXNCRDs7Ozs7OztPQU9HO0lBQ0ssWUFBWSxDQUFDLFNBQXFCLEVBQUUsU0FBa0I7UUFDNUQsU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNqQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO1lBQ25DLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUNoQyxPQUFPO0lBQ1QsQ0FBQztJQXlERDs7Ozs7T0FLRztJQUNILGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxZQUFZLEdBQUcsTUFBb0Q7UUEvR25FOztXQUVHO1FBQ0ssWUFBTyxHQUFrQixlQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFaEQ7OztXQUdHO1FBQ0gsY0FBUyxHQUFHLENBQUMsTUFBcUIsRUFBUSxFQUFFO1lBQzFDLElBQUksQ0FBQyxPQUFPLEdBQUcs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