rxhr
Version:
Tiny Observable based HTTP client
3 lines (2 loc) • 2.34 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.rxhr=t()}(this,function(){function e(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var t;t="undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof module?module:Function("return this")();var n=function(e){var t,n=e.Symbol;return"function"==typeof n?n.observable?t=n.observable:(t=n("observable"),n.observable=t):t="@@observable",t}(t),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(e){return Object.keys(e).map(function(t){return encodeURIComponent(t)+"="+encodeURIComponent(e[t])}).join("&")},u=function(e,t){return t?e+"?"+o(t):e},s=function(e){var t={};return e.split("\n").forEach(function(e){var n=e.indexOf(":");n>0&&(t[e.slice(0,n)]=e.slice(n+1).trim())}),t},i=function(){};return function(t){return e({subscribe:function(e,n,o){var f=e,a=new XMLHttpRequest;"function"==typeof e&&(f={next:e,error:n||i,complete:o||i});try{var c=function(e){var n=e||(t.responseType&&"text"!==t.responseType?a.response:a.responseText);return{status:1223===a.status?204:a.status,ok:a.status>=200&&a.status<300,type:e?"error":"default",statusText:e?a.statusText:a.statusText||"OK",headers:s(a.getAllResponseHeaders()),url:a.responseURL,text:function(){return"object"===(void 0===n?"undefined":r(n))?JSON.stringify(n):n},json:function(){return"string"==typeof n?JSON.parse(n):n},blob:function(){return new Blob([n])}}},p=function(){var e=c();if(e.ok)return f.next(e),void f.complete();f.error(e)},l=function(){var e=c(new Error("Network Error"));f.error(e)},d=function(){var e=c(new Error("ECONNABORTED"));f.error(e)};a.open(t.method.toUpperCase(),u(t.url,t.params)),t.responseType&&(a.responseType=t.responseType),a.withCredentials=!0===t.withCredentials;for(var b in t.headers)a.setRequestHeader(b,t.headers[b]);a.timeout=t.timeout,a.send(t.body||null),a.onload=p,a.onerror=l,a.ontimeout=d}catch(e){f.error(e)}return{unsubscribe:function(){a.abort()}}}},n,function(){return this})}});
//# sourceMappingURL=rxhr.umd.min.js.map