@hzw-tech/utils 0.0.5 → 0.0.6

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.
@@ -9,10 +9,8 @@
9
9
  "ExtractDefaultPropTypes": "writable",
10
10
  "ExtractPropTypes": "writable",
11
11
  "ExtractPublicPropTypes": "writable",
12
- "GConfig": "writable",
13
12
  "IBem": "writable",
14
13
  "IBemCss": "writable",
15
- "IRequestConfig": "writable",
16
14
  "InjectionKey": "writable",
17
15
  "MaybeRef": "writable",
18
16
  "MaybeRefOrGetter": "writable",
@@ -26,7 +24,6 @@
26
24
  "acceptHMRUpdate": "writable",
27
25
  "bem": "writable",
28
26
  "computed": "writable",
29
- "config": "writable",
30
27
  "createApp": "writable",
31
28
  "createPinia": "writable",
32
29
  "css": "writable",
@@ -79,6 +76,7 @@
79
76
  "shallowReactive": "writable",
80
77
  "shallowReadonly": "writable",
81
78
  "shallowRef": "writable",
79
+ "storeConfig": "writable",
82
80
  "storeToRefs": "writable",
83
81
  "toRaw": "writable",
84
82
  "toRef": "writable",
@@ -88,7 +88,15 @@
88
88
  "less.validate": false,
89
89
  "scss.validate": false,
90
90
  "stylelint.validate": ["vue", "css", "scss"],
91
- "cSpell.words": ["dcloudio", "easyinput", "qrcode", "unplugin", "weapp", "weixin"],
91
+ "cSpell.words": [
92
+ "dcloudio",
93
+ "easyinput",
94
+ "qrcode",
95
+ "unplugin",
96
+ "valtio",
97
+ "weapp",
98
+ "weixin"
99
+ ],
92
100
  "[typescript]": {
93
101
  "editor.defaultFormatter": "dbaeumer.vscode-eslint"
94
102
  },
