UNPKG

easy-currencies

Version:

A tool for easy conversion of currencies.

94 lines 4.54 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Chainer = void 0; const converter_1 = require("../converter"); /** * Chained converter. * It defaults to the basic API provider, and does not require initialization. * * @example * let value = await Convert(15).from("USD").to("EUR"); * * @export * @param {number} amount - amount of currency to convert * @returns */ function Chainer(amount = undefined) { let _currentAmount = amount; let _currentFrom = undefined; let _currentTo = undefined; let _currentRates = undefined; // local converter const _converter = new converter_1.Converter(); /** * Return object construction, prepared for chaining. */ const chainable = { from: _from, to: _to, fetch: _fetch, get rates() { return _currentRates; }, amount: _amount }; /** * Chain member that fetches and caches the rates for the given currency. * * @returns chainable object */ function _fetch() { return __awaiter(this, void 0, void 0, function* () { // fetching rates for the base currency _currentRates = yield _converter.getRates(_currentFrom, "", true); return chainable; }); } // returning chainable return chainable; /** * Chain member that sets the base currency * * @param {string} from * @returns chainable object */ function _amount(val) { _currentAmount = val; return chainable; } /** * Chain member that sets * * @param {string} from * @returns chainable object */ function _from(from) { _currentFrom = from; return chainable; } /** * Final chain member (ends chain) * * @param {string} to - final currency * @returns {number} - final converted amount */ function _to(to) { return __awaiter(this, void 0, void 0, function* () { _currentTo = to; // converting const result = yield _converter.convert(_currentAmount, _currentFrom, _currentTo, _currentRates); return result; }); } } exports.Chainer = Chainer; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXJ0cy9jaGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLDRDQUFxRDtBQWdCckQ7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxTQUE2QixTQUFTO0lBQzVELElBQUksY0FBYyxHQUF1QixNQUFNLENBQUM7SUFDaEQsSUFBSSxZQUFZLEdBQXVCLFNBQVMsQ0FBQztJQUNqRCxJQUFJLFVBQVUsR0FBdUIsU0FBUyxDQUFDO0lBQy9DLElBQUksYUFBYSxHQUFvQixTQUFTLENBQUM7SUFFL0Msa0JBQWtCO0lBQ2xCLE1BQU0sVUFBVSxHQUFHLElBQUkscUJBQVMsRUFBRSxDQUFDO0lBRW5DOztPQUVHO0lBQ0gsTUFBTSxTQUFTLEdBQXVCO1FBQ3BDLElBQUksRUFBRSxLQUFLO1FBQ1gsRUFBRSxFQUFFLEdBQUc7UUFDUCxLQUFLLEVBQUUsTUFBTTtRQUNiLElBQUksS0FBSztZQUNQLE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxNQUFNLEVBQUUsT0FBTztLQUNoQixDQUFDO0lBRUY7Ozs7T0FJRztJQUNILFNBQWUsTUFBTTs7WUFDbkIsdUNBQXVDO1lBQ3ZDLGFBQWEsR0FBRyxNQUFNLFVBQVUsQ0FBQyxRQUFRLENBQVMsWUFBWSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMxRSxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO0tBQUE7SUFFRCxzQkFBc0I7SUFDdEIsT0FBTyxTQUFTLENBQUM7SUFFakI7Ozs7O09BS0c7SUFDSCxTQUFTLE9BQU8sQ0FBQyxHQUFXO1FBQzFCLGNBQWMsR0FBRyxHQUFHLENBQUM7UUFDckIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsU0FBUyxLQUFLLENBQUMsSUFBWTtRQUN6QixZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFNBQWUsR0FBRyxDQUFDLEVBQVU7O1lBQzNCLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFFaEIsYUFBYTtZQUNiLE1BQU0sTUFBTSxHQUFHLE1BQU0sVUFBVSxDQUFDLE9BQU8sQ0FDN0IsY0FBYyxFQUNkLFlBQVksRUFDWixVQUFVLEVBQ2xCLGFBQWEsQ0FDZCxDQUFDO1lBRUYsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztLQUFBO0FBQ0gsQ0FBQztBQTdFRCwwQkE2RUMifQ==