UNPKG

@magic_npm/simple-tools

Version:

`simple-tools` is a simple set of tools

2 lines (1 loc) 2.52 kB
(function(u,s){typeof exports=="object"&&typeof module<"u"?s(exports):typeof define=="function"&&define.amd?define(["exports"],s):(u=typeof globalThis<"u"?globalThis:u||self,s(u["simple-tools"]={}))})(this,function(u){"use strict";const s=function(r){const n=r();return[n,(i,m)=>{let d=m||!i?s.mergeData(r(),i):i;return s.mergeData(n,d)}]};s.getDataType=function(r){return Object.prototype.toString.call(r).slice(8,-1).toLowerCase()},s.mergeData=function(r,n){return s.getDataType(r)==="object"&&["object","undefined"].includes(s.getDataType(n))&&n&&Object.keys(r).forEach(i=>{i in n&&(r[i]=n[i])}),r};function h(r,n){const{isCancel:i,isRepeat:m,isSingle:d,loading:o,params:y,loadingStart:S,loadingEnd:N,before:v,success:f,error:O,inputModel:b,outputModel:w}={isCancel:!0,isRepeat:!0,isSingle:!1,...n},e={status:0,sendNum:{},sendLatestKey:void 0,pm:void 0,err:"",params:void 0,output:void 0,result:{res:void 0,data:void 0,loadingKey:void 0},cancelApi:async()=>{var l;const p=(l=e.pm)==null?void 0:l.cancel,t=Promise.resolve();if(p){p==null||p(),e.status=0;try{await e.pm}catch{}console.log("[cancel successful]")}else console.log("[cancel error] find not cancel function.");return t}};return[async(p,t="value")=>{let l;const g={};try{if(e.params=y==null?void 0:y(),e.params&&s.mergeData(e.params,p),typeof v=="function"){let a=v(e.params&&JSON.parse(JSON.stringify(e.params)));if(a===!1)throw"close send api.";a instanceof Promise&&await a}if(!m&&e.status===1)return Promise.reject("操作频繁,请稍后再试");if(d&&e.status===2)return f==null||f(e.result.data,e.result.loadingKey,e.result.res),Promise.resolve(e.result);if(e.output=typeof w=="function"?w(e.params&&JSON.parse(JSON.stringify(e.params))):e.params&&JSON.parse(JSON.stringify(e.params)),i&&m&&e.status===1&&await e.cancelApi(),e.sendLatestKey===t&&e.status===1||(o&&t&&t in o&&(o[t]=!0),l=S==null?void 0:S(e.params&&JSON.parse(JSON.stringify(e.params)),t)),t){const a=t;e.sendNum[a]=(e.sendNum[a]||0)+1,g[a]=e.sendNum[a]}e.sendLatestKey=t,e.status=1,e.pm=r(e.output);const c=await e.pm;e.status=2,e.result.res=c,e.result.loadingKey=t,e.result.data=b==null?void 0:b(c),f==null||f(e.result.data,t)}catch(c){e.status=3,e.err=c,O==null||O(e.err)}const J=e.sendLatestKey;return(e.sendLatestKey!=t||g[J]===e.sendNum[J])&&(o&&t&&t in o&&(o[t]=!1),N==null||N(l)),new Promise((c,a)=>{e.status===2?c(e.result):e.status===3?a(e.err):a(new Error("useApi 异常"))})},o,{...e}]}u.useApi=h,u.useData=s,Object.defineProperty(u,Symbol.toStringTag,{value:"Module"})});