easy-currencies
Version:
A tool for easy conversion of currencies.
94 lines • 4.54 kB
JavaScript
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==
;