ddan-js 1.3.6 → 1.3.7

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 +1 @@
1
- var e={gbkLength:function(e){let t=0;if(!e)return 0;for(let r=0;r<e.length;r++)e.charCodeAt(r)>127||94===e.charCodeAt(r)?t+=2:t++;return t},gbkCut:function(e,t){if(!e||t<=0)return"";let r=0,n=0;for(let i=0;i<e.length&&(e.charCodeAt(i)>127||94===e.charCodeAt(i)?r+=2:r++,!(r>t));i++)n=i;return e.substr(0,n+1)}};const t=(e,t="yyyy-MM-dd hh:mm:ss")=>{const r="string"==typeof e||"number"==typeof e?new Date(e):e;if(!r)return"";const n={};return n.yyyy=r.getFullYear(),n.yy=`${n.yyyy}`.substr(2),n.M=r.getMonth()+1,n.MM=(n.M<10?"0":"")+n.M,n.d=r.getDate(),n.dd=(n.d<10?"0":"")+n.d,n.h=r.getHours(),n.hh=(n.h<10?"0":"")+n.h,n.m=r.getMinutes(),n.mm=(n.m<10?"0":"")+n.m,n.s=r.getSeconds(),n.ss=(n.s<10?"0":"")+n.s,n.S=r.getMilliseconds(),n.SS=(n.S<10?"0":"")+n.S,n.SSS=n.S.toString().padStart(3,0),t.replace(/\byyyy|yy|MM|M|dd|d|hh|h|mm|m|ss|s|SSS|SS|S\b/g,(e=>n[e]))};function r(){return Date.now()}var n={now:r,isToday:e=>e&&(new Date).toDateString()===new Date(e).toDateString(),format:t,parseTime:function({year:e=0,month:r=0,date:n=0,hour:i=0,minute:s=0,second:o=0}){const a=`${e||"yyyy"}/${r||"MM"}/${n||"dd"} ${i}:${s}:${o}`;return new Date(t(Date.now(),a)).getTime()},todayZero:()=>new Date(t(r(),"yyyy/MM/dd 00:00:00")).getTime(),oneDay:864e5,oneHour:36e5,oneMinute:6e4,oneSecond:1e3},i="object"==typeof global&&global&&global.Object===Object&&global,s="object"==typeof self&&self&&self.Object===Object&&self;const o=(i||s||Function("return this")()).Symbol,{toString:a,hasOwnProperty:u,propertyIsEnumerable:l}=Object.prototype,c=o?o.toStringTag:void 0;function f(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":c&&c in Object(e)?function(e){const t=u.call(e,c),r=e[c];let n=!1;try{e[c]=void 0,n=!0}catch(e){}const i=a.call(e);return n&&(t?e[c]=r:delete e[c]),i}(e):a.call(e)}var d={getTag:f,getType:function(e){return(f(e).match(/\w+/g)||["object","Undefined"])[1]||""},toString:a,hasOwnProperty:u,propertyIsEnumerable:l},p="[object Function]",y="[object GeneratorFunction]",h="[object AsyncFunction]",g=9007199254740991;const m=/^(?:0|[1-9]\d*)$/;function b(e){const t=typeof e;return null!=e&&("object"==t||"function"==t)}function v(e){return null!=e&&"object"==typeof e}const w=Array.isArray;function $(e){return null!=e&&function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=g}(e.length)&&!j(e)}function O(e){return v(e)&&$(e)}function j(e){var t=b(e)?d.getTag(e):"";return t===p||t===y||t===h}var A={is:function(e,t){return d.getTag(e)===`[object ${t}]`},isNumber:function(e){return"[object Number]"===d.getTag(e)},isString:function(e){return"string"==typeof e||!w(e)&&v(e)&&"[object String]"==d.getTag(e)},isChinese:function(e){return!!e&&!!/^[\u4E00-\u9FA5]+$/.test(e)},isObject:b,isObjectLike:v,isSymbol:function(e){return"symbol"==typeof e||v(e)&&"[object Symbol]"===d.getTag(e)},isFunction:j,isArray:w,isArrayLikeObject:O,isIndex:function(e,t){return!!(t=null==t?g:t)&&("number"==typeof e||m.test(e))&&e>-1&&e%1==0&&e<t},isArrayLike:$,isPrototype:function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||Object.prototype)},isArguments:function(e){return O(e)&&d.hasOwnProperty.call(e,"callee")&&(!d.propertyIsEnumerable.call(e,"callee")||"[object Arguments]"==d.toString.call(e))},isPromise:function(e){return"[object Promise]"===(b(e)?d.getTag(e):"")}};const q=NaN,F=/^\s+|\s+$/g,x=/^[-+]0x[0-9a-f]+$/i,S=/^0b[01]+$/i,k=/^0o[0-7]+$/i,E=parseInt,P=1/0,M=17976931348623157e292;function R(e){if("number"==typeof e)return e;if(A.isSymbol(e))return q;if(A.isObject(e)){const t="function"==typeof e.valueOf?e.valueOf():e;e=A.isObject(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(F,"");const t=S.test(e);return t||k.test(e)?E(e.slice(2),t?2:8):x.test(e)?q:+e}function D(e){return e?(e=R(e))===P||e===-P?(e<0?-1:1)*M:e==e?e:0:0===e?e:0}var T={toNumber:R,toFinite:D,toInteger:function(e){var t=D(e),r=t%1;return t==t?r?t-r:t:0}};const N="Expected a function",_=Math.max,I=Math.min;function C(e,t=0,r={}){var n,i,s,o,a,u,l=0,c=!1,f=!1,d=!0;if("function"!=typeof e)throw new TypeError(N);function p(t){var r=n,s=i;return n=i=void 0,l=t,o=e.apply(s,r)}function y(e){var r=e-u;return void 0===u||r>=t||r<0||f&&e-l>=s}function h(){var e=Date.now();if(y(e))return g(e);a=setTimeout(h,function(e){var r=t-(e-u);return f?I(r,s-(e-l)):r}(e))}function g(e){return a=void 0,d&&n?p(e):(n=i=void 0,o)}function m(...e){var r=Date.now(),s=y(r);if(n=arguments,i=this,u=r,s){if(void 0===a)return function(e){return l=e,a=setTimeout(h,t),c?p(e):o}(u);if(f)return a=setTimeout(h,t),p(u)}return void 0===a&&(a=setTimeout(h,t)),o}return t=T.toNumber(t)||0,A.isObject(r)&&(c=!!r.leading,s=(f="maxWait"in r)?_(T.toNumber(r.maxWait)||0,t):s,d="trailing"in r?!!r.trailing:d),m.cancel=function(){void 0!==a&&clearTimeout(a),l=0,n=u=i=a=void 0},m.flush=function(){return void 0===a?o:g(Date.now())},m}class V{source;constructor(e){this.source=e}run(){let e;try{let t;return t=A.isFunction(this.source)?this.source():this.source,e=A.isPromise(t)?t:Promise.resolve(t),e.then((e=>[null,e])).catch((e=>[e,void 0]))}catch(e){return Promise.resolve([e,void 0])}}}var z={sleep:(e=1e3)=>new Promise((t=>{setTimeout(t,e)})),run:e=>new V(e).run(),debounce:C,throttle:function(e,t=0,r={}){var n=!1,i=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return A.isObject(r)&&(n=r.leading?!!r.leading:n,i=r.trailing?!!r.trailing:i),C(e,t,{leading:n,maxWait:t,trailing:i})}};var U={random:function(e){return Math.floor(Math.random()*e)},randomRange:function(e,t){return Math.floor(Math.random()*(t-e+1)+e)},lerp:function(e,t,r){return e*(1-r)+t*r},randomString:function(e,t=!1){e=e||32;const r="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";let i="";for(let t=0;t<e;t++)i+=r.charAt(Math.floor(62*Math.random()));return t?n.format(new Date,"yyyyMMddhhmmss")+i:i}};function L(e){return e!=e}function J(e,t){return function(e,t){for(var r=-1,n=e?e.length:0,i=Array(n);++r<n;)i[r]=t(e[r],r,e);return i}(t,(function(t){return e[t]}))}var W,Z,B=(W=Object.keys,Z=Object,function(e){return W(Z(e))}),H=Math.max;function Y(e,t){var r=A.isArray(e)||A.isArguments(e)?function(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}(e.length,String):[],n=r.length,i=!!n;for(var s in e)!t&&!d.hasOwnProperty.call(e,s)||i&&("length"==s||A.isIndex(s,n))||r.push(s);return r}const G=e=>{if(!e)return e;if("object"!=typeof e)return e;const t=Array.isArray(e)?[]:{};for(const r in e)e.hasOwnProperty(r)&&(t[r]=G(e[r]));return t};var K={...A,...d,includes:function(e,t,r,n){e=A.isArrayLike(e)?e:function(e){return e?J(e,function(e){return A.isArrayLike(e)?Y(e):function(e){if(!A.isPrototype(e))return B(e);var t=[];for(var r in Object(e))d.hasOwnProperty.call(e,r)&&"constructor"!=r&&t.push(r);return t}(e)}(e)):[]}(e),r=r&&!n?T.toInteger(r):0;var i=e.length;return r<0&&(r=H(i+r,0)),A.isString(e)?r<=i&&e.indexOf(t,r)>-1:!!i&&function(e,t,r){if(t!=t)return function(e,t,r,n){for(var i=e.length,s=r+(n?1:-1);n?s--:++s<i;)if(t(e[s],s,e))return s;return-1}(e,L,r);for(var n=r-1,i=e.length;++n<i;)if(e[n]===t)return n;return-1}(e,t,r)>-1},merge:function(e,t){if(t)for(const r in t)if(t.hasOwnProperty(r)){const n=t[r];"object"==typeof n&&"object"==typeof e[r]?e[r]={...e[r],...n}:e[r]=n}return e},compareArray:function(e,t){if(!Array.isArray(e)||!Array.isArray(t))return!1;if(e.length!==t.length)return!1;for(let r=0,n=e.length;r<n;r++)if(e[r]!==t[r])return!1;return!0},copy:(e,t=[])=>{if(void 0===e)return;const r=JSON.parse(JSON.stringify(e));if("object"!=typeof r)return r;if(Array.isArray(r)||!t||t.length<=0)return r;const n={};for(const e in r)t.includes(e)&&r.hasOwnProperty(e)&&(n[e]=r[e]);return n},clone:G};class Q{_map;constructor(){this._map=new Map}clear(){return this._map.clear(),this}on(e,t){if(!t)return this;let r=this._map.get(e);return r||(r=new Set,this._map.set(e,r)),r.add(t),this}emit(e,...t){const r=this._map.get(e);if(!r)return this;return[...r].forEach((e=>e(...t))),this}off(e="",t){if(!e)return this._map.clear(),this;if(!t)return this._map.delete(e.toString()),this;const r=this._map.get(e);return r?(r.delete(t),this):this}once(e,t){const r=(...n)=>{t(...n),this.off(e,r)};return this.on(e,r),this}has(e){return this._map.has(e)}}var X={groupBy:(e,t)=>e.reduce(((e,r)=>((e[r[t]]=e[r[t]]||[]).push(r),e)),{}),stepAction:function(e,t,r=100){if(!A.isFunction(t))return;if(!A.isArray(e)||e.length<=0)return;let n=0;for(;e.length>n;){let i=r+n,s=e.slice(n,i);t&&t(s),n=i}},skip:(e,t)=>{if(!A.isArray(e)||e.length<=0)return[];const r=t;return e.slice(r)},take:(e,t,r=0)=>{if(!A.isArray(e)||e.length<=0)return[];const n=r||0;if(n>=e.length)return[];const i=t+n;return e.slice(n,e.length<i?e.length:i)||[]},distinct:e=>!A.isArray(e)||e.length<=0?[]:[...new Set(e)]};const ee="[object Object]",te="[object Array]",re=e=>Object.prototype.toString.call(e),ne=(e,t,r=!1)=>{if(e===t)return;const n=re(e);if(n===re(t))if(n===te&&e.length>=t.length)for(let r=0;r<t.length;r++)ne(e[r],t[r]);else if(n===ee&&Object.keys(e).length>=Object.keys(t).length)for(let n in t)r||void 0!==e[n]?ne(e[n],t[n]):e[n]=null},ie=(e,t,r,n="",i=!1)=>{if(e===t)return;const s=re(e),o=re(t);if(s===te&&o===s&&e.length>=t.length)for(let i=0;i<e.length;i++)ie(e[i],t[i],r,`${n}[${i}]`);else if(s===ee&&o===s&&(i||Object.keys(e).length>=Object.keys(t).length)){const i=Object.keys(e);for(let s of i){const i=e[s],o=t[s],a=re(i),u=re(o);if(i!==o)if(a===te&&u===a&&i.length>=o.length)for(let e=0;e<i.length;e++)ie(i[e],o[e],r,`${n?n+".":""}${s}[${e}]`);else if(a===ee&&u===a&&Object.keys(i).length>=Object.keys(o).length)for(let e in i)ie(i[e],o[e],r,`${n?n+".":""}${s}.${e}`);else r[`${n?n+".":""}${s}`]=i}}else r[n]=e};const se=e=>"function"!=typeof e?e:(t={})=>new Promise(((r,n)=>{e(Object.assign(t,{success:r,fail:n}))}));var oe={diff:function(e,t){const r={};return(e=>{if(re(e)===ee)for(let t in e)if(/\w+\.\w+/g.test(t)&&-1===t.indexOf("[")){const r=t.split(".");let n=e,i=r.length;for(let e=0;e<i-1;e++){const t=r[e];re(n[t])!==ee&&(n[t]={}),n=n[t]}n[r[i-1]]=e[t],delete e[t]}})(e),ne(e,t,!0),ie(e,t,r,"",!0),r},promixify:se,run:(e,t={})=>{if(e)return z.run(se(e)(t))},formatList:(e,t,r)=>(e||[]).reduce(((e,n,i)=>({...e,[`${r}[${t+i}]`]:n})),{}),ruleValidator:(e,t)=>!!t&&(!Array.isArray(t)||!(t.length<=0)&&t.every((e=>!!e)))};function ae(e,t){return Object.prototype.hasOwnProperty.call(e,t)}const ue=function(e,{sep:t="&",eq:r="=",max:n=1e3,multiple:i=!1}={}){t=t||"&",r=r||"=";const s={};if("string"!=typeof e||0===e.length)return s;const o=/\+/g,a=n||1e3;let u=(e=e.split(t)).length;a>0&&u>a&&(u=a);for(let t=0;t<u;++t){let n,a,u,l,c=e[t].replace(o,"%20"),f=c.indexOf(r);f>=0?(n=c.substr(0,f),a=c.substr(f+1)):(n=c,a=""),u=decodeURIComponent(n),l=decodeURIComponent(a),ae(s,u)&&i?Array.isArray(s[u])?s[u].push(l):s[u]=[s[u],l]:s[u]=l}return s},le=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}},ce=function(e,{sep:t="&",eq:r="=",name:n=null,multiple:i=!1}={}){return t=t||"&",r=r||"=",null===e&&(e=void 0),"object"==typeof e?Object.keys(e).map((function(n){const s=encodeURIComponent(le(n))+r;return i&&Array.isArray(e[n])?e[n].map((function(e){return s+encodeURIComponent(le(e))})).join(t):s+encodeURIComponent(le(e[n]))})).filter(Boolean).join(t):n?encodeURIComponent(le(n))+r+encodeURIComponent(le(e)):""};var fe={parse:ue,decode:ue,stringify:ce,encode:ce,useHttps:function(e){if(!e)return e;const t=e.trim();return"string"!=typeof e?e:t.indexOf("https")<0?t.replace("http","https"):t}};const de=/%[sdj%]/g;let pe=()=>{};function ye(e){if(!e||!e.length)return null;const t={};return e.forEach((e=>{const r=e.field;t[r]=t[r]||[],t[r].push(e)})),t}function he(e,...t){let r=0;const n=t.length;if("function"==typeof e)return e.apply(null,t);if("string"==typeof e){return e.replace(de,(e=>{if("%%"===e)return"%";if(r>=n)return e;switch(e){case"%s":return String(t[r++]);case"%d":return Number(t[r++]);case"%j":try{return JSON.stringify(t[r++])}catch(e){return"[Circular]"}break;default:return e}}))}return e}function ge(e,t){return null==e||(!("array"!==t||!Array.isArray(e)||e.length)||!(!function(e){return"string"===e||"url"===e||"hex"===e||"email"===e||"date"===e||"pattern"===e}(t)||"string"!=typeof e||e))}function me(e,t,r){let n=0;const i=e.length;!function s(o){if(o&&o.length)return void r(o);const a=n;n+=1,a<i?t(e[a],s):r([])}([])}"undefined"!=typeof process&&process.env&&"production"!==process.env.NODE_ENV&&"undefined"!=typeof window&&"undefined"!=typeof document&&(pe=(e,t)=>{"undefined"!=typeof console&&console.warn&&"undefined"==typeof ASYNC_VALIDATOR_NO_WARNING&&t.every((e=>"string"==typeof e))&&console.warn(e,t)});class be extends Error{errors;fields;constructor(e,t){super("Async Validation Error"),this.errors=e,this.fields=t}}function ve(e,t,r,n,i){if(t.first){const t=new Promise(((t,s)=>{const o=function(e){const t=[];return Object.keys(e).forEach((r=>{t.push(...e[r]||[])})),t}(e);me(o,r,(e=>(n(e),e.length?s(new be(e,ye(e))):t(i))))}));return t.catch((e=>e)),t}const s=!0===t.firstFields?Object.keys(e):t.firstFields||[],o=Object.keys(e),a=o.length;let u=0;const l=[],c=new Promise(((t,c)=>{const f=e=>{if(l.push.apply(l,e),u++,u===a)return n(l),l.length?c(new be(l,ye(l))):t(i)};o.length||(n(l),t(i)),o.forEach((t=>{const n=e[t];-1!==s.indexOf(t)?me(n,r,f):function(e,t,r){const n=[];let i=0;const s=e.length;function o(e){n.push(...e||[]),i++,i===s&&r(n)}e.forEach((e=>{t(e,o)}))}(n,r,f)}))}));return c.catch((e=>e)),c}function we(e,t){return r=>{let n;return n=e.fullFields?function(e,t){let r=e;for(let e=0;e<t.length;e++){if(null==r)return r;r=r[t[e]]}return r}(t,e.fullFields):t[r.field||e.fullField],(i=r)&&void 0!==i.message?(r.field=r.field||e.fullField,r.fieldValue=n,r):{message:"function"==typeof r?r():r,fieldValue:n,field:r.field||e.fullField};var i}}function $e(e,t){if(t)for(const r in t)if(t.hasOwnProperty(r)){const n=t[r];"object"==typeof n&&"object"==typeof e[r]?e[r]={...e[r],...n}:e[r]=n}return e}const Oe=(e,t,r,n,i,s)=>{!e.required||r.hasOwnProperty(e.field||"")&&!ge(t,s||e.type)||n.push(he(i.messages.required,e.fullField))};let je;const Ae=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,qe=/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i,Fe={integer:e=>Fe.number(e)&&parseInt(e,10)===e,float:e=>Fe.number(e)&&!Fe.integer(e),array:e=>Array.isArray(e),regexp(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch(e){return!1}},date:e=>"function"==typeof e.getTime&&"function"==typeof e.getMonth&&"function"==typeof e.getYear&&!isNaN(e.getTime()),number:e=>!isNaN(e)&&"number"==typeof e,object:e=>"object"==typeof e&&!Fe.array(e),method:e=>"function"==typeof e,email:e=>"string"==typeof e&&e.length<=320&&!!e.match(Ae),url:e=>"string"==typeof e&&e.length<=2048&&!!e.match((()=>{if(je)return je;const e="[a-fA-F\\d:]",t=t=>t&&t.includeBoundaries?`(?:(?<=\\s|^)(?=${e})|(?<=${e})(?=\\s|$))`:"",r="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",n="[a-fA-F\\d]{1,4}",i=`\n(?:\n(?:${n}:){7}(?:${n}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:${n}:){6}(?:${r}|:${n}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:${n}:){5}(?::${r}|(?::${n}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:${n}:){4}(?:(?::${n}){0,1}:${r}|(?::${n}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:${n}:){3}(?:(?::${n}){0,2}:${r}|(?::${n}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:${n}:){2}(?:(?::${n}){0,3}:${r}|(?::${n}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:${n}:){1}(?:(?::${n}){0,4}:${r}|(?::${n}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::${n}){0,5}:${r}|(?::${n}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\n`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),s=new RegExp(`(?:^${r}$)|(?:^${i}$)`),o=new RegExp(`^${r}$`),a=new RegExp(`^${i}$`),u=e=>e&&e.exact?s:new RegExp(`(?:${t(e)}${r}${t(e)})|(?:${t(e)}${i}${t(e)})`,"g");u.v4=e=>e&&e.exact?o:new RegExp(`${t(e)}${r}${t(e)}`,"g"),u.v6=e=>e&&e.exact?a:new RegExp(`${t(e)}${i}${t(e)}`,"g");const l=u.v4().source,c=u.v6().source;return je=new RegExp(`(?:^(?:(?:(?:[a-z]+:)?//)|www\\.)(?:\\S+(?::\\S*)?@)?(?:localhost|${l}|${c}|(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:[/?#][^\\s"]*)?$)`,"i"),je})()),hex:e=>"string"==typeof e&&!!e.match(qe)},xe="enum";var Se={required:Oe,whitespace:(e,t,r,n,i)=>{(/^\s+$/.test(t)||""===t)&&n.push(he(i.messages.whitespace,e.fullField))},type:(e,t,r,n,i)=>{if(e.required&&void 0===t)return void Oe(e,t,r,n,i);const s=e.type;["integer","float","array","regexp","object","method","email","number","date","url","hex"].indexOf(s)>-1?Fe[s](t)||n.push(he(i.messages.types[s],e.fullField,e.type)):s&&typeof t!==e.type&&n.push(he(i.messages.types[s],e.fullField,e.type))},range:(e,t,r,n,i)=>{const s="number"==typeof e.len,o="number"==typeof e.min,a="number"==typeof e.max,u=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;let l=t,c="";const f="number"==typeof t,d="string"==typeof t,p=Array.isArray(t);if(f?c="number":d?c="string":p&&(c="array"),!c)return!1;p&&(l=t.length),d&&(l=t.replace(u,"_").length),s?l!==e.len&&n.push(he(i.messages[c].len,e.fullField,e.len)):o&&!a&&l<e.min?n.push(he(i.messages[c].min,e.fullField,e.min)):a&&!o&&l>e.max?n.push(he(i.messages[c].max,e.fullField,e.max)):o&&a&&(l<e.min||l>e.max)&&n.push(he(i.messages[c].range,e.fullField,e.min,e.max))},enum:(e,t,r,n,i)=>{e[xe]=Array.isArray(e[xe])?e[xe]:[],-1===e[xe].indexOf(t)&&n.push(he(i.messages[xe],e.fullField,e[xe].join(", ")))},pattern:(e,t,r,n,i)=>{if(e.pattern)if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(t)||n.push(he(i.messages.pattern.mismatch,e.fullField,t,e.pattern));else if("string"==typeof e.pattern){new RegExp(e.pattern).test(t)||n.push(he(i.messages.pattern.mismatch,e.fullField,t,e.pattern))}}};const ke=(e,t,r,n,i)=>{const s=e.type,o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(ge(t,s)&&!e.required)return r();Se.required(e,t,n,o,i,s),ge(t,s)||Se.type(e,t,n,o,i)}r(o)};var Ee={string:(e,t,r,n,i)=>{const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field||"")){if(ge(t,"string")&&!e.required)return r();Se.required(e,t,n,s,i,"string"),ge(t,"string")||(Se.type(e,t,n,s,i),Se.range(e,t,n,s,i),Se.pattern(e,t,n,s,i),!0===e.whitespace&&Se.whitespace(e,t,n,s,i))}r(s)},method:(e,t,r,n,i)=>{const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(ge(t)&&!e.required)return r();Se.required(e,t,n,s,i),void 0!==t&&Se.type(e,t,n,s,i)}r(s)},number:(e,t,r,n,i)=>{const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(""===t&&(t=void 0),ge(t)&&!e.required)return r();Se.required(e,t,n,s,i),void 0!==t&&(Se.type(e,t,n,s,i),Se.range(e,t,n,s,i))}r(s)},boolean:(e,t,r,n,i)=>{const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(ge(t)&&!e.required)return r();Se.required(e,t,n,s,i),void 0!==t&&Se.type(e,t,n,s,i)}r(s)},regexp:(e,t,r,n,i)=>{const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(ge(t)&&!e.required)return r();Se.required(e,t,n,s,i),ge(t)||Se.type(e,t,n,s,i)}r(s)},integer:(e,t,r,n,i)=>{const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(ge(t)&&!e.required)return r();Se.required(e,t,n,s,i),void 0!==t&&(Se.type(e,t,n,s,i),Se.range(e,t,n,s,i))}r(s)},float:(e,t,r,n,i)=>{const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(ge(t)&&!e.required)return r();Se.required(e,t,n,s,i),void 0!==t&&(Se.type(e,t,n,s,i),Se.range(e,t,n,s,i))}r(s)},array:(e,t,r,n,i)=>{const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(null==t&&!e.required)return r();Se.required(e,t,n,s,i,"array"),null!=t&&(Se.type(e,t,n,s,i),Se.range(e,t,n,s,i))}r(s)},object:(e,t,r,n,i)=>{const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(ge(t)&&!e.required)return r();Se.required(e,t,n,s,i),void 0!==t&&Se.type(e,t,n,s,i)}r(s)},enum:(e,t,r,n,i)=>{const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(ge(t)&&!e.required)return r();Se.required(e,t,n,s,i),void 0!==t&&Se.enum(e,t,n,s,i)}r(s)},pattern:(e,t,r,n,i)=>{const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(ge(t,"string")&&!e.required)return r();Se.required(e,t,n,s,i),ge(t,"string")||Se.pattern(e,t,n,s,i)}r(s)},date:(e,t,r,n,i)=>{const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(ge(t,"date")&&!e.required)return r();if(Se.required(e,t,n,s,i),!ge(t,"date")){let r;r=t instanceof Date?t:new Date(t),Se.type(e,r,n,s,i),r&&Se.range(e,r.getTime(),n,s,i)}}r(s)},url:ke,hex:ke,email:ke,required:(e,t,r,n,i)=>{const s=[],o=Array.isArray(t)?"array":typeof t;Se.required(e,t,n,s,i,o),r(s)},any:(e,t,r,n,i)=>{const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(ge(t)&&!e.required)return r();Se.required(e,t,n,s,i)}r(s)}};function Pe(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone(){const e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}const Me=Pe();class Re{static register=function(e,t){if("function"!=typeof t)throw new Error("Cannot register a validator by type, validator is not a function");Ee[e]=t};static warning=pe;static messages=Me;static validators=Ee;rules={};_messages=Me;constructor(e){this.define(e)}define(e){if(!e)throw new Error("Cannot configure a schema with no rules");if("object"!=typeof e||Array.isArray(e))throw new Error("Rules must be an object");this.rules={},Object.keys(e).forEach((t=>{const r=e[t];this.rules[t]=Array.isArray(r)?r:[r]}))}messages(e){return e&&(this._messages=$e(Pe(),e)),this._messages}validate(e,t={},r=(()=>{})){let n=e,i=t,s=r;if("function"==typeof i&&(s=i,i={}),!this.rules||0===Object.keys(this.rules).length)return s&&s(null,n),Promise.resolve(n);if(i.messages){let e=this.messages();e===Me&&(e=Pe()),$e(e,i.messages),i.messages=e}else i.messages=this.messages();const o={};(i.keys||Object.keys(this.rules)).forEach((t=>{const r=this.rules[t];let i=n[t];r.forEach((r=>{let s=r;"function"==typeof s.transform&&(n===e&&(n={...n}),i=n[t]=s.transform(i)),s="function"==typeof s?{validator:s}:{...s},s.validator=this.getValidationMethod(s),s.validator&&(s.field=t,s.fullField=s.fullField||t,s.type=this.getType(s),o[t]=o[t]||[],o[t].push({rule:s,value:i,source:n,field:t}))}))}));const a={};return ve(o,i,((e,t)=>{const r=e.rule;let s,o=!("object"!==r.type&&"array"!==r.type||"object"!=typeof r.fields&&"object"!=typeof r.defaultField);function u(e,t){return{...t,fullField:`${r.fullField}.${e}`,fullFields:r.fullFields?[...r.fullFields,e]:[e]}}function l(s=[]){let l=Array.isArray(s)?s:[s];!0===i.suppressWarning&&l.length&&Re.warning("async-validator:",l),l.length&&void 0!==r.message&&(l=[].concat(r.message));let c=l.map(we(r,n));if(i.first&&c.length)return a[r.field]=1,t(c);if(o){if(r.required&&!e.value)return void 0!==r.message?c=[].concat(r.message).map(we(r,n)):i.error&&(c=[i.error(r,he(i.messages.required,r.field))]),t(c);let s={};r.defaultField&&Object.keys(e.value).map((e=>{s[e]=r.defaultField})),s={...s,...e.rule.fields};const o={};Object.keys(s).forEach((e=>{const t=s[e],r=Array.isArray(t)?t:[t];o[e]=r.map(u.bind(null,e))}));const a=new Re(o);a.messages(i.messages),e.rule.options&&(e.rule.options.messages=i.messages,e.rule.options.error=i.error),a.validate(e.value,e.rule.options||i,(e=>{const r=[];c&&c.length&&r.push(...c),e&&e.length&&r.push(...e),t(r.length?r:null)}))}else t(c)}if(o=o&&(r.required||!r.required&&e.value),r.field=e.field,r.asyncValidator)s=r.asyncValidator(r,e.value,l,e.source,i);else if(r.validator){try{s=r.validator(r,e.value,l,e.source,i)}catch(e){console.error?.(e),i.suppressValidatorError||setTimeout((()=>{throw e}),0),l(e.message)}!0===s?l():!1===s?l("function"==typeof r.message?r.message(r.fullField||r.field):r.message||`${r.fullField||r.field} fails`):s instanceof Array?l(s):s instanceof Error&&l(s.message)}s&&s.then&&s.then((()=>l()),(e=>l(e)))}),(e=>{!function(e){let t=[],r={};for(let r=0;r<e.length;r++)i=e[r],Array.isArray(i)?t=t.concat(...i):t.push(i);var i;t.length?(r=ye(t),s(t,r)):s(null,n)}(e)}),n)}getType(e){if(void 0===e.type&&e.pattern instanceof RegExp&&(e.type="pattern"),"function"!=typeof e.validator&&e.type&&!Ee.hasOwnProperty(e.type))throw new Error(he("Unknown rule type %s",e.type));return e.type||"string"}getValidationMethod(e){if("function"==typeof e.validator)return e.validator;const t=Object.keys(e),r=t.indexOf("message");return-1!==r&&t.splice(r,1),1===t.length&&"required"===t[0]?Ee.required:Ee[this.getType(e)]||void 0}}function De(e){return new Re(e)}var Te={validateId:function(e){return!!e&&(!(e.length<6)&&!!/^[A-Za-z0-9_-]+$/.test(e))},validatePhone:function(e){return!!e&&!!/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/.test(e)},validator:De,validate:function(e,t,r={},n=(()=>{})){return z.run(De(e).validate(t,r,n))}};class Ne{key;storage;fields=[];constructor(e){this.key=e?.key||"",this.fields=e?.fields||[],this.storage=e?.storage||void 0}save=z.debounce((e=>{if(this.key&&this.storage)try{const{setItem:t,setStorageSync:r}=this.storage;if(r)return r(this.key,e);if(t)return t(this.key,JSON.stringify(e))}catch(e){console.error("persit save ",e)}}));read(){if(this.key&&this.storage)try{const{getItem:e,getStorageSync:t}=this.storage;if(t)return t(this.key);if(e){const t=e(this.key);return JSON.parse(t)}}catch(e){return void console.error("persit read ",e)}}handleSave(e,t){if(!this.fields.includes(t)||!e)return;const r=K.copy(e,this.fields);this.save(r)}}class _e extends Q{setters;getters;actions;persist;constructor(){super(),this.getters={},this.setters={},this.actions={}}async dispatch(e,t=void 0){const r=Reflect.get(this.actions,e);if(!K.isFunction(r))return;const[,n]=await z.run(r(this,t));return n}async query(e){const t=Reflect.get(this,e);let r;return r=null!=t&&""!==t?K.copy(t):await this.dispatch(e),r}change=(e,t,r)=>{if(!e.persist)return;const n=e.persist.fields||[];if(!n.includes(t))return;const i=K.copy(e,n);e.persist.save(i)}}var Ie={gbk:e,time:n,hook:z,math:U,util:K,list:X,mini:oe,url:fe,rule:Te,event:Q,store:_e,storeRef:(e,t)=>{const r=Object.assign(new _e,e||{});r.__persist=new Ne(t||r.persist);const n=r.__persist.read(),i=n?Object.assign(r,n):r;return new Proxy(i,{get:(e,t,r)=>{const n=Reflect.get(e.getters,t);return K.isFunction(n)?n(e):Reflect.get(e,t,r)},set:(e,t,r,n)=>{const i=Reflect.get(e.setters,t);if(K.isFunction(i)&&!i(e,r))return!0;const s=Reflect.set(e,t,r,n);return s&&(e.emit(t.toString(),r),e?.__persist?.handleSave(e,t.toString())),s},has:(e,t)=>Reflect.has(e,t)})},persist:Ne,persistConfig:(e,t,r)=>({key:e,fields:t,storage:r})};export{Ie as default};
1
+ var e={gbkLength:function(e){let t=0;if(!e)return 0;for(let r=0;r<e.length;r++)e.charCodeAt(r)>127||94===e.charCodeAt(r)?t+=2:t++;return t},gbkCut:function(e,t){if(!e||t<=0)return"";let r=0,n=0;for(let s=0;s<e.length&&(e.charCodeAt(s)>127||94===e.charCodeAt(s)?r+=2:r++,!(r>t));s++)n=s;return e.substr(0,n+1)}};const t=(e,t="yyyy-MM-dd hh:mm:ss")=>{const r="string"==typeof e||"number"==typeof e?new Date(e):e;if(!r)return"";const n={};return n.yyyy=r.getFullYear(),n.yy=`${n.yyyy}`.substr(2),n.M=r.getMonth()+1,n.MM=(n.M<10?"0":"")+n.M,n.d=r.getDate(),n.dd=(n.d<10?"0":"")+n.d,n.h=r.getHours(),n.hh=(n.h<10?"0":"")+n.h,n.m=r.getMinutes(),n.mm=(n.m<10?"0":"")+n.m,n.s=r.getSeconds(),n.ss=(n.s<10?"0":"")+n.s,n.S=r.getMilliseconds(),n.SS=(n.S<10?"0":"")+n.S,n.SSS=n.S.toString().padStart(3,0),t.replace(/\byyyy|yy|MM|M|dd|d|hh|h|mm|m|ss|s|SSS|SS|S\b/g,(e=>n[e]))};function r(){return Date.now()}var n={now:r,isToday:e=>e&&(new Date).toDateString()===new Date(e).toDateString(),format:t,parseTime:function({year:e=0,month:r=0,date:n=0,hour:s=0,minute:i=0,second:o=0}){const a=`${e||"yyyy"}/${r||"MM"}/${n||"dd"} ${s}:${i}:${o}`;return new Date(t(Date.now(),a)).getTime()},todayZero:()=>new Date(t(r(),"yyyy/MM/dd 00:00:00")).getTime(),oneDay:864e5,oneHour:36e5,oneMinute:6e4,oneSecond:1e3},s="object"==typeof global&&global&&global.Object===Object&&global,i="object"==typeof self&&self&&self.Object===Object&&self;const o=(s||i||Function("return this")()).Symbol,{toString:a,hasOwnProperty:u,propertyIsEnumerable:c}=Object.prototype,l=o?o.toStringTag:void 0;function f(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":l&&l in Object(e)?function(e){const t=u.call(e,l),r=e[l];let n=!1;try{e[l]=void 0,n=!0}catch(e){}const s=a.call(e);return n&&(t?e[l]=r:delete e[l]),s}(e):a.call(e)}var d={getTag:f,getType:function(e){return(f(e).match(/\w+/g)||["object","Undefined"])[1]||""},toString:a,hasOwnProperty:u,propertyIsEnumerable:c},h="[object Function]",p="[object GeneratorFunction]",y="[object AsyncFunction]",g=9007199254740991;const m=/^(?:0|[1-9]\d*)$/;function b(e){const t=typeof e;return null!=e&&("object"==t||"function"==t)}function v(e){return null!=e&&"object"==typeof e}const w=Array.isArray;function q(e){return null!=e&&function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=g}(e.length)&&!$(e)}function O(e){return v(e)&&q(e)}function $(e){var t=b(e)?d.getTag(e):"";return t===h||t===p||t===y}var j={is:function(e,t){return d.getTag(e)===`[object ${t}]`},isNumber:function(e){return"[object Number]"===d.getTag(e)},isString:function(e){return"string"==typeof e||!w(e)&&v(e)&&"[object String]"==d.getTag(e)},isChinese:function(e){return!!e&&!!/^[\u4E00-\u9FA5]+$/.test(e)},isObject:b,isObjectLike:v,isSymbol:function(e){return"symbol"==typeof e||v(e)&&"[object Symbol]"===d.getTag(e)},isFunction:$,isArray:w,isArrayLikeObject:O,isIndex:function(e,t){return!!(t=null==t?g:t)&&("number"==typeof e||m.test(e))&&e>-1&&e%1==0&&e<t},isArrayLike:q,isPrototype:function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||Object.prototype)},isArguments:function(e){return O(e)&&d.hasOwnProperty.call(e,"callee")&&(!d.propertyIsEnumerable.call(e,"callee")||"[object Arguments]"==d.toString.call(e))},isPromise:function(e){return"[object Promise]"===(b(e)?d.getTag(e):"")}};const A=NaN,F=/^\s+|\s+$/g,k=/^[-+]0x[0-9a-f]+$/i,S=/^0b[01]+$/i,x=/^0o[0-7]+$/i,E=parseInt,R=1/0,P=17976931348623157e292;function T(e){if("number"==typeof e)return e;if(j.isSymbol(e))return A;if(j.isObject(e)){const t="function"==typeof e.valueOf?e.valueOf():e;e=j.isObject(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(F,"");const t=S.test(e);return t||x.test(e)?E(e.slice(2),t?2:8):k.test(e)?A:+e}function D(e){return e?(e=T(e))===R||e===-R?(e<0?-1:1)*P:e==e?e:0:0===e?e:0}var I={toNumber:T,toFinite:D,toInteger:function(e){var t=D(e),r=t%1;return t==t?r?t-r:t:0}};const M="Expected a function",C=Math.max,N=Math.min;function _(e,t=0,r={}){var n,s,i,o,a,u,c=0,l=!1,f=!1,d=!0;if("function"!=typeof e)throw new TypeError(M);function h(t){var r=n,i=s;return n=s=void 0,c=t,o=e.apply(i,r)}function p(e){var r=e-u;return void 0===u||r>=t||r<0||f&&e-c>=i}function y(){var e=Date.now();if(p(e))return g(e);a=setTimeout(y,function(e){var r=t-(e-u);return f?N(r,i-(e-c)):r}(e))}function g(e){return a=void 0,d&&n?h(e):(n=s=void 0,o)}function m(...e){var r=Date.now(),i=p(r);if(n=arguments,s=this,u=r,i){if(void 0===a)return function(e){return c=e,a=setTimeout(y,t),l?h(e):o}(u);if(f)return a=setTimeout(y,t),h(u)}return void 0===a&&(a=setTimeout(y,t)),o}return t=I.toNumber(t)||0,j.isObject(r)&&(l=!!r.leading,i=(f="maxWait"in r)?C(I.toNumber(r.maxWait)||0,t):i,d="trailing"in r?!!r.trailing:d),m.cancel=function(){void 0!==a&&clearTimeout(a),c=0,n=u=s=a=void 0},m.flush=function(){return void 0===a?o:g(Date.now())},m}class L{source;constructor(e){this.source=e}run(){let e;try{let t;return t=j.isFunction(this.source)?this.source():this.source,e=j.isPromise(t)?t:Promise.resolve(t),e.then((e=>[null,e])).catch((e=>[e,void 0]))}catch(e){return Promise.resolve([e,void 0])}}}var U={sleep:(e=1e3)=>new Promise((t=>{setTimeout(t,e)})),run:e=>new L(e).run(),debounce:_,throttle:function(e,t=0,r={}){var n=!1,s=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return j.isObject(r)&&(n=r.leading?!!r.leading:n,s=r.trailing?!!r.trailing:s),_(e,t,{leading:n,maxWait:t,trailing:s})}};var V={random:function(e){return Math.floor(Math.random()*e)},randomRange:function(e,t){return Math.floor(Math.random()*(t-e+1)+e)},lerp:function(e,t,r){return e*(1-r)+t*r},randomString:function(e,t=!1){e=e||32;const r="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";let s="";for(let t=0;t<e;t++)s+=r.charAt(Math.floor(62*Math.random()));return t?n.format(new Date,"yyyyMMddhhmmss")+s:s}};function J(e){return e!=e}function z(e,t){return function(e,t){for(var r=-1,n=e?e.length:0,s=Array(n);++r<n;)s[r]=t(e[r],r,e);return s}(t,(function(t){return e[t]}))}var B,H,W=(B=Object.keys,H=Object,function(e){return B(H(e))}),Z=Math.max;function Y(e,t){var r=j.isArray(e)||j.isArguments(e)?function(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}(e.length,String):[],n=r.length,s=!!n;for(var i in e)!t&&!d.hasOwnProperty.call(e,i)||s&&("length"==i||j.isIndex(i,n))||r.push(i);return r}const G=e=>{if(!e)return e;if("object"!=typeof e)return e;const t=Array.isArray(e)?[]:{};for(const r in e)e.hasOwnProperty(r)&&(t[r]=G(e[r]));return t};var K={...j,...d,includes:function(e,t,r,n){e=j.isArrayLike(e)?e:function(e){return e?z(e,function(e){return j.isArrayLike(e)?Y(e):function(e){if(!j.isPrototype(e))return W(e);var t=[];for(var r in Object(e))d.hasOwnProperty.call(e,r)&&"constructor"!=r&&t.push(r);return t}(e)}(e)):[]}(e),r=r&&!n?I.toInteger(r):0;var s=e.length;return r<0&&(r=Z(s+r,0)),j.isString(e)?r<=s&&e.indexOf(t,r)>-1:!!s&&function(e,t,r){if(t!=t)return function(e,t,r,n){for(var s=e.length,i=r+(n?1:-1);n?i--:++i<s;)if(t(e[i],i,e))return i;return-1}(e,J,r);for(var n=r-1,s=e.length;++n<s;)if(e[n]===t)return n;return-1}(e,t,r)>-1},merge:function(e,t){if(t)for(const r in t)if(t.hasOwnProperty(r)){const n=t[r];"object"==typeof n&&"object"==typeof e[r]?e[r]={...e[r],...n}:e[r]=n}return e},compareArray:function(e,t){if(!Array.isArray(e)||!Array.isArray(t))return!1;if(e.length!==t.length)return!1;for(let r=0,n=e.length;r<n;r++)if(e[r]!==t[r])return!1;return!0},copy:(e,t=[])=>{if(void 0===e)return;const r=JSON.parse(JSON.stringify(e));if("object"!=typeof r)return r;if(Array.isArray(r)||!t||t.length<=0)return r;const n={};for(const e in r)t.includes(e)&&r.hasOwnProperty(e)&&(n[e]=r[e]);return n},clone:G};class Q{_map;constructor(){this._map=new Map}clear(){return this._map.clear(),this}on(e,t){if(!t)return this;let r=this._map.get(e);return r||(r=new Set,this._map.set(e,r)),r.add(t),this}emit(e,...t){const r=this._map.get(e);if(!r)return this;return[...r].forEach((e=>e(...t))),this}off(e="",t){if(!e)return this._map.clear(),this;if(!t)return this._map.delete(e.toString()),this;const r=this._map.get(e);return r?(r.delete(t),this):this}once(e,t){const r=(...n)=>{t(...n),this.off(e,r)};return this.on(e,r),this}has(e){return this._map.has(e)}}var X={groupBy:(e,t)=>e.reduce(((e,r)=>((e[r[t]]=e[r[t]]||[]).push(r),e)),{}),stepAction:function(e,t,r=100){if(!j.isFunction(t))return;if(!j.isArray(e)||e.length<=0)return;let n=0;for(;e.length>n;){let s=r+n,i=e.slice(n,s);t&&t(i),n=s}},skip:(e,t)=>{if(!j.isArray(e)||e.length<=0)return[];const r=t;return e.slice(r)},take:(e,t,r=0)=>{if(!j.isArray(e)||e.length<=0)return[];const n=r||0;if(n>=e.length)return[];const s=t+n;return e.slice(n,e.length<s?e.length:s)||[]},distinct:e=>!j.isArray(e)||e.length<=0?[]:[...new Set(e)]};const ee="[object Object]",te="[object Array]",re=e=>Object.prototype.toString.call(e),ne=(e,t,r=!1)=>{if(e===t)return;const n=re(e);if(n===re(t))if(n===te&&e.length>=t.length)for(let r=0;r<t.length;r++)ne(e[r],t[r]);else if(n===ee&&Object.keys(e).length>=Object.keys(t).length)for(let n in t)r||void 0!==e[n]?ne(e[n],t[n]):e[n]=null},se=(e,t,r,n="",s=!1)=>{if(e===t)return;const i=re(e),o=re(t);if(i===te&&o===i&&e.length>=t.length)for(let s=0;s<e.length;s++)se(e[s],t[s],r,`${n}[${s}]`);else if(i===ee&&o===i&&(s||Object.keys(e).length>=Object.keys(t).length)){const s=Object.keys(e);for(let i of s){const s=e[i],o=t[i],a=re(s),u=re(o);if(s!==o)if(a===te&&u===a&&s.length>=o.length)for(let e=0;e<s.length;e++)se(s[e],o[e],r,`${n?n+".":""}${i}[${e}]`);else if(a===ee&&u===a&&Object.keys(s).length>=Object.keys(o).length)for(let e in s)se(s[e],o[e],r,`${n?n+".":""}${i}.${e}`);else r[`${n?n+".":""}${i}`]=s}}else r[n]=e};class ie{list=[];constructor(){this.invoke=this.invoke.bind(this)}use(e){this.list=this.list.concat(e)}invoke(e){return this.list.reduce(((e,t)=>e.then((e=>t(e)))),Promise.resolve(e)).catch((e=>"REFETCH"===e.sig?Promise.resolve(e.result):Promise.reject(e)))}}class oe{reqConfig={};handleEncrypt;handleDecrypt;handleToast;handleRequest;interceptors={request:new ie,response:new ie};static blockId="blockid";static requestLock={};constructor(e){const{reqConfig:t={},requestEncrypt:r,responseDecrypt:n,handleToast:s,handleRequest:i}=e;this.reqConfig=t,this.handleEncrypt=r,this.handleDecrypt=n,this.handleToast=s,this.handleRequest=i}lockR(e,t){oe.requestLock[e]={lock:!0,request:t()}}unlockR(e){delete oe.requestLock[e]}getIdFromReq(e){const{url:t,data:r={}}=e;return t+JSON.stringify(r)}getIdFromReqUrl(e){return e.url||""}_fetch(e,t){let r=e;return t&&this.handleEncrypt&&(r=this.handleEncrypt(e)),new Promise(((e,n)=>{this.handleRequest({...r,success:r=>{let n=r;t&&this.handleDecrypt&&(n=this.handleDecrypt(r)),e(n)},fail:e=>{n(e)}})}))}async request(e,t){const r=JSON.parse(JSON.stringify(this.reqConfig[e])),{config:n,...s}=await this.interceptors.request.invoke({url:r.url,data:t||{},header:{"content-type":"application/json"},method:r.method?r.method:"POST",responseType:"text",config:r});let i;try{if("block"===n.model)this.lockR(oe.blockId,(()=>this._fetch(s,n.hasEncrypt))),i=await oe.requestLock[oe.blockId].request;else if(oe.requestLock[oe.blockId]&&oe.requestLock[oe.blockId].lock&&await oe.requestLock[oe.blockId].request,"debounce"===n.model||"debounceAgainstUrl"===n.model){let e;e="debounceAgainstUrl"===n.model?this.getIdFromReqUrl(s):this.getIdFromReq(s),oe.requestLock[e]||this.lockR(e,(()=>this._fetch(s,n.hasEncrypt))),i=await oe.requestLock[e].request,this.unlockR(e)}else i=await this._fetch(s,n.hasEncrypt)}catch(e){this.handleToast&&this.handleToast({title:JSON.stringify(e),icon:"none"})}return this.interceptors.response.invoke({res:i,reqId:this.getIdFromReq(s),refetch:()=>({sig:"REFETCH",result:this.request(e,t||{})})})}}const ae=e=>"function"!=typeof e?e:(t={})=>new Promise(((r,n)=>{e(Object.assign(t,{success:r,fail:n}))}));var ue={diff:function(e,t){const r={};return(e=>{if(re(e)===ee)for(let t in e)if(/\w+\.\w+/g.test(t)&&-1===t.indexOf("[")){const r=t.split(".");let n=e,s=r.length;for(let e=0;e<s-1;e++){const t=r[e];re(n[t])!==ee&&(n[t]={}),n=n[t]}n[r[s-1]]=e[t],delete e[t]}})(e),ne(e,t,!0),se(e,t,r,"",!0),r},promixify:ae,run:(e,t={})=>{if(e)return U.run(ae(e)(t))},formatList:(e,t,r)=>(e||[]).reduce(((e,n,s)=>({...e,[`${r}[${t+s}]`]:n})),{}),ruleValidator:(e,t)=>!!t&&(!Array.isArray(t)||!(t.length<=0)&&t.every((e=>!!e))),http:oe};function ce(e,t){return Object.prototype.hasOwnProperty.call(e,t)}const le=function(e,{sep:t="&",eq:r="=",max:n=1e3,multiple:s=!1}={}){t=t||"&",r=r||"=";const i={};if("string"!=typeof e||0===e.length)return i;const o=/\+/g,a=n||1e3;let u=(e=e.split(t)).length;a>0&&u>a&&(u=a);for(let t=0;t<u;++t){let n,a,u,c,l=e[t].replace(o,"%20"),f=l.indexOf(r);f>=0?(n=l.substr(0,f),a=l.substr(f+1)):(n=l,a=""),u=decodeURIComponent(n),c=decodeURIComponent(a),ce(i,u)&&s?Array.isArray(i[u])?i[u].push(c):i[u]=[i[u],c]:i[u]=c}return i},fe=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}},de=function(e,{sep:t="&",eq:r="=",name:n=null,multiple:s=!1}={}){return t=t||"&",r=r||"=",null===e&&(e=void 0),"object"==typeof e?Object.keys(e).map((function(n){const i=encodeURIComponent(fe(n))+r;return s&&Array.isArray(e[n])?e[n].map((function(e){return i+encodeURIComponent(fe(e))})).join(t):i+encodeURIComponent(fe(e[n]))})).filter(Boolean).join(t):n?encodeURIComponent(fe(n))+r+encodeURIComponent(fe(e)):""};var he={parse:le,decode:le,stringify:de,encode:de,useHttps:function(e){if(!e)return e;const t=e.trim();return"string"!=typeof e?e:t.indexOf("https")<0?t.replace("http","https"):t}};const pe=/%[sdj%]/g;let ye=()=>{};function ge(e){if(!e||!e.length)return null;const t={};return e.forEach((e=>{const r=e.field;t[r]=t[r]||[],t[r].push(e)})),t}function me(e,...t){let r=0;const n=t.length;if("function"==typeof e)return e.apply(null,t);if("string"==typeof e){return e.replace(pe,(e=>{if("%%"===e)return"%";if(r>=n)return e;switch(e){case"%s":return String(t[r++]);case"%d":return Number(t[r++]);case"%j":try{return JSON.stringify(t[r++])}catch(e){return"[Circular]"}break;default:return e}}))}return e}function be(e,t){return null==e||(!("array"!==t||!Array.isArray(e)||e.length)||!(!function(e){return"string"===e||"url"===e||"hex"===e||"email"===e||"date"===e||"pattern"===e}(t)||"string"!=typeof e||e))}function ve(e,t,r){let n=0;const s=e.length;!function i(o){if(o&&o.length)return void r(o);const a=n;n+=1,a<s?t(e[a],i):r([])}([])}"undefined"!=typeof process&&process.env&&"production"!==process.env.NODE_ENV&&"undefined"!=typeof window&&"undefined"!=typeof document&&(ye=(e,t)=>{"undefined"!=typeof console&&console.warn&&"undefined"==typeof ASYNC_VALIDATOR_NO_WARNING&&t.every((e=>"string"==typeof e))&&console.warn(e,t)});class we extends Error{errors;fields;constructor(e,t){super("Async Validation Error"),this.errors=e,this.fields=t}}function qe(e,t,r,n,s){if(t.first){const t=new Promise(((t,i)=>{const o=function(e){const t=[];return Object.keys(e).forEach((r=>{t.push(...e[r]||[])})),t}(e);ve(o,r,(e=>(n(e),e.length?i(new we(e,ge(e))):t(s))))}));return t.catch((e=>e)),t}const i=!0===t.firstFields?Object.keys(e):t.firstFields||[],o=Object.keys(e),a=o.length;let u=0;const c=[],l=new Promise(((t,l)=>{const f=e=>{if(c.push.apply(c,e),u++,u===a)return n(c),c.length?l(new we(c,ge(c))):t(s)};o.length||(n(c),t(s)),o.forEach((t=>{const n=e[t];-1!==i.indexOf(t)?ve(n,r,f):function(e,t,r){const n=[];let s=0;const i=e.length;function o(e){n.push(...e||[]),s++,s===i&&r(n)}e.forEach((e=>{t(e,o)}))}(n,r,f)}))}));return l.catch((e=>e)),l}function Oe(e,t){return r=>{let n;return n=e.fullFields?function(e,t){let r=e;for(let e=0;e<t.length;e++){if(null==r)return r;r=r[t[e]]}return r}(t,e.fullFields):t[r.field||e.fullField],(s=r)&&void 0!==s.message?(r.field=r.field||e.fullField,r.fieldValue=n,r):{message:"function"==typeof r?r():r,fieldValue:n,field:r.field||e.fullField};var s}}function $e(e,t){if(t)for(const r in t)if(t.hasOwnProperty(r)){const n=t[r];"object"==typeof n&&"object"==typeof e[r]?e[r]={...e[r],...n}:e[r]=n}return e}const je=(e,t,r,n,s,i)=>{!e.required||r.hasOwnProperty(e.field||"")&&!be(t,i||e.type)||n.push(me(s.messages.required,e.fullField))};let Ae;const Fe=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,ke=/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i,Se={integer:e=>Se.number(e)&&parseInt(e,10)===e,float:e=>Se.number(e)&&!Se.integer(e),array:e=>Array.isArray(e),regexp(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch(e){return!1}},date:e=>"function"==typeof e.getTime&&"function"==typeof e.getMonth&&"function"==typeof e.getYear&&!isNaN(e.getTime()),number:e=>!isNaN(e)&&"number"==typeof e,object:e=>"object"==typeof e&&!Se.array(e),method:e=>"function"==typeof e,email:e=>"string"==typeof e&&e.length<=320&&!!e.match(Fe),url:e=>"string"==typeof e&&e.length<=2048&&!!e.match((()=>{if(Ae)return Ae;const e="[a-fA-F\\d:]",t=t=>t&&t.includeBoundaries?`(?:(?<=\\s|^)(?=${e})|(?<=${e})(?=\\s|$))`:"",r="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",n="[a-fA-F\\d]{1,4}",s=`\n(?:\n(?:${n}:){7}(?:${n}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:${n}:){6}(?:${r}|:${n}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:${n}:){5}(?::${r}|(?::${n}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:${n}:){4}(?:(?::${n}){0,1}:${r}|(?::${n}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:${n}:){3}(?:(?::${n}){0,2}:${r}|(?::${n}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:${n}:){2}(?:(?::${n}){0,3}:${r}|(?::${n}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:${n}:){1}(?:(?::${n}){0,4}:${r}|(?::${n}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::${n}){0,5}:${r}|(?::${n}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\n`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),i=new RegExp(`(?:^${r}$)|(?:^${s}$)`),o=new RegExp(`^${r}$`),a=new RegExp(`^${s}$`),u=e=>e&&e.exact?i:new RegExp(`(?:${t(e)}${r}${t(e)})|(?:${t(e)}${s}${t(e)})`,"g");u.v4=e=>e&&e.exact?o:new RegExp(`${t(e)}${r}${t(e)}`,"g"),u.v6=e=>e&&e.exact?a:new RegExp(`${t(e)}${s}${t(e)}`,"g");const c=u.v4().source,l=u.v6().source;return Ae=new RegExp(`(?:^(?:(?:(?:[a-z]+:)?//)|www\\.)(?:\\S+(?::\\S*)?@)?(?:localhost|${c}|${l}|(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:[/?#][^\\s"]*)?$)`,"i"),Ae})()),hex:e=>"string"==typeof e&&!!e.match(ke)},xe="enum";var Ee={required:je,whitespace:(e,t,r,n,s)=>{(/^\s+$/.test(t)||""===t)&&n.push(me(s.messages.whitespace,e.fullField))},type:(e,t,r,n,s)=>{if(e.required&&void 0===t)return void je(e,t,r,n,s);const i=e.type;["integer","float","array","regexp","object","method","email","number","date","url","hex"].indexOf(i)>-1?Se[i](t)||n.push(me(s.messages.types[i],e.fullField,e.type)):i&&typeof t!==e.type&&n.push(me(s.messages.types[i],e.fullField,e.type))},range:(e,t,r,n,s)=>{const i="number"==typeof e.len,o="number"==typeof e.min,a="number"==typeof e.max,u=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;let c=t,l="";const f="number"==typeof t,d="string"==typeof t,h=Array.isArray(t);if(f?l="number":d?l="string":h&&(l="array"),!l)return!1;h&&(c=t.length),d&&(c=t.replace(u,"_").length),i?c!==e.len&&n.push(me(s.messages[l].len,e.fullField,e.len)):o&&!a&&c<e.min?n.push(me(s.messages[l].min,e.fullField,e.min)):a&&!o&&c>e.max?n.push(me(s.messages[l].max,e.fullField,e.max)):o&&a&&(c<e.min||c>e.max)&&n.push(me(s.messages[l].range,e.fullField,e.min,e.max))},enum:(e,t,r,n,s)=>{e[xe]=Array.isArray(e[xe])?e[xe]:[],-1===e[xe].indexOf(t)&&n.push(me(s.messages[xe],e.fullField,e[xe].join(", ")))},pattern:(e,t,r,n,s)=>{if(e.pattern)if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(t)||n.push(me(s.messages.pattern.mismatch,e.fullField,t,e.pattern));else if("string"==typeof e.pattern){new RegExp(e.pattern).test(t)||n.push(me(s.messages.pattern.mismatch,e.fullField,t,e.pattern))}}};const Re=(e,t,r,n,s)=>{const i=e.type,o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(be(t,i)&&!e.required)return r();Ee.required(e,t,n,o,s,i),be(t,i)||Ee.type(e,t,n,o,s)}r(o)};var Pe={string:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field||"")){if(be(t,"string")&&!e.required)return r();Ee.required(e,t,n,i,s,"string"),be(t,"string")||(Ee.type(e,t,n,i,s),Ee.range(e,t,n,i,s),Ee.pattern(e,t,n,i,s),!0===e.whitespace&&Ee.whitespace(e,t,n,i,s))}r(i)},method:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(be(t)&&!e.required)return r();Ee.required(e,t,n,i,s),void 0!==t&&Ee.type(e,t,n,i,s)}r(i)},number:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(""===t&&(t=void 0),be(t)&&!e.required)return r();Ee.required(e,t,n,i,s),void 0!==t&&(Ee.type(e,t,n,i,s),Ee.range(e,t,n,i,s))}r(i)},boolean:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(be(t)&&!e.required)return r();Ee.required(e,t,n,i,s),void 0!==t&&Ee.type(e,t,n,i,s)}r(i)},regexp:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(be(t)&&!e.required)return r();Ee.required(e,t,n,i,s),be(t)||Ee.type(e,t,n,i,s)}r(i)},integer:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(be(t)&&!e.required)return r();Ee.required(e,t,n,i,s),void 0!==t&&(Ee.type(e,t,n,i,s),Ee.range(e,t,n,i,s))}r(i)},float:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(be(t)&&!e.required)return r();Ee.required(e,t,n,i,s),void 0!==t&&(Ee.type(e,t,n,i,s),Ee.range(e,t,n,i,s))}r(i)},array:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(null==t&&!e.required)return r();Ee.required(e,t,n,i,s,"array"),null!=t&&(Ee.type(e,t,n,i,s),Ee.range(e,t,n,i,s))}r(i)},object:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(be(t)&&!e.required)return r();Ee.required(e,t,n,i,s),void 0!==t&&Ee.type(e,t,n,i,s)}r(i)},enum:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(be(t)&&!e.required)return r();Ee.required(e,t,n,i,s),void 0!==t&&Ee.enum(e,t,n,i,s)}r(i)},pattern:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(be(t,"string")&&!e.required)return r();Ee.required(e,t,n,i,s),be(t,"string")||Ee.pattern(e,t,n,i,s)}r(i)},date:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(be(t,"date")&&!e.required)return r();if(Ee.required(e,t,n,i,s),!be(t,"date")){let r;r=t instanceof Date?t:new Date(t),Ee.type(e,r,n,i,s),r&&Ee.range(e,r.getTime(),n,i,s)}}r(i)},url:Re,hex:Re,email:Re,required:(e,t,r,n,s)=>{const i=[],o=Array.isArray(t)?"array":typeof t;Ee.required(e,t,n,i,s,o),r(i)},any:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(be(t)&&!e.required)return r();Ee.required(e,t,n,i,s)}r(i)}};function Te(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone(){const e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}const De=Te();class Ie{static register=function(e,t){if("function"!=typeof t)throw new Error("Cannot register a validator by type, validator is not a function");Pe[e]=t};static warning=ye;static messages=De;static validators=Pe;rules={};_messages=De;constructor(e){this.define(e)}define(e){if(!e)throw new Error("Cannot configure a schema with no rules");if("object"!=typeof e||Array.isArray(e))throw new Error("Rules must be an object");this.rules={},Object.keys(e).forEach((t=>{const r=e[t];this.rules[t]=Array.isArray(r)?r:[r]}))}messages(e){return e&&(this._messages=$e(Te(),e)),this._messages}validate(e,t={},r=(()=>{})){let n=e,s=t,i=r;if("function"==typeof s&&(i=s,s={}),!this.rules||0===Object.keys(this.rules).length)return i&&i(null,n),Promise.resolve(n);if(s.messages){let e=this.messages();e===De&&(e=Te()),$e(e,s.messages),s.messages=e}else s.messages=this.messages();const o={};(s.keys||Object.keys(this.rules)).forEach((t=>{const r=this.rules[t];let s=n[t];r.forEach((r=>{let i=r;"function"==typeof i.transform&&(n===e&&(n={...n}),s=n[t]=i.transform(s)),i="function"==typeof i?{validator:i}:{...i},i.validator=this.getValidationMethod(i),i.validator&&(i.field=t,i.fullField=i.fullField||t,i.type=this.getType(i),o[t]=o[t]||[],o[t].push({rule:i,value:s,source:n,field:t}))}))}));const a={};return qe(o,s,((e,t)=>{const r=e.rule;let i,o=!("object"!==r.type&&"array"!==r.type||"object"!=typeof r.fields&&"object"!=typeof r.defaultField);function u(e,t){return{...t,fullField:`${r.fullField}.${e}`,fullFields:r.fullFields?[...r.fullFields,e]:[e]}}function c(i=[]){let c=Array.isArray(i)?i:[i];!0===s.suppressWarning&&c.length&&Ie.warning("async-validator:",c),c.length&&void 0!==r.message&&(c=[].concat(r.message));let l=c.map(Oe(r,n));if(s.first&&l.length)return a[r.field]=1,t(l);if(o){if(r.required&&!e.value)return void 0!==r.message?l=[].concat(r.message).map(Oe(r,n)):s.error&&(l=[s.error(r,me(s.messages.required,r.field))]),t(l);let i={};r.defaultField&&Object.keys(e.value).map((e=>{i[e]=r.defaultField})),i={...i,...e.rule.fields};const o={};Object.keys(i).forEach((e=>{const t=i[e],r=Array.isArray(t)?t:[t];o[e]=r.map(u.bind(null,e))}));const a=new Ie(o);a.messages(s.messages),e.rule.options&&(e.rule.options.messages=s.messages,e.rule.options.error=s.error),a.validate(e.value,e.rule.options||s,(e=>{const r=[];l&&l.length&&r.push(...l),e&&e.length&&r.push(...e),t(r.length?r:null)}))}else t(l)}if(o=o&&(r.required||!r.required&&e.value),r.field=e.field,r.asyncValidator)i=r.asyncValidator(r,e.value,c,e.source,s);else if(r.validator){try{i=r.validator(r,e.value,c,e.source,s)}catch(e){console.error?.(e),s.suppressValidatorError||setTimeout((()=>{throw e}),0),c(e.message)}!0===i?c():!1===i?c("function"==typeof r.message?r.message(r.fullField||r.field):r.message||`${r.fullField||r.field} fails`):i instanceof Array?c(i):i instanceof Error&&c(i.message)}i&&i.then&&i.then((()=>c()),(e=>c(e)))}),(e=>{!function(e){let t=[],r={};for(let r=0;r<e.length;r++)s=e[r],Array.isArray(s)?t=t.concat(...s):t.push(s);var s;t.length?(r=ge(t),i(t,r)):i(null,n)}(e)}),n)}getType(e){if(void 0===e.type&&e.pattern instanceof RegExp&&(e.type="pattern"),"function"!=typeof e.validator&&e.type&&!Pe.hasOwnProperty(e.type))throw new Error(me("Unknown rule type %s",e.type));return e.type||"string"}getValidationMethod(e){if("function"==typeof e.validator)return e.validator;const t=Object.keys(e),r=t.indexOf("message");return-1!==r&&t.splice(r,1),1===t.length&&"required"===t[0]?Pe.required:Pe[this.getType(e)]||void 0}}function Me(e){return new Ie(e)}var Ce={validateId:function(e){return!!e&&(!(e.length<6)&&!!/^[A-Za-z0-9_-]+$/.test(e))},validatePhone:function(e){return!!e&&!!/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/.test(e)},validator:Me,validate:function(e,t,r={},n=(()=>{})){return U.run(Me(e).validate(t,r,n))}};var Ne={uint8ArrayToString:function(e){let t="";for(let r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return t},stringToArrayBuffer:function(e){const t=e.length,r=new ArrayBuffer(t),n=new Uint8Array(r);for(let r=0;r<t;r++)n[r]=e.charCodeAt(r);return r}};class _e{key;storage;fields=[];constructor(e){this.key=e?.key||"",this.fields=e?.fields||[],this.storage=e?.storage||void 0}save=U.debounce((e=>{if(this.key&&this.storage)try{const{setItem:t,setStorageSync:r}=this.storage;if(r)return r(this.key,e);if(t)return t(this.key,JSON.stringify(e))}catch(e){console.error("persit save ",e)}}));read(){if(this.key&&this.storage)try{const{getItem:e,getStorageSync:t}=this.storage;if(t)return t(this.key);if(e){const t=e(this.key);return JSON.parse(t)}}catch(e){return void console.error("persit read ",e)}}handleSave(e,t){if(!this.fields.includes(t)||!e)return;const r=K.copy(e,this.fields);this.save(r)}}class Le extends Q{setters;getters;actions;persist;constructor(){super(),this.getters={},this.setters={},this.actions={}}async dispatch(e,t=void 0){const r=Reflect.get(this.actions,e);if(!K.isFunction(r))return;const[,n]=await U.run(r(this,t));return n}async query(e){const t=Reflect.get(this,e);let r;return r=null!=t&&""!==t?K.copy(t):await this.dispatch(e),r}}var Ue={gbk:e,time:n,hook:U,math:V,util:K,list:X,mini:ue,url:he,rule:Ce,convert:Ne,event:Q,store:Le,storeRef:(e,t)=>{const r=Object.assign(new Le,e||{});r.__persist=new _e(t||r.persist);const n=r.__persist.read(),s=n?Object.assign(r,n):r;return new Proxy(s,{get:(e,t,r)=>{const n=Reflect.get(e.getters,t);return K.isFunction(n)?n(e):Reflect.get(e,t,r)},set:(e,t,r,n)=>{const s=Reflect.get(e.setters,t);if(K.isFunction(s)&&!s(e,r))return!0;const i=Reflect.set(e,t,r,n);return i&&(e.emit(t.toString(),r),e?.__persist?.handleSave(e,t.toString())),i},has:(e,t)=>Reflect.has(e,t)})},persist:_e,persistConfig:(e,t,r)=>({key:e,fields:t,storage:r})};export{Ue as default};
package/bin/ddan-js.js CHANGED
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).ddan=t()}(this,(function(){"use strict";var e={gbkLength:function(e){let t=0;if(!e)return 0;for(let r=0;r<e.length;r++)e.charCodeAt(r)>127||94===e.charCodeAt(r)?t+=2:t++;return t},gbkCut:function(e,t){if(!e||t<=0)return"";let r=0,n=0;for(let i=0;i<e.length&&(e.charCodeAt(i)>127||94===e.charCodeAt(i)?r+=2:r++,!(r>t));i++)n=i;return e.substr(0,n+1)}};const t=(e,t="yyyy-MM-dd hh:mm:ss")=>{const r="string"==typeof e||"number"==typeof e?new Date(e):e;if(!r)return"";const n={};return n.yyyy=r.getFullYear(),n.yy=`${n.yyyy}`.substr(2),n.M=r.getMonth()+1,n.MM=(n.M<10?"0":"")+n.M,n.d=r.getDate(),n.dd=(n.d<10?"0":"")+n.d,n.h=r.getHours(),n.hh=(n.h<10?"0":"")+n.h,n.m=r.getMinutes(),n.mm=(n.m<10?"0":"")+n.m,n.s=r.getSeconds(),n.ss=(n.s<10?"0":"")+n.s,n.S=r.getMilliseconds(),n.SS=(n.S<10?"0":"")+n.S,n.SSS=n.S.toString().padStart(3,0),t.replace(/\byyyy|yy|MM|M|dd|d|hh|h|mm|m|ss|s|SSS|SS|S\b/g,(e=>n[e]))};function r(){return Date.now()}var n={now:r,isToday:e=>e&&(new Date).toDateString()===new Date(e).toDateString(),format:t,parseTime:function({year:e=0,month:r=0,date:n=0,hour:i=0,minute:s=0,second:o=0}){const a=`${e||"yyyy"}/${r||"MM"}/${n||"dd"} ${i}:${s}:${o}`;return new Date(t(Date.now(),a)).getTime()},todayZero:()=>new Date(t(r(),"yyyy/MM/dd 00:00:00")).getTime(),oneDay:864e5,oneHour:36e5,oneMinute:6e4,oneSecond:1e3},i="object"==typeof global&&global&&global.Object===Object&&global,s="object"==typeof self&&self&&self.Object===Object&&self;const o=(i||s||Function("return this")()).Symbol,{toString:a,hasOwnProperty:u,propertyIsEnumerable:l}=Object.prototype,c=o?o.toStringTag:void 0;function f(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":c&&c in Object(e)?function(e){const t=u.call(e,c),r=e[c];let n=!1;try{e[c]=void 0,n=!0}catch(e){}const i=a.call(e);return n&&(t?e[c]=r:delete e[c]),i}(e):a.call(e)}var d={getTag:f,getType:function(e){return(f(e).match(/\w+/g)||["object","Undefined"])[1]||""},toString:a,hasOwnProperty:u,propertyIsEnumerable:l},p="[object Function]",y="[object GeneratorFunction]",h="[object AsyncFunction]",g=9007199254740991;const m=/^(?:0|[1-9]\d*)$/;function b(e){const t=typeof e;return null!=e&&("object"==t||"function"==t)}function v(e){return null!=e&&"object"==typeof e}const w=Array.isArray;function $(e){return null!=e&&function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=g}(e.length)&&!j(e)}function O(e){return v(e)&&$(e)}function j(e){var t=b(e)?d.getTag(e):"";return t===p||t===y||t===h}var A={is:function(e,t){return d.getTag(e)===`[object ${t}]`},isNumber:function(e){return"[object Number]"===d.getTag(e)},isString:function(e){return"string"==typeof e||!w(e)&&v(e)&&"[object String]"==d.getTag(e)},isChinese:function(e){return!!e&&!!/^[\u4E00-\u9FA5]+$/.test(e)},isObject:b,isObjectLike:v,isSymbol:function(e){return"symbol"==typeof e||v(e)&&"[object Symbol]"===d.getTag(e)},isFunction:j,isArray:w,isArrayLikeObject:O,isIndex:function(e,t){return!!(t=null==t?g:t)&&("number"==typeof e||m.test(e))&&e>-1&&e%1==0&&e<t},isArrayLike:$,isPrototype:function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||Object.prototype)},isArguments:function(e){return O(e)&&d.hasOwnProperty.call(e,"callee")&&(!d.propertyIsEnumerable.call(e,"callee")||"[object Arguments]"==d.toString.call(e))},isPromise:function(e){return"[object Promise]"===(b(e)?d.getTag(e):"")}};const q=NaN,F=/^\s+|\s+$/g,x=/^[-+]0x[0-9a-f]+$/i,S=/^0b[01]+$/i,k=/^0o[0-7]+$/i,E=parseInt,P=1/0,M=17976931348623157e292;function R(e){if("number"==typeof e)return e;if(A.isSymbol(e))return q;if(A.isObject(e)){const t="function"==typeof e.valueOf?e.valueOf():e;e=A.isObject(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(F,"");const t=S.test(e);return t||k.test(e)?E(e.slice(2),t?2:8):x.test(e)?q:+e}function T(e){return e?(e=R(e))===P||e===-P?(e<0?-1:1)*M:e==e?e:0:0===e?e:0}var D={toNumber:R,toFinite:T,toInteger:function(e){var t=T(e),r=t%1;return t==t?r?t-r:t:0}};const N="Expected a function",_=Math.max,I=Math.min;function C(e,t=0,r={}){var n,i,s,o,a,u,l=0,c=!1,f=!1,d=!0;if("function"!=typeof e)throw new TypeError(N);function p(t){var r=n,s=i;return n=i=void 0,l=t,o=e.apply(s,r)}function y(e){var r=e-u;return void 0===u||r>=t||r<0||f&&e-l>=s}function h(){var e=Date.now();if(y(e))return g(e);a=setTimeout(h,function(e){var r=t-(e-u);return f?I(r,s-(e-l)):r}(e))}function g(e){return a=void 0,d&&n?p(e):(n=i=void 0,o)}function m(...e){var r=Date.now(),s=y(r);if(n=arguments,i=this,u=r,s){if(void 0===a)return function(e){return l=e,a=setTimeout(h,t),c?p(e):o}(u);if(f)return a=setTimeout(h,t),p(u)}return void 0===a&&(a=setTimeout(h,t)),o}return t=D.toNumber(t)||0,A.isObject(r)&&(c=!!r.leading,s=(f="maxWait"in r)?_(D.toNumber(r.maxWait)||0,t):s,d="trailing"in r?!!r.trailing:d),m.cancel=function(){void 0!==a&&clearTimeout(a),l=0,n=u=i=a=void 0},m.flush=function(){return void 0===a?o:g(Date.now())},m}class V{source;constructor(e){this.source=e}run(){let e;try{let t;return t=A.isFunction(this.source)?this.source():this.source,e=A.isPromise(t)?t:Promise.resolve(t),e.then((e=>[null,e])).catch((e=>[e,void 0]))}catch(e){return Promise.resolve([e,void 0])}}}var z={sleep:(e=1e3)=>new Promise((t=>{setTimeout(t,e)})),run:e=>new V(e).run(),debounce:C,throttle:function(e,t=0,r={}){var n=!1,i=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return A.isObject(r)&&(n=r.leading?!!r.leading:n,i=r.trailing?!!r.trailing:i),C(e,t,{leading:n,maxWait:t,trailing:i})}};var U={random:function(e){return Math.floor(Math.random()*e)},randomRange:function(e,t){return Math.floor(Math.random()*(t-e+1)+e)},lerp:function(e,t,r){return e*(1-r)+t*r},randomString:function(e,t=!1){e=e||32;const r="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";let i="";for(let t=0;t<e;t++)i+=r.charAt(Math.floor(62*Math.random()));return t?n.format(new Date,"yyyyMMddhhmmss")+i:i}};function L(e){return e!=e}function J(e,t){return function(e,t){for(var r=-1,n=e?e.length:0,i=Array(n);++r<n;)i[r]=t(e[r],r,e);return i}(t,(function(t){return e[t]}))}var W,Z,B=(W=Object.keys,Z=Object,function(e){return W(Z(e))}),H=Math.max;function Y(e,t){var r=A.isArray(e)||A.isArguments(e)?function(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}(e.length,String):[],n=r.length,i=!!n;for(var s in e)!t&&!d.hasOwnProperty.call(e,s)||i&&("length"==s||A.isIndex(s,n))||r.push(s);return r}const G=e=>{if(!e)return e;if("object"!=typeof e)return e;const t=Array.isArray(e)?[]:{};for(const r in e)e.hasOwnProperty(r)&&(t[r]=G(e[r]));return t};var K={...A,...d,includes:function(e,t,r,n){e=A.isArrayLike(e)?e:function(e){return e?J(e,function(e){return A.isArrayLike(e)?Y(e):function(e){if(!A.isPrototype(e))return B(e);var t=[];for(var r in Object(e))d.hasOwnProperty.call(e,r)&&"constructor"!=r&&t.push(r);return t}(e)}(e)):[]}(e),r=r&&!n?D.toInteger(r):0;var i=e.length;return r<0&&(r=H(i+r,0)),A.isString(e)?r<=i&&e.indexOf(t,r)>-1:!!i&&function(e,t,r){if(t!=t)return function(e,t,r,n){for(var i=e.length,s=r+(n?1:-1);n?s--:++s<i;)if(t(e[s],s,e))return s;return-1}(e,L,r);for(var n=r-1,i=e.length;++n<i;)if(e[n]===t)return n;return-1}(e,t,r)>-1},merge:function(e,t){if(t)for(const r in t)if(t.hasOwnProperty(r)){const n=t[r];"object"==typeof n&&"object"==typeof e[r]?e[r]={...e[r],...n}:e[r]=n}return e},compareArray:function(e,t){if(!Array.isArray(e)||!Array.isArray(t))return!1;if(e.length!==t.length)return!1;for(let r=0,n=e.length;r<n;r++)if(e[r]!==t[r])return!1;return!0},copy:(e,t=[])=>{if(void 0===e)return;const r=JSON.parse(JSON.stringify(e));if("object"!=typeof r)return r;if(Array.isArray(r)||!t||t.length<=0)return r;const n={};for(const e in r)t.includes(e)&&r.hasOwnProperty(e)&&(n[e]=r[e]);return n},clone:G};class Q{_map;constructor(){this._map=new Map}clear(){return this._map.clear(),this}on(e,t){if(!t)return this;let r=this._map.get(e);return r||(r=new Set,this._map.set(e,r)),r.add(t),this}emit(e,...t){const r=this._map.get(e);if(!r)return this;return[...r].forEach((e=>e(...t))),this}off(e="",t){if(!e)return this._map.clear(),this;if(!t)return this._map.delete(e.toString()),this;const r=this._map.get(e);return r?(r.delete(t),this):this}once(e,t){const r=(...n)=>{t(...n),this.off(e,r)};return this.on(e,r),this}has(e){return this._map.has(e)}}var X={groupBy:(e,t)=>e.reduce(((e,r)=>((e[r[t]]=e[r[t]]||[]).push(r),e)),{}),stepAction:function(e,t,r=100){if(!A.isFunction(t))return;if(!A.isArray(e)||e.length<=0)return;let n=0;for(;e.length>n;){let i=r+n,s=e.slice(n,i);t&&t(s),n=i}},skip:(e,t)=>{if(!A.isArray(e)||e.length<=0)return[];const r=t;return e.slice(r)},take:(e,t,r=0)=>{if(!A.isArray(e)||e.length<=0)return[];const n=r||0;if(n>=e.length)return[];const i=t+n;return e.slice(n,e.length<i?e.length:i)||[]},distinct:e=>!A.isArray(e)||e.length<=0?[]:[...new Set(e)]};const ee="[object Object]",te="[object Array]",re=e=>Object.prototype.toString.call(e),ne=(e,t,r=!1)=>{if(e===t)return;const n=re(e);if(n===re(t))if(n===te&&e.length>=t.length)for(let r=0;r<t.length;r++)ne(e[r],t[r]);else if(n===ee&&Object.keys(e).length>=Object.keys(t).length)for(let n in t)r||void 0!==e[n]?ne(e[n],t[n]):e[n]=null},ie=(e,t,r,n="",i=!1)=>{if(e===t)return;const s=re(e),o=re(t);if(s===te&&o===s&&e.length>=t.length)for(let i=0;i<e.length;i++)ie(e[i],t[i],r,`${n}[${i}]`);else if(s===ee&&o===s&&(i||Object.keys(e).length>=Object.keys(t).length)){const i=Object.keys(e);for(let s of i){const i=e[s],o=t[s],a=re(i),u=re(o);if(i!==o)if(a===te&&u===a&&i.length>=o.length)for(let e=0;e<i.length;e++)ie(i[e],o[e],r,`${n?n+".":""}${s}[${e}]`);else if(a===ee&&u===a&&Object.keys(i).length>=Object.keys(o).length)for(let e in i)ie(i[e],o[e],r,`${n?n+".":""}${s}.${e}`);else r[`${n?n+".":""}${s}`]=i}}else r[n]=e};const se=e=>"function"!=typeof e?e:(t={})=>new Promise(((r,n)=>{e(Object.assign(t,{success:r,fail:n}))}));var oe={diff:function(e,t){const r={};return(e=>{if(re(e)===ee)for(let t in e)if(/\w+\.\w+/g.test(t)&&-1===t.indexOf("[")){const r=t.split(".");let n=e,i=r.length;for(let e=0;e<i-1;e++){const t=r[e];re(n[t])!==ee&&(n[t]={}),n=n[t]}n[r[i-1]]=e[t],delete e[t]}})(e),ne(e,t,!0),ie(e,t,r,"",!0),r},promixify:se,run:(e,t={})=>{if(e)return z.run(se(e)(t))},formatList:(e,t,r)=>(e||[]).reduce(((e,n,i)=>({...e,[`${r}[${t+i}]`]:n})),{}),ruleValidator:(e,t)=>!!t&&(!Array.isArray(t)||!(t.length<=0)&&t.every((e=>!!e)))};function ae(e,t){return Object.prototype.hasOwnProperty.call(e,t)}const ue=function(e,{sep:t="&",eq:r="=",max:n=1e3,multiple:i=!1}={}){t=t||"&",r=r||"=";const s={};if("string"!=typeof e||0===e.length)return s;const o=/\+/g,a=n||1e3;let u=(e=e.split(t)).length;a>0&&u>a&&(u=a);for(let t=0;t<u;++t){let n,a,u,l,c=e[t].replace(o,"%20"),f=c.indexOf(r);f>=0?(n=c.substr(0,f),a=c.substr(f+1)):(n=c,a=""),u=decodeURIComponent(n),l=decodeURIComponent(a),ae(s,u)&&i?Array.isArray(s[u])?s[u].push(l):s[u]=[s[u],l]:s[u]=l}return s},le=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}},ce=function(e,{sep:t="&",eq:r="=",name:n=null,multiple:i=!1}={}){return t=t||"&",r=r||"=",null===e&&(e=void 0),"object"==typeof e?Object.keys(e).map((function(n){const s=encodeURIComponent(le(n))+r;return i&&Array.isArray(e[n])?e[n].map((function(e){return s+encodeURIComponent(le(e))})).join(t):s+encodeURIComponent(le(e[n]))})).filter(Boolean).join(t):n?encodeURIComponent(le(n))+r+encodeURIComponent(le(e)):""};var fe={parse:ue,decode:ue,stringify:ce,encode:ce,useHttps:function(e){if(!e)return e;const t=e.trim();return"string"!=typeof e?e:t.indexOf("https")<0?t.replace("http","https"):t}};const de=/%[sdj%]/g;let pe=()=>{};function ye(e){if(!e||!e.length)return null;const t={};return e.forEach((e=>{const r=e.field;t[r]=t[r]||[],t[r].push(e)})),t}function he(e,...t){let r=0;const n=t.length;if("function"==typeof e)return e.apply(null,t);if("string"==typeof e){return e.replace(de,(e=>{if("%%"===e)return"%";if(r>=n)return e;switch(e){case"%s":return String(t[r++]);case"%d":return Number(t[r++]);case"%j":try{return JSON.stringify(t[r++])}catch(e){return"[Circular]"}break;default:return e}}))}return e}function ge(e,t){return null==e||(!("array"!==t||!Array.isArray(e)||e.length)||!(!function(e){return"string"===e||"url"===e||"hex"===e||"email"===e||"date"===e||"pattern"===e}(t)||"string"!=typeof e||e))}function me(e,t,r){let n=0;const i=e.length;!function s(o){if(o&&o.length)return void r(o);const a=n;n+=1,a<i?t(e[a],s):r([])}([])}"undefined"!=typeof process&&process.env&&"production"!==process.env.NODE_ENV&&"undefined"!=typeof window&&"undefined"!=typeof document&&(pe=(e,t)=>{"undefined"!=typeof console&&console.warn&&"undefined"==typeof ASYNC_VALIDATOR_NO_WARNING&&t.every((e=>"string"==typeof e))&&console.warn(e,t)});class be extends Error{errors;fields;constructor(e,t){super("Async Validation Error"),this.errors=e,this.fields=t}}function ve(e,t,r,n,i){if(t.first){const t=new Promise(((t,s)=>{const o=function(e){const t=[];return Object.keys(e).forEach((r=>{t.push(...e[r]||[])})),t}(e);me(o,r,(e=>(n(e),e.length?s(new be(e,ye(e))):t(i))))}));return t.catch((e=>e)),t}const s=!0===t.firstFields?Object.keys(e):t.firstFields||[],o=Object.keys(e),a=o.length;let u=0;const l=[],c=new Promise(((t,c)=>{const f=e=>{if(l.push.apply(l,e),u++,u===a)return n(l),l.length?c(new be(l,ye(l))):t(i)};o.length||(n(l),t(i)),o.forEach((t=>{const n=e[t];-1!==s.indexOf(t)?me(n,r,f):function(e,t,r){const n=[];let i=0;const s=e.length;function o(e){n.push(...e||[]),i++,i===s&&r(n)}e.forEach((e=>{t(e,o)}))}(n,r,f)}))}));return c.catch((e=>e)),c}function we(e,t){return r=>{let n;return n=e.fullFields?function(e,t){let r=e;for(let e=0;e<t.length;e++){if(null==r)return r;r=r[t[e]]}return r}(t,e.fullFields):t[r.field||e.fullField],(i=r)&&void 0!==i.message?(r.field=r.field||e.fullField,r.fieldValue=n,r):{message:"function"==typeof r?r():r,fieldValue:n,field:r.field||e.fullField};var i}}function $e(e,t){if(t)for(const r in t)if(t.hasOwnProperty(r)){const n=t[r];"object"==typeof n&&"object"==typeof e[r]?e[r]={...e[r],...n}:e[r]=n}return e}const Oe=(e,t,r,n,i,s)=>{!e.required||r.hasOwnProperty(e.field||"")&&!ge(t,s||e.type)||n.push(he(i.messages.required,e.fullField))};let je;const Ae=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,qe=/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i,Fe={integer:e=>Fe.number(e)&&parseInt(e,10)===e,float:e=>Fe.number(e)&&!Fe.integer(e),array:e=>Array.isArray(e),regexp(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch(e){return!1}},date:e=>"function"==typeof e.getTime&&"function"==typeof e.getMonth&&"function"==typeof e.getYear&&!isNaN(e.getTime()),number:e=>!isNaN(e)&&"number"==typeof e,object:e=>"object"==typeof e&&!Fe.array(e),method:e=>"function"==typeof e,email:e=>"string"==typeof e&&e.length<=320&&!!e.match(Ae),url:e=>"string"==typeof e&&e.length<=2048&&!!e.match((()=>{if(je)return je;const e="[a-fA-F\\d:]",t=t=>t&&t.includeBoundaries?`(?:(?<=\\s|^)(?=${e})|(?<=${e})(?=\\s|$))`:"",r="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",n="[a-fA-F\\d]{1,4}",i=`\n(?:\n(?:${n}:){7}(?:${n}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:${n}:){6}(?:${r}|:${n}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:${n}:){5}(?::${r}|(?::${n}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:${n}:){4}(?:(?::${n}){0,1}:${r}|(?::${n}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:${n}:){3}(?:(?::${n}){0,2}:${r}|(?::${n}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:${n}:){2}(?:(?::${n}){0,3}:${r}|(?::${n}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:${n}:){1}(?:(?::${n}){0,4}:${r}|(?::${n}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::${n}){0,5}:${r}|(?::${n}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\n`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),s=new RegExp(`(?:^${r}$)|(?:^${i}$)`),o=new RegExp(`^${r}$`),a=new RegExp(`^${i}$`),u=e=>e&&e.exact?s:new RegExp(`(?:${t(e)}${r}${t(e)})|(?:${t(e)}${i}${t(e)})`,"g");u.v4=e=>e&&e.exact?o:new RegExp(`${t(e)}${r}${t(e)}`,"g"),u.v6=e=>e&&e.exact?a:new RegExp(`${t(e)}${i}${t(e)}`,"g");const l=u.v4().source,c=u.v6().source;return je=new RegExp(`(?:^(?:(?:(?:[a-z]+:)?//)|www\\.)(?:\\S+(?::\\S*)?@)?(?:localhost|${l}|${c}|(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:[/?#][^\\s"]*)?$)`,"i"),je})()),hex:e=>"string"==typeof e&&!!e.match(qe)},xe="enum";var Se={required:Oe,whitespace:(e,t,r,n,i)=>{(/^\s+$/.test(t)||""===t)&&n.push(he(i.messages.whitespace,e.fullField))},type:(e,t,r,n,i)=>{if(e.required&&void 0===t)return void Oe(e,t,r,n,i);const s=e.type;["integer","float","array","regexp","object","method","email","number","date","url","hex"].indexOf(s)>-1?Fe[s](t)||n.push(he(i.messages.types[s],e.fullField,e.type)):s&&typeof t!==e.type&&n.push(he(i.messages.types[s],e.fullField,e.type))},range:(e,t,r,n,i)=>{const s="number"==typeof e.len,o="number"==typeof e.min,a="number"==typeof e.max,u=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;let l=t,c="";const f="number"==typeof t,d="string"==typeof t,p=Array.isArray(t);if(f?c="number":d?c="string":p&&(c="array"),!c)return!1;p&&(l=t.length),d&&(l=t.replace(u,"_").length),s?l!==e.len&&n.push(he(i.messages[c].len,e.fullField,e.len)):o&&!a&&l<e.min?n.push(he(i.messages[c].min,e.fullField,e.min)):a&&!o&&l>e.max?n.push(he(i.messages[c].max,e.fullField,e.max)):o&&a&&(l<e.min||l>e.max)&&n.push(he(i.messages[c].range,e.fullField,e.min,e.max))},enum:(e,t,r,n,i)=>{e[xe]=Array.isArray(e[xe])?e[xe]:[],-1===e[xe].indexOf(t)&&n.push(he(i.messages[xe],e.fullField,e[xe].join(", ")))},pattern:(e,t,r,n,i)=>{if(e.pattern)if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(t)||n.push(he(i.messages.pattern.mismatch,e.fullField,t,e.pattern));else if("string"==typeof e.pattern){new RegExp(e.pattern).test(t)||n.push(he(i.messages.pattern.mismatch,e.fullField,t,e.pattern))}}};const ke=(e,t,r,n,i)=>{const s=e.type,o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(ge(t,s)&&!e.required)return r();Se.required(e,t,n,o,i,s),ge(t,s)||Se.type(e,t,n,o,i)}r(o)};var Ee={string:(e,t,r,n,i)=>{const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field||"")){if(ge(t,"string")&&!e.required)return r();Se.required(e,t,n,s,i,"string"),ge(t,"string")||(Se.type(e,t,n,s,i),Se.range(e,t,n,s,i),Se.pattern(e,t,n,s,i),!0===e.whitespace&&Se.whitespace(e,t,n,s,i))}r(s)},method:(e,t,r,n,i)=>{const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(ge(t)&&!e.required)return r();Se.required(e,t,n,s,i),void 0!==t&&Se.type(e,t,n,s,i)}r(s)},number:(e,t,r,n,i)=>{const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(""===t&&(t=void 0),ge(t)&&!e.required)return r();Se.required(e,t,n,s,i),void 0!==t&&(Se.type(e,t,n,s,i),Se.range(e,t,n,s,i))}r(s)},boolean:(e,t,r,n,i)=>{const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(ge(t)&&!e.required)return r();Se.required(e,t,n,s,i),void 0!==t&&Se.type(e,t,n,s,i)}r(s)},regexp:(e,t,r,n,i)=>{const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(ge(t)&&!e.required)return r();Se.required(e,t,n,s,i),ge(t)||Se.type(e,t,n,s,i)}r(s)},integer:(e,t,r,n,i)=>{const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(ge(t)&&!e.required)return r();Se.required(e,t,n,s,i),void 0!==t&&(Se.type(e,t,n,s,i),Se.range(e,t,n,s,i))}r(s)},float:(e,t,r,n,i)=>{const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(ge(t)&&!e.required)return r();Se.required(e,t,n,s,i),void 0!==t&&(Se.type(e,t,n,s,i),Se.range(e,t,n,s,i))}r(s)},array:(e,t,r,n,i)=>{const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(null==t&&!e.required)return r();Se.required(e,t,n,s,i,"array"),null!=t&&(Se.type(e,t,n,s,i),Se.range(e,t,n,s,i))}r(s)},object:(e,t,r,n,i)=>{const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(ge(t)&&!e.required)return r();Se.required(e,t,n,s,i),void 0!==t&&Se.type(e,t,n,s,i)}r(s)},enum:(e,t,r,n,i)=>{const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(ge(t)&&!e.required)return r();Se.required(e,t,n,s,i),void 0!==t&&Se.enum(e,t,n,s,i)}r(s)},pattern:(e,t,r,n,i)=>{const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(ge(t,"string")&&!e.required)return r();Se.required(e,t,n,s,i),ge(t,"string")||Se.pattern(e,t,n,s,i)}r(s)},date:(e,t,r,n,i)=>{const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(ge(t,"date")&&!e.required)return r();if(Se.required(e,t,n,s,i),!ge(t,"date")){let r;r=t instanceof Date?t:new Date(t),Se.type(e,r,n,s,i),r&&Se.range(e,r.getTime(),n,s,i)}}r(s)},url:ke,hex:ke,email:ke,required:(e,t,r,n,i)=>{const s=[],o=Array.isArray(t)?"array":typeof t;Se.required(e,t,n,s,i,o),r(s)},any:(e,t,r,n,i)=>{const s=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(ge(t)&&!e.required)return r();Se.required(e,t,n,s,i)}r(s)}};function Pe(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone(){const e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}const Me=Pe();class Re{static register=function(e,t){if("function"!=typeof t)throw new Error("Cannot register a validator by type, validator is not a function");Ee[e]=t};static warning=pe;static messages=Me;static validators=Ee;rules={};_messages=Me;constructor(e){this.define(e)}define(e){if(!e)throw new Error("Cannot configure a schema with no rules");if("object"!=typeof e||Array.isArray(e))throw new Error("Rules must be an object");this.rules={},Object.keys(e).forEach((t=>{const r=e[t];this.rules[t]=Array.isArray(r)?r:[r]}))}messages(e){return e&&(this._messages=$e(Pe(),e)),this._messages}validate(e,t={},r=(()=>{})){let n=e,i=t,s=r;if("function"==typeof i&&(s=i,i={}),!this.rules||0===Object.keys(this.rules).length)return s&&s(null,n),Promise.resolve(n);if(i.messages){let e=this.messages();e===Me&&(e=Pe()),$e(e,i.messages),i.messages=e}else i.messages=this.messages();const o={};(i.keys||Object.keys(this.rules)).forEach((t=>{const r=this.rules[t];let i=n[t];r.forEach((r=>{let s=r;"function"==typeof s.transform&&(n===e&&(n={...n}),i=n[t]=s.transform(i)),s="function"==typeof s?{validator:s}:{...s},s.validator=this.getValidationMethod(s),s.validator&&(s.field=t,s.fullField=s.fullField||t,s.type=this.getType(s),o[t]=o[t]||[],o[t].push({rule:s,value:i,source:n,field:t}))}))}));const a={};return ve(o,i,((e,t)=>{const r=e.rule;let s,o=!("object"!==r.type&&"array"!==r.type||"object"!=typeof r.fields&&"object"!=typeof r.defaultField);function u(e,t){return{...t,fullField:`${r.fullField}.${e}`,fullFields:r.fullFields?[...r.fullFields,e]:[e]}}function l(s=[]){let l=Array.isArray(s)?s:[s];!0===i.suppressWarning&&l.length&&Re.warning("async-validator:",l),l.length&&void 0!==r.message&&(l=[].concat(r.message));let c=l.map(we(r,n));if(i.first&&c.length)return a[r.field]=1,t(c);if(o){if(r.required&&!e.value)return void 0!==r.message?c=[].concat(r.message).map(we(r,n)):i.error&&(c=[i.error(r,he(i.messages.required,r.field))]),t(c);let s={};r.defaultField&&Object.keys(e.value).map((e=>{s[e]=r.defaultField})),s={...s,...e.rule.fields};const o={};Object.keys(s).forEach((e=>{const t=s[e],r=Array.isArray(t)?t:[t];o[e]=r.map(u.bind(null,e))}));const a=new Re(o);a.messages(i.messages),e.rule.options&&(e.rule.options.messages=i.messages,e.rule.options.error=i.error),a.validate(e.value,e.rule.options||i,(e=>{const r=[];c&&c.length&&r.push(...c),e&&e.length&&r.push(...e),t(r.length?r:null)}))}else t(c)}if(o=o&&(r.required||!r.required&&e.value),r.field=e.field,r.asyncValidator)s=r.asyncValidator(r,e.value,l,e.source,i);else if(r.validator){try{s=r.validator(r,e.value,l,e.source,i)}catch(e){console.error?.(e),i.suppressValidatorError||setTimeout((()=>{throw e}),0),l(e.message)}!0===s?l():!1===s?l("function"==typeof r.message?r.message(r.fullField||r.field):r.message||`${r.fullField||r.field} fails`):s instanceof Array?l(s):s instanceof Error&&l(s.message)}s&&s.then&&s.then((()=>l()),(e=>l(e)))}),(e=>{!function(e){let t=[],r={};for(let r=0;r<e.length;r++)i=e[r],Array.isArray(i)?t=t.concat(...i):t.push(i);var i;t.length?(r=ye(t),s(t,r)):s(null,n)}(e)}),n)}getType(e){if(void 0===e.type&&e.pattern instanceof RegExp&&(e.type="pattern"),"function"!=typeof e.validator&&e.type&&!Ee.hasOwnProperty(e.type))throw new Error(he("Unknown rule type %s",e.type));return e.type||"string"}getValidationMethod(e){if("function"==typeof e.validator)return e.validator;const t=Object.keys(e),r=t.indexOf("message");return-1!==r&&t.splice(r,1),1===t.length&&"required"===t[0]?Ee.required:Ee[this.getType(e)]||void 0}}function Te(e){return new Re(e)}var De={validateId:function(e){return!!e&&(!(e.length<6)&&!!/^[A-Za-z0-9_-]+$/.test(e))},validatePhone:function(e){return!!e&&!!/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/.test(e)},validator:Te,validate:function(e,t,r={},n=(()=>{})){return z.run(Te(e).validate(t,r,n))}};class Ne{key;storage;fields=[];constructor(e){this.key=e?.key||"",this.fields=e?.fields||[],this.storage=e?.storage||void 0}save=z.debounce((e=>{if(this.key&&this.storage)try{const{setItem:t,setStorageSync:r}=this.storage;if(r)return r(this.key,e);if(t)return t(this.key,JSON.stringify(e))}catch(e){console.error("persit save ",e)}}));read(){if(this.key&&this.storage)try{const{getItem:e,getStorageSync:t}=this.storage;if(t)return t(this.key);if(e){const t=e(this.key);return JSON.parse(t)}}catch(e){return void console.error("persit read ",e)}}handleSave(e,t){if(!this.fields.includes(t)||!e)return;const r=K.copy(e,this.fields);this.save(r)}}class _e extends Q{setters;getters;actions;persist;constructor(){super(),this.getters={},this.setters={},this.actions={}}async dispatch(e,t=void 0){const r=Reflect.get(this.actions,e);if(!K.isFunction(r))return;const[,n]=await z.run(r(this,t));return n}async query(e){const t=Reflect.get(this,e);let r;return r=null!=t&&""!==t?K.copy(t):await this.dispatch(e),r}change=(e,t,r)=>{if(!e.persist)return;const n=e.persist.fields||[];if(!n.includes(t))return;const i=K.copy(e,n);e.persist.save(i)}}var Ie={gbk:e,time:n,hook:z,math:U,util:K,list:X,mini:oe,url:fe,rule:De,event:Q,store:_e,storeRef:(e,t)=>{const r=Object.assign(new _e,e||{});r.__persist=new Ne(t||r.persist);const n=r.__persist.read(),i=n?Object.assign(r,n):r;return new Proxy(i,{get:(e,t,r)=>{const n=Reflect.get(e.getters,t);return K.isFunction(n)?n(e):Reflect.get(e,t,r)},set:(e,t,r,n)=>{const i=Reflect.get(e.setters,t);if(K.isFunction(i)&&!i(e,r))return!0;const s=Reflect.set(e,t,r,n);return s&&(e.emit(t.toString(),r),e?.__persist?.handleSave(e,t.toString())),s},has:(e,t)=>Reflect.has(e,t)})},persist:Ne,persistConfig:(e,t,r)=>({key:e,fields:t,storage:r})};return Ie}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).ddan=t()}(this,(function(){"use strict";var e={gbkLength:function(e){let t=0;if(!e)return 0;for(let r=0;r<e.length;r++)e.charCodeAt(r)>127||94===e.charCodeAt(r)?t+=2:t++;return t},gbkCut:function(e,t){if(!e||t<=0)return"";let r=0,n=0;for(let s=0;s<e.length&&(e.charCodeAt(s)>127||94===e.charCodeAt(s)?r+=2:r++,!(r>t));s++)n=s;return e.substr(0,n+1)}};const t=(e,t="yyyy-MM-dd hh:mm:ss")=>{const r="string"==typeof e||"number"==typeof e?new Date(e):e;if(!r)return"";const n={};return n.yyyy=r.getFullYear(),n.yy=`${n.yyyy}`.substr(2),n.M=r.getMonth()+1,n.MM=(n.M<10?"0":"")+n.M,n.d=r.getDate(),n.dd=(n.d<10?"0":"")+n.d,n.h=r.getHours(),n.hh=(n.h<10?"0":"")+n.h,n.m=r.getMinutes(),n.mm=(n.m<10?"0":"")+n.m,n.s=r.getSeconds(),n.ss=(n.s<10?"0":"")+n.s,n.S=r.getMilliseconds(),n.SS=(n.S<10?"0":"")+n.S,n.SSS=n.S.toString().padStart(3,0),t.replace(/\byyyy|yy|MM|M|dd|d|hh|h|mm|m|ss|s|SSS|SS|S\b/g,(e=>n[e]))};function r(){return Date.now()}var n={now:r,isToday:e=>e&&(new Date).toDateString()===new Date(e).toDateString(),format:t,parseTime:function({year:e=0,month:r=0,date:n=0,hour:s=0,minute:i=0,second:o=0}){const a=`${e||"yyyy"}/${r||"MM"}/${n||"dd"} ${s}:${i}:${o}`;return new Date(t(Date.now(),a)).getTime()},todayZero:()=>new Date(t(r(),"yyyy/MM/dd 00:00:00")).getTime(),oneDay:864e5,oneHour:36e5,oneMinute:6e4,oneSecond:1e3},s="object"==typeof global&&global&&global.Object===Object&&global,i="object"==typeof self&&self&&self.Object===Object&&self;const o=(s||i||Function("return this")()).Symbol,{toString:a,hasOwnProperty:u,propertyIsEnumerable:c}=Object.prototype,l=o?o.toStringTag:void 0;function f(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":l&&l in Object(e)?function(e){const t=u.call(e,l),r=e[l];let n=!1;try{e[l]=void 0,n=!0}catch(e){}const s=a.call(e);return n&&(t?e[l]=r:delete e[l]),s}(e):a.call(e)}var d={getTag:f,getType:function(e){return(f(e).match(/\w+/g)||["object","Undefined"])[1]||""},toString:a,hasOwnProperty:u,propertyIsEnumerable:c},h="[object Function]",p="[object GeneratorFunction]",y="[object AsyncFunction]",g=9007199254740991;const m=/^(?:0|[1-9]\d*)$/;function b(e){const t=typeof e;return null!=e&&("object"==t||"function"==t)}function v(e){return null!=e&&"object"==typeof e}const w=Array.isArray;function q(e){return null!=e&&function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=g}(e.length)&&!$(e)}function O(e){return v(e)&&q(e)}function $(e){var t=b(e)?d.getTag(e):"";return t===h||t===p||t===y}var j={is:function(e,t){return d.getTag(e)===`[object ${t}]`},isNumber:function(e){return"[object Number]"===d.getTag(e)},isString:function(e){return"string"==typeof e||!w(e)&&v(e)&&"[object String]"==d.getTag(e)},isChinese:function(e){return!!e&&!!/^[\u4E00-\u9FA5]+$/.test(e)},isObject:b,isObjectLike:v,isSymbol:function(e){return"symbol"==typeof e||v(e)&&"[object Symbol]"===d.getTag(e)},isFunction:$,isArray:w,isArrayLikeObject:O,isIndex:function(e,t){return!!(t=null==t?g:t)&&("number"==typeof e||m.test(e))&&e>-1&&e%1==0&&e<t},isArrayLike:q,isPrototype:function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||Object.prototype)},isArguments:function(e){return O(e)&&d.hasOwnProperty.call(e,"callee")&&(!d.propertyIsEnumerable.call(e,"callee")||"[object Arguments]"==d.toString.call(e))},isPromise:function(e){return"[object Promise]"===(b(e)?d.getTag(e):"")}};const A=NaN,F=/^\s+|\s+$/g,k=/^[-+]0x[0-9a-f]+$/i,S=/^0b[01]+$/i,x=/^0o[0-7]+$/i,E=parseInt,R=1/0,P=17976931348623157e292;function T(e){if("number"==typeof e)return e;if(j.isSymbol(e))return A;if(j.isObject(e)){const t="function"==typeof e.valueOf?e.valueOf():e;e=j.isObject(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(F,"");const t=S.test(e);return t||x.test(e)?E(e.slice(2),t?2:8):k.test(e)?A:+e}function D(e){return e?(e=T(e))===R||e===-R?(e<0?-1:1)*P:e==e?e:0:0===e?e:0}var I={toNumber:T,toFinite:D,toInteger:function(e){var t=D(e),r=t%1;return t==t?r?t-r:t:0}};const M="Expected a function",C=Math.max,N=Math.min;function _(e,t=0,r={}){var n,s,i,o,a,u,c=0,l=!1,f=!1,d=!0;if("function"!=typeof e)throw new TypeError(M);function h(t){var r=n,i=s;return n=s=void 0,c=t,o=e.apply(i,r)}function p(e){var r=e-u;return void 0===u||r>=t||r<0||f&&e-c>=i}function y(){var e=Date.now();if(p(e))return g(e);a=setTimeout(y,function(e){var r=t-(e-u);return f?N(r,i-(e-c)):r}(e))}function g(e){return a=void 0,d&&n?h(e):(n=s=void 0,o)}function m(...e){var r=Date.now(),i=p(r);if(n=arguments,s=this,u=r,i){if(void 0===a)return function(e){return c=e,a=setTimeout(y,t),l?h(e):o}(u);if(f)return a=setTimeout(y,t),h(u)}return void 0===a&&(a=setTimeout(y,t)),o}return t=I.toNumber(t)||0,j.isObject(r)&&(l=!!r.leading,i=(f="maxWait"in r)?C(I.toNumber(r.maxWait)||0,t):i,d="trailing"in r?!!r.trailing:d),m.cancel=function(){void 0!==a&&clearTimeout(a),c=0,n=u=s=a=void 0},m.flush=function(){return void 0===a?o:g(Date.now())},m}class L{source;constructor(e){this.source=e}run(){let e;try{let t;return t=j.isFunction(this.source)?this.source():this.source,e=j.isPromise(t)?t:Promise.resolve(t),e.then((e=>[null,e])).catch((e=>[e,void 0]))}catch(e){return Promise.resolve([e,void 0])}}}var U={sleep:(e=1e3)=>new Promise((t=>{setTimeout(t,e)})),run:e=>new L(e).run(),debounce:_,throttle:function(e,t=0,r={}){var n=!1,s=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return j.isObject(r)&&(n=r.leading?!!r.leading:n,s=r.trailing?!!r.trailing:s),_(e,t,{leading:n,maxWait:t,trailing:s})}};var V={random:function(e){return Math.floor(Math.random()*e)},randomRange:function(e,t){return Math.floor(Math.random()*(t-e+1)+e)},lerp:function(e,t,r){return e*(1-r)+t*r},randomString:function(e,t=!1){e=e||32;const r="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";let s="";for(let t=0;t<e;t++)s+=r.charAt(Math.floor(62*Math.random()));return t?n.format(new Date,"yyyyMMddhhmmss")+s:s}};function J(e){return e!=e}function z(e,t){return function(e,t){for(var r=-1,n=e?e.length:0,s=Array(n);++r<n;)s[r]=t(e[r],r,e);return s}(t,(function(t){return e[t]}))}var B,H,W=(B=Object.keys,H=Object,function(e){return B(H(e))}),Z=Math.max;function Y(e,t){var r=j.isArray(e)||j.isArguments(e)?function(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}(e.length,String):[],n=r.length,s=!!n;for(var i in e)!t&&!d.hasOwnProperty.call(e,i)||s&&("length"==i||j.isIndex(i,n))||r.push(i);return r}const G=e=>{if(!e)return e;if("object"!=typeof e)return e;const t=Array.isArray(e)?[]:{};for(const r in e)e.hasOwnProperty(r)&&(t[r]=G(e[r]));return t};var K={...j,...d,includes:function(e,t,r,n){e=j.isArrayLike(e)?e:function(e){return e?z(e,function(e){return j.isArrayLike(e)?Y(e):function(e){if(!j.isPrototype(e))return W(e);var t=[];for(var r in Object(e))d.hasOwnProperty.call(e,r)&&"constructor"!=r&&t.push(r);return t}(e)}(e)):[]}(e),r=r&&!n?I.toInteger(r):0;var s=e.length;return r<0&&(r=Z(s+r,0)),j.isString(e)?r<=s&&e.indexOf(t,r)>-1:!!s&&function(e,t,r){if(t!=t)return function(e,t,r,n){for(var s=e.length,i=r+(n?1:-1);n?i--:++i<s;)if(t(e[i],i,e))return i;return-1}(e,J,r);for(var n=r-1,s=e.length;++n<s;)if(e[n]===t)return n;return-1}(e,t,r)>-1},merge:function(e,t){if(t)for(const r in t)if(t.hasOwnProperty(r)){const n=t[r];"object"==typeof n&&"object"==typeof e[r]?e[r]={...e[r],...n}:e[r]=n}return e},compareArray:function(e,t){if(!Array.isArray(e)||!Array.isArray(t))return!1;if(e.length!==t.length)return!1;for(let r=0,n=e.length;r<n;r++)if(e[r]!==t[r])return!1;return!0},copy:(e,t=[])=>{if(void 0===e)return;const r=JSON.parse(JSON.stringify(e));if("object"!=typeof r)return r;if(Array.isArray(r)||!t||t.length<=0)return r;const n={};for(const e in r)t.includes(e)&&r.hasOwnProperty(e)&&(n[e]=r[e]);return n},clone:G};class Q{_map;constructor(){this._map=new Map}clear(){return this._map.clear(),this}on(e,t){if(!t)return this;let r=this._map.get(e);return r||(r=new Set,this._map.set(e,r)),r.add(t),this}emit(e,...t){const r=this._map.get(e);if(!r)return this;return[...r].forEach((e=>e(...t))),this}off(e="",t){if(!e)return this._map.clear(),this;if(!t)return this._map.delete(e.toString()),this;const r=this._map.get(e);return r?(r.delete(t),this):this}once(e,t){const r=(...n)=>{t(...n),this.off(e,r)};return this.on(e,r),this}has(e){return this._map.has(e)}}var X={groupBy:(e,t)=>e.reduce(((e,r)=>((e[r[t]]=e[r[t]]||[]).push(r),e)),{}),stepAction:function(e,t,r=100){if(!j.isFunction(t))return;if(!j.isArray(e)||e.length<=0)return;let n=0;for(;e.length>n;){let s=r+n,i=e.slice(n,s);t&&t(i),n=s}},skip:(e,t)=>{if(!j.isArray(e)||e.length<=0)return[];const r=t;return e.slice(r)},take:(e,t,r=0)=>{if(!j.isArray(e)||e.length<=0)return[];const n=r||0;if(n>=e.length)return[];const s=t+n;return e.slice(n,e.length<s?e.length:s)||[]},distinct:e=>!j.isArray(e)||e.length<=0?[]:[...new Set(e)]};const ee="[object Object]",te="[object Array]",re=e=>Object.prototype.toString.call(e),ne=(e,t,r=!1)=>{if(e===t)return;const n=re(e);if(n===re(t))if(n===te&&e.length>=t.length)for(let r=0;r<t.length;r++)ne(e[r],t[r]);else if(n===ee&&Object.keys(e).length>=Object.keys(t).length)for(let n in t)r||void 0!==e[n]?ne(e[n],t[n]):e[n]=null},se=(e,t,r,n="",s=!1)=>{if(e===t)return;const i=re(e),o=re(t);if(i===te&&o===i&&e.length>=t.length)for(let s=0;s<e.length;s++)se(e[s],t[s],r,`${n}[${s}]`);else if(i===ee&&o===i&&(s||Object.keys(e).length>=Object.keys(t).length)){const s=Object.keys(e);for(let i of s){const s=e[i],o=t[i],a=re(s),u=re(o);if(s!==o)if(a===te&&u===a&&s.length>=o.length)for(let e=0;e<s.length;e++)se(s[e],o[e],r,`${n?n+".":""}${i}[${e}]`);else if(a===ee&&u===a&&Object.keys(s).length>=Object.keys(o).length)for(let e in s)se(s[e],o[e],r,`${n?n+".":""}${i}.${e}`);else r[`${n?n+".":""}${i}`]=s}}else r[n]=e};class ie{list=[];constructor(){this.invoke=this.invoke.bind(this)}use(e){this.list=this.list.concat(e)}invoke(e){return this.list.reduce(((e,t)=>e.then((e=>t(e)))),Promise.resolve(e)).catch((e=>"REFETCH"===e.sig?Promise.resolve(e.result):Promise.reject(e)))}}class oe{reqConfig={};handleEncrypt;handleDecrypt;handleToast;handleRequest;interceptors={request:new ie,response:new ie};static blockId="blockid";static requestLock={};constructor(e){const{reqConfig:t={},requestEncrypt:r,responseDecrypt:n,handleToast:s,handleRequest:i}=e;this.reqConfig=t,this.handleEncrypt=r,this.handleDecrypt=n,this.handleToast=s,this.handleRequest=i}lockR(e,t){oe.requestLock[e]={lock:!0,request:t()}}unlockR(e){delete oe.requestLock[e]}getIdFromReq(e){const{url:t,data:r={}}=e;return t+JSON.stringify(r)}getIdFromReqUrl(e){return e.url||""}_fetch(e,t){let r=e;return t&&this.handleEncrypt&&(r=this.handleEncrypt(e)),new Promise(((e,n)=>{this.handleRequest({...r,success:r=>{let n=r;t&&this.handleDecrypt&&(n=this.handleDecrypt(r)),e(n)},fail:e=>{n(e)}})}))}async request(e,t){const r=JSON.parse(JSON.stringify(this.reqConfig[e])),{config:n,...s}=await this.interceptors.request.invoke({url:r.url,data:t||{},header:{"content-type":"application/json"},method:r.method?r.method:"POST",responseType:"text",config:r});let i;try{if("block"===n.model)this.lockR(oe.blockId,(()=>this._fetch(s,n.hasEncrypt))),i=await oe.requestLock[oe.blockId].request;else if(oe.requestLock[oe.blockId]&&oe.requestLock[oe.blockId].lock&&await oe.requestLock[oe.blockId].request,"debounce"===n.model||"debounceAgainstUrl"===n.model){let e;e="debounceAgainstUrl"===n.model?this.getIdFromReqUrl(s):this.getIdFromReq(s),oe.requestLock[e]||this.lockR(e,(()=>this._fetch(s,n.hasEncrypt))),i=await oe.requestLock[e].request,this.unlockR(e)}else i=await this._fetch(s,n.hasEncrypt)}catch(e){this.handleToast&&this.handleToast({title:JSON.stringify(e),icon:"none"})}return this.interceptors.response.invoke({res:i,reqId:this.getIdFromReq(s),refetch:()=>({sig:"REFETCH",result:this.request(e,t||{})})})}}const ae=e=>"function"!=typeof e?e:(t={})=>new Promise(((r,n)=>{e(Object.assign(t,{success:r,fail:n}))}));var ue={diff:function(e,t){const r={};return(e=>{if(re(e)===ee)for(let t in e)if(/\w+\.\w+/g.test(t)&&-1===t.indexOf("[")){const r=t.split(".");let n=e,s=r.length;for(let e=0;e<s-1;e++){const t=r[e];re(n[t])!==ee&&(n[t]={}),n=n[t]}n[r[s-1]]=e[t],delete e[t]}})(e),ne(e,t,!0),se(e,t,r,"",!0),r},promixify:ae,run:(e,t={})=>{if(e)return U.run(ae(e)(t))},formatList:(e,t,r)=>(e||[]).reduce(((e,n,s)=>({...e,[`${r}[${t+s}]`]:n})),{}),ruleValidator:(e,t)=>!!t&&(!Array.isArray(t)||!(t.length<=0)&&t.every((e=>!!e))),http:oe};function ce(e,t){return Object.prototype.hasOwnProperty.call(e,t)}const le=function(e,{sep:t="&",eq:r="=",max:n=1e3,multiple:s=!1}={}){t=t||"&",r=r||"=";const i={};if("string"!=typeof e||0===e.length)return i;const o=/\+/g,a=n||1e3;let u=(e=e.split(t)).length;a>0&&u>a&&(u=a);for(let t=0;t<u;++t){let n,a,u,c,l=e[t].replace(o,"%20"),f=l.indexOf(r);f>=0?(n=l.substr(0,f),a=l.substr(f+1)):(n=l,a=""),u=decodeURIComponent(n),c=decodeURIComponent(a),ce(i,u)&&s?Array.isArray(i[u])?i[u].push(c):i[u]=[i[u],c]:i[u]=c}return i},fe=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}},de=function(e,{sep:t="&",eq:r="=",name:n=null,multiple:s=!1}={}){return t=t||"&",r=r||"=",null===e&&(e=void 0),"object"==typeof e?Object.keys(e).map((function(n){const i=encodeURIComponent(fe(n))+r;return s&&Array.isArray(e[n])?e[n].map((function(e){return i+encodeURIComponent(fe(e))})).join(t):i+encodeURIComponent(fe(e[n]))})).filter(Boolean).join(t):n?encodeURIComponent(fe(n))+r+encodeURIComponent(fe(e)):""};var he={parse:le,decode:le,stringify:de,encode:de,useHttps:function(e){if(!e)return e;const t=e.trim();return"string"!=typeof e?e:t.indexOf("https")<0?t.replace("http","https"):t}};const pe=/%[sdj%]/g;let ye=()=>{};function ge(e){if(!e||!e.length)return null;const t={};return e.forEach((e=>{const r=e.field;t[r]=t[r]||[],t[r].push(e)})),t}function me(e,...t){let r=0;const n=t.length;if("function"==typeof e)return e.apply(null,t);if("string"==typeof e){return e.replace(pe,(e=>{if("%%"===e)return"%";if(r>=n)return e;switch(e){case"%s":return String(t[r++]);case"%d":return Number(t[r++]);case"%j":try{return JSON.stringify(t[r++])}catch(e){return"[Circular]"}break;default:return e}}))}return e}function be(e,t){return null==e||(!("array"!==t||!Array.isArray(e)||e.length)||!(!function(e){return"string"===e||"url"===e||"hex"===e||"email"===e||"date"===e||"pattern"===e}(t)||"string"!=typeof e||e))}function ve(e,t,r){let n=0;const s=e.length;!function i(o){if(o&&o.length)return void r(o);const a=n;n+=1,a<s?t(e[a],i):r([])}([])}"undefined"!=typeof process&&process.env&&"production"!==process.env.NODE_ENV&&"undefined"!=typeof window&&"undefined"!=typeof document&&(ye=(e,t)=>{"undefined"!=typeof console&&console.warn&&"undefined"==typeof ASYNC_VALIDATOR_NO_WARNING&&t.every((e=>"string"==typeof e))&&console.warn(e,t)});class we extends Error{errors;fields;constructor(e,t){super("Async Validation Error"),this.errors=e,this.fields=t}}function qe(e,t,r,n,s){if(t.first){const t=new Promise(((t,i)=>{const o=function(e){const t=[];return Object.keys(e).forEach((r=>{t.push(...e[r]||[])})),t}(e);ve(o,r,(e=>(n(e),e.length?i(new we(e,ge(e))):t(s))))}));return t.catch((e=>e)),t}const i=!0===t.firstFields?Object.keys(e):t.firstFields||[],o=Object.keys(e),a=o.length;let u=0;const c=[],l=new Promise(((t,l)=>{const f=e=>{if(c.push.apply(c,e),u++,u===a)return n(c),c.length?l(new we(c,ge(c))):t(s)};o.length||(n(c),t(s)),o.forEach((t=>{const n=e[t];-1!==i.indexOf(t)?ve(n,r,f):function(e,t,r){const n=[];let s=0;const i=e.length;function o(e){n.push(...e||[]),s++,s===i&&r(n)}e.forEach((e=>{t(e,o)}))}(n,r,f)}))}));return l.catch((e=>e)),l}function Oe(e,t){return r=>{let n;return n=e.fullFields?function(e,t){let r=e;for(let e=0;e<t.length;e++){if(null==r)return r;r=r[t[e]]}return r}(t,e.fullFields):t[r.field||e.fullField],(s=r)&&void 0!==s.message?(r.field=r.field||e.fullField,r.fieldValue=n,r):{message:"function"==typeof r?r():r,fieldValue:n,field:r.field||e.fullField};var s}}function $e(e,t){if(t)for(const r in t)if(t.hasOwnProperty(r)){const n=t[r];"object"==typeof n&&"object"==typeof e[r]?e[r]={...e[r],...n}:e[r]=n}return e}const je=(e,t,r,n,s,i)=>{!e.required||r.hasOwnProperty(e.field||"")&&!be(t,i||e.type)||n.push(me(s.messages.required,e.fullField))};let Ae;const Fe=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,ke=/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i,Se={integer:e=>Se.number(e)&&parseInt(e,10)===e,float:e=>Se.number(e)&&!Se.integer(e),array:e=>Array.isArray(e),regexp(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch(e){return!1}},date:e=>"function"==typeof e.getTime&&"function"==typeof e.getMonth&&"function"==typeof e.getYear&&!isNaN(e.getTime()),number:e=>!isNaN(e)&&"number"==typeof e,object:e=>"object"==typeof e&&!Se.array(e),method:e=>"function"==typeof e,email:e=>"string"==typeof e&&e.length<=320&&!!e.match(Fe),url:e=>"string"==typeof e&&e.length<=2048&&!!e.match((()=>{if(Ae)return Ae;const e="[a-fA-F\\d:]",t=t=>t&&t.includeBoundaries?`(?:(?<=\\s|^)(?=${e})|(?<=${e})(?=\\s|$))`:"",r="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",n="[a-fA-F\\d]{1,4}",s=`\n(?:\n(?:${n}:){7}(?:${n}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:${n}:){6}(?:${r}|:${n}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:${n}:){5}(?::${r}|(?::${n}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:${n}:){4}(?:(?::${n}){0,1}:${r}|(?::${n}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:${n}:){3}(?:(?::${n}){0,2}:${r}|(?::${n}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:${n}:){2}(?:(?::${n}){0,3}:${r}|(?::${n}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:${n}:){1}(?:(?::${n}){0,4}:${r}|(?::${n}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::${n}){0,5}:${r}|(?::${n}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\n`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),i=new RegExp(`(?:^${r}$)|(?:^${s}$)`),o=new RegExp(`^${r}$`),a=new RegExp(`^${s}$`),u=e=>e&&e.exact?i:new RegExp(`(?:${t(e)}${r}${t(e)})|(?:${t(e)}${s}${t(e)})`,"g");u.v4=e=>e&&e.exact?o:new RegExp(`${t(e)}${r}${t(e)}`,"g"),u.v6=e=>e&&e.exact?a:new RegExp(`${t(e)}${s}${t(e)}`,"g");const c=u.v4().source,l=u.v6().source;return Ae=new RegExp(`(?:^(?:(?:(?:[a-z]+:)?//)|www\\.)(?:\\S+(?::\\S*)?@)?(?:localhost|${c}|${l}|(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:[/?#][^\\s"]*)?$)`,"i"),Ae})()),hex:e=>"string"==typeof e&&!!e.match(ke)},xe="enum";var Ee={required:je,whitespace:(e,t,r,n,s)=>{(/^\s+$/.test(t)||""===t)&&n.push(me(s.messages.whitespace,e.fullField))},type:(e,t,r,n,s)=>{if(e.required&&void 0===t)return void je(e,t,r,n,s);const i=e.type;["integer","float","array","regexp","object","method","email","number","date","url","hex"].indexOf(i)>-1?Se[i](t)||n.push(me(s.messages.types[i],e.fullField,e.type)):i&&typeof t!==e.type&&n.push(me(s.messages.types[i],e.fullField,e.type))},range:(e,t,r,n,s)=>{const i="number"==typeof e.len,o="number"==typeof e.min,a="number"==typeof e.max,u=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;let c=t,l="";const f="number"==typeof t,d="string"==typeof t,h=Array.isArray(t);if(f?l="number":d?l="string":h&&(l="array"),!l)return!1;h&&(c=t.length),d&&(c=t.replace(u,"_").length),i?c!==e.len&&n.push(me(s.messages[l].len,e.fullField,e.len)):o&&!a&&c<e.min?n.push(me(s.messages[l].min,e.fullField,e.min)):a&&!o&&c>e.max?n.push(me(s.messages[l].max,e.fullField,e.max)):o&&a&&(c<e.min||c>e.max)&&n.push(me(s.messages[l].range,e.fullField,e.min,e.max))},enum:(e,t,r,n,s)=>{e[xe]=Array.isArray(e[xe])?e[xe]:[],-1===e[xe].indexOf(t)&&n.push(me(s.messages[xe],e.fullField,e[xe].join(", ")))},pattern:(e,t,r,n,s)=>{if(e.pattern)if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(t)||n.push(me(s.messages.pattern.mismatch,e.fullField,t,e.pattern));else if("string"==typeof e.pattern){new RegExp(e.pattern).test(t)||n.push(me(s.messages.pattern.mismatch,e.fullField,t,e.pattern))}}};const Re=(e,t,r,n,s)=>{const i=e.type,o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(be(t,i)&&!e.required)return r();Ee.required(e,t,n,o,s,i),be(t,i)||Ee.type(e,t,n,o,s)}r(o)};var Pe={string:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field||"")){if(be(t,"string")&&!e.required)return r();Ee.required(e,t,n,i,s,"string"),be(t,"string")||(Ee.type(e,t,n,i,s),Ee.range(e,t,n,i,s),Ee.pattern(e,t,n,i,s),!0===e.whitespace&&Ee.whitespace(e,t,n,i,s))}r(i)},method:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(be(t)&&!e.required)return r();Ee.required(e,t,n,i,s),void 0!==t&&Ee.type(e,t,n,i,s)}r(i)},number:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(""===t&&(t=void 0),be(t)&&!e.required)return r();Ee.required(e,t,n,i,s),void 0!==t&&(Ee.type(e,t,n,i,s),Ee.range(e,t,n,i,s))}r(i)},boolean:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(be(t)&&!e.required)return r();Ee.required(e,t,n,i,s),void 0!==t&&Ee.type(e,t,n,i,s)}r(i)},regexp:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(be(t)&&!e.required)return r();Ee.required(e,t,n,i,s),be(t)||Ee.type(e,t,n,i,s)}r(i)},integer:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(be(t)&&!e.required)return r();Ee.required(e,t,n,i,s),void 0!==t&&(Ee.type(e,t,n,i,s),Ee.range(e,t,n,i,s))}r(i)},float:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(be(t)&&!e.required)return r();Ee.required(e,t,n,i,s),void 0!==t&&(Ee.type(e,t,n,i,s),Ee.range(e,t,n,i,s))}r(i)},array:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(null==t&&!e.required)return r();Ee.required(e,t,n,i,s,"array"),null!=t&&(Ee.type(e,t,n,i,s),Ee.range(e,t,n,i,s))}r(i)},object:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(be(t)&&!e.required)return r();Ee.required(e,t,n,i,s),void 0!==t&&Ee.type(e,t,n,i,s)}r(i)},enum:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(be(t)&&!e.required)return r();Ee.required(e,t,n,i,s),void 0!==t&&Ee.enum(e,t,n,i,s)}r(i)},pattern:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(be(t,"string")&&!e.required)return r();Ee.required(e,t,n,i,s),be(t,"string")||Ee.pattern(e,t,n,i,s)}r(i)},date:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(be(t,"date")&&!e.required)return r();if(Ee.required(e,t,n,i,s),!be(t,"date")){let r;r=t instanceof Date?t:new Date(t),Ee.type(e,r,n,i,s),r&&Ee.range(e,r.getTime(),n,i,s)}}r(i)},url:Re,hex:Re,email:Re,required:(e,t,r,n,s)=>{const i=[],o=Array.isArray(t)?"array":typeof t;Ee.required(e,t,n,i,s,o),r(i)},any:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(be(t)&&!e.required)return r();Ee.required(e,t,n,i,s)}r(i)}};function Te(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone(){const e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}const De=Te();class Ie{static register=function(e,t){if("function"!=typeof t)throw new Error("Cannot register a validator by type, validator is not a function");Pe[e]=t};static warning=ye;static messages=De;static validators=Pe;rules={};_messages=De;constructor(e){this.define(e)}define(e){if(!e)throw new Error("Cannot configure a schema with no rules");if("object"!=typeof e||Array.isArray(e))throw new Error("Rules must be an object");this.rules={},Object.keys(e).forEach((t=>{const r=e[t];this.rules[t]=Array.isArray(r)?r:[r]}))}messages(e){return e&&(this._messages=$e(Te(),e)),this._messages}validate(e,t={},r=(()=>{})){let n=e,s=t,i=r;if("function"==typeof s&&(i=s,s={}),!this.rules||0===Object.keys(this.rules).length)return i&&i(null,n),Promise.resolve(n);if(s.messages){let e=this.messages();e===De&&(e=Te()),$e(e,s.messages),s.messages=e}else s.messages=this.messages();const o={};(s.keys||Object.keys(this.rules)).forEach((t=>{const r=this.rules[t];let s=n[t];r.forEach((r=>{let i=r;"function"==typeof i.transform&&(n===e&&(n={...n}),s=n[t]=i.transform(s)),i="function"==typeof i?{validator:i}:{...i},i.validator=this.getValidationMethod(i),i.validator&&(i.field=t,i.fullField=i.fullField||t,i.type=this.getType(i),o[t]=o[t]||[],o[t].push({rule:i,value:s,source:n,field:t}))}))}));const a={};return qe(o,s,((e,t)=>{const r=e.rule;let i,o=!("object"!==r.type&&"array"!==r.type||"object"!=typeof r.fields&&"object"!=typeof r.defaultField);function u(e,t){return{...t,fullField:`${r.fullField}.${e}`,fullFields:r.fullFields?[...r.fullFields,e]:[e]}}function c(i=[]){let c=Array.isArray(i)?i:[i];!0===s.suppressWarning&&c.length&&Ie.warning("async-validator:",c),c.length&&void 0!==r.message&&(c=[].concat(r.message));let l=c.map(Oe(r,n));if(s.first&&l.length)return a[r.field]=1,t(l);if(o){if(r.required&&!e.value)return void 0!==r.message?l=[].concat(r.message).map(Oe(r,n)):s.error&&(l=[s.error(r,me(s.messages.required,r.field))]),t(l);let i={};r.defaultField&&Object.keys(e.value).map((e=>{i[e]=r.defaultField})),i={...i,...e.rule.fields};const o={};Object.keys(i).forEach((e=>{const t=i[e],r=Array.isArray(t)?t:[t];o[e]=r.map(u.bind(null,e))}));const a=new Ie(o);a.messages(s.messages),e.rule.options&&(e.rule.options.messages=s.messages,e.rule.options.error=s.error),a.validate(e.value,e.rule.options||s,(e=>{const r=[];l&&l.length&&r.push(...l),e&&e.length&&r.push(...e),t(r.length?r:null)}))}else t(l)}if(o=o&&(r.required||!r.required&&e.value),r.field=e.field,r.asyncValidator)i=r.asyncValidator(r,e.value,c,e.source,s);else if(r.validator){try{i=r.validator(r,e.value,c,e.source,s)}catch(e){console.error?.(e),s.suppressValidatorError||setTimeout((()=>{throw e}),0),c(e.message)}!0===i?c():!1===i?c("function"==typeof r.message?r.message(r.fullField||r.field):r.message||`${r.fullField||r.field} fails`):i instanceof Array?c(i):i instanceof Error&&c(i.message)}i&&i.then&&i.then((()=>c()),(e=>c(e)))}),(e=>{!function(e){let t=[],r={};for(let r=0;r<e.length;r++)s=e[r],Array.isArray(s)?t=t.concat(...s):t.push(s);var s;t.length?(r=ge(t),i(t,r)):i(null,n)}(e)}),n)}getType(e){if(void 0===e.type&&e.pattern instanceof RegExp&&(e.type="pattern"),"function"!=typeof e.validator&&e.type&&!Pe.hasOwnProperty(e.type))throw new Error(me("Unknown rule type %s",e.type));return e.type||"string"}getValidationMethod(e){if("function"==typeof e.validator)return e.validator;const t=Object.keys(e),r=t.indexOf("message");return-1!==r&&t.splice(r,1),1===t.length&&"required"===t[0]?Pe.required:Pe[this.getType(e)]||void 0}}function Me(e){return new Ie(e)}var Ce={validateId:function(e){return!!e&&(!(e.length<6)&&!!/^[A-Za-z0-9_-]+$/.test(e))},validatePhone:function(e){return!!e&&!!/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/.test(e)},validator:Me,validate:function(e,t,r={},n=(()=>{})){return U.run(Me(e).validate(t,r,n))}};var Ne={uint8ArrayToString:function(e){let t="";for(let r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return t},stringToArrayBuffer:function(e){const t=e.length,r=new ArrayBuffer(t),n=new Uint8Array(r);for(let r=0;r<t;r++)n[r]=e.charCodeAt(r);return r}};class _e{key;storage;fields=[];constructor(e){this.key=e?.key||"",this.fields=e?.fields||[],this.storage=e?.storage||void 0}save=U.debounce((e=>{if(this.key&&this.storage)try{const{setItem:t,setStorageSync:r}=this.storage;if(r)return r(this.key,e);if(t)return t(this.key,JSON.stringify(e))}catch(e){console.error("persit save ",e)}}));read(){if(this.key&&this.storage)try{const{getItem:e,getStorageSync:t}=this.storage;if(t)return t(this.key);if(e){const t=e(this.key);return JSON.parse(t)}}catch(e){return void console.error("persit read ",e)}}handleSave(e,t){if(!this.fields.includes(t)||!e)return;const r=K.copy(e,this.fields);this.save(r)}}class Le extends Q{setters;getters;actions;persist;constructor(){super(),this.getters={},this.setters={},this.actions={}}async dispatch(e,t=void 0){const r=Reflect.get(this.actions,e);if(!K.isFunction(r))return;const[,n]=await U.run(r(this,t));return n}async query(e){const t=Reflect.get(this,e);let r;return r=null!=t&&""!==t?K.copy(t):await this.dispatch(e),r}}var Ue={gbk:e,time:n,hook:U,math:V,util:K,list:X,mini:ue,url:he,rule:Ce,convert:Ne,event:Q,store:Le,storeRef:(e,t)=>{const r=Object.assign(new Le,e||{});r.__persist=new _e(t||r.persist);const n=r.__persist.read(),s=n?Object.assign(r,n):r;return new Proxy(s,{get:(e,t,r)=>{const n=Reflect.get(e.getters,t);return K.isFunction(n)?n(e):Reflect.get(e,t,r)},set:(e,t,r,n)=>{const s=Reflect.get(e.setters,t);if(K.isFunction(s)&&!s(e,r))return!0;const i=Reflect.set(e,t,r,n);return i&&(e.emit(t.toString(),r),e?.__persist?.handleSave(e,t.toString())),i},has:(e,t)=>Reflect.has(e,t)})},persist:_e,persistConfig:(e,t,r)=>({key:e,fields:t,storage:r})};return Ue}));
@@ -36,15 +36,6 @@ class DStore extends event_1.default {
36
36
  }
37
37
  return result;
38
38
  }
39
- change = (self, key, value) => {
40
- if (!self.persist)
41
- return;
42
- const fields = self.persist.fields || [];
43
- if (!fields.includes(key))
44
- return;
45
- const data = util_1.default.copy(self, fields);
46
- self.persist.save(data);
47
- };
48
39
  }
49
40
  exports.default = DStore;
50
41
  const storeRef = (source, persistConfig) => {
package/bin/lib/index.js CHANGED
@@ -10,6 +10,7 @@ const list_1 = require("./modules/list");
10
10
  const mini_1 = require("./modules/mini");
11
11
  const url_1 = require("./modules/url");
12
12
  const rule_1 = require("./modules/rule");
13
+ const convert_1 = require("./modules/convert");
13
14
  const store_1 = require("./class/store");
14
15
  const persist_1 = require("./class/persist");
15
16
  exports.default = {
@@ -22,6 +23,7 @@ exports.default = {
22
23
  mini: mini_1.default,
23
24
  url: url_1.default,
24
25
  rule: rule_1.default,
26
+ convert: convert_1.default,
25
27
  event: event_1.default,
26
28
  store: store_1.default,
27
29
  storeRef: store_1.storeRef,
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function uint8ArrayToString(arr) {
4
+ let dataString = "";
5
+ for (let i = 0; i < arr.length; i++) {
6
+ dataString += String.fromCharCode(arr[i]);
7
+ }
8
+ return dataString;
9
+ }
10
+ function stringToArrayBuffer(str) {
11
+ const l = str.length;
12
+ const buffer = new ArrayBuffer(l);
13
+ const bufferView = new Uint8Array(buffer);
14
+ for (let i = 0; i < l; i++) {
15
+ bufferView[i] = str.charCodeAt(i);
16
+ }
17
+ return buffer;
18
+ }
19
+ exports.default = { uint8ArrayToString, stringToArrayBuffer };
@@ -5,6 +5,13 @@ const is_1 = require("../../util/is");
5
5
  const FUNC_ERROR_TEXT = 'Expected a function';
6
6
  const nativeMax = Math.max;
7
7
  const nativeMin = Math.min;
8
+ /**
9
+ * 防抖 一段时间内,规定时间间隔多次执行,回调触发一次
10
+ * @param func
11
+ * @param wait
12
+ * @param options 参数:leading 开始执行, trailing结束执行
13
+ * @returns
14
+ */
8
15
  function debounce(func, wait = 0, options = {}) {
9
16
  var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;
10
17
  if (typeof func != 'function') {
@@ -3,6 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const debounce_1 = require("./debounce");
4
4
  const throttle_1 = require("./throttle");
5
5
  const task_1 = require("../../class/task");
6
+ /**
7
+ * 休眠
8
+ * @param time
9
+ * @returns
10
+ */
6
11
  const sleep = (time = 1000) => new Promise(resolve => { setTimeout(resolve, time); });
12
+ /**
13
+ * 执行任务
14
+ */
7
15
  const run = (task) => new task_1.default(task).run();
8
16
  exports.default = { sleep, run, debounce: debounce_1.default, throttle: throttle_1.default };
@@ -4,6 +4,13 @@ const is_1 = require("../../util/is");
4
4
  const debounce_1 = require("./debounce");
5
5
  /** Error message constants. */
6
6
  const FUNC_ERROR_TEXT = 'Expected a function';
7
+ /**
8
+ * 节流 每个间隔内,触发一次
9
+ * @param func
10
+ * @param wait
11
+ * @param options 参数:leading 开始执行, trailing结束执行
12
+ * @returns
13
+ */
7
14
  function throttle(func, wait = 0, options = {}) {
8
15
  var leading = false, trailing = true;
9
16
  if (typeof func != 'function') {
@@ -61,6 +61,11 @@ const take = (list, count, skip = 0) => {
61
61
  const endIndex = count + start;
62
62
  return list.slice(start, list.length < endIndex ? list.length : endIndex) || [];
63
63
  };
64
+ /**
65
+ * 去重
66
+ * @param list
67
+ * @returns
68
+ */
64
69
  const distinct = (list) => {
65
70
  if (!is_1.default.isArray(list) || list.length <= 0)
66
71
  return [];
@@ -81,6 +81,12 @@ const doDiff = (cur, pre, target, path = "", root = false) => {
81
81
  }
82
82
  target[path] = cur;
83
83
  };
84
+ /**
85
+ * 计算并格式化差异值
86
+ * @param data
87
+ * @param prevData
88
+ * @returns
89
+ */
84
90
  function diff(data, prevData) {
85
91
  const target = {};
86
92
  initPath(data);
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const interceptor_1 = require("./interceptor");
4
+ class MiniHttp {
5
+ // 接口配置
6
+ reqConfig = {};
7
+ handleEncrypt;
8
+ handleDecrypt;
9
+ handleToast;
10
+ handleRequest;
11
+ // 拦截器
12
+ interceptors = {
13
+ request: new interceptor_1.default(),
14
+ response: new interceptor_1.default(),
15
+ };
16
+ // 阻塞请求的锁id
17
+ static blockId = "blockid";
18
+ // 请求锁字典
19
+ static requestLock = {};
20
+ constructor(options) {
21
+ const { reqConfig = {}, requestEncrypt, responseDecrypt, handleToast, handleRequest } = options;
22
+ this.reqConfig = reqConfig;
23
+ this.handleEncrypt = requestEncrypt;
24
+ this.handleDecrypt = responseDecrypt;
25
+ this.handleToast = handleToast;
26
+ this.handleRequest = handleRequest;
27
+ }
28
+ /**
29
+ * 加锁
30
+ * @param {string} id
31
+ * @param {function} func
32
+ */
33
+ lockR(id, func) {
34
+ MiniHttp.requestLock[id] = {
35
+ lock: true,
36
+ request: func(),
37
+ };
38
+ }
39
+ /**
40
+ * 解锁
41
+ * @param {string} id
42
+ */
43
+ unlockR(id) {
44
+ delete MiniHttp.requestLock[id];
45
+ }
46
+ /**
47
+ * 根据URL和请求参数构造唯一标识符
48
+ * @param {object} req
49
+ */
50
+ getIdFromReq(req) {
51
+ const { url, data = {} } = req;
52
+ return url + JSON.stringify(data);
53
+ }
54
+ /**
55
+ * 根据URL构造唯一标识符
56
+ * @param {object} req
57
+ */
58
+ getIdFromReqUrl(req) {
59
+ return req.url || "";
60
+ }
61
+ /**
62
+ * 请求函数
63
+ * @param {object} _payload 小程序 wx.request 可用参数
64
+ * @param {boolean} hasEncrypt 是否需要加密
65
+ */
66
+ _fetch(_payload, hasEncrypt) {
67
+ let payload = _payload;
68
+ if (hasEncrypt && this.handleEncrypt) {
69
+ payload = this.handleEncrypt(_payload);
70
+ }
71
+ return new Promise((resolve, reject) => {
72
+ this.handleRequest({
73
+ ...payload,
74
+ success: (_res) => {
75
+ let res = _res;
76
+ if (hasEncrypt && this.handleDecrypt) {
77
+ res = this.handleDecrypt(_res);
78
+ }
79
+ resolve(res);
80
+ },
81
+ fail: (err) => {
82
+ reject(err);
83
+ },
84
+ });
85
+ });
86
+ }
87
+ /**
88
+ * 请求{name}接口
89
+ * @param {string} name
90
+ * @param {object} payload
91
+ */
92
+ async request(name, payload) {
93
+ const config = JSON.parse(JSON.stringify(this.reqConfig[name]));
94
+ // 进行请求参数的处理
95
+ const { config: _, ...req } = await this.interceptors.request.invoke({
96
+ url: config.url,
97
+ data: payload || {},
98
+ header: { "content-type": "application/json" },
99
+ method: config.method ? config.method : "POST",
100
+ responseType: "text",
101
+ config,
102
+ });
103
+ let result;
104
+ try {
105
+ // 处理阻塞/去抖/普通请求
106
+ if (_.model === "block") {
107
+ this.lockR(MiniHttp.blockId, () => this._fetch(req, _.hasEncrypt));
108
+ result = await MiniHttp.requestLock[MiniHttp.blockId].request;
109
+ // note: 在具体的回调函数中主动 unlock
110
+ }
111
+ else {
112
+ if (MiniHttp.requestLock[MiniHttp.blockId] &&
113
+ MiniHttp.requestLock[MiniHttp.blockId].lock) {
114
+ await MiniHttp.requestLock[MiniHttp.blockId].request;
115
+ }
116
+ //去抖模式
117
+ if (_.model === "debounce" || _.model === "debounceAgainstUrl") {
118
+ let id;
119
+ if (_.model === "debounceAgainstUrl") {
120
+ // 仅针对url去抖的临时方案
121
+ id = this.getIdFromReqUrl(req);
122
+ }
123
+ else {
124
+ id = this.getIdFromReq(req);
125
+ }
126
+ if (!MiniHttp.requestLock[id]) {
127
+ this.lockR(id, () => this._fetch(req, _.hasEncrypt));
128
+ }
129
+ result = await MiniHttp.requestLock[id].request;
130
+ this.unlockR(id);
131
+ }
132
+ else {
133
+ result = await this._fetch(req, _.hasEncrypt);
134
+ }
135
+ }
136
+ }
137
+ catch (error) {
138
+ this.handleToast && this.handleToast({ title: JSON.stringify(error), icon: "none" });
139
+ }
140
+ // 抛出response 拦截器 (由原来的直接抛出result改为抛出包含res、reqId、refetch的对象)
141
+ // const res = this.interceptors.response.invoke(result);
142
+ const res = this.interceptors.response.invoke({
143
+ res: result,
144
+ reqId: this.getIdFromReq(req),
145
+ refetch: () => {
146
+ // 重新请求
147
+ return { sig: "REFETCH", result: this.request(name, payload || {}) };
148
+ },
149
+ });
150
+ return res;
151
+ }
152
+ }
153
+ exports.default = MiniHttp;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class Interceptor {
4
+ list = [];
5
+ constructor() {
6
+ this.invoke = this.invoke.bind(this);
7
+ }
8
+ use(func) {
9
+ this.list = this.list.concat(func);
10
+ }
11
+ invoke(result) {
12
+ return this.list
13
+ .reduce((acc, func) => acc.then((res) => func(res)), Promise.resolve(result))
14
+ .catch((res) => {
15
+ if (res.sig === "REFETCH") {
16
+ return Promise.resolve(res.result);
17
+ }
18
+ else {
19
+ return Promise.reject(res);
20
+ }
21
+ });
22
+ }
23
+ }
24
+ exports.default = Interceptor;
@@ -2,6 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const diff_1 = require("./diff");
4
4
  const hook_1 = require("../hook");
5
+ const http_1 = require("./http");
6
+ /**
7
+ * promise 化 wx 异步函数
8
+ * @param miniapi
9
+ * @returns
10
+ */
5
11
  const promixify = (miniapi) => {
6
12
  if (typeof miniapi !== "function")
7
13
  return miniapi;
@@ -9,14 +15,33 @@ const promixify = (miniapi) => {
9
15
  miniapi(Object.assign(args, { success: resolve, fail: reject }));
10
16
  });
11
17
  };
18
+ /**
19
+ * 执行 wx 异步函数
20
+ * @param func
21
+ * @param args
22
+ * @returns
23
+ */
12
24
  const run = (func, args = {}) => {
13
25
  if (!func)
14
26
  return;
15
27
  return hook_1.default.run(promixify(func)(args));
16
28
  };
29
+ /**
30
+ * 格式化列表
31
+ * @param lists
32
+ * @param start
33
+ * @param name
34
+ * @returns
35
+ */
17
36
  const formatList = (lists, start, name) => {
18
37
  return (lists || []).reduce((res, val, index) => ({ ...res, [`${name}[${start + index}]`]: val }), {});
19
38
  };
39
+ /**
40
+ * 字段简易规则
41
+ * @param _
42
+ * @param value
43
+ * @returns
44
+ */
20
45
  const ruleValidator = (_, value) => {
21
46
  if (!value)
22
47
  return false;
@@ -27,4 +52,4 @@ const ruleValidator = (_, value) => {
27
52
  }
28
53
  return true;
29
54
  };
30
- exports.default = { diff: diff_1.default, promixify, run, formatList, ruleValidator };
55
+ exports.default = { diff: diff_1.default, promixify, run, formatList, ruleValidator, http: http_1.default };
@@ -6,10 +6,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  * @returns
7
7
  */
8
8
  const isToday = (date) => date && new Date().toDateString() === new Date(date).toDateString();
9
+ /**
10
+ * 当天零点
11
+ */
9
12
  const todayZero = () => new Date(format(now(), "yyyy/MM/dd 00:00:00")).getTime();
13
+ /** 1天ms数 */
10
14
  const oneDay = 86400000;
15
+ /** 1小时ms数 */
11
16
  const oneHour = 3600000;
17
+ /** 1分ms数 */
12
18
  const oneMinute = 60000;
19
+ /** 1秒ms数 */
13
20
  const oneSecond = 1000;
14
21
  /**
15
22
  * 时间格式化
@@ -39,10 +46,16 @@ const format = (time, reg = "yyyy-MM-dd hh:mm:ss") => {
39
46
  map.SSS = map.S.toString().padStart(3, 0);
40
47
  return reg.replace(/\byyyy|yy|MM|M|dd|d|hh|h|mm|m|ss|s|SSS|SS|S\b/g, ($1) => map[$1]);
41
48
  };
49
+ /**
50
+ * 解析时间
51
+ * @param param0
52
+ * @returns
53
+ */
42
54
  function parseTime({ year = 0, month = 0, date = 0, hour = 0, minute = 0, second = 0 }) {
43
55
  const _format = `${year || "yyyy"}/${month || "MM"}/${date || "dd"} ${hour}:${minute}:${second}`;
44
56
  return new Date(format(Date.now(), _format)).getTime();
45
57
  }
58
+ /** 当前时间 */
46
59
  function now() {
47
60
  return Date.now();
48
61
  }
@@ -14,35 +14,52 @@ function compareArray(arr1, arr2) {
14
14
  }
15
15
  return true;
16
16
  }
17
- const copy = (target, fields = []) => {
18
- if (target === undefined)
17
+ /**
18
+ * 拷贝数据
19
+ * @param source 数据源
20
+ * @param fields 可指定拷贝的字段
21
+ * @returns
22
+ */
23
+ const copy = (source, fields = []) => {
24
+ if (source === undefined)
19
25
  return undefined;
20
- const newTarget = JSON.parse(JSON.stringify(target));
21
- if (typeof newTarget !== 'object')
22
- return newTarget;
23
- if (Array.isArray(newTarget) || !fields || fields.length <= 0)
24
- return newTarget;
26
+ const newData = JSON.parse(JSON.stringify(source));
27
+ if (typeof newData !== 'object')
28
+ return newData;
29
+ if (Array.isArray(newData) || !fields || fields.length <= 0)
30
+ return newData;
25
31
  const result = {};
26
- for (const key in newTarget) {
27
- if (fields.includes(key) && newTarget.hasOwnProperty(key)) {
28
- result[key] = newTarget[key];
32
+ for (const key in newData) {
33
+ if (fields.includes(key) && newData.hasOwnProperty(key)) {
34
+ result[key] = newData[key];
29
35
  }
30
36
  }
31
37
  return result;
32
38
  };
33
- const clone = (target) => {
34
- if (!target)
35
- return target;
36
- if (typeof target !== 'object')
37
- return target;
38
- const result = Array.isArray(target) ? [] : {};
39
- for (const key in target) {
40
- if (target.hasOwnProperty(key)) {
41
- result[key] = clone(target[key]);
39
+ /**
40
+ * 克隆实体对象
41
+ * @param source
42
+ * @returns
43
+ */
44
+ const clone = (source) => {
45
+ if (!source)
46
+ return source;
47
+ if (typeof source !== 'object')
48
+ return source;
49
+ const result = Array.isArray(source) ? [] : {};
50
+ for (const key in source) {
51
+ if (source.hasOwnProperty(key)) {
52
+ result[key] = clone(source[key]);
42
53
  }
43
54
  }
44
55
  return result;
45
56
  };
57
+ /**
58
+ * 合并
59
+ * @param target
60
+ * @param source
61
+ * @returns
62
+ */
46
63
  function merge(target, source) {
47
64
  if (source) {
48
65
  for (const s in source) {
@@ -8,6 +8,5 @@ export default class DStore extends DEvent implements IDStore {
8
8
  constructor();
9
9
  dispatch(key: string, payload?: undefined): Promise<any>;
10
10
  query(key: string): Promise<undefined>;
11
- change: (self: any, key: string, value: any) => void;
12
11
  }
13
12
  export declare const storeRef: (source: IDStore, persistConfig?: IDPersistConfig) => any;
@@ -40,8 +40,8 @@ declare const _default: {
40
40
  includes: typeof import("./util/includes").default;
41
41
  merge: <T extends object>(target: T, source: Partial<T>) => T;
42
42
  compareArray: (arr1: any, arr2: any) => boolean;
43
- copy: (target: any, fields?: string[]) => any;
44
- clone: (target: any) => any;
43
+ copy: (source: any, fields?: string[]) => any;
44
+ clone: (source: any) => any;
45
45
  getTag: (value: any) => string;
46
46
  getType: (value: any) => string;
47
47
  toString: () => string;
@@ -76,6 +76,7 @@ declare const _default: {
76
76
  run: (func: any, args?: {}) => Promise<any[]> | undefined;
77
77
  formatList: (lists: any[], start: any, name: any) => any;
78
78
  ruleValidator: (_: any, value: any) => boolean;
79
+ http: typeof import("./modules/mini/http").default;
79
80
  };
80
81
  url: {
81
82
  parse: (qs: any, { sep, eq, max, multiple }?: {
@@ -110,6 +111,10 @@ declare const _default: {
110
111
  validator: (rules: import("./modules/rule/async-validator").Rules) => import("./modules/rule/async-validator").default;
111
112
  validate: (rules: import("./modules/rule/async-validator").Rules, source_: import("./modules/rule/async-validator").Values, o?: any, oc?: any) => Promise<import("./modules/rule/async-validator").Values>;
112
113
  };
114
+ convert: {
115
+ uint8ArrayToString: (arr: any) => string;
116
+ stringToArrayBuffer: (str: any) => ArrayBuffer;
117
+ };
113
118
  event: typeof event;
114
119
  store: typeof store;
115
120
  storeRef: (source: import("./typings").IDStore, persistConfig?: import("./typings").IDPersistConfig | undefined) => any;
@@ -0,0 +1,7 @@
1
+ declare function uint8ArrayToString(arr: any): string;
2
+ declare function stringToArrayBuffer(str: any): ArrayBuffer;
3
+ declare const _default: {
4
+ uint8ArrayToString: typeof uint8ArrayToString;
5
+ stringToArrayBuffer: typeof stringToArrayBuffer;
6
+ };
7
+ export default _default;
@@ -1,4 +1,11 @@
1
1
  import { IDebounceOption, TAnyFunction } from '../../typings';
2
+ /**
3
+ * 防抖 一段时间内,规定时间间隔多次执行,回调触发一次
4
+ * @param func
5
+ * @param wait
6
+ * @param options 参数:leading 开始执行, trailing结束执行
7
+ * @returns
8
+ */
2
9
  declare function debounce(func: TAnyFunction, wait?: number, options?: IDebounceOption): {
3
10
  (...debouncedArgs: any[]): any;
4
11
  cancel: () => void;
@@ -1,4 +1,11 @@
1
1
  import { IDebounceOption, TAnyFunction, Omit } from "../../typings";
2
+ /**
3
+ * 节流 每个间隔内,触发一次
4
+ * @param func
5
+ * @param wait
6
+ * @param options 参数:leading 开始执行, trailing结束执行
7
+ * @returns
8
+ */
2
9
  declare function throttle(func: TAnyFunction, wait?: number, options?: Omit<IDebounceOption, 'maxWait'>): {
3
10
  (...debouncedArgs: any[]): any;
4
11
  cancel: () => void;
@@ -1 +1,7 @@
1
+ /**
2
+ * 计算并格式化差异值
3
+ * @param data
4
+ * @param prevData
5
+ * @returns
6
+ */
1
7
  export default function diff(data: any, prevData: any): {};
@@ -0,0 +1,48 @@
1
+ import Interceptor from "./interceptor";
2
+ export default class MiniHttp {
3
+ reqConfig: {};
4
+ handleEncrypt: (payload: any) => any;
5
+ handleDecrypt: (payload: any) => any;
6
+ handleToast: (payload: any) => any;
7
+ handleRequest: (payload: any) => any;
8
+ interceptors: {
9
+ request: Interceptor;
10
+ response: Interceptor;
11
+ };
12
+ static blockId: string;
13
+ static requestLock: {};
14
+ constructor(options: any);
15
+ /**
16
+ * 加锁
17
+ * @param {string} id
18
+ * @param {function} func
19
+ */
20
+ lockR(id: any, func: any): void;
21
+ /**
22
+ * 解锁
23
+ * @param {string} id
24
+ */
25
+ unlockR(id: any): void;
26
+ /**
27
+ * 根据URL和请求参数构造唯一标识符
28
+ * @param {object} req
29
+ */
30
+ getIdFromReq(req: any): string;
31
+ /**
32
+ * 根据URL构造唯一标识符
33
+ * @param {object} req
34
+ */
35
+ getIdFromReqUrl(req: any): any;
36
+ /**
37
+ * 请求函数
38
+ * @param {object} _payload 小程序 wx.request 可用参数
39
+ * @param {boolean} hasEncrypt 是否需要加密
40
+ */
41
+ _fetch(_payload: any, hasEncrypt: any): Promise<unknown>;
42
+ /**
43
+ * 请求{name}接口
44
+ * @param {string} name
45
+ * @param {object} payload
46
+ */
47
+ request(name: string, payload: any): Promise<any>;
48
+ }
@@ -0,0 +1,6 @@
1
+ export default class Interceptor {
2
+ list: Function[];
3
+ constructor();
4
+ use(func: Function): void;
5
+ invoke(result: any): Promise<any>;
6
+ }
@@ -1,9 +1,11 @@
1
1
  import diff from "./diff";
2
+ import http from "./http";
2
3
  declare const _default: {
3
4
  diff: typeof diff;
4
5
  promixify: (miniapi: any) => any;
5
6
  run: (func: any, args?: {}) => Promise<any[]> | undefined;
6
7
  formatList: (lists: any[], start: any, name: any) => any;
7
8
  ruleValidator: (_: any, value: any) => boolean;
9
+ http: typeof http;
8
10
  };
9
11
  export default _default;
@@ -1,3 +1,8 @@
1
+ /**
2
+ * 解析时间
3
+ * @param param0
4
+ * @returns
5
+ */
1
6
  declare function parseTime({ year, month, date, hour, minute, second }: {
2
7
  year?: number | undefined;
3
8
  month?: number | undefined;
@@ -6,6 +11,7 @@ declare function parseTime({ year, month, date, hour, minute, second }: {
6
11
  minute?: number | undefined;
7
12
  second?: number | undefined;
8
13
  }): number;
14
+ /** 当前时间 */
9
15
  declare function now(): number;
10
16
  declare const _default: {
11
17
  now: typeof now;
@@ -2,6 +2,10 @@ import DPersist from "../class/persist";
2
2
  export type TAnyFunction = (...args: any[]) => void;
3
3
  export type TArrayFunction<T> = (args: T[]) => void;
4
4
  export type Omit<T, K> = Pick<T, Exclude<keyof T, K>>;
5
+ /**
6
+ * leading 开始执行
7
+ * trailing 结束执行
8
+ */
5
9
  export interface IDebounceOption {
6
10
  leading?: boolean;
7
11
  maxWait?: number;
@@ -1,12 +1,18 @@
1
1
  import includes from "./includes";
2
2
  declare function compareArray(arr1: any, arr2: any): boolean;
3
+ /**
4
+ * 合并
5
+ * @param target
6
+ * @param source
7
+ * @returns
8
+ */
3
9
  declare function merge<T extends object>(target: T, source: Partial<T>): T;
4
10
  declare const _default: {
5
11
  includes: typeof includes;
6
12
  merge: typeof merge;
7
13
  compareArray: typeof compareArray;
8
- copy: (target: any, fields?: string[]) => any;
9
- clone: (target: any) => any;
14
+ copy: (source: any, fields?: string[]) => any;
15
+ clone: (source: any) => any;
10
16
  getTag: (value: any) => string;
11
17
  getType: (value: any) => string;
12
18
  toString: () => string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ddan-js",
3
- "version": "1.3.6",
3
+ "version": "1.3.7",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "main": "bin/ddan-js.js",