fixer-api
Version:
fixer.io API client in TypeScript
2 lines (1 loc) • 3.46 kB
JavaScript
var fixerApi=function(){"use strict";function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var t,r={},n={},i={},s={};var o,u,c={};function a(){if(u)return i;u=1;var e=i.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,s){function o(e){try{c(n.next(e))}catch(e){s(e)}}function u(e){try{c(n.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,u)}c((n=n.apply(e,t||[])).next())}))};Object.defineProperty(i,"__esModule",{value:!0}),i.Fixer=void 0;const r=(t||(t=1,Object.defineProperty(s,"__esModule",{value:!0}),s.DEFAULT_URL=void 0,s.DEFAULT_URL="http://data.fixer.io/api"),s),n=function(){if(o)return c;o=1,Object.defineProperty(c,"__esModule",{value:!0}),c.ensureDateString=function(e){if("string"==typeof e&&/^\d{4}-\d{2}-\d{2}$/.test(e))return e;if(e instanceof Date)return t(e);throw new TypeError(`Invalid date argument: ${e}`)},c.default=t;const e=e=>e<10?`0${e}`:e.toString();function t(t){return`${t.getUTCFullYear()}-${e(t.getMonth()+1)}-${e(t.getDate())}`}return c}();return i.Fixer=class{constructor(e={}){this.basicOptions={baseUrl:e.baseUrl||r.DEFAULT_URL,accessKey:e.accessKey}}set({baseUrl:e,accessKey:t}={}){return this.basicOptions.baseUrl=e||this.basicOptions.baseUrl,this.basicOptions.accessKey=t||this.basicOptions.accessKey,this}forDate(t){return e(this,arguments,void 0,(function*(e,t={}){return this.request(`/${(0,n.ensureDateString)(e)}`,t)}))}latest(){return e(this,arguments,void 0,(function*(e={}){return this.request("/latest",e)}))}symbols(){return e(this,arguments,void 0,(function*(e={}){return this.request("/symbols",e)}))}convert(t,r,n,i){return e(this,void 0,void 0,(function*(){return this.request("/convert",{from:t,to:r,amount:n,date:i})}))}timeseries(t,r){return e(this,arguments,void 0,(function*(e,t,r={}){const i=(0,n.ensureDateString)(e),s=(0,n.ensureDateString)(t);return this.request("/timeseries",Object.assign({start_date:i,end_date:s},r))}))}},i}var f,d,l,h={};function y(){if(d)return n;d=1;var e=n.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,s){function o(e){try{c(n.next(e))}catch(e){s(e)}}function u(e){try{c(n.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,u)}c((n=n.apply(e,t||[])).next())}))};Object.defineProperty(n,"__esModule",{value:!0});const t=a(),r=(f||(f=1,Object.defineProperty(h,"__esModule",{value:!0}),h.default=function(e){return Object.entries(e).map((([e,t])=>`${e}=${encodeURIComponent(`${t instanceof Array?t.join(","):t}`)}`)).join("&")}),h);let i=class extends t.Fixer{constructor(e,...t){super(...t),this.fetch=e}request(t,n){return e(this,void 0,void 0,(function*(){const e=n.access_key||this.basicOptions.accessKey;if(!e)throw new Error("access_key is required to use fixer");const i=Object.entries(n).reduce(((e,[t,r])=>Object.assign(Object.assign({},e),r?{[t]:r}:{})),{access_key:e}),s=`${this.basicOptions.baseUrl}${t}`,o=yield this.fetch(`${s}?${(0,r.default)(i)}`);let u;try{u=yield o.json()}catch(e){throw new Error(`Request to ${s} resulted in non-JSON response`)}if(u.error)throw new Error(`${u.error.type}: ${u.error.info}`);return u}))}};return n.default=i,n}return e(function(){if(l)return r;l=1,Object.defineProperty(r,"__esModule",{value:!0});const e=y();return r.default=new e.default(window.fetch.bind(window)),r}())}();