@cycjimmy/mini-xhr
Version:
A very lightweight javascript library for HTTP requests.
7 lines (6 loc) • 3.54 kB
JavaScript
/*!
* @cycjimmy/mini-xhr v7.0.1
* Homepage: https://github.com/cycjimmy/mini-xhr#readme
* Released under the MIT License.
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).miniXhr={})}(this,(function(e){"use strict";var t=function(e,t){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.call(null,e[n],n,e)},n=function(){var e="";return t(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},(function(t,n){var o="";e&&(o="&"),e+="".concat(o+n,"=").concat(t)})),e},o=function(e){var o=e.method,i=void 0===o?"GET":o,r=e.url,s=e.timeout,a=void 0===s?0:s,u=e.ontimeoutCB,c=void 0===u?null:u,d=e.params,p=void 0===d?{}:d,l=e.dataType,f=void 0===l?"json":l,v=e.data,m=e.responseType,y=void 0===m?"json":m,h=e.contentType,T=void 0===h?"application/json; charset=UTF-8":h,j=e.headers,g=void 0===j?{}:j,b=e.success,w=void 0===b?function(){}:b,P=e.fail,C=void 0===P?function(){}:P,x=new XMLHttpRequest,q=n(p);switch(x.open(i,q?"".concat(r,"?").concat(n(p)):r,!0),x.onreadystatechange=function(){if(4===x.readyState)if(x.status>=200&&x.status<400)w(x.response);else{var e=x.statusText,t=x.status;C({statusText:t?e:"timeout",status:t})}},x.timeout=a,c&&(x.ontimeout=c),x.responseType=y,T&&x.setRequestHeader("Content-Type",T),t(g,(function(e,t){x.setRequestHeader(t,e)})),f){case"json":x.setRequestHeader("Accept","application/json"),x.send(JSON.stringify(v));break;case"text":case"formData":x.setRequestHeader("Accept","*/*"),x.send(v);break;default:x.send(v)}return x},i=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.params,i=void 0===n?{}:n,r=t.headers,s=void 0===r?{}:r,a=t.contentType,u=t.responseType,c=void 0===u?"json":u,d=t.timeout,p=void 0===d?0:d,l=t.ontimeoutCB,f=void 0===l?null:l;return Promise.resolve().then((function(){return new Promise((function(t,n){o({method:"GET",url:e,params:i,contentType:a,headers:s,responseType:c,timeout:p,ontimeoutCB:f,success:function(e){return t(e)},fail:function(e){return n(e)}})}))}))},r=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.params,i=void 0===n?{}:n,r=t.data,s=void 0===r?{}:r,a=t.dataType,u=void 0===a?"json":a,c=t.headers,d=void 0===c?{}:c,p=t.contentType,l=t.responseType,f=void 0===l?"json":l,v=t.timeout,m=void 0===v?0:v,y=t.ontimeoutCB,h=void 0===y?null:y;return Promise.resolve().then((function(){return new Promise((function(t,n){o({method:"POST",url:e,params:i,data:s,dataType:u,headers:d,contentType:p,responseType:f,timeout:m,ontimeoutCB:h,success:function(e){return t(e)},fail:function(e){return n(e)}})}))}))},s=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=t.params,i=void 0===o?{}:o,r=t.timeout,s=void 0===r?5e3:r,a="undefined"==typeof window?global:window;return Promise.resolve().then((function(){return new Promise((function(t,o){var r=document.querySelector("head"),u=document.createElement("script"),c=n(i);u.src=e,u.type="text/javascript";var d="jsonp_".concat(Math.random()).replace(".","");function p(){r.removeChild(u),clearTimeout(u.timer),a[d]=null}a[d]=function(e){p(),t(e)},u.src+=c?"?".concat(c,"&callback=").concat(d):"?callback=".concat(d),u.timer=setTimeout((function(){p(),o("timeout")}),s),u.addEventListener("error",(function(){p(),o("error")})),r.appendChild(u)}))}))},a={get:i,post:r,jsonp:s};e.default=a,e.get=i,e.jsonp=s,e.post=r,Object.defineProperty(e,"__esModule",{value:!0})}));