package/dist/eslint.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { antfu } from '@antfu/eslint-config'
2
+
2
3
  function eslint(options) {
3
4
  return antfu({
4
5
  formatters: true,
@@ -10,6 +11,21 @@ function eslint(options) {
10
11
  },
11
12
  rules: {
12
13
  'style/brace-style': ['error', '1tbs'],
14
+ 'vue/html-comment-content-spacing': ['error', 'never'],
15
+ 'style/member-delimiter-style': [
16
+ 'error',
17
+ {
18
+ multiline: {
19
+ delimiter: 'semi',
20
+ requireLast: true,
21
+ },
22
+ singleline: {
23
+ delimiter: 'semi',
24
+ requireLast: false,
25
+ },
26
+ multilineDetection: 'brackets',
27
+ },
28
+ ],
13
29
  },
14
30
  ignores: [
15
31
  // 依赖与构建产物
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { App } from 'vue';
2
- import type { GConfig } from './ts/config';
2
+ import type { GConfig } from './types';
3
3
  export * from './ts/bem';
4
4
  export * from './ts/reg';
5
5
  export * from './ts/request';
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import e from"crypto-js";import t,{AxiosHeaders as r}from"axios";import{ElMessage as n,ElLoading as o}from"element-plus";import s from"json-bigint";const i={appVersion:1,aes:{encryptKey:"test"},storage:{prefix:"app",needAes:!0}};function a(){return window.config??i}function c(e){const t=Object.prototype.toString.call(e),r=t.length-1;return t.substring(8,r)}function l(e){try{return JSON.parse(e),!0}catch{return!1}}const u={encrypt(t,r=a().aes.encryptKey){const n=JSON.stringify(t);return e.AES.encrypt(n,r).toString()},decrypt(t,r=a().aes.encryptKey){const n=e.AES.decrypt(t,r).toString(e.enc.Utf8);return l(n)?JSON.parse(n):n}};function d(e="sessionStorage"){let t=window.sessionStorage;"sessionStorage"!==e&&(t=window.localStorage);return{set:(e,r,n=!0)=>{const{prefix:o,needAes:s}=a().storage;let i=r;if(!n){const n=t.getItem(`${o}_${e}`)||"";if(n)if(s){const e=JSON.parse(u.decrypt(n,a().aes.encryptKey));i=Object.assign(e,r)}else{const e=JSON.parse(n);i=Object.assign(e,r)}}"Object"!==c(i)&&"Array"!==c(i)||(i=JSON.stringify(i)),i&&s&&(i=u.encrypt(i,a().aes.encryptKey)),t.setItem(`${o}_${e}`,i)},get:e=>{const{prefix:r,needAes:n}=a().storage;let o=t.getItem(`${r}_${e}`);if(o&&n)try{o=u.decrypt(o,a().aes.encryptKey)}catch{o=""}return o&&l(o)?JSON.parse(o):o},remove:e=>{const{prefix:r}=a().storage;t.removeItem(`${r}_${e}`)},clear:()=>{t.clear()}}}const g={set:d("localStorage").set,get:d("localStorage").get,remove:d("localStorage").remove,clear:d("localStorage").clear},f={set:d("sessionStorage").set,get:d("sessionStorage").get,remove:d("sessionStorage").remove,clear:d("sessionStorage").clear};function p(e){if(!e.includes("?"))return;const t=e.split("?")[1].split("&"),r={};for(let e=0;e<t.length;e++){const n=t[e].split("="),o=n[0],s=n[1];r[o]=s}return r}const h={getConfig:a,getType:c,isJson:l,isEmpty:function(e){const t=c(e);return"Object"===t?"{}"===JSON.stringify(e):"Array"===t?0===e.length:null==e},storageHandler:d,mergeObject:function e(t,r){if("Object"!==c(t))return console.error("utils.mergeObjectParams方法传递的默认参数不是Object类型"),r;if(!r)return t;for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)){const o=t[n];"Object"===c(r)&&(void 0===r[n]?r[n]=o:"Object"===c(o)&&e(o,r[n]))}return r},debounce:function(e,t=1e3){let r=null;return(...n)=>{r&&clearTimeout(r),r=setTimeout(()=>{e(...n),r=null},t)}},throttle:function(e,t=1e3){let r=null;return(...n)=>{r||(r=setTimeout(()=>{e(...n),r=null},t))}},clone:function e(t){if(!t&&"object"!=typeof t)throw new Error("error arguments");const r=t.constructor===Array?[]:{};return Object.keys(t).forEach(n=>{t[n]&&"object"==typeof t[n]?r[n]=e(t[n]):r[n]=t[n]}),r},urlParser:p,objectKey:function(e,t){for(const r in e)if(e[r]===t)return r;return""},createDownloadLink:function(e,t){if("download"in document.createElement("a")){const r=document.createElement("a");r.download=t,r.style.display="none",r.href="string"==typeof e?e:URL.createObjectURL(e),document.body.appendChild(r),r.click(),URL.revokeObjectURL(r.href),document.body.removeChild(r)}},arrayDelete:function(e,t,r){const n=e.length;if(n>0)for(let o=n-1;o>=0;o--){const n=e[o];(r&&n[r]===t||n===t)&&e.splice(o,1)}},getAssetsFile:function(e){return new URL(`../assets/images/${e}`,import.meta.url).href},logger:function(e="[DEBUG]",t="green"){const r=p(window.location.href);r&&"1"===r.debug&&g.set("debug-ts","1");const n=g.get("debug-ts"),o=!!n&&1===n;return(...r)=>{o&&console.warn(`%c ${e}`,`color:${t}`,...r)}},kebabCaseToCamelCase:function(e){return e.replace(/-([a-z])/g,e=>e[1].toUpperCase())},enumGetKeyByValue:function(e,t){return Object.keys(e).find(r=>e[r]===t)},getByteLength:function(e){const t=(new TextEncoder).encode(e);return new Uint8Array(t.buffer).length},clearLocalStorage:function(){const e=a().appVersion,t="app-version";e!==g.get(t)&&(g.clear(),g.set(t,e))},isNumeric:function(e){if(null==e)return!1;if("boolean"==typeof e)return!1;if("number"==typeof e)return!Number.isNaN(e)&&Number.isFinite(e);if("string"==typeof e){const t=/^[-+]?(\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/i;return!Number.isNaN(Number(e))&&!Number.isNaN(Number.parseFloat(e))&&t.test(e.trim())}return!1},encodeToLetters:function(e){return btoa(encodeURIComponent(e)).replace(/\+/g,"A").replace(/\//g,"B").replace(/=/g,"")},decodeFromLetters:function(e){const t=e.padEnd(4*Math.ceil(e.length/4),"=");return decodeURIComponent(atob(t.replace(/A/g,"+").replace(/B/g,"/")))},cls:function(e){return e?e.join(" "):""},phoneHider:function(e){return reg.isMobile(e)?e.replace(/(\d{3})\d{4}(\d{4})/,"$1****$2"):e},aes:u,storage:g,session:f},w={component:"hzw",app:"app",css:"css"};function m(e,t,r,n){let o=`${e}-${t}`;if(r){if(r.includes("__"))throw new Error('类命名中不可包含两层元素,即不可包含两个"__"!');o+=`__${r}`}return n&&(o+=`--${n}`),o}function b(){const{css:e}=w;return{b:t=>m(e,t),be:(t,r)=>m(e,t,r),bm:(t,r)=>m(e,t,"",r),bem:(t,r,n)=>m(e,t,r,n)}}const E=b(),y={app:function(e){const{app:t}=w;return{b:()=>m(t,e),e:r=>m(t,e,r),m:r=>m(t,e,"",r),em:(r,n)=>m(t,e,r,n)}},hzw:function(e){const{component:t}=w;return{b:()=>m(t,e),e:r=>m(t,e,r),m:r=>m(t,e,"",r),em:(r,n)=>m(t,e,r,n)}},css:b};const S={isEmail:function(e){return/^(([^<>()\\[\].,;:\s@"]+(\.[^<>()\\[\].,;:\s@"]+)*)|(".+"))@((\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\])|(([a-z\-0-9]+\.)+[a-z]{2,}))$/i.test(e)},isMobile:function(e){return/^(?:(?:\+|00)86)?1(?:3\d|4[5-79]|5[0-35-9]|6[5-7]|7[0-8]|8\d|9\d)\d{8}$/.test(e)},isPassWord:function(e){return/^(?=.*[a-z])(?=.*\d)(?=.*[^a-z0-9\s]).{8,12}$/i.test(e)},isPasswordWithSymbol:function(e){return/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[_,.!@#])[\w,.!@#]{8,20}$/.test(e)},hasSpace:function(e){return/\s/.test(e)},isEn:function(e){return/[a-z]+/i.test(e)},isChinese:function(e){return/[\u4E00-\u9FA5]+/.test(e)}};let O="";const v={validatePhoneEmail:function(e,t,r){""===t?r(new Error("请输入手机号/邮箱")):(t.includes("@")?S.isEmail(t)||r(new Error("邮箱格式不正确")):S.isMobile(t)||r(new Error("手机号格式不正确")),r())},validateEmail:function(e,t,r){""===t?r(new Error("请输入邮箱")):(S.isEmail(t)||r(new Error("邮箱格式不正确")),r())},validateEmailAddress:function(e,t,r){t?(S.isEmail(t)||r(new Error("邮箱格式不正确")),r()):r()},validatePassword:function(e,t,r){""===t?r(new Error("请输入密码")):S.isPassWord(t)?S.isChinese(t)||S.hasSpace(t)?r(new Error("不允许空格、中文")):(O=t.replace(/\s+/g,""),r()):r(new Error("8-12位字母、数字以及标点符号构成,区分大小写"))},validateCheckPass:function(e,t,r){""===t?r(new Error("请再次输入密码")):O!==t.replace(/\s+/g,"")?r(new Error("两次输入密码不一致!")):r()},validatePhone:function(e,t,r){t?(S.isMobile(t)||r(new Error("手机号格式不正确")),r()):r(new Error("请输入手机号码"))},validatePhoneNumber:function(e,t,r){t?(S.isMobile(t)||r(new Error("手机号格式不正确")),r()):r()},validateRealName:function(e,t,r){""===t?r(new Error("请填写您的姓名")):S.isChinese(t)?r():r(new Error("请填写中文姓名"))},validateZh:function(e,t,r){""===t?r(new Error("请填写中文关键词!")):t&&(S.isChinese(t)?r():r(new Error("请输入中文!")))},validateEn:function(e,t,r){""===t?r(new Error("请填写英文关键词!")):t&&(S.isEn(t)?r():r(new Error("请输入英文!")))},validateResearchPlan:function(e,t,r){""===t?r(new Error("请填写!")):(t.length<1e3&&r(new Error("内容最少在1000字以上")),r())},validateUsername:function(e,t,r){""===t?r(new Error("请输入账号")):/^\w{3,20}$/.test(t)?r():r(new Error("仅允许字母、数字和下划线,长度3-20"))},validatePasswordWithSymbol:function(e,t,r){""===t?r(new Error("请输入密码")):S.isPasswordWithSymbol(t)?(O=t.replace(/\s+/g,""),r()):r(new Error("密码必须同时包含数字、大小写字母和特殊符号(_,.!@#),长度 8~20位"))}},j=h.logger("[API]");class P{instance=void 0;loadingCount=0;loadingStarted=!1;loading=void 0;config={loading:!1,errorCatch:!0,headers:new r};constructor(e){e&&this.setConfig(e),this.instance=t.create(this.config),this.instance.interceptors.request.use(async e=>(this.loadingStart(e),this.requestConfigParser(e)),e=>(j("request params error",e),e)),this.instance.interceptors.response.use(e=>this.responseParser(e),e=>this.responseErrorParser(e)),this.instance.defaults.transformResponse=[e=>"string"===typeof e&&h.isJson(e)?s({storeAsString:!0}).parse(e):e]}loadingStart(e){e.loading&&(this.loadingCount++,j("request start,thread:",this.loadingCount),!1===this.loadingStarted&&(j("====show loading===="),this.loadingAddOrRemove(),this.loadingStarted=!0))}loadingEnd(e){e.loading&&(this.loadingCount--,j("request end,thread:",this.loadingCount),this.loadingCount<=0&&this.loadingStarted&&(this.loadingStarted=!1,this.loadingAddOrRemove(!0),j("====hide loading====")))}requestConfigParser(e){return e.headers.Authorization=`Bearer ${this.tokenGet()}`,e}responseParser(e){const t=e.config;return this.loadingEnd(t),j("RESPONSE",e),200===e.status?400===e?.data?.status&&t.errorCatch?(this.errorShow(e.data),{...e.data,status:400}):e.data:e}responseErrorParser(e){const{config:t}=e;if(this.loadingEnd(t),j("RESPONSE ERROR",e),!e.response)return Promise.reject(e);if(e.response){const{status:r,data:n}=e.response;401===r?this.redirect():r>=400&&r<600&&t.errorCatch&&this.errorShow(n)}return Promise.reject(e)}setConfig(e){this.config=Object.assign({},this.config,e)}tokenGet(){return h.storage.get("token")}redirect(){j("redirect start")}errorShow(e){n.error(`请求报错.${e?.message}`)}loadingAddOrRemove(e=!1){this.loading=o.service({lock:!0,text:"loading...",target:"body",fullscreen:!0}),e&&this.loading.close()}request(e){const t=Object.assign({},this.config,e);return j("请求配置:",e,"全局配置:",this.config,"合并后:",t),new Promise((e,r)=>{this.instance?.request(t).then(t=>{e(t)}).catch(e=>(r(e),e))})}post(e){return this.request({headers:new r,...e,method:"post"})}get(e){return this.request({headers:new r,...e,method:"get"})}delete(e){return this.request({headers:new r,...e,method:"delete"})}put(e){return this.request({headers:new r,...e,method:"put"})}download(e,t,r){const n=Object.assign({url:e,responseType:"blob",method:"get"},r);this.request(n).then(e=>{const r=document.createElement("a");r.href=window.URL.createObjectURL(e),r.download=t,r.click(),r.remove()}).catch(e=>{j(`下载失败,${e}`)})}}const C=new P;function $(e){const t=h.mergeObject(i,e);window.config=t,window.css=E,window.bem=y,window.reg=S,window.validators=v,window.request=C,window.utils=h}var N={install:function(e,t){const r=h.mergeObject(i,t);window.config=r,window.css=E,window.bem=y,window.reg=S,window.validators=v,window.request=C,window.utils=h,e.config.globalProperties.css=E,e.config.globalProperties.bem=y,e.config.globalProperties.utils=h}};export{P as ApiRequest,y as bem,E as css,N as default,$ as init,S as reg,C as request,h as utils,v as validators};
1
+ import e from"crypto-js";import t,{AxiosHeaders as r}from"axios";import n from"json-bigint";const o=Symbol(),s=Object.getPrototypeOf,i=new WeakMap,a=e=>(e=>e&&(i.has(e)?i.get(e):s(e)===Object.prototype||s(e)===Array.prototype))(e)&&e[o]||null,c=e=>"object"==typeof e&&null!==e,l=new WeakMap,u=new WeakSet,d=[1],f=new WeakMap;let g=Object.is,p=(e,t)=>new Proxy(e,t),h=e=>c(e)&&!u.has(e)&&(Array.isArray(e)||!(Symbol.iterator in e))&&!(e instanceof WeakMap)&&!(e instanceof WeakSet)&&!(e instanceof Error)&&!(e instanceof Number)&&!(e instanceof Date)&&!(e instanceof String)&&!(e instanceof RegExp)&&!(e instanceof ArrayBuffer)&&!(e instanceof Promise),m=(e,t,r,n)=>({deleteProperty(e,t){Reflect.get(e,t),r(t);const o=Reflect.deleteProperty(e,t);return o&&n(void 0),o},set(o,s,i,u){const d=!e()&&Reflect.has(o,s),p=Reflect.get(o,s,u);if(d&&(g(p,i)||f.has(i)&&g(p,f.get(i))))return!0;r(s),c(i)&&(i=a(i)||i);const m=!l.has(i)&&h(i)?w(i):i;return t(s,m),Reflect.set(o,s,m,u),n(void 0),!0}});function w(e={}){if(!c(e))throw new Error("object required");const t=f.get(e);if(t)return t;let r=d[0];const n=new Set,o=(e,t=++d[0])=>{r!==t&&(s=r=t,n.forEach(r=>r(e,t)))};let s=r;const i=e=>(t,r)=>{let n;t&&(n=[...t],n[1]=[e,...n[1]]),o(n,r)},a=new Map;let g=!0;const h=m(()=>g,(e,t)=>{const r=!u.has(t)&&l.get(t);if(r){if("production"!==(import.meta.env?import.meta.env.MODE:void 0)&&a.has(e))throw new Error("prop listener already exists");if(n.size){const t=r[2](i(e));a.set(e,[r,t])}else a.set(e,[r])}},e=>{var t;const r=a.get(e);r&&(a.delete(e),null==(t=r[1])||t.call(r))},o),w=p(e,h);f.set(e,w);const b=[e,(e=d[0])=>(s!==e&&(s=e,a.forEach(([t])=>{const n=t[1](e);n>r&&(r=n)})),r),e=>{n.add(e),1===n.size&&a.forEach(([e,t],r)=>{if("production"!==(import.meta.env?import.meta.env.MODE:void 0)&&t)throw new Error("remove already exists");const n=e[2](i(r));a.set(r,[e,n])});return()=>{n.delete(e),0===n.size&&a.forEach(([e,t],r)=>{t&&(t(),a.set(r,[e]))})}}];return l.set(w,b),Reflect.ownKeys(e).forEach(t=>{const r=Object.getOwnPropertyDescriptor(e,t);"value"in r&&r.writable&&(w[t]=e[t])}),g=!1,w}const b=w({config:{appVersion:1,aes:{encryptKey:"hzw"},storage:{prefix:"app",aes:!0,replace:!0,jsonParse:!0}}});function y(){return b.config}function E(e){const t=Object.prototype.toString.call(e),r=t.length-1;return t.substring(8,r)}function S(e){try{return JSON.parse(e),!0}catch{return!1}}const v={encrypt(t,r=y().aes.encryptKey){const n=JSON.stringify(t);return e.AES.encrypt(n,r).toString()},decrypt(t,r=y().aes.encryptKey){const n=e.AES.decrypt(t,r).toString(e.enc.Utf8);return S(n)?JSON.parse(n):n}};function O(e="sessionStorage"){let t=sessionStorage;"sessionStorage"!==e&&(t=localStorage);const r=e=>j(y().storage,e),n=(e,t)=>`${t.prefix}_${e}`;return{set:(e,o,s)=>{s=r(s);const i=n(e,s);if(!s.replace){const e=t.getItem(i)||"";if(e){const t=JSON.parse(e);o=Object.assign(t,o)}}let a=o;"Object"!==E(o)&&"Array"!==E(o)||(a=JSON.stringify(o)),a&&s.aes&&(a=v.encrypt(a,y().aes.encryptKey)),t.setItem(i,a)},get:(e,o)=>{o=r(o);const s=n(e,o);let i=t.getItem(s);if(i&&o.aes)try{i=v.decrypt(i,y().aes.encryptKey)}catch(e){console.error("AES decryption failed:",e),i=""}return i&&o.jsonParse&&S(i)?JSON.parse(i):i},remove:(e,o)=>{o=r(o);const s=n(e,o);t.removeItem(s)},clear:()=>{t.clear()}}}const P={set:O("localStorage").set,get:O("localStorage").get,remove:O("localStorage").remove,clear:O("localStorage").clear},C={set:O("sessionStorage").set,get:O("sessionStorage").get,remove:O("sessionStorage").remove,clear:O("sessionStorage").clear};function j(e,t){if("Object"!==E(e))return console.error("utils.mergeObjectParams方法传递的默认参数不是Object类型"),t;if(!t)return e;for(const r in e)if(Object.prototype.hasOwnProperty.call(e,r)){const n=e[r];"Object"===E(t)&&(void 0===t[r]?t[r]=n:"Object"===E(n)&&j(n,t[r]))}return t}function R(e){if(!e.includes("?"))return;const t=e.split("?")[1].split("&"),r={};for(let e=0;e<t.length;e++){const n=t[e].split("="),o=n[0],s=n[1];r[o]=s}return r}const N={setConfig:function(e){const t=j(b.config,e);b.config=t},getConfig:y,getType:E,isJson:S,isEmpty:function(e){const t=E(e);return"Object"===t?"{}"===JSON.stringify(e):"Array"===t?0===e.length:null==e},storageHandler:O,mergeObject:j,debounce:function(e,t=1e3){let r=null;return(...n)=>{r&&clearTimeout(r),r=setTimeout(()=>{e(...n),r=null},t)}},throttle:function(e,t=1e3){let r=null;return(...n)=>{r||(r=setTimeout(()=>{e(...n),r=null},t))}},clone:function e(t){if(!t&&"object"!=typeof t)throw new Error("error arguments");const r=t.constructor===Array?[]:{};return Object.keys(t).forEach(n=>{t[n]&&"object"==typeof t[n]?r[n]=e(t[n]):r[n]=t[n]}),r},urlParser:R,objectKey:function(e,t){for(const r in e)if(e[r]===t)return r;return""},createDownloadLink:function(e,t){if("download"in document.createElement("a")){const r=document.createElement("a");r.download=t,r.style.display="none",r.href="string"==typeof e?e:URL.createObjectURL(e),document.body.appendChild(r),r.click(),URL.revokeObjectURL(r.href),document.body.removeChild(r)}},arrayDelete:function(e,t,r){const n=e.length;if(n>0)for(let o=n-1;o>=0;o--){const n=e[o];(r&&n[r]===t||n===t)&&e.splice(o,1)}},getAssetsFile:function(e){return new URL(`../assets/images/${e}`,import.meta.url).href},logger:function(e="[DEBUG]",t="green"){const r=R(window.location.href);r&&"1"===r.debug&&P.set("debug-ts","1");const n=P.get("debug-ts"),o=!!n&&1===n;return(...r)=>{o&&console.warn(`%c ${e}`,`color:${t}`,...r)}},kebabCaseToCamelCase:function(e){return e.replace(/-([a-z])/g,e=>e[1].toUpperCase())},enumGetKeyByValue:function(e,t){return Object.keys(e).find(r=>e[r]===t)},getByteLength:function(e){const t=(new TextEncoder).encode(e);return new Uint8Array(t.buffer).length},clearLocalStorage:function(){const e=y().appVersion,t="app-version";e!==P.get(t)&&(P.clear(),P.set(t,e))},isNumeric:function(e){if(null==e)return!1;if("boolean"==typeof e)return!1;if("number"==typeof e)return!Number.isNaN(e)&&Number.isFinite(e);if("string"==typeof e){const t=/^[-+]?(\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/i;return!Number.isNaN(Number(e))&&!Number.isNaN(Number.parseFloat(e))&&t.test(e.trim())}return!1},encodeToLetters:function(e){return btoa(encodeURIComponent(e)).replace(/\+/g,"A").replace(/\//g,"B").replace(/=/g,"")},decodeFromLetters:function(e){const t=e.padEnd(4*Math.ceil(e.length/4),"=");return decodeURIComponent(atob(t.replace(/A/g,"+").replace(/B/g,"/")))},cls:function(e){return e?e.join(" "):""},phoneHider:function(e){return reg.isMobile(e)?e.replace(/(\d{3})\d{4}(\d{4})/,"$1****$2"):e},aes:v,storage:P,session:C},A={component:"hzw",app:"app",css:"css"};function $(e,t,r,n){let o=`${e}-${t}`;if(r){if(r.includes("__"))throw new Error('类命名中不可包含两层元素,即不可包含两个"__"!');o+=`__${r}`}return n&&(o+=`--${n}`),o}function k(){const{css:e}=A;return{b:t=>$(e,t),be:(t,r)=>$(e,t,r),bm:(t,r)=>$(e,t,"",r),bem:(t,r,n)=>$(e,t,r,n)}}const U=k(),z={app:function(e){const{app:t}=A;return{b:()=>$(t,e),e:r=>$(t,e,r),m:r=>$(t,e,"",r),em:(r,n)=>$(t,e,r,n)}},hzw:function(e){const{component:t}=A;return{b:()=>$(t,e),e:r=>$(t,e,r),m:r=>$(t,e,"",r),em:(r,n)=>$(t,e,r,n)}},css:k};const M={isEmail:function(e){return/^(([^<>()\\[\].,;:\s@"]+(\.[^<>()\\[\].,;:\s@"]+)*)|(".+"))@((\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\])|(([a-z\-0-9]+\.)+[a-z]{2,}))$/i.test(e)},isMobile:function(e){return/^(?:(?:\+|00)86)?1(?:3\d|4[5-79]|5[0-35-9]|6[5-7]|7[0-8]|8\d|9\d)\d{8}$/.test(e)},isPassWord:function(e){return/^(?=.*[a-z])(?=.*\d)(?=.*[^a-z0-9\s]).{8,12}$/i.test(e)},isPasswordWithSymbol:function(e){return/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[_,.!@#])[\w,.!@#]{8,20}$/.test(e)},hasSpace:function(e){return/\s/.test(e)},isEn:function(e){return/[a-z]+/i.test(e)},isChinese:function(e){return/[\u4E00-\u9FA5]+/.test(e)}};let q="";const L={validatePhoneEmail:function(e,t,r){""===t?r(new Error("请输入手机号/邮箱")):(t.includes("@")?M.isEmail(t)||r(new Error("邮箱格式不正确")):M.isMobile(t)||r(new Error("手机号格式不正确")),r())},validateEmail:function(e,t,r){""===t?r(new Error("请输入邮箱")):(M.isEmail(t)||r(new Error("邮箱格式不正确")),r())},validateEmailAddress:function(e,t,r){t?(M.isEmail(t)||r(new Error("邮箱格式不正确")),r()):r()},validatePassword:function(e,t,r){""===t?r(new Error("请输入密码")):M.isPassWord(t)?M.isChinese(t)||M.hasSpace(t)?r(new Error("不允许空格、中文")):(q=t.replace(/\s+/g,""),r()):r(new Error("8-12位字母、数字以及标点符号构成,区分大小写"))},validateCheckPass:function(e,t,r){""===t?r(new Error("请再次输入密码")):q!==t.replace(/\s+/g,"")?r(new Error("两次输入密码不一致!")):r()},validatePhone:function(e,t,r){t?(M.isMobile(t)||r(new Error("手机号格式不正确")),r()):r(new Error("请输入手机号码"))},validatePhoneNumber:function(e,t,r){t?(M.isMobile(t)||r(new Error("手机号格式不正确")),r()):r()},validateRealName:function(e,t,r){""===t?r(new Error("请填写您的姓名")):M.isChinese(t)?r():r(new Error("请填写中文姓名"))},validateZh:function(e,t,r){""===t?r(new Error("请填写中文关键词!")):t&&(M.isChinese(t)?r():r(new Error("请输入中文!")))},validateEn:function(e,t,r){""===t?r(new Error("请填写英文关键词!")):t&&(M.isEn(t)?r():r(new Error("请输入英文!")))},validateResearchPlan:function(e,t,r){""===t?r(new Error("请填写!")):(t.length<1e3&&r(new Error("内容最少在1000字以上")),r())},validateUsername:function(e,t,r){""===t?r(new Error("请输入账号")):/^\w{3,20}$/.test(t)?r():r(new Error("仅允许字母、数字和下划线,长度3-20"))},validatePasswordWithSymbol:function(e,t,r){""===t?r(new Error("请输入密码")):M.isPasswordWithSymbol(t)?(q=t.replace(/\s+/g,""),r()):r(new Error("密码必须同时包含数字、大小写字母和特殊符号(_,.!@#),长度 8~20位"))}},W=N.logger("[API]");class x{instance=void 0;loadingCount=0;loadingStarted=!1;config={loading:!1,errorCatch:{message(e){W("response error",e)},status:{400:e=>{W("request params error",e)},401:e=>{W("need login",e)},404:e=>{W("not found",e)}}},headers:new r};constructor(e){e&&this.setConfig(e),this.instance=t.create(this.config),this.instance.interceptors.request.use(async e=>(this.loadingStart(e),this.requestConfigParser(e)),e=>(W("request params error",e),e)),this.instance.interceptors.response.use(e=>{const t=e.config;return this.loadingEnd(t),this.responseParser(e)},e=>{const t=e.config;return this.loadingEnd(t),this.responseErrorParser(e)}),this.instance.defaults.transformResponse=[e=>"string"===typeof e&&N.isJson(e)?n({storeAsString:!0}).parse(e):e]}loadingStart(e){e.loading&&(this.loadingCount++,W("request start,count:",this.loadingCount),!1===this.loadingStarted&&(W("====show loading===="),e.loading.addOrRemove?e.loading.addOrRemove():W("====loading===="),this.loadingStarted=!0))}loadingEnd(e){e.loading&&(this.loadingCount--,W("request end,count:",this.loadingCount),this.loadingCount<=0&&this.loadingStarted&&(e.loading.addOrRemove?e.loading.addOrRemove(!0):W("====hide loading===="),this.loadingStarted=!1))}requestConfigParser(e){return e?.requestConfig?.(e)??e}responseParser(e){const t=e.config;return W("RESPONSE",e),200===e.status?(this.errorCatch({config:t,response:e}),e.data):e}responseErrorParser(e){return W("RESPONSE ERROR",e),e.response?(this.errorCatch(e),Promise.reject(e)):Promise.reject(e)}setConfig(e){this.config=N.mergeObject(this.config,e)}errorCatch(e){const t=e.config,r=e.response.status,n=e.response.data;if(!t.errorCatch)return;const o=t.errorCatch.status;switch(r){case 400:case 500:o?.[r]?.(n),t.errorCatch.message&&t.errorCatch.message(n);break;case 401:case 403:case 404:case 502:case 503:o?.[r]?.(n);break;default:o?.[999]?.(n)}}send(e){const t=N.mergeObject(this.config,e);return W("请求配置:",e,"全局配置:",this.config,"合并后:",t),new Promise((e,r)=>{this.instance?.request(t).then(t=>{e(t)}).catch(e=>(r(e),e))})}post(e){return this.send({headers:new r,...e,method:"post"})}get(e){return this.send({headers:new r,...e,method:"get"})}delete(e){return this.send({headers:new r,...e,method:"delete"})}put(e){return this.send({headers:new r,...e,method:"put"})}download(e,t,r){const n=N.mergeObject({url:e,responseType:"blob",method:"get"},r);this.send(n).then(e=>{const r=document.createElement("a");r.href=window.URL.createObjectURL(e),r.download=t,r.click(),r.remove()}).catch(e=>{W(`下载失败,${e}`)})}}const J=new x;function _(e){e&&N.setConfig(e),window.css=U,window.bem=z,window.reg=M,window.validators=L,window.request=J,window.utils=N}var K={install:function(e,t){t&&N.setConfig(t),window.css=U,window.bem=z,window.reg=M,window.validators=L,window.request=J,window.utils=N,e.config.globalProperties.css=U,e.config.globalProperties.bem=z,e.config.globalProperties.utils=N}};export{x as ApiRequest,z as bem,U as css,K as default,_ as init,M as reg,J as request,N as utils,L as validators};
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/ts/config.ts","../src/ts/utils.ts","../src/ts/bem.ts","../src/ts/reg.ts","../src/ts/validators.ts","../src/ts/request.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":["config","appVersion","aes","encryptKey","storage","prefix","needAes","getConfig","window","getType","data","typeStr","Object","prototype","toString","call","end","length","substring","isJson","JSON","parse","encrypt","secretKey","dataStr","stringify","CryptoJS","AES","decrypt","encryptedData","originalText","enc","Utf8","storageHandler","type","sessionStorage","localStorage","set","key","value","replace","oldDataStr","getItem","oldData","assign","setItem","get","str","remove","removeItem","clear","session","urlParser","url","includes","keyValue","split","obj","i","item","utils","isEmpty","mergeObject","oldObj","newObj","console","error","hasOwnProperty","undefined","debounce","fn","delay","timer","params","clearTimeout","setTimeout","throttle","clone","source","Error","targetObj","constructor","Array","keys","forEach","objectKey","createDownloadLink","res","fileName","document","createElement","link","download","style","display","href","URL","createObjectURL","body","appendChild","click","revokeObjectURL","removeChild","arrayDelete","arr","find","property","len","element","splice","getAssetsFile","logger","color","urlParams","location","debug","localDebugSetting","warn","kebabCaseToCamelCase","g","toUpperCase","enumGetKeyByValue","getByteLength","view","TextEncoder","encode","Uint8Array","buffer","clearLocalStorage","localKey","isNumeric","Number","isNaN","isFinite","reg","parseFloat","test","trim","encodeToLetters","btoa","encodeURIComponent","decodeFromLetters","encoded","padded","padEnd","Math","ceil","decodeURIComponent","atob","cls","classes","join","phoneHider","phone","isMobile","component","app","css","_bem","namespace","block","modifier","_css","b","be","bm","bem","e","m","em","hzw","isEmail","email","s","isPassWord","isPasswordWithSymbol","password","hasSpace","isEn","isChinese","validators","validatePhoneEmail","rule","callback","validateEmail","validateEmailAddress","validatePassword","validateCheckPass","validatePhone","validatePhoneNumber","validateRealName","validateZh","validateEn","validateResearchPlan","validateUsername","validatePasswordWithSymbol","log","ApiRequest","instance","loadingCount","loadingStarted","loading","errorCatch","headers","AxiosHeaders","initConfig","this","setConfig","axios","create","interceptors","request","use","async","loadingStart","requestConfigParser","err","response","responseParser","responseErrorParser","defaults","transformResponse","JSONBIG","storeAsString","cfg","loadingAddOrRemove","loadingEnd","Authorization","tokenGet","status","errorShow","Promise","reject","redirect","ElMessage","message","ElLoading","service","lock","text","target","fullscreen","close","requestConfig","resolve","then","catch","post","method","put","responseType","init","configMerged","index","install","vue","globalProperties"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../node_modules/.pnpm/proxy-compare@3.0.1/node_modules/proxy-compare/dist/index.js","../node_modules/.pnpm/valtio@2.3.0/node_modules/valtio/esm/vanilla.mjs","../src/ts/store.ts","../src/ts/utils.ts","../src/ts/bem.ts","../src/ts/reg.ts","../src/ts/validators.ts","../src/ts/request.ts","../src/index.ts"],"sourcesContent":["/* eslint @typescript-eslint/no-explicit-any: off */\n// symbols\nconst TRACK_MEMO_SYMBOL = Symbol();\nconst GET_ORIGINAL_SYMBOL = Symbol();\n// properties\nconst AFFECTED_PROPERTY = 'a';\nconst IS_TARGET_COPIED_PROPERTY = 'f';\nconst PROXY_PROPERTY = 'p';\nconst PROXY_CACHE_PROPERTY = 'c';\nconst TARGET_CACHE_PROPERTY = 't';\nconst HAS_KEY_PROPERTY = 'h';\nconst ALL_OWN_KEYS_PROPERTY = 'w';\nconst HAS_OWN_KEY_PROPERTY = 'o';\nconst KEYS_PROPERTY = 'k';\n// function to create a new bare proxy\nlet newProxy = (target, handler) => new Proxy(target, handler);\n// get object prototype\nconst getProto = Object.getPrototypeOf;\nconst objectsToTrack = new WeakMap();\n// check if obj is a plain object or an array\nconst isObjectToTrack = (obj) => obj &&\n (objectsToTrack.has(obj)\n ? objectsToTrack.get(obj)\n : getProto(obj) === Object.prototype || getProto(obj) === Array.prototype);\n// check if it is object\nconst isObject = (x) => typeof x === 'object' && x !== null;\n// Properties that are both non-configurable and non-writable will break\n// the proxy get trap when we try to return a recursive/child compare proxy\n// from them. We can avoid this by making a copy of the target object with\n// all descriptors marked as configurable, see `copyTargetObject`.\n// See: https://github.com/dai-shi/proxy-compare/pull/8\nconst needsToCopyTargetObject = (obj) => Object.values(Object.getOwnPropertyDescriptors(obj)).some((descriptor) => !descriptor.configurable && !descriptor.writable);\n// Make a copy with all descriptors marked as configurable.\nconst copyTargetObject = (obj) => {\n if (Array.isArray(obj)) {\n // Arrays need a special way to copy\n return Array.from(obj);\n }\n // For non-array objects, we create a new object keeping the prototype\n // with changing all configurable options (otherwise, proxies will complain)\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n Object.values(descriptors).forEach((desc) => {\n desc.configurable = true;\n });\n return Object.create(getProto(obj), descriptors);\n};\nconst createProxyHandler = (origObj, isTargetCopied) => {\n const state = {\n [IS_TARGET_COPIED_PROPERTY]: isTargetCopied,\n };\n let trackObject = false; // for trackMemo\n const recordUsage = (type, key) => {\n if (!trackObject) {\n let used = state[AFFECTED_PROPERTY].get(origObj);\n if (!used) {\n used = {};\n state[AFFECTED_PROPERTY].set(origObj, used);\n }\n if (type === ALL_OWN_KEYS_PROPERTY) {\n used[ALL_OWN_KEYS_PROPERTY] = true;\n }\n else {\n let set = used[type];\n if (!set) {\n set = new Set();\n used[type] = set;\n }\n set.add(key);\n }\n }\n };\n const recordObjectAsUsed = () => {\n trackObject = true;\n state[AFFECTED_PROPERTY].delete(origObj);\n };\n const handler = {\n get(target, key) {\n if (key === GET_ORIGINAL_SYMBOL) {\n return origObj;\n }\n recordUsage(KEYS_PROPERTY, key);\n return createProxy(Reflect.get(target, key), state[AFFECTED_PROPERTY], state[PROXY_CACHE_PROPERTY], state[TARGET_CACHE_PROPERTY]);\n },\n has(target, key) {\n if (key === TRACK_MEMO_SYMBOL) {\n recordObjectAsUsed();\n return true;\n }\n recordUsage(HAS_KEY_PROPERTY, key);\n return Reflect.has(target, key);\n },\n getOwnPropertyDescriptor(target, key) {\n recordUsage(HAS_OWN_KEY_PROPERTY, key);\n return Reflect.getOwnPropertyDescriptor(target, key);\n },\n ownKeys(target) {\n recordUsage(ALL_OWN_KEYS_PROPERTY);\n return Reflect.ownKeys(target);\n },\n };\n if (isTargetCopied) {\n handler.set = handler.deleteProperty = () => false;\n }\n return [handler, state];\n};\nconst getOriginalObject = (obj) => \n// unwrap proxy\nobj[GET_ORIGINAL_SYMBOL] ||\n // otherwise\n obj;\n/**\n * Create a proxy.\n *\n * This function will create a proxy at top level and proxy nested objects as you access them,\n * in order to keep track of which properties were accessed via get/has proxy handlers:\n *\n * NOTE: Printing of WeakMap is hard to inspect and not very readable\n * for this purpose you can use the `affectedToPathList` helper.\n *\n * @param {object} obj - Object that will be wrapped on the proxy.\n * @param {WeakMap<object, unknown>} affected -\n * WeakMap that will hold the tracking of which properties in the proxied object were accessed.\n * @param {WeakMap<object, unknown>} [proxyCache] -\n * WeakMap that will help keep referential identity for proxies.\n * @returns {Proxy<object>} - Object wrapped in a proxy.\n *\n * @example\n * import { createProxy } from 'proxy-compare';\n *\n * const original = { a: \"1\", c: \"2\", d: { e: \"3\" } };\n * const affected = new WeakMap();\n * const proxy = createProxy(original, affected);\n *\n * proxy.a // Will mark as used and track its value.\n * // This will update the affected WeakMap with original as key\n * // and a Set with \"a\"\n *\n * proxy.d // Will mark \"d\" as accessed to track and proxy itself ({ e: \"3\" }).\n * // This will update the affected WeakMap with original as key\n * // and a Set with \"d\"\n */\nexport const createProxy = (obj, affected, proxyCache, targetCache) => {\n if (!isObjectToTrack(obj))\n return obj;\n let targetAndCopied = targetCache && targetCache.get(obj);\n if (!targetAndCopied) {\n const target = getOriginalObject(obj);\n if (needsToCopyTargetObject(target)) {\n targetAndCopied = [target, copyTargetObject(target)];\n }\n else {\n targetAndCopied = [target];\n }\n targetCache === null || targetCache === void 0 ? void 0 : targetCache.set(obj, targetAndCopied);\n }\n const [target, copiedTarget] = targetAndCopied;\n let handlerAndState = proxyCache && proxyCache.get(target);\n if (!handlerAndState ||\n handlerAndState[1][IS_TARGET_COPIED_PROPERTY] !== !!copiedTarget) {\n handlerAndState = createProxyHandler(target, !!copiedTarget);\n handlerAndState[1][PROXY_PROPERTY] = newProxy(copiedTarget || target, handlerAndState[0]);\n if (proxyCache) {\n proxyCache.set(target, handlerAndState);\n }\n }\n handlerAndState[1][AFFECTED_PROPERTY] = affected;\n handlerAndState[1][PROXY_CACHE_PROPERTY] = proxyCache;\n handlerAndState[1][TARGET_CACHE_PROPERTY] = targetCache;\n return handlerAndState[1][PROXY_PROPERTY];\n};\nconst isAllOwnKeysChanged = (prevObj, nextObj) => {\n const prevKeys = Reflect.ownKeys(prevObj);\n const nextKeys = Reflect.ownKeys(nextObj);\n return (prevKeys.length !== nextKeys.length ||\n prevKeys.some((k, i) => k !== nextKeys[i]));\n};\n/**\n * Compare changes on objects.\n *\n * This will compare the affected properties on tracked objects inside the proxy\n * to check if there were any changes made to it,\n * by default if no property was accessed on the proxy it will attempt to do a\n * reference equality check for the objects provided (Object.is(a, b)). If you access a property\n * on the proxy, then isChanged will only compare the affected properties.\n *\n * @param {object} prevObj - The previous object to compare.\n * @param {object} nextObj - Object to compare with the previous one.\n * @param {WeakMap<object, unknown>} affected -\n * WeakMap that holds the tracking of which properties in the proxied object were accessed.\n * @param {WeakMap<object, unknown>} [cache] -\n * WeakMap that holds a cache of the comparisons for better performance with repetitive comparisons,\n * and to avoid infinite loop with circular structures.\n * @returns {boolean} - Boolean indicating if the affected property on the object has changed.\n *\n * @example\n * import { createProxy, isChanged } from 'proxy-compare';\n *\n * const obj = { a: \"1\", c: \"2\", d: { e: \"3\" } };\n * const affected = new WeakMap();\n *\n * const proxy = createProxy(obj, affected);\n *\n * proxy.a\n *\n * isChanged(obj, { a: \"1\" }, affected) // false\n *\n * proxy.a = \"2\"\n *\n * isChanged(obj, { a: \"1\" }, affected) // true\n */\nexport const isChanged = (prevObj, nextObj, affected, cache, // for object with cycles\nisEqual = Object.is) => {\n if (isEqual(prevObj, nextObj)) {\n return false;\n }\n if (!isObject(prevObj) || !isObject(nextObj))\n return true;\n const used = affected.get(getOriginalObject(prevObj));\n if (!used)\n return true;\n if (cache) {\n const hit = cache.get(prevObj);\n if (hit === nextObj) {\n return false;\n }\n // for object with cycles\n cache.set(prevObj, nextObj);\n }\n let changed = null;\n for (const key of used[HAS_KEY_PROPERTY] || []) {\n changed = Reflect.has(prevObj, key) !== Reflect.has(nextObj, key);\n if (changed)\n return changed;\n }\n if (used[ALL_OWN_KEYS_PROPERTY] === true) {\n changed = isAllOwnKeysChanged(prevObj, nextObj);\n if (changed)\n return changed;\n }\n else {\n for (const key of used[HAS_OWN_KEY_PROPERTY] || []) {\n const hasPrev = !!Reflect.getOwnPropertyDescriptor(prevObj, key);\n const hasNext = !!Reflect.getOwnPropertyDescriptor(nextObj, key);\n changed = hasPrev !== hasNext;\n if (changed)\n return changed;\n }\n }\n for (const key of used[KEYS_PROPERTY] || []) {\n changed = isChanged(prevObj[key], nextObj[key], affected, cache, isEqual);\n if (changed)\n return changed;\n }\n if (changed === null)\n throw new Error('invalid used');\n return changed;\n};\n// explicitly track object with memo\nexport const trackMemo = (obj) => {\n if (isObjectToTrack(obj)) {\n return TRACK_MEMO_SYMBOL in obj;\n }\n return false;\n};\n/**\n * Unwrap proxy to get the original object.\n *\n * Used to retrieve the original object used to create the proxy instance with `createProxy`.\n *\n * @param {Proxy<object>} obj - The proxy wrapper of the originial object.\n * @returns {object | null} - Return either the unwrapped object if exists.\n *\n * @example\n * import { createProxy, getUntracked } from 'proxy-compare';\n *\n * const original = { a: \"1\", c: \"2\", d: { e: \"3\" } };\n * const affected = new WeakMap();\n *\n * const proxy = createProxy(original, affected);\n * const originalFromProxy = getUntracked(proxy)\n *\n * Object.is(original, originalFromProxy) // true\n * isChanged(original, originalFromProxy, affected) // false\n */\nexport const getUntracked = (obj) => {\n if (isObjectToTrack(obj)) {\n return obj[GET_ORIGINAL_SYMBOL] || null;\n }\n return null;\n};\n/**\n * Mark object to be tracked.\n *\n * This function marks an object that will be passed into `createProxy`\n * as marked to track or not. By default only Array and Object are marked to track,\n * so this is useful for example to mark a class instance to track or to mark a object\n * to be untracked when creating your proxy.\n *\n * @param obj - Object to mark as tracked or not.\n * @param mark - Boolean indicating whether you want to track this object or not.\n * @returns - No return.\n *\n * @example\n * import { createProxy, markToTrack, isChanged } from 'proxy-compare';\n *\n * const nested = { e: \"3\" }\n *\n * markToTrack(nested, false)\n *\n * const original = { a: \"1\", c: \"2\", d: nested };\n * const affected = new WeakMap();\n *\n * const proxy = createProxy(original, affected);\n *\n * proxy.d.e\n *\n * isChanged(original, { d: { e: \"3\" } }, affected) // true\n */\nexport const markToTrack = (obj, mark = true) => {\n objectsToTrack.set(obj, mark);\n};\n/**\n * Convert `affected` to path list\n *\n * `affected` is a weak map which is not printable.\n * This function is can convert it to printable path list.\n * It's for debugging purpose.\n *\n * @param obj - An object that is used with `createProxy`.\n * @param affected - A weak map that is used with `createProxy`.\n * @param onlyWithValues - An optional boolean to exclude object getters.\n * @returns - An array of paths.\n */\nexport const affectedToPathList = (obj, affected, onlyWithValues) => {\n const list = [];\n const seen = new WeakSet();\n const walk = (x, path) => {\n var _a, _b, _c;\n if (seen.has(x)) {\n // for object with cycles\n return;\n }\n if (isObject(x)) {\n seen.add(x);\n }\n const used = isObject(x) && affected.get(getOriginalObject(x));\n if (used) {\n (_a = used[HAS_KEY_PROPERTY]) === null || _a === void 0 ? void 0 : _a.forEach((key) => {\n const segment = `:has(${String(key)})`;\n list.push(path ? [...path, segment] : [segment]);\n });\n if (used[ALL_OWN_KEYS_PROPERTY] === true) {\n const segment = ':ownKeys';\n list.push(path ? [...path, segment] : [segment]);\n }\n else {\n (_b = used[HAS_OWN_KEY_PROPERTY]) === null || _b === void 0 ? void 0 : _b.forEach((key) => {\n const segment = `:hasOwn(${String(key)})`;\n list.push(path ? [...path, segment] : [segment]);\n });\n }\n (_c = used[KEYS_PROPERTY]) === null || _c === void 0 ? void 0 : _c.forEach((key) => {\n if (!onlyWithValues ||\n 'value' in (Object.getOwnPropertyDescriptor(x, key) || {})) {\n walk(x[key], path ? [...path, key] : [key]);\n }\n });\n }\n else if (path) {\n list.push(path);\n }\n };\n walk(obj);\n return list;\n};\n/**\n * replace newProxy function.\n *\n * This can be used if you want to use proxy-polyfill.\n * Note that proxy-polyfill can't polyfill everything.\n * Use it at your own risk.\n */\nexport const replaceNewProxy = (fn) => {\n newProxy = fn;\n};\n","import { markToTrack, getUntracked } from 'proxy-compare';\n\nconst isObject = (x) => typeof x === \"object\" && x !== null;\nconst canProxyDefault = (x) => isObject(x) && !refSet.has(x) && (Array.isArray(x) || !(Symbol.iterator in x)) && !(x instanceof WeakMap) && !(x instanceof WeakSet) && !(x instanceof Error) && !(x instanceof Number) && !(x instanceof Date) && !(x instanceof String) && !(x instanceof RegExp) && !(x instanceof ArrayBuffer) && !(x instanceof Promise);\nconst createSnapshotDefault = (target, version) => {\n const cache = snapCache.get(target);\n if ((cache == null ? void 0 : cache[0]) === version) {\n return cache[1];\n }\n const snap = Array.isArray(target) ? [] : Object.create(Object.getPrototypeOf(target));\n markToTrack(snap, true);\n snapCache.set(target, [version, snap]);\n Reflect.ownKeys(target).forEach((key) => {\n if (Object.getOwnPropertyDescriptor(snap, key)) {\n return;\n }\n const value = Reflect.get(target, key);\n const { enumerable } = Reflect.getOwnPropertyDescriptor(\n target,\n key\n );\n const desc = {\n value,\n enumerable,\n // This is intentional to avoid copying with proxy-compare.\n // It's still non-writable, so it avoids assigning a value.\n configurable: true\n };\n if (refSet.has(value)) {\n markToTrack(value, false);\n } else if (proxyStateMap.has(value)) {\n const [target2, ensureVersion] = proxyStateMap.get(\n value\n );\n desc.value = createSnapshotDefault(target2, ensureVersion());\n }\n Object.defineProperty(snap, key, desc);\n });\n return Object.preventExtensions(snap);\n};\nconst createHandlerDefault = (isInitializing, addPropListener, removePropListener, notifyUpdate) => ({\n deleteProperty(target, prop) {\n const prevValue = Reflect.get(target, prop);\n removePropListener(prop);\n const deleted = Reflect.deleteProperty(target, prop);\n if (deleted) {\n notifyUpdate(createOp == null ? void 0 : createOp(\"delete\", prop, prevValue));\n }\n return deleted;\n },\n set(target, prop, value, receiver) {\n const hasPrevValue = !isInitializing() && Reflect.has(target, prop);\n const prevValue = Reflect.get(target, prop, receiver);\n if (hasPrevValue && (objectIs(prevValue, value) || proxyCache.has(value) && objectIs(prevValue, proxyCache.get(value)))) {\n return true;\n }\n removePropListener(prop);\n if (isObject(value)) {\n value = getUntracked(value) || value;\n }\n const nextValue = !proxyStateMap.has(value) && canProxy(value) ? proxy(value) : value;\n addPropListener(prop, nextValue);\n Reflect.set(target, prop, nextValue, receiver);\n notifyUpdate(createOp == null ? void 0 : createOp(\"set\", prop, value, prevValue));\n return true;\n }\n});\nconst createOpDefault = (type, prop, ...args) => [type, [prop], ...args];\nconst proxyStateMap = /* @__PURE__ */ new WeakMap();\nconst refSet = /* @__PURE__ */ new WeakSet();\nconst snapCache = /* @__PURE__ */ new WeakMap();\nconst versionHolder = [1];\nconst proxyCache = /* @__PURE__ */ new WeakMap();\nlet objectIs = Object.is;\nlet newProxy = (target, handler) => new Proxy(target, handler);\nlet canProxy = canProxyDefault;\nlet createSnapshot = createSnapshotDefault;\nlet createHandler = createHandlerDefault;\nlet createOp;\nfunction proxy(baseObject = {}) {\n if (!isObject(baseObject)) {\n throw new Error(\"object required\");\n }\n const found = proxyCache.get(baseObject);\n if (found) {\n return found;\n }\n let version = versionHolder[0];\n const listeners = /* @__PURE__ */ new Set();\n const notifyUpdate = (op, nextVersion = ++versionHolder[0]) => {\n if (version !== nextVersion) {\n checkVersion = version = nextVersion;\n listeners.forEach((listener) => listener(op, nextVersion));\n }\n };\n let checkVersion = version;\n const ensureVersion = (nextCheckVersion = versionHolder[0]) => {\n if (checkVersion !== nextCheckVersion) {\n checkVersion = nextCheckVersion;\n propProxyStates.forEach(([propProxyState]) => {\n const propVersion = propProxyState[1](nextCheckVersion);\n if (propVersion > version) {\n version = propVersion;\n }\n });\n }\n return version;\n };\n const createPropListener = (prop) => (op, nextVersion) => {\n let newOp;\n if (op) {\n newOp = [...op];\n newOp[1] = [prop, ...newOp[1]];\n }\n notifyUpdate(newOp, nextVersion);\n };\n const propProxyStates = /* @__PURE__ */ new Map();\n const addPropListener = (prop, propValue) => {\n const propProxyState = !refSet.has(propValue) && proxyStateMap.get(propValue);\n if (propProxyState) {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && propProxyStates.has(prop)) {\n throw new Error(\"prop listener already exists\");\n }\n if (listeners.size) {\n const remove = propProxyState[2](createPropListener(prop));\n propProxyStates.set(prop, [propProxyState, remove]);\n } else {\n propProxyStates.set(prop, [propProxyState]);\n }\n }\n };\n const removePropListener = (prop) => {\n var _a;\n const entry = propProxyStates.get(prop);\n if (entry) {\n propProxyStates.delete(prop);\n (_a = entry[1]) == null ? void 0 : _a.call(entry);\n }\n };\n const addListener = (listener) => {\n listeners.add(listener);\n if (listeners.size === 1) {\n propProxyStates.forEach(([propProxyState, prevRemove], prop) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && prevRemove) {\n throw new Error(\"remove already exists\");\n }\n const remove = propProxyState[2](createPropListener(prop));\n propProxyStates.set(prop, [propProxyState, remove]);\n });\n }\n const removeListener = () => {\n listeners.delete(listener);\n if (listeners.size === 0) {\n propProxyStates.forEach(([propProxyState, remove], prop) => {\n if (remove) {\n remove();\n propProxyStates.set(prop, [propProxyState]);\n }\n });\n }\n };\n return removeListener;\n };\n let initializing = true;\n const handler = createHandler(\n () => initializing,\n addPropListener,\n removePropListener,\n notifyUpdate\n );\n const proxyObject = newProxy(baseObject, handler);\n proxyCache.set(baseObject, proxyObject);\n const proxyState = [baseObject, ensureVersion, addListener];\n proxyStateMap.set(proxyObject, proxyState);\n Reflect.ownKeys(baseObject).forEach((key) => {\n const desc = Object.getOwnPropertyDescriptor(\n baseObject,\n key\n );\n if (\"value\" in desc && desc.writable) {\n proxyObject[key] = baseObject[key];\n }\n });\n initializing = false;\n return proxyObject;\n}\nfunction getVersion(proxyObject) {\n const proxyState = proxyStateMap.get(proxyObject);\n return proxyState == null ? void 0 : proxyState[1]();\n}\nfunction subscribe(proxyObject, callback, notifyInSync) {\n const proxyState = proxyStateMap.get(proxyObject);\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && !proxyState) {\n console.warn(\"Please use proxy object\");\n }\n let promise;\n const ops = [];\n const addListener = proxyState[2];\n let isListenerActive = false;\n const listener = (op) => {\n if (op) {\n ops.push(op);\n }\n if (notifyInSync) {\n callback(ops.splice(0));\n return;\n }\n if (!promise) {\n promise = Promise.resolve().then(() => {\n promise = void 0;\n if (isListenerActive) {\n callback(ops.splice(0));\n }\n });\n }\n };\n const removeListener = addListener(listener);\n isListenerActive = true;\n return () => {\n isListenerActive = false;\n removeListener();\n };\n}\nfunction snapshot(proxyObject) {\n const proxyState = proxyStateMap.get(proxyObject);\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && !proxyState) {\n console.warn(\"Please use proxy object\");\n }\n const [target, ensureVersion] = proxyState;\n return createSnapshot(target, ensureVersion());\n}\nfunction ref(obj) {\n refSet.add(obj);\n return obj;\n}\nfunction unstable_getInternalStates() {\n return {\n proxyStateMap,\n refSet,\n snapCache,\n versionHolder,\n proxyCache\n };\n}\nfunction unstable_replaceInternalFunction(name, fn) {\n switch (name) {\n case \"objectIs\":\n objectIs = fn(objectIs);\n break;\n case \"newProxy\":\n newProxy = fn(newProxy);\n break;\n case \"canProxy\":\n canProxy = fn(canProxy);\n break;\n case \"createSnapshot\":\n createSnapshot = fn(createSnapshot);\n break;\n case \"createHandler\":\n createHandler = fn(createHandler);\n break;\n default:\n throw new Error(\"unknown function\");\n }\n}\nfunction unstable_enableOp(enabled = true) {\n if (enabled === true) {\n createOp = createOpDefault;\n } else if (enabled === false) {\n createOp = void 0;\n } else {\n createOp = enabled;\n }\n}\n\nexport { getVersion, proxy, ref, snapshot, subscribe, unstable_enableOp, unstable_getInternalStates, unstable_replaceInternalFunction };\n",null,null,null,null,null,null,null],"names":["GET_ORIGINAL_SYMBOL","Symbol","getProto","Object","getPrototypeOf","objectsToTrack","WeakMap","getUntracked","obj","has","get","prototype","Array","isObjectToTrack","isObject","x","proxyStateMap","refSet","WeakSet","versionHolder","proxyCache","objectIs","is","newProxy","target","handler","Proxy","canProxy","isArray","iterator","Error","Number","Date","String","RegExp","ArrayBuffer","Promise","createHandler","isInitializing","addPropListener","removePropListener","notifyUpdate","deleteProperty","prop","Reflect","deleted","set","value","receiver","hasPrevValue","prevValue","nextValue","proxy","baseObject","found","version","listeners","Set","op","nextVersion","checkVersion","forEach","listener","createPropListener","newOp","propProxyStates","Map","initializing","propValue","propProxyState","env","MODE","size","remove","_a","entry","delete","call","proxyObject","proxyState","nextCheckVersion","propVersion","add","prevRemove","ownKeys","key","desc","getOwnPropertyDescriptor","writable","storeConfig","config","appVersion","aes","encryptKey","storage","prefix","replace","jsonParse","getConfig","getType","data","typeStr","toString","end","length","substring","isJson","JSON","parse","encrypt","secretKey","dataStr","stringify","CryptoJS","AES","decrypt","encryptedData","originalText","enc","Utf8","storageHandler","type","sessionStorage","localStorage","getOptions","options","mergeObject","getStorageKey","storageKey","oldDataStr","getItem","oldData","assign","setItem","str","error","console","removeItem","clear","session","oldObj","newObj","hasOwnProperty","item","undefined","urlParser","url","includes","keyValue","split","i","utils","setConfig","cfg","configMerged","isEmpty","debounce","fn","delay","timer","params","clearTimeout","setTimeout","throttle","clone","source","targetObj","constructor","keys","objectKey","createDownloadLink","res","fileName","document","createElement","link","download","style","display","href","URL","createObjectURL","body","appendChild","click","revokeObjectURL","removeChild","arrayDelete","arr","find","property","len","element","splice","getAssetsFile","logger","color","urlParams","window","location","debug","localDebugSetting","warn","kebabCaseToCamelCase","g","toUpperCase","enumGetKeyByValue","getByteLength","view","TextEncoder","encode","Uint8Array","buffer","clearLocalStorage","localKey","isNumeric","isNaN","isFinite","reg","parseFloat","test","trim","encodeToLetters","btoa","encodeURIComponent","decodeFromLetters","encoded","padded","padEnd","Math","ceil","decodeURIComponent","atob","cls","classes","join","phoneHider","phone","isMobile","component","app","css","_bem","namespace","block","modifier","_css","b","be","bm","bem","e","m","em","hzw","isEmail","email","s","isPassWord","isPasswordWithSymbol","password","hasSpace","isEn","isChinese","validators","validatePhoneEmail","rule","callback","validateEmail","validateEmailAddress","validatePassword","validateCheckPass","validatePhone","validatePhoneNumber","validateRealName","validateZh","validateEn","validateResearchPlan","validateUsername","validatePasswordWithSymbol","log","ApiRequest","instance","loadingCount","loadingStarted","loading","errorCatch","message","status","headers","AxiosHeaders","initConfig","this","axios","create","interceptors","request","use","async","loadingStart","requestConfigParser","err","response","loadingEnd","responseParser","responseErrorParser","defaults","transformResponse","JSONBIG","storeAsString","addOrRemove","requestConfig","reject","statusCatch","send","resolve","then","catch","post","method","put","responseType","init","index","install","vue","globalProperties"],"mappings":"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","x_google_ignoreList":[0,1]}
package/dist/main.d.ts CHANGED
@@ -1,3 +1 @@
1
- import 'element-plus/dist/index.css';
2
- import 'element-plus/theme-chalk/display.css';
3
1
  import './styles/index.scss';
@@ -1,34 +1,8 @@
1
- import type { InternalAxiosRequestConfig } from 'axios';
2
- export interface IRequestConfig extends InternalAxiosRequestConfig {
3
- /**
4
- * 是否显示loading
5
- */
6
- loading?: boolean;
7
- /**
8
- * 400错误是否捕捉,默认true,捕捉后会弹出对话框
9
- */
10
- errorCatch?: boolean;
11
- /**
12
- * 401重定向时的跳转处理,一般是跳转到登录页
13
- */
14
- redirect?: () => void;
15
- /**
16
- * 自定义添加或移除loading
17
- * @param addOrRemove
18
- * @returns
19
- */
20
- loadingAddOrRemove?: (addOrRemove: boolean) => void;
21
- /**
22
- * 自定义获取token的方法
23
- * @returns string
24
- */
25
- tokenGet?: () => string;
26
- }
1
+ import type { IRequestConfig } from '../types';
27
2
  export declare class ApiRequest {
28
3
  private instance?;
29
4
  private loadingCount;
30
5
  private loadingStarted;
31
- private loading;
32
6
  config: IRequestConfig;
33
7
  constructor(initConfig?: Partial<IRequestConfig>);
34
8
  private loadingStart;
@@ -37,11 +11,8 @@ export declare class ApiRequest {
37
11
  private responseParser;
38
12
  private responseErrorParser;
39
13
  setConfig(config: Partial<IRequestConfig>): void;
40
- tokenGet(): any;
41
- redirect(): void;
42
- errorShow(data: any): void;
43
- loadingAddOrRemove(remove?: boolean): void;
44
- request<T>(requestConfig: IRequestConfig): Promise<T>;
14
+ errorCatch(err: any): void;
15
+ send<T>(requestConfig: IRequestConfig): Promise<T>;
45
16
  post<T>(config: Partial<IRequestConfig>): Promise<T>;
46
17
  get<T>(config: Partial<IRequestConfig>): Promise<T>;
47
18
  delete<T>(config: Partial<IRequestConfig>): Promise<T>;
@@ -0,0 +1,4 @@
1
+ import type { GConfig } from '../types';
2
+ export declare const storeConfig: {
3
+ config: GConfig;
4
+ };
@@ -1,19 +1,23 @@
1
- import type { GConfig } from './config';
1
+ import type { GConfig, IStorage, IStorageOptions } from '../types';
2
+ /**
3
+ * 将用户配置信息与默认配置合并
4
+ * @param cfg GConfig 配置信息
5
+ */
6
+ declare function setConfig(cfg: Partial<GConfig>): void;
2
7
  declare function getConfig(): GConfig;
3
8
  declare function getType(data: any): string;
4
9
  declare function isJson(data: string): boolean;
5
10
  declare function isEmpty(value: any): boolean;
6
- interface IStorage {
7
- set: (key: string, value: any, replace?: boolean) => any;
8
- get: <T = any>(key: string) => T;
9
- remove: (key: string) => void;
10
- clear: () => void;
11
- }
12
11
  /**
13
12
  * 本地存储,set存储时传入replace=true表示替换原来的字段,false则先获取原先字段并Object.assign来合并,prefix表示存储前缀,默认是hzw-
14
13
  * @param type sessionStorage还是localStorage
15
14
  * @returns Object {set:'存储方法',get:'获取方法'}
16
15
  */
16
+ /**
17
+ * 本地存储,set存储时传入replace=true表示替换原来的字段,false则先获取原先字段并Object.assign来合并,prefix表示存储前缀,默认是hzw-
18
+ * @param type sessionStorage还是localStorage
19
+ * @returns {set:'存储方法',get:'获取方法'}
20
+ */
17
21
  declare function storageHandler(type?: string): IStorage;
18
22
  /**
19
23
  * 合并对象参数,对象数据缺省传递时会自动补全属性值
@@ -84,6 +88,7 @@ declare function cls(classes: string[]): string;
84
88
  */
85
89
  declare function phoneHider(phone: string): string;
86
90
  export declare const utils: {
91
+ setConfig: typeof setConfig;
87
92
  getConfig: typeof getConfig;
88
93
  getType: typeof getType;
89
94
  isJson: typeof isJson;
@@ -113,15 +118,15 @@ export declare const utils: {
113
118
  decrypt(encryptedData: any, secretKey?: string): any;
114
119
  };
115
120
  storage: {
116
- set: (key: string, value: any, replace?: boolean) => any;
117
- get: <T = any>(key: string) => T;
118
- remove: (key: string) => void;
121
+ set: (key: string, value: any, options?: IStorageOptions) => void;
122
+ get: <T = any>(key: string, options?: IStorageOptions) => T;
123
+ remove: (key: string, options?: IStorageOptions) => void;
119
124
  clear: () => void;
120
125
  };
121
126
  session: {
122
- set: (key: string, value: any, replace?: boolean) => any;
123
- get: <T = any>(key: string) => T;
124
- remove: (key: string) => void;
127
+ set: (key: string, value: any, options?: IStorageOptions) => void;
128
+ get: <T = any>(key: string, options?: IStorageOptions) => T;
129
+ remove: (key: string, options?: IStorageOptions) => void;
125
130
  clear: () => void;
126
131
  };
127
132
  };
@@ -11,7 +11,6 @@ declare global {
11
11
  const acceptHMRUpdate: typeof import('pinia').acceptHMRUpdate
12
12
  const bem: typeof import('../ts/bem').bem
13
13
  const computed: typeof import('vue').computed
14
- const config: typeof import('../ts/config').config
15
14
  const createApp: typeof import('vue').createApp
16
15
  const createPinia: typeof import('pinia').createPinia
17
16
  const css: typeof import('../ts/bem').css
@@ -64,6 +63,7 @@ declare global {
64
63
  const shallowReactive: typeof import('vue').shallowReactive
65
64
  const shallowReadonly: typeof import('vue').shallowReadonly
66
65
  const shallowRef: typeof import('vue').shallowRef
66
+ const storeConfig: typeof import('../ts/store').storeConfig
67
67
  const storeToRefs: typeof import('pinia').storeToRefs
68
68
  const toRaw: typeof import('vue').toRaw
69
69
  const toRef: typeof import('vue').toRef
@@ -94,10 +94,7 @@ declare global {
94
94
  export type { IBem, IBemCss } from '../ts/bem'
95
95
  import('../ts/bem')
96
96
  // @ts-ignore
97
- export type { GConfig } from '../ts/config'
98
- import('../ts/config')
99
- // @ts-ignore
100
- export type { ApiRequest, IRequestConfig } from '../ts/request'
97
+ export type { ApiRequest } from '../ts/request'
101
98
  import('../ts/request')
102
99
  }
103
100
 
@@ -111,7 +108,6 @@ declare module 'vue' {
111
108
  readonly acceptHMRUpdate: UnwrapRef<typeof import('pinia')['acceptHMRUpdate']>
112
109
  readonly bem: UnwrapRef<typeof import('../ts/bem')['bem']>
113
110
  readonly computed: UnwrapRef<typeof import('vue')['computed']>
114
- readonly config: UnwrapRef<typeof import('../ts/config')['config']>
115
111
  readonly createApp: UnwrapRef<typeof import('vue')['createApp']>
116
112
  readonly createPinia: UnwrapRef<typeof import('pinia')['createPinia']>
117
113
  readonly css: UnwrapRef<typeof import('../ts/bem')['css']>
@@ -164,6 +160,7 @@ declare module 'vue' {
164
160
  readonly shallowReactive: UnwrapRef<typeof import('vue')['shallowReactive']>
165
161
  readonly shallowReadonly: UnwrapRef<typeof import('vue')['shallowReadonly']>
166
162
  readonly shallowRef: UnwrapRef<typeof import('vue')['shallowRef']>
163
+ readonly storeConfig: UnwrapRef<typeof import('../ts/store')['storeConfig']>
167
164
  readonly storeToRefs: UnwrapRef<typeof import('pinia')['storeToRefs']>
168
165
  readonly toRaw: UnwrapRef<typeof import('vue')['toRaw']>
169
166
  readonly toRef: UnwrapRef<typeof import('vue')['toRef']>
@@ -1,24 +1,78 @@
1
- /**
2
- * 通用接口返回,status是状态码,message一般请求错误会返回信息,data是具体返回数据
3
- */
4
- declare interface GRes<T> {
5
- message: string
6
- status: number
7
- data: T
1
+ import type { AxiosResponse, InternalAxiosRequestConfig } from 'axios'
2
+
3
+ export interface IStorageOptions {
4
+ replace?: boolean;
5
+ prefix?: string;
6
+ jsonParse?: boolean;
7
+ aes?: boolean;
8
8
  }
9
- /**
10
- * 通用分页接口返回,在通用接口返回基础上数据格式细分了分页信息
11
- * records是数据的数组,total是数据总量,size是每页数据数量
12
- */
13
- declare type GRecords<T> = GRes<{ records: T[], total: number, size: number }>
14
- declare interface GOption<T> {
15
- label: string
16
- value: T
17
- disabled?: boolean
9
+
10
+ export interface IStorage {
11
+ set: (key: string, value: any, options?: IStorageOptions) => void;
12
+ get: <T = any>(key: string, options?: IStorageOptions) => T;
13
+ remove: (key: string, options?: IStorageOptions) => void;
14
+ clear: () => void;
18
15
  }
19
- declare interface GKeyValue<T> {
20
- key: string
21
- value: T
16
+
17
+ export interface GConfig {
18
+ aes: {
19
+ encryptKey: string;
20
+ };
21
+ appVersion: number;
22
+ storage: IStorageOptions;
23
+ vueApp?: import('vue').App<Element>;
24
+ }
25
+
26
+ export interface IRequestConfig extends InternalAxiosRequestConfig {
27
+ /**
28
+ * 是否显示loading,如果不为false,则必须使用UI组件创建显示和隐藏方法
29
+ */
30
+ loading?: false | { addOrRemove?: (remove?: boolean) => void };
31
+ /**
32
+ * 是否捕捉,如果不为false,可以指定信息弹出方式以及特定状态码时的处理方式
33
+ */
34
+ errorCatch?: false | {
35
+ /**
36
+ * 错误信息的处理,可以使用UI组件弹出信息
37
+ * @param res
38
+ * @returns void
39
+ */
40
+ message?: (res: AxiosResponse) => void;
41
+ /**
42
+ * 不同错误状态码的处理,
43
+ */
44
+ status?: {
45
+ 400?: (res: AxiosResponse) => void;
46
+ 401?: (res: AxiosResponse) => void;
47
+ 403?: (res: AxiosResponse) => void;
48
+ 404?: (res: AxiosResponse) => void;
49
+ 500?: (res: AxiosResponse) => void;
50
+ 502?: (res: AxiosResponse) => void;
51
+ 503?: (res: AxiosResponse) => void;
52
+ 999?: (res: AxiosResponse) => void;
53
+ };
54
+ };
55
+ /**
56
+ * 请求配置的处理,比如header中设置Authorization头等
57
+ * @param config 请求配置
58
+ * @returns 修改后的config
59
+ */
60
+ requestConfig?: (config: IRequestConfig) => IRequestConfig;
61
+ /**
62
+ * 请求返回的处理
63
+ */
64
+ response?: {
65
+ /**
66
+ * 返回拦截器处理
67
+ * @param data
68
+ * @returns any
69
+ */
70
+ parser?: (data: AxiosResponse) => any;
71
+ /**
72
+ * 返回转换处理,对应axios的transformResponse
73
+ * @param data
74
+ * @returns any
75
+ */
76
+ transformers?: ((data: any) => any)[];
77
+ };
22
78
  }
23
- declare module '*.js'
24
- declare module '*.vue'
@@ -0,0 +1,24 @@
1
+ /**
2
+ * 通用接口返回,status是状态码,message一般请求错误会返回信息,data是具体返回数据
3
+ */
4
+ declare interface GRes<T> {
5
+ message: string
6
+ status: number
7
+ data: T
8
+ }
9
+ /**
10
+ * 通用分页接口返回,在通用接口返回基础上数据格式细分了分页信息
11
+ * records是数据的数组,total是数据总量,size是每页数据数量
12
+ */
13
+ declare type GRecords<T> = GRes<{ records: T[], total: number, size: number }>
14
+ declare interface GOption<T> {
15
+ label: string
16
+ value: T
17
+ disabled?: boolean
18
+ }
19
+ declare interface GKeyValue<T> {
20
+ key: string
21
+ value: T
22
+ }
23
+ declare module '*.js'
24
+ declare module '*.vue'
@@ -1,13 +1,13 @@
1
- import type { GConfig } from '../ts/config'
1
+ import type { GConfig } from '../types'
2
2
 
3
3
  declare global {
4
4
  interface Window {
5
- config: GConfig
6
- bem: typeof bem
7
- css: IBemCss
8
- utils: typeof utils
9
- reg: typeof reg
10
- validators: typeof validators
11
- request: typeof request
5
+ config: GConfig;
6
+ bem: typeof bem;
7
+ css: IBemCss;
8
+ utils: typeof utils;
9
+ reg: typeof reg;
10
+ validators: typeof validators;
11
+ request: typeof request;
12
12
  }
13
13
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hzw-tech/utils",
3
3
  "type": "module",
4
- "version": "0.0.5",
4
+ "version": "0.0.6",
5
5
  "description": "通用前端工具包,包含请求,正则校验,全局ts声明等",
6
6
  "author": "hzw-tech",
7
7
  "license": "MIT",
@@ -27,18 +27,18 @@
27
27
  "@antfu/eslint-config": "^6.1.0",
28
28
  "axios": "^1.11.0",
29
29
  "crypto-js": "^4.2.0",
30
- "element-plus": "^2.10.5",
31
30
  "eslint-plugin-format": "^1.0.2",
32
31
  "pinia": "^3.0.3",
33
32
  "sass": "^1.93.3",
34
33
  "typescript": "^5.7.3",
35
34
  "unplugin-auto-import": "^20.2.0",
36
- "vite": "^7.0.6",
37
- "vue": "^3.5.18"
35
+ "vite": "^7.0.6"
38
36
  },
39
37
  "dependencies": {
40
38
  "@vitejs/plugin-vue": "^6.0.1",
41
- "json-bigint": "^1.0.0"
39
+ "json-bigint": "^1.0.0",
40
+ "valtio": "^2.3.0",
41
+ "vue": "^3.5.18"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@rollup/plugin-commonjs": "^28.0.2",
package/vite.config.mts CHANGED
@@ -22,7 +22,7 @@ export default defineConfig(() => {
22
22
  // https://vitejs.dev/config/shared-options.html#css-preprocessoroptions
23
23
  preprocessorOptions: {
24
24
  scss: {
25
- additionalData: '@use "./styles/reference/index.scss" as *;',
25
+ additionalData: '@use "@/styles/reference/index.scss" as *;',
26
26
  },
27
27
  },
28
28
  },
@@ -1,13 +0,0 @@
1
- import type { App } from 'vue';
2
- export interface GConfig {
3
- aes: {
4
- encryptKey: string;
5
- };
6
- appVersion: number;
7
- storage: {
8
- needAes?: boolean;
9
- prefix?: string;
10
- };
11
- vueApp?: App<Element>;
12
- }
13
- export declare const config: GConfig;