UNPKG

we-req

Version:

weReq是基于微信小程序的 wx.request的高级封装,提供全局和外部拦截器的管理,支持自动登录等功能,旨在简化微信小程序网络请求的处理流程,提升开发者的使用体验。

1 lines 7.12 kB
(()=>{"use strict";var e={359:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(){this.interceptors=[]}return e.prototype.use=function(e,t){return this.interceptors.push({fulfilled:e,rejected:t}),this.interceptors.length-1},e.prototype.forEach=function(e){this.interceptors.forEach((function(t){null!==t&&e(t)}))},e.prototype.eject=function(e){this.interceptors[e]&&(this.interceptors[e]=null)},e}();t.default=n},489:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(){}return e.prototype.show=function(e){wx.showToast({title:"boolean"==typeof e?"加载中":e,icon:"loading",mask:!0,duration:6e4})},e.prototype.hide=function(){wx.hideToast()},e}();t.default=n},44:function(e,t,n){var r=this&&this.__assign||function(){return r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},r.apply(this,arguments)},o=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function u(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,u)}c((r=r.apply(e,t||[])).next())}))},i=this&&this.__generator||function(e,t){var n,r,o,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return s.next=u(0),s.throw=u(1),s.return=u(2),"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function u(u){return function(c){return function(u){if(n)throw new TypeError("Generator is already executing.");for(;s&&(s=0,u[0]&&(i=0)),i;)try{if(n=1,r&&(o=2&u[0]?r.return:u[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,u[1])).done)return o;switch(r=0,o&&(u=[2&u[0],o.value]),u[0]){case 0:case 1:o=u;break;case 4:return i.label++,{value:u[1],done:!1};case 5:i.label++,r=u[1],u=[0];continue;case 7:u=i.ops.pop(),i.trys.pop();continue;default:if(!((o=(o=i.trys).length>0&&o[o.length-1])||6!==u[0]&&2!==u[0])){i=0;continue}if(3===u[0]&&(!o||u[1]>o[0]&&u[1]<o[3])){i.label=u[1];break}if(6===u[0]&&i.label<o[1]){i.label=o[1],o=u;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(u);break}o[2]&&i.ops.pop(),i.trys.pop();continue}u=t.call(e,i)}catch(e){u=[6,e],r=0}finally{n=o=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}([u,c])}}};Object.defineProperty(t,"__esModule",{value:!0});var s=n(359),u=n(82),c=n(489),a=n(360),f=function(){function e(e){this.config=e,this.loading=new c.default,this.isRefreshing=!1,this.failedQueue=[],this.retryAttempts=0,this.autoLoginConfig=e.autoLoginConfig,this.interceptorsManagers={request:new s.default,response:new s.default},e.interceptors&&(this.interceptorsManagers.request.use(e.interceptors.requestSuccessFn,e.interceptors.requestFailFn),this.interceptorsManagers.response.use(e.interceptors.responseSuccessFn,e.interceptors.responseFailFn))}return e.prototype.login=function(){return new Promise((function(e,t){wx.login({success:function(n){n.code?e(n.code):t(new Error("获取用户登录态失败!".concat(n.errMsg)))},fail:t})}))},e.prototype.refreshTokenFn=function(e){var t=this;return new Promise((function(n,o){var i,s=t.autoLoginConfig.reTokenConfig,u=s.url,c=s.method,f=void 0===c?"GET":c,l=s.codeKey,h=void 0===l?"code":l,p=s.headers,d=void 0===p?{}:p,g=s.data,v=void 0===g?{}:g,y=u,b=v;if(!(0,a.isAbsoluteURL)(y)&&t.config.baseURL&&(y=(0,a.combineURLs)(t.config.baseURL,y)),"GET"===f.toUpperCase()){var w=y.includes("?");y+="".concat(w?"&":"?").concat(h,"=").concat(e)}else b=r(((i={})[h]=e,i),v);wx.request({url:y,method:f.toUpperCase(),data:b,header:d,success:function(e){e?n(e):o(new Error("获取用户token失败!"+e.errMsg))},fail:function(e){o(e)}})}))},e.prototype.handleResponse=function(e,t){var n=this;return new Promise((function(r){var o;(null===(o=n.autoLoginConfig)||void 0===o?void 0:o.reTokenConfig)&&n.autoLoginConfig.isTokenExpiredFn(e)?n.handleTokenRefresh().then((function(){n.request(t).then(r)})).catch((function(){t.loading&&n.loading.hide()})):(n.retryAttempts=0,r(e),t.loading&&n.loading.hide())}))},e.prototype.handleTokenRefresh=function(){return o(this,void 0,void 0,(function(){var e,t,n,r=this;return i(this,(function(o){switch(o.label){case 0:return this.isRefreshing?[2,new Promise((function(e,t){r.failedQueue.push({resolve:e,reject:t})}))]:(this.isRefreshing=!0,this.retryAttempts>=((null===(n=this.autoLoginConfig)||void 0===n?void 0:n.reLoginLimit)||3)?(this.isRefreshing=!1,[2,Promise.reject(new Error("刷新 token 达到最大重试次数"))]):[4,this.login()]);case 1:return e=o.sent(),t=this.refreshTokenFn(e),this.retryAttempts++,[2,new Promise((function(e,n){t.then((function(t){var n;null===(n=r.autoLoginConfig)||void 0===n||n.reTokenConfig.success(t),r.isRefreshing=!1,r.failedQueue.forEach((function(e){return(0,e.resolve)(t)})),r.failedQueue=[],e(t)})).catch((function(e){r.isRefreshing=!1,r.failedQueue.forEach((function(t){return(0,t.reject)(e)})),r.failedQueue=[],n(e)}))}))]}}))}))},e.prototype.request=function(e){return o(this,void 0,void 0,(function(){var t,n,o,s,c=this;return i(this,(function(i){for((t=r(r({},this.config),e)).loading&&this.loading.show(t.loading),(null===(s=null==e?void 0:e.interceptors)||void 0===s?void 0:s.requestSuccessFn)&&e.interceptors.requestSuccessFn(e),n=[u.default,void 0],this.interceptorsManagers.request.forEach((function(e){n.unshift(e.fulfilled,e.rejected)})),this.interceptorsManagers.response.forEach((function(e){n.push(e.fulfilled,e.rejected)})),o=Promise.resolve(t);n.length;)o=o.then(n.shift(),n.shift());return[2,o.then((function(e){return c.handleResponse(e,t)}),(function(){}))]}))}))},e.prototype.get=function(e){return this.request(r({method:"GET"},e))},e.prototype.post=function(e){return this.request(r({method:"POST"},e))},e.prototype.delete=function(e){return this.request(r({method:"DELETE"},e))},e}();t.default=f},82:function(e,t,n){var r=this&&this.__assign||function(){return r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},r.apply(this,arguments)};Object.defineProperty(t,"__esModule",{value:!0});var o=n(360);t.default=function(e){var t;return e.baseURL&&!(0,o.isAbsoluteURL)(e.url)&&(e.url=(0,o.combineURLs)(e.baseURL,e.url)),e.method=null===(t=e.method)||void 0===t?void 0:t.toUpperCase(),new Promise((function(t,n){wx.request(r(r({},e),{success:function(e){try{t(e)}catch(e){n(e)}},fail:function(e){n(e)}}))}))}},360:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isAbsoluteURL=function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)},t.combineURLs=function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}}},t={};var n,r,o,i={};n=i,r=function n(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={exports:{}};return e[r].call(i.exports,i,i.exports,n),i.exports}(44),o={init:function(e){return new r.default(e)}},n.default=o,module.exports=i.default})();