UNPKG

fixer-api

Version:

fixer.io API client in TypeScript

213 lines (184 loc) 7.81 kB
var fixerApi = (function () { 'use strict'; function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } var index_browser$1 = {}; var NodeFixer = {}; var Fixer = {}; var constants = {}; var hasRequiredConstants; function requireConstants () { if (hasRequiredConstants) return constants; hasRequiredConstants = 1; Object.defineProperty(constants, "__esModule", { value: true }); constants.DEFAULT_URL = undefined; constants.DEFAULT_URL = 'http://data.fixer.io/api'; return constants; } var formatDate = {}; var hasRequiredFormatDate; function requireFormatDate () { if (hasRequiredFormatDate) return formatDate; hasRequiredFormatDate = 1; Object.defineProperty(formatDate, "__esModule", { value: true }); formatDate.ensureDateString = ensureDateString; formatDate.default = formatDate$1; const padNumber = (num) => (num < 10 ? `0${num}` : num.toString()); function ensureDateString(input) { const RE_DATE = /^\d{4}-\d{2}-\d{2}$/; if (typeof input === 'string' && RE_DATE.test(input)) { return input; } if (input instanceof Date) { return formatDate$1(input); } throw new TypeError(`Invalid date argument: ${input}`); } function formatDate$1(date) { return `${date.getUTCFullYear()}-${padNumber(date.getMonth() + 1)}-${padNumber(date.getDate())}`; } return formatDate; } var hasRequiredFixer; function requireFixer () { if (hasRequiredFixer) return Fixer; hasRequiredFixer = 1; var __awaiter = (Fixer.__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(Fixer, "__esModule", { value: true }); Fixer.Fixer = undefined; const constants_1 = requireConstants(); const formatDate_1 = requireFormatDate(); let Fixer$1 = class Fixer { constructor(opts = {}) { this.basicOptions = { baseUrl: opts.baseUrl || constants_1.DEFAULT_URL, accessKey: opts.accessKey }; } set({ baseUrl, accessKey } = {}) { this.basicOptions.baseUrl = baseUrl || this.basicOptions.baseUrl; this.basicOptions.accessKey = accessKey || this.basicOptions.accessKey; return this; } forDate(date_1) { return __awaiter(this, arguments, undefined, function* (date, opts = {}) { return this.request(`/${(0, formatDate_1.ensureDateString)(date)}`, opts); }); } latest() { return __awaiter(this, arguments, undefined, function* (opts = {}) { return this.request('/latest', opts); }); } symbols() { return __awaiter(this, arguments, undefined, function* (opts = {}) { return this.request('/symbols', opts); }); } convert(from, to, amount, date) { return __awaiter(this, undefined, undefined, function* () { return this.request('/convert', { from, to, amount, date }); }); } timeseries(startDate_1, endDate_1) { return __awaiter(this, arguments, undefined, function* (startDate, endDate, opts = {}) { const start = (0, formatDate_1.ensureDateString)(startDate); const end = (0, formatDate_1.ensureDateString)(endDate); return this.request('/timeseries', Object.assign({ start_date: start, end_date: end }, opts)); }); } }; Fixer.Fixer = Fixer$1; return Fixer; } var stringifyOptions = {}; var hasRequiredStringifyOptions; function requireStringifyOptions () { if (hasRequiredStringifyOptions) return stringifyOptions; hasRequiredStringifyOptions = 1; Object.defineProperty(stringifyOptions, "__esModule", { value: true }); stringifyOptions.default = stringifyOptions$1; function stringifyOptions$1(opts) { return Object.entries(opts) .map(([key, value]) => `${key}=${encodeURIComponent(`${value instanceof Array ? value.join(',') : value}`)}`) .join('&'); } return stringifyOptions; } var hasRequiredNodeFixer; function requireNodeFixer () { if (hasRequiredNodeFixer) return NodeFixer; hasRequiredNodeFixer = 1; var __awaiter = (NodeFixer.__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(NodeFixer, "__esModule", { value: true }); const Fixer_1 = requireFixer(); const stringifyOptions_1 = requireStringifyOptions(); let NodeFixer$1 = class NodeFixer extends Fixer_1.Fixer { // eslint-disable-next-line @typescript-eslint/no-explicit-any constructor(fetch, ...restParams) { super(...restParams); this.fetch = fetch; } request(path, opts) { return __awaiter(this, undefined, undefined, function* () { const accessKey = opts.access_key || this.basicOptions.accessKey; if (!accessKey) { throw new Error('access_key is required to use fixer'); } const filteredOptions = Object.entries(opts).reduce((acc, [key, value]) => (Object.assign(Object.assign({}, acc), (value ? { [key]: value } : {}))), { access_key: accessKey }); const url = `${this.basicOptions.baseUrl}${path}`; const response = yield this.fetch(`${url}?${(0, stringifyOptions_1.default)(filteredOptions)}`); let jsonResponse; try { jsonResponse = yield response.json(); } catch (_a) { throw new Error(`Request to ${url} resulted in non-JSON response`); } if (jsonResponse.error) { throw new Error(`${jsonResponse.error.type}: ${jsonResponse.error.info}`); } return jsonResponse; }); } }; NodeFixer.default = NodeFixer$1; return NodeFixer; } var hasRequiredIndex_browser; function requireIndex_browser () { if (hasRequiredIndex_browser) return index_browser$1; hasRequiredIndex_browser = 1; Object.defineProperty(index_browser$1, "__esModule", { value: true }); const NodeFixer_1 = requireNodeFixer(); index_browser$1.default = new NodeFixer_1.default(window.fetch.bind(window)); return index_browser$1; } var index_browserExports = requireIndex_browser(); var index_browser = /*@__PURE__*/getDefaultExportFromCjs(index_browserExports); return index_browser; })();