@xingm/http-request-sdk 0.1.3 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +0,0 @@
1
- "use strict";const O=require("axios"),$=[0,200],W={"api.accountExpired":"Your account has expired. Please log in again.","api.permissionExpiredTitle":"Permission expired","api.permissionExpiredContent":"Your account has expired. Please log in again.","api.permissionExpiredOkText":"OK","api.networkExceptionMsg":"Network connection error","api.systemException":"System error","api.noPermissionOperation":"No permission to perform this operation","api.exportFailed":"Export failed","api.tokenExpired":"Your account has expired. Please log in again."},C=(e,t,n)=>G(n)?W[e]??t??e:t??e,G=e=>typeof e=="string"&&e.toLowerCase().startsWith("en"),I=e=>{var c,g,u;if(typeof e!="string")return;const t=((c=e.match(/【([^】]+)】/))==null?void 0:c[1])||((g=e.match(/\(([^)]+)\)/))==null?void 0:g[1]),n=(u=e.match(/原因[::]\s*(.+)$/))==null?void 0:u[1],i={};return t&&(i.value=t),n&&(i.reason=n),Object.keys(i).length?i:void 0},Y=(e,t)=>(n,i,c)=>{var u;const g=(u=e==null?void 0:e.translate)==null?void 0:u.call(e,n,i,c);return g&&g!==n?g:C(n,i,t)},_=(e,t,n,i)=>{var T,x;const g=`api.errMsg${String(e??"")}`,u=(T=n==null?void 0:n.translate)==null?void 0:T.call(n,g,void 0,I(t));return u&&u!==g?u:typeof t=="string"&&t||((x=n==null?void 0:n.translate)==null?void 0:x.call(n,"api.systemException","系统异常"))||C("api.systemException","系统异常",i)},K=(e,t,n="/admin-api")=>typeof e=="function"?e(t):e??`${n}/system/auth/refresh-token?refreshToken=${t??""}`,X=e=>typeof e=="function"?e():e??"/login",L=(e,t=$)=>t.some(n=>String(n)===String(e)),U=(e,t="Bearer")=>typeof t=="function"?t(e):t?`${t} ${e}`:e,z=()=>typeof window<"u"&&typeof document<"u",H="http-request-sdk:authorization-expired",V=(e={})=>{const t=Y(e.locale,e.lang);let n=!1,i=null;const c=O.create({baseURL:e.baseURL??"/admin-api",timeout:e.timeout??3e4,validateStatus:s=>s>=200&&s<300||s===400,headers:{"Content-Type":"application/json;charset=UTF-8"},...e.axiosConfig}),g=()=>{var h,f,d,l;const s=typeof e.getAccessToken=="function",r=typeof((h=e.token)==null?void 0:h.getAccessToken)=="function",a=((f=e.getAccessToken)==null?void 0:f.call(e))??((l=(d=e.token)==null?void 0:d.getAccessToken)==null?void 0:l.call(d));return console.info("[http-request-sdk][token]","access-token:resolve",{hasGetAccessToken:s,hasTokenGetAccessToken:r,hasToken:!!a,tokenLength:(a==null?void 0:a.length)??0}),a},u=(s,r)=>{console.info("[http-request-sdk][token]",s,{hasToken:!!r,tokenLength:(r==null?void 0:r.length)??0})},T=()=>{var s,r,a;return((s=e.getLocale)==null?void 0:s.call(e))??((a=(r=e.locale)==null?void 0:r.getLocale)==null?void 0:a.call(r))},x=s=>{var r;(r=e.onBusinessError)==null||r.call(e,s)},k=s=>{var r;(r=e.onHttpError)==null||r.call(e,s)},y=s=>{var r,a;(a=(r=e.ui)==null?void 0:r.error)==null||a.call(r,s)},P=s=>{var r,a;(a=(r=e.ui)==null?void 0:r.warning)==null||a.call(r,s)},m=(s,r)=>{console.info("[http-request-sdk][permission-expired]",s,r??{})},S=()=>t("api.accountExpired","您的账号已失效,请重新登录"),q=async s=>{var f,d;const r={...s,message:S()};if(m("triggerTokenExpired:start",{code:r.code,message:r.message,hasShowPermissionExpired:!!((f=e.ui)!=null&&f.showPermissionExpired),modalVisible:n}),n){m("triggerTokenExpired:skip-visible",{code:r.code});return}const a=()=>{n=!1,m("modal:visible-reset",{code:r.code})},h=async()=>{var l,w,o,p;m("modal:onOk:start",{code:r.code,hasOnTokenExpired:!!e.onTokenExpired});try{e.onTokenExpired?await e.onTokenExpired(r):(await((w=(l=e.token)==null?void 0:l.logout)==null?void 0:w.call(l)),(p=(o=e.token)==null?void 0:o.clearToken)==null||p.call(o),z()&&(window.location.href=X(e.loginUrl))),a(),m("modal:onOk:success",{code:r.code})}catch(b){m("modal:onOk:error",{code:r.code,error:b}),a()}};if(n=!0,m("modal:visible-set",{code:r.code}),(d=e.ui)!=null&&d.showPermissionExpired){m("modal:showPermissionExpired:call",{code:r.code}),e.ui.showPermissionExpired({title:t("api.permissionExpiredTitle","权限失效提醒"),content:r.message,okText:t("api.permissionExpiredOkText","我知道了"),onOk:h,onCancel:a});return}if(z()){m("modal:adapter-missing:native-alert",{code:r.code}),window.alert(`${t("api.permissionExpiredTitle","权限失效提醒")}
2
-
3
- ${r.message}`),await h();return}m("modal:adapter-missing:run-onOk-without-browser",{code:r.code}),await h()},E=s=>{var r,a,h,f,d;if(s)return s.accessToken&&((a=(r=e.token)==null?void 0:r.setToken)==null||a.call(r,s.accessToken)),s.refreshToken&&((f=(h=e.token)==null?void 0:h.setRefreshToken)==null||f.call(h,s.refreshToken)),(d=e.onRefreshTokenSuccess)==null||d.call(e,s),s.loginInfo},A=async()=>{var h,f,d,l,w,o;if(e.refreshAccessToken){const p=(f=(h=e.token)==null?void 0:h.getRefreshToken)==null?void 0:f.call(h);u("refresh-token:custom-get-refresh-token",p);const b=await e.refreshAccessToken({refreshToken:p,service:c});return E(b)}const s=(l=(d=e.token)==null?void 0:d.getRefreshToken)==null?void 0:l.call(d);u("refresh-token:get-refresh-token",s);const r=await O.post(K(e.refreshTokenUrl,s,e.baseURL??"/admin-api"),void 0,{headers:se(e.headers)}),a=((o=(w=e.token)==null?void 0:w.normalizeRefreshResponse)==null?void 0:o.call(w,r))??J(r);if(a.code===401||a.code===400)throw new Error(S());return E(a)},N=()=>(i||(i=A().finally(()=>{i=null})),i);c.interceptors.request.use(s=>{const r=g();u("request:get-access-token",r);const a=T();return r&&j(s,e.authHeaderName??"Authorization",U(r,e.authScheme)),a&&j(s,e.localeHeaderName??"Accept-Language",a),te(s,e.headers),s},s=>{var r;return(r=e.onRequestError)==null||r.call(e,s),Promise.reject(s)});const F=(async s=>{var w;if(s.config.responseType==="blob")return Z(s,e,t);if(s.status!==200&&s.status!==400){const o=t("api.networkExceptionMsg","网络连接异常");return y(o),k({message:o,response:s}),Promise.reject(new Error(((w=s.data)==null?void 0:w.message)||"Error"))}const{code:r,msg:a,message:h,data:f}=s.data,l=a||h||t("api.systemException","系统异常");if(Number(r)===400){const o=S();return m("response:code-400:show-modal",{httpStatus:s.status,code:r,message:o,url:s.config.url}),await q({code:r,message:o,response:s}),x({code:r,message:o,response:s}),Promise.reject(new Error(o))}if(ne(s,e)){m("response:should-refresh-token",{httpStatus:s.status,code:r,message:l,url:s.config.url});const o=s.config;if(o._retry){const p=S();return m("response:retry-already-used",{code:r,url:s.config.url}),await q({code:r,message:p,response:s}),Promise.reject(new Error(p))}o._retry=!0;try{return m("refresh-token:start",{code:r,url:s.config.url}),await N(),m("refresh-token:success:retry-request",{code:r,url:s.config.url}),c.request(o)}catch(p){const b=S();return m("refresh-token:error:trigger-modal",{code:r,url:s.config.url,error:p}),await q({code:r,message:b,response:s,error:p}),Promise.reject(new Error(b))}}if(Number(r)===403){const o=t("api.noPermissionOperation","暂无操作权限");return P(o),x({code:r,message:o,response:s}),Promise.reject(new Error(o))}if(Number(r)===510){const o={machineCode:B(f,"machineCode"),expireTime:B(f,"expireTime"),rawData:f};Q(o,s,e);return}if(Number(r)===1002031003)return x({code:r,message:l,response:s}),Promise.reject(new Error(l));if(!L(r,e.successCodes)){const o=_(r,l,e.locale,e.lang);return y(o),x({code:r,message:o,response:s}),Promise.reject(new Error(o))}return e.transformResponse?e.transformResponse(s.data):e.unwrapData?s.data.data:s.data});return c.interceptors.response.use(F,s=>{var a,h;const{response:r}=s;if(r&&((a=r.config)==null?void 0:a.responseType)==="blob"&&typeof Blob<"u"&&r.data instanceof Blob)r.data.text().then(f=>{try{const d=JSON.parse(f),l=_(d.code,d.msg||d.message,e.locale,e.lang);Number(d.code)===403?P(t("api.noPermissionOperation","暂无操作权限")):y(l||t("api.exportFailed","导出失败")),k({code:d.code,message:l||t("api.exportFailed","导出失败"),response:r,error:s})}catch{const d=t("api.exportFailed","导出失败");y(d),k({message:d,response:r,error:s})}});else if((r==null?void 0:r.status)===403){const f=t("api.noPermissionOperation","暂无操作权限");P(f),k({code:403,message:f,response:r,error:s})}else if((r==null?void 0:r.status)!==404){const f=t("api.networkExceptionMsg","网络连接异常");y(f),k({code:r==null?void 0:r.status,message:f,response:r,error:s})}return(h=e.onResponseError)==null||h.call(e,s),Promise.reject(s)}),{service:c,refreshToken:A,request:{request:s=>c.request(s),get:(s,r={})=>typeof s=="string"?c.get(s,D(r)):c.request({...s,method:"get"}),post:(s,r,a={})=>typeof s=="string"?c.post(s,r,a):c.request(M(s,"post",r,a)),put:(s,r,a={})=>typeof s=="string"?c.put(s,r,a):c.request(M(s,"put",r,a)),patch:(s,r,a={})=>typeof s=="string"?c.patch(s,r,a):c.request(M(s,"patch",r,a)),delete:(s,r={})=>typeof s=="string"?c.delete(s,D(r)):c.request({...s,method:"delete"})}}},J=e=>{const t=e.data.data,n=e.data;return{code:e.data.code,accessToken:(t==null?void 0:t.accessToken)??n.accessToken,refreshToken:(t==null?void 0:t.refreshToken)??n.refreshToken,loginInfo:t}},Z=async(e,t,n)=>{var g,u,T,x,k,y,P,m,S,q;const i=((g=e.headers)==null?void 0:g["content-type"])||"";if(!String(i).includes("application/json"))return e.data;const c=await e.data.text();try{const E=JSON.parse(c);if(Number(E.code)===403){const N=n("api.noPermissionOperation","暂无操作权限");return(T=(u=t.ui)==null?void 0:u.warning)==null||T.call(u,N),(x=t.onBusinessError)==null||x.call(t,{code:E.code,message:N,response:e}),Promise.reject(new Error(N))}if(L(E.code,t.successCodes))return e.data;const A=_(E.code,E.msg||E.message,t.locale,t.lang);return(y=(k=t.ui)==null?void 0:k.error)==null||y.call(k,A),(P=t.onBusinessError)==null||P.call(t,{code:E.code,message:A,response:e}),Promise.reject(new Error(A))}catch{const E=n("api.exportFailed","导出失败");return(S=(m=t.ui)==null?void 0:m.error)==null||S.call(m,E),(q=t.onHttpError)==null||q.call(t,{message:E,response:e}),Promise.reject(new Error(E))}},Q=(e,t,n)=>{var i,c,g,u,T;if((i=n.onAuthorizationExpired)==null||i.call(n,{payload:e,response:t}),ee(n)){re(e,n);return}e.expireTime?(g=(c=n.authorization)==null?void 0:c.openExpired)==null||g.call(c,e):(T=(u=n.authorization)==null?void 0:u.open)==null||T.call(u,e)},ee=e=>{var n;if((n=e.authorization)!=null&&n.isInMicroApp)return e.authorization.isInMicroApp();if(!z())return!1;const t=window;return!!(t.__MICRO_APP_ENVIRONMENT__||t.__MICRO_APP_BASE_APPLICATION__)},re=(e,t)=>{var c,g,u,T;if((c=t.authorization)!=null&&c.dispatchMicroAppEvent){t.authorization.dispatchMicroAppEvent(e);return}if(!z())return;const n={type:"authorization_expired",machineCode:e.machineCode,expireTime:e.expireTime},i=(g=t.authorization)==null?void 0:g.eventCenterName;if(i){const k=window[i];if(typeof(k==null?void 0:k.dispatch)=="function"){k.dispatch({myname:((u=t.authorization)==null?void 0:u.microAppName)??i,data:n});return}}window.dispatchEvent(new CustomEvent(((T=t.authorization)==null?void 0:T.eventName)??H,{detail:n}))},B=(e,t)=>{if(!e||typeof e!="object")return;const n=e;return typeof n[t]=="string"?n[t]:void 0},j=(e,t,n)=>{const i=e.headers;if(i&&typeof i.set=="function"){i.set(t,String(n));return}e.headers[t]=String(n)},te=(e,t)=>{Object.entries(t??{}).forEach(([n,i])=>{i!=null&&j(e,n,i)})},se=e=>Object.entries(e??{}).reduce((t,[n,i])=>(i==null||(t[n]=String(i)),t),{}),ne=(e,t)=>{var n;return t.shouldRefreshToken?t.shouldRefreshToken(e):Number((n=e.data)==null?void 0:n.code)===401},M=(e,t,n,i={})=>({...i,...e,method:t,data:e.data??n??i.data}),D=e=>e?ie(e)?e:{params:e}:{},ae=new Set(["adapter","auth","baseURL","cancelToken","data","decompress","headers","httpAgent","httpsAgent","maxBodyLength","maxContentLength","method","onDownloadProgress","onUploadProgress","params","paramsSerializer","proxy","responseEncoding","responseType","signal","socketPath","timeout","timeoutErrorMessage","transformRequest","transformResponse","transitional","url","validateStatus","withCredentials","xsrfCookieName","xsrfHeaderName"]),ie=e=>!e||typeof e!="object"||typeof URLSearchParams<"u"&&e instanceof URLSearchParams?!1:Object.keys(e).some(t=>ae.has(t));let v=null;const ce=e=>{const t=V(e);return v=t,t},oe=e=>(v=e,e),R=()=>{if(!v)throw new Error("Request SDK is not initialized. Call setupRequestSdk(...) or install the Vue plugin first.");return v},ue={request:e=>R().request.request(e),get:(e,t)=>R().request.get(e,t),post:(e,t,n)=>R().request.post(e,t,n),put:(e,t,n)=>R().request.put(e,t,n),patch:(e,t,n)=>R().request.patch(e,t,n),delete:(e,t)=>R().request.delete(e,t)},de=new Proxy({},{get(e,t){return Reflect.get(R().service,t)}});exports.AUTHORIZATION_EXPIRED_EVENT=H;exports.buildAuthHeaderValue=U;exports.createRequestSdk=V;exports.extractI18nParams=I;exports.getBizErrorMsg=_;exports.getDefaultRequestSdk=R;exports.http=de;exports.isSuccessCode=L;exports.request=ue;exports.setDefaultRequestSdk=oe;exports.setupRequestSdk=ce;