apisauce
Version:
Axios + standardized errors + request/response transforms.
2 lines (1 loc) • 6.93 kB
JavaScript
;function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var axios=_interopDefault(require("axios")),__assign=function(){return(__assign=Object.assign||function(e){for(var n,t=1,r=arguments.length;t<r;t++)for(var o in n=arguments[t])Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o]);return e}).apply(this,arguments)},__awaiter=function(e,n,t,r){return new(t||(t=Promise))(function(o,s){function a(e){try{i(r.next(e))}catch(e){s(e)}}function R(e){try{i(r.throw(e))}catch(e){s(e)}}function i(e){var n;e.done?o(e.value):(n=e.value,n instanceof t?n:new t(function(e){e(n)})).then(a,R)}i((r=r.apply(e,n||[])).next())})},__generator=function(e,n){var t,r,o,s,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return s={next:R(0),throw:R(1),return:R(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function R(R){return function(i){return function(R){if(t)throw new TypeError("Generator is already executing.");for(;s&&(s=0,R[0]&&(a=0)),a;)try{if(t=1,r&&(o=2&R[0]?r.return:R[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,R[1])).done)return o;switch(r=0,o&&(R=[2&R[0],o.value]),R[0]){case 0:case 1:o=R;break;case 4:return a.label++,{value:R[1],done:!1};case 5:a.label++,r=R[1],R=[0];continue;case 7:R=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===R[0]||2===R[0])){a=0;continue}if(3===R[0]&&(!o||R[1]>o[0]&&R[1]<o[3])){a.label=R[1];break}if(6===R[0]&&a.label<o[1]){a.label=o[1],o=R;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(R);break}o[2]&&a.ops.pop(),a.trys.pop();continue}R=n.call(e,a)}catch(e){R=[6,e],r=0}finally{t=o=0}if(5&R[0])throw R[1];return{value:R[0]?R[1]:void 0,done:!0}}([R,i])}}},toNumber=function(e){return e instanceof Date?e.getTime():"number"==typeof e||null===e||void 0===e?e:Number(e)},isWithin=function(e,n,t){return t>=e&&t<=n},isPromise=function(e){return!!e&&("object"==typeof e||"function"==typeof e)&&"function"==typeof e.then},DEFAULT_HEADERS={Accept:"application/json","Content-Type":"application/json"},DEFAULT_CONFIG={timeout:0},NONE=null,CLIENT_ERROR="CLIENT_ERROR",SERVER_ERROR="SERVER_ERROR",TIMEOUT_ERROR="TIMEOUT_ERROR",CONNECTION_ERROR="CONNECTION_ERROR",NETWORK_ERROR="NETWORK_ERROR",UNKNOWN_ERROR="UNKNOWN_ERROR",CANCEL_ERROR="CANCEL_ERROR",TIMEOUT_ERROR_CODES=["ECONNABORTED"],NODEJS_CONNECTION_ERROR_CODES=["ENOTFOUND","ECONNREFUSED","ECONNRESET"],STATUS_ERROR_CODES=["ERR_BAD_REQUEST","ERR_BAD_RESPONSE"],in200s=function(e){return isWithin(200,299,e)},in400s=function(e){return isWithin(400,499,e)},in500s=function(e){return isWithin(500,599,e)},getProblemFromError=function(e){return"Network Error"===e.message?NETWORK_ERROR:axios.isCancel(e)?CANCEL_ERROR:e.code?STATUS_ERROR_CODES.includes(e.code)?getProblemFromStatus(e.response.status):TIMEOUT_ERROR_CODES.includes(e.code)?TIMEOUT_ERROR:NODEJS_CONNECTION_ERROR_CODES.includes(e.code)?CONNECTION_ERROR:UNKNOWN_ERROR:getProblemFromStatus(e.response?e.response.status:null)},getProblemFromStatus=function(e){return e?in200s(e)?NONE:in400s(e)?CLIENT_ERROR:in500s(e)?SERVER_ERROR:UNKNOWN_ERROR:UNKNOWN_ERROR},create=function(e){var n,t=__assign(__assign({},DEFAULT_HEADERS),e.headers||{});if(e.axiosInstance)n=e.axiosInstance;else{var r=__assign(__assign({},e),{headers:void 0}),o=__assign(__assign({},DEFAULT_CONFIG),r);n=axios.create(o)}var s=[],a=[],R=[],i=[],u=[],E=function(e,r){return t[e]=r,n},c=function(e){return function(n,t,r){return void 0===t&&(t={}),void 0===r&&(r={}),O(__assign(__assign({},r),{url:n,params:t,method:e}))}},l=function(e){return function(n,t,r){return void 0===r&&(r={}),O(__assign(__assign({},r),{url:n,method:e,data:t}))}},O=function(e){return __awaiter(void 0,void 0,void 0,function(){var r,o,s,i;return __generator(this,function(u){switch(u.label){case 0:if(e.headers=__assign(__assign({},t),e.headers),a.length>0&&a.forEach(function(n){return n(e)}),!(R.length>0))return[3,6];r=0,u.label=1;case 1:return r<R.length?(o=R[r](e),isPromise(o)?[4,o]:[3,3]):[3,6];case 2:return u.sent(),[3,5];case 3:return[4,o(e)];case 4:u.sent(),u.label=5;case 5:return r++,[3,1];case 6:return s=toNumber(new Date),i=function(e){return __awaiter(void 0,void 0,void 0,function(){var n;return __generator(this,function(t){switch(t.label){case 0:return[4,N(s,e)];case 1:return n=t.sent(),[2,_(n)]}})})},[2,n.request(e).then(i).catch(i)]}})})},_=function(e){return s.forEach(function(n){try{n(e)}catch(e){}}),e},N=function(e,n){return __awaiter(void 0,void 0,void 0,function(){var t,r,o,s,a,R,E,c,l,O,_,N,f,p,T,d,C;return __generator(this,function(h){switch(h.label){case 0:if(t=toNumber(new Date),r=t-e,o=n instanceof Error||axios.isCancel(n),s=n,a=n,R=o?a.response:s,E=R&&R.status||null,c=o?getProblemFromError(n):getProblemFromStatus(E),l=o?a:null,O=in200s(E),_=n.config||null,N=R&&R.headers||null,f=null!==(C=R&&R.data)&&void 0!==C?C:null,p={duration:r,problem:c,originalError:l,ok:O,status:E,headers:N,config:_,data:f},i.length>0&&i.forEach(function(e){return e(p)}),!(u.length>0))return[3,6];T=0,h.label=1;case 1:return T<u.length?(d=u[T](p),isPromise(d)?[4,d]:[3,3]):[3,6];case 2:return h.sent(),[3,5];case 3:return[4,d(p)];case 4:h.sent(),h.label=5;case 5:return T++,[3,1];case 6:return[2,p]}})})};return{axiosInstance:n,monitors:s,addMonitor:function(e){s.push(e)},requestTransforms:a,asyncRequestTransforms:R,responseTransforms:i,asyncResponseTransforms:u,addRequestTransform:function(e){return a.push(e)},addAsyncRequestTransform:function(e){return R.push(e)},addResponseTransform:function(e){return i.push(e)},addAsyncResponseTransform:function(e){return u.push(e)},setHeader:E,setHeaders:function(e){return Object.keys(e).forEach(function(n){return E(n,e[n])}),n},deleteHeader:function(e){return delete t[e],n},headers:t,setBaseURL:function(e){return n.defaults.baseURL=e,n},getBaseURL:function(){return n.defaults.baseURL},any:O,get:c("get"),delete:c("delete"),head:c("head"),post:l("post"),put:l("put"),patch:l("patch"),link:c("link"),unlink:c("unlink")}},isCancel=axios.isCancel,CancelToken=axios.CancelToken,apisauce={DEFAULT_HEADERS:DEFAULT_HEADERS,NONE:NONE,CLIENT_ERROR:CLIENT_ERROR,SERVER_ERROR:SERVER_ERROR,TIMEOUT_ERROR:TIMEOUT_ERROR,CONNECTION_ERROR:CONNECTION_ERROR,NETWORK_ERROR:NETWORK_ERROR,UNKNOWN_ERROR:UNKNOWN_ERROR,create:create,isCancel:isCancel,CancelToken:CancelToken};exports.DEFAULT_HEADERS=DEFAULT_HEADERS,exports.NONE=NONE,exports.CLIENT_ERROR=CLIENT_ERROR,exports.SERVER_ERROR=SERVER_ERROR,exports.TIMEOUT_ERROR=TIMEOUT_ERROR,exports.CONNECTION_ERROR=CONNECTION_ERROR,exports.NETWORK_ERROR=NETWORK_ERROR,exports.UNKNOWN_ERROR=UNKNOWN_ERROR,exports.CANCEL_ERROR=CANCEL_ERROR,exports.getProblemFromError=getProblemFromError,exports.getProblemFromStatus=getProblemFromStatus,exports.create=create,exports.isCancel=isCancel,exports.CancelToken=CancelToken,exports.default=apisauce;