UNPKG

radi-fetch

Version:

`radi-fetch` is the official HTTP client for [Radi.js](https://radi.js.org). It deeply integrates with Radi for seamless application building.

1 lines 2.65 kB
let version='0.3.23';var index=({r:t,l:e,mount:n,headless:r,Component:a},s = {})=>{let o=(s.baseUrl||'').replace(/\/$/,''),u=s.dummy,i=s.dummyData||{},d=(t,e,n)=>{setTimeout(()=>{n(i[t]&&i[t][e]||null)},s.dummyTimeout||100)},c=function(t,e,n,r,a){this.localDummy=s.dummy;this.url=e;this.id=e+'';this.type=t;this.start=()=>a.start(this.id);this.end=()=>a.end(this.id);this.http=new XMLHttpRequest;this.headers=Object.assign(s.headers||{},r||{});this.params=JSON.stringify(n);this.resolve=()=>{this.end()};this.reject=t=>{console.error('[Radi Fetch] WARN: Request caught an error.\n',t),this.end()};let u=e.split('?').length-1;if(t==='get')for(let t in n)e=e.concat((!u?'?':'&')+t+'='+n[t]),u+=1;this.http.open(t,o+e,!0);for(let t in this.headers)this.http.setRequestHeader(t,this.headers[t]);this.abort=(...t)=>this.http.abort(...t);this.tag=t=>(this.id=t, this)};c.prototype.dummy=function(t = !0){this.localDummy=t;return this};c.prototype.catch=function(t){typeof t==='function'&&(this.reject=(...e)=>{t(...e),this.end()});return this};c.prototype.then=function(t,e){this.start();typeof t==='function'&&(this.resolve=(...e)=>{t(...e),this.end()});typeof e==='function'&&(this.reject=(...t)=>{e(...t),this.end()});if(this.localDummy||u){d(this.type,this.url,t=>{this.resolve({headers:'',status:'dummy',response:JSON.stringify(t),text:()=>JSON.stringify(t),json:()=>t})});return this}let n=this;this.http.onreadystatechange=function(t){let e=this;if(e.readyState===XMLHttpRequest.DONE){let t={headers:n.http.getAllResponseHeaders(),status:e.status,response:e.response};e.status===200?(t.text=function(){return e.responseText},t.json=function(){try{return JSON.parse(this.text())}catch(t){console.error('[Radi Fetch] WARN: Response is not JSON, using fallback to empty JSON.\n',t);return{}}},n.resolve(t)):n.reject(t)}};this.http.send(this.params);return this};class l extends a{get(t,e,n){return new c('get',t,e,n,this.$loading)}post(t,e,n){return new c('post',t,e,n,this.$loading)}put(t,e,n){return new c('put',t,e,n,this.$loading)}delete(t,e,n){return new c('delete',t,e,n,this.$loading)}options(t,e,n){return new c('options',t,e,n,this.$loading)}head(t,e,n){return new c('head',t,e,n,this.$loading)}}class p extends a{state(){return{$any:!1,$count:0}}start(t){if(this.state[t])return!1;this.setState({[t]:!0,$count:this.state.$count+1,$any:!!(this.state.$count+1)})}end(t){this.setState({[t]:!1,$count:this.state.$count-1,$any:!!(this.state.$count-1)})}run(t,e){if(this.state[t])return!1;this.start(t);e(e=>{typeof e==='function'&&e(),this.end(t)})}}r('loading',p);r('fetch',l);return{config:s,Fetch:l}};export default index;export { version }