ddan-js 1.4.0 → 1.4.2

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 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()}dispatch=async(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};query=async e=>{const t=Reflect.get(this,e);let r;return r=null!=t&&""!==t?K.copy(t):await this.dispatch(e),r};commit=(e,t)=>{K.isObject(t)&&(t=K.copy(t)),this[e]=t}}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};
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 u=`${e||"yyyy"}/${r||"MM"}/${n||"dd"} ${s}:${i}:${o}`;return new Date(t(Date.now(),u)).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:u,hasOwnProperty:a,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=a.call(e,l),r=e[l];let n=!1;try{e[l]=void 0,n=!0}catch(e){}const s=u.call(e);return n&&(t?e[l]=r:delete e[l]),s}(e):u.call(e)}var d={getTag:f,getType:function(e){return(f(e).match(/\w+/g)||["object","Undefined"])[1]||""},toString:u,hasOwnProperty:a,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 q=Array.isArray;function w(e){return null!=e&&function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=g}(e.length)&&!k(e)}function O(e){return v(e)&&w(e)}function k(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||!q(e)&&v(e)&&"[object String]"==d.getTag(e)},isChinese:function(e){return!!e&&!!/^[\u4E00-\u9FA5]+$/.test(e)},isObject:b,isObjectLike:v,isPlainObject:function(e){if(!v(e)||"[object Object]"!=d.getTag(e))return!1;if(null===Object.getPrototypeOf(e))return!0;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t},isSymbol:function(e){return"symbol"==typeof e||v(e)&&"[object Symbol]"===d.getTag(e)},isFunction:k,isArray:q,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:w,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 $=NaN,F=/^\s+|\s+$/g,A=/^[-+]0x[0-9a-f]+$/i,S=/^0b[01]+$/i,x=/^0o[0-7]+$/i,E=parseInt,R=1/0,P=17976931348623157e292;function I(e){if("number"==typeof e)return e;if(j.isSymbol(e))return $;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):A.test(e)?$:+e}function T(e){return e?(e=I(e))===R||e===-R?(e<0?-1:1)*P:e==e?e:0:0===e?e:0}var C={toNumber:I,toFinite:T,toInteger:function(e){var t=T(e),r=t%1;return t==t?r?t-r:t:0}};const D="Expected a function",M=Math.max,N=Math.min;function _(e,t=0,r={}){var n,s,i,o,u,a,c=0,l=!1,f=!1,d=!0;if("function"!=typeof e)throw new TypeError(D);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-a;return void 0===a||r>=t||r<0||f&&e-c>=i}function y(){var e=Date.now();if(p(e))return g(e);u=setTimeout(y,function(e){var r=t-(e-a);return f?N(r,i-(e-c)):r}(e))}function g(e){return u=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,a=r,i){if(void 0===u)return function(e){return c=e,u=setTimeout(y,t),l?h(e):o}(a);if(f)return u=setTimeout(y,t),h(a)}return void 0===u&&(u=setTimeout(y,t)),o}return t=C.toNumber(t)||0,j.isObject(r)&&(l=!!r.leading,i=(f="maxWait"in r)?M(C.toNumber(r.maxWait)||0,t):i,d="trailing"in r?!!r.trailing:d),m.cancel=function(){void 0!==u&&clearTimeout(u),c=0,n=a=s=u=void 0},m.flush=function(){return void 0===u?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}};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 H,W,B=(H=Object.keys,W=Object,function(e){return H(W(e))}),Z=Math.max;function G(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 Y=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]=Y(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)?G(e):function(e){if(!j.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?C.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:Y};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],u=re(s),a=re(o);if(s!==o)if(u===te&&a===u&&s.length>=o.length)for(let e=0;e<s.length;e++)se(s[e],o[e],r,`${n?n+".":""}${i}[${e}]`);else if(u===ee&&a===u&&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={};handleRequest;handleEncrypt;handleDecrypt;handleError;interceptors={request:new ie,response:new ie};constructor(e){const{reqConfig:t={},requestEncrypt:r,responseDecrypt:n,handleError:s,api:i}=e;this.reqConfig=t,this.handleEncrypt=r,this.handleDecrypt=n,this.handleError=s,this.handleRequest=i}static blockId="blockid";static requestLock={};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=K.copy(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||"debounceUrl"===n.model){let e;e="debounceUrl"===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.handleError&&this.handleError(e)}return this.interceptors.response.invoke({res:i,reqId:this.getIdFromReq(s),refetch:()=>({sig:"REFETCH",result:this.request(e,t||{})})})}}const ue=e=>"function"!=typeof e?e:(t={})=>new Promise(((r,n)=>{e(Object.assign(t,{success:r,fail:n}))}));var ae={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:ue,run:(e,t={})=>{if(e)return U.run(ue(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,u=n||1e3;let a=(e=e.split(t)).length;u>0&&a>u&&(a=u);for(let t=0;t<a;++t){let n,u,a,c,l=e[t].replace(o,"%20"),f=l.indexOf(r);f>=0?(n=l.substr(0,f),u=l.substr(f+1)):(n=l,u=""),a=decodeURIComponent(n),c=decodeURIComponent(u),ce(i,a)&&s?Array.isArray(i[a])?i[a].push(c):i[a]=[i[a],c]:i[a]=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=({url:e,options:t})=>{const r={"Content-Type":"application/json; charset=utf-8",...t.headers||{}};return t.headers=r,new Promise(((r,n)=>{fetch(e,t).then((e=>{r(e.json())})).catch((e=>{n(e)}))}))};function ye(e){const{response:t}=e;return 0===t.code?Promise.resolve(t):Promise.reject(t)}function ge(e){const{url:t="",host:r,options:n}=e;let s=e;if(t.startsWith("http://")||t.startsWith("https://")||(s.url=(r||"")+t),"GET"===n.method.toUpperCase()&&n.body){const e=JSON.parse(n.body);if(K.isPlainObject(e)){const r=Object.keys(e).map((t=>`${encodeURIComponent(t)}=${encodeURIComponent(e[t])}`)).join("&"),n=-1===t.indexOf("?")?"?":"&";s.url=`${s.url||""}${n}${r}`,delete s.options.body}}return console.log("[debug] "),s}class me{host="";reqConfig={};interceptors={request:new ie,response:new ie};constructor(e){this.host=e.host||"",this.reqConfig=e.config,this.interceptors.request.use(e.handleRequest||[]),this.interceptors.request.use(ge),this.interceptors.response.use(e.handleResponse||ye)}static blockId="blockid";static requestLock={};lockR(e,t){me.requestLock[e]={lock:!0,request:t()}}unlockR(e){delete me.requestLock[e]}getIdFromReq(e){const{url:t,data:r={}}=e;return t+JSON.stringify(r)}getIdFromReqUrl(e){return e.url||""}async fetch(e,t){const r=K.copy(this.reqConfig[e])||{},n={host:this.host,url:r.url||"",options:{...r||{},body:JSON.stringify({...t||{}})}};try{const s=await this.interceptors.request.invoke(n);let i;if(delete s.options.plugins,"block"===r.model)this.lockR(me.blockId,(()=>pe(s))),i=await me.requestLock[me.blockId].request;else if(me.requestLock[me.blockId]&&me.requestLock[me.blockId].lock&&await me.requestLock[me.blockId].request,"debounce"===r.model||"debounceUrl"===r.model){let e;e="debounceUrl"===r.model?this.getIdFromReqUrl(s):this.getIdFromReq(s),me.requestLock[e]||this.lockR(e,(()=>pe(s))),i=await me.requestLock[e].request,this.unlockR(e)}else i=await pe(s);return this.interceptors.response.invoke({response:i,refetch:()=>({sig:"REFETCH",result:this.fetch(e,t)})})}catch(e){return Promise.reject(e)}}}const be=/%[sdj%]/g;let ve=()=>{};function qe(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 we(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(be,(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 Oe(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 ke(e,t,r){let n=0;const s=e.length;!function i(o){if(o&&o.length)return void r(o);const u=n;n+=1,u<s?t(e[u],i):r([])}([])}"undefined"!=typeof process&&process.env&&"production"!==process.env.NODE_ENV&&"undefined"!=typeof window&&"undefined"!=typeof document&&(ve=(e,t)=>{"undefined"!=typeof console&&console.warn&&"undefined"==typeof ASYNC_VALIDATOR_NO_WARNING&&t.every((e=>"string"==typeof e))&&console.warn(e,t)});class je extends Error{errors;fields;constructor(e,t){super("Async Validation Error"),this.errors=e,this.fields=t}}function $e(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);ke(o,r,(e=>(n(e),e.length?i(new je(e,qe(e))):t(s))))}));return t.catch((e=>e)),t}const i=!0===t.firstFields?Object.keys(e):t.firstFields||[],o=Object.keys(e),u=o.length;let a=0;const c=[],l=new Promise(((t,l)=>{const f=e=>{if(c.push.apply(c,e),a++,a===u)return n(c),c.length?l(new je(c,qe(c))):t(s)};o.length||(n(c),t(s)),o.forEach((t=>{const n=e[t];-1!==i.indexOf(t)?ke(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 Fe(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 Ae(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 Se=(e,t,r,n,s,i)=>{!e.required||r.hasOwnProperty(e.field||"")&&!Oe(t,i||e.type)||n.push(we(s.messages.required,e.fullField))};let xe;const Ee=/^(([^<>()\[\]\\.,;:\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,}))$/,Re=/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i,Pe={integer:e=>Pe.number(e)&&parseInt(e,10)===e,float:e=>Pe.number(e)&&!Pe.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&&!Pe.array(e),method:e=>"function"==typeof e,email:e=>"string"==typeof e&&e.length<=320&&!!e.match(Ee),url:e=>"string"==typeof e&&e.length<=2048&&!!e.match((()=>{if(xe)return xe;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}$`),u=new RegExp(`^${s}$`),a=e=>e&&e.exact?i:new RegExp(`(?:${t(e)}${r}${t(e)})|(?:${t(e)}${s}${t(e)})`,"g");a.v4=e=>e&&e.exact?o:new RegExp(`${t(e)}${r}${t(e)}`,"g"),a.v6=e=>e&&e.exact?u:new RegExp(`${t(e)}${s}${t(e)}`,"g");const c=a.v4().source,l=a.v6().source;return xe=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"),xe})()),hex:e=>"string"==typeof e&&!!e.match(Re)},Ie="enum";var Te={required:Se,whitespace:(e,t,r,n,s)=>{(/^\s+$/.test(t)||""===t)&&n.push(we(s.messages.whitespace,e.fullField))},type:(e,t,r,n,s)=>{if(e.required&&void 0===t)return void Se(e,t,r,n,s);const i=e.type;["integer","float","array","regexp","object","method","email","number","date","url","hex"].indexOf(i)>-1?Pe[i](t)||n.push(we(s.messages.types[i],e.fullField,e.type)):i&&typeof t!==e.type&&n.push(we(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,u="number"==typeof e.max,a=/[\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(a,"_").length),i?c!==e.len&&n.push(we(s.messages[l].len,e.fullField,e.len)):o&&!u&&c<e.min?n.push(we(s.messages[l].min,e.fullField,e.min)):u&&!o&&c>e.max?n.push(we(s.messages[l].max,e.fullField,e.max)):o&&u&&(c<e.min||c>e.max)&&n.push(we(s.messages[l].range,e.fullField,e.min,e.max))},enum:(e,t,r,n,s)=>{e[Ie]=Array.isArray(e[Ie])?e[Ie]:[],-1===e[Ie].indexOf(t)&&n.push(we(s.messages[Ie],e.fullField,e[Ie].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(we(s.messages.pattern.mismatch,e.fullField,t,e.pattern));else if("string"==typeof e.pattern){new RegExp(e.pattern).test(t)||n.push(we(s.messages.pattern.mismatch,e.fullField,t,e.pattern))}}};const Ce=(e,t,r,n,s)=>{const i=e.type,o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(Oe(t,i)&&!e.required)return r();Te.required(e,t,n,o,s,i),Oe(t,i)||Te.type(e,t,n,o,s)}r(o)};var De={string:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field||"")){if(Oe(t,"string")&&!e.required)return r();Te.required(e,t,n,i,s,"string"),Oe(t,"string")||(Te.type(e,t,n,i,s),Te.range(e,t,n,i,s),Te.pattern(e,t,n,i,s),!0===e.whitespace&&Te.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(Oe(t)&&!e.required)return r();Te.required(e,t,n,i,s),void 0!==t&&Te.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),Oe(t)&&!e.required)return r();Te.required(e,t,n,i,s),void 0!==t&&(Te.type(e,t,n,i,s),Te.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(Oe(t)&&!e.required)return r();Te.required(e,t,n,i,s),void 0!==t&&Te.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(Oe(t)&&!e.required)return r();Te.required(e,t,n,i,s),Oe(t)||Te.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(Oe(t)&&!e.required)return r();Te.required(e,t,n,i,s),void 0!==t&&(Te.type(e,t,n,i,s),Te.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(Oe(t)&&!e.required)return r();Te.required(e,t,n,i,s),void 0!==t&&(Te.type(e,t,n,i,s),Te.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();Te.required(e,t,n,i,s,"array"),null!=t&&(Te.type(e,t,n,i,s),Te.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(Oe(t)&&!e.required)return r();Te.required(e,t,n,i,s),void 0!==t&&Te.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(Oe(t)&&!e.required)return r();Te.required(e,t,n,i,s),void 0!==t&&Te.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(Oe(t,"string")&&!e.required)return r();Te.required(e,t,n,i,s),Oe(t,"string")||Te.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(Oe(t,"date")&&!e.required)return r();if(Te.required(e,t,n,i,s),!Oe(t,"date")){let r;r=t instanceof Date?t:new Date(t),Te.type(e,r,n,i,s),r&&Te.range(e,r.getTime(),n,i,s)}}r(i)},url:Ce,hex:Ce,email:Ce,required:(e,t,r,n,s)=>{const i=[],o=Array.isArray(t)?"array":typeof t;Te.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(Oe(t)&&!e.required)return r();Te.required(e,t,n,i,s)}r(i)}};function Me(){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 Ne=Me();class _e{static register=function(e,t){if("function"!=typeof t)throw new Error("Cannot register a validator by type, validator is not a function");De[e]=t};static warning=ve;static messages=Ne;static validators=De;rules={};_messages=Ne;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=Ae(Me(),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===Ne&&(e=Me()),Ae(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 u={};return $e(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 a(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&&_e.warning("async-validator:",c),c.length&&void 0!==r.message&&(c=[].concat(r.message));let l=c.map(Fe(r,n));if(s.first&&l.length)return u[r.field]=1,t(l);if(o){if(r.required&&!e.value)return void 0!==r.message?l=[].concat(r.message).map(Fe(r,n)):s.error&&(l=[s.error(r,we(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(a.bind(null,e))}));const u=new _e(o);u.messages(s.messages),e.rule.options&&(e.rule.options.messages=s.messages,e.rule.options.error=s.error),u.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=qe(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&&!De.hasOwnProperty(e.type))throw new Error(we("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]?De.required:De[this.getType(e)]||void 0}}function Le(e){return new _e(e)}var Ue={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:Le,validate:function(e,t,r={},n=(()=>{})){return U.run(Le(e).validate(t,r,n))}};var Ve={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},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}};class Je{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 ze extends Q{setters={};getters={};actions={};persist;constructor(){super()}dispatch=async(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};query=async e=>{const t=Reflect.get(this,e);let r;return r=null!=t&&""!==t?K.copy(t):await this.dispatch(e),r};commit=(e,t)=>{K.isObject(t)&&(t=K.copy(t)),this[e]=t}}var He={gbk:e,time:n,hook:U,math:V,util:K,list:X,mini:ae,url:he,rule:Ue,convert:Ve,Event:Q,Http:me,Store:ze,storeRef:(e,t)=>{const r=Object.assign(new ze,e||{});r.__persist=new Je(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:Je,persistConfig:(e,t,r)=>({key:e,fields:t,storage:r})};export{He 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 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()}dispatch=async(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};query=async e=>{const t=Reflect.get(this,e);let r;return r=null!=t&&""!==t?K.copy(t):await this.dispatch(e),r};commit=(e,t)=>{K.isObject(t)&&(t=K.copy(t)),this[e]=t}}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}));
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 u=`${e||"yyyy"}/${r||"MM"}/${n||"dd"} ${s}:${i}:${o}`;return new Date(t(Date.now(),u)).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:u,hasOwnProperty:a,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=a.call(e,l),r=e[l];let n=!1;try{e[l]=void 0,n=!0}catch(e){}const s=u.call(e);return n&&(t?e[l]=r:delete e[l]),s}(e):u.call(e)}var d={getTag:f,getType:function(e){return(f(e).match(/\w+/g)||["object","Undefined"])[1]||""},toString:u,hasOwnProperty:a,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 q=Array.isArray;function w(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)&&w(e)}function j(e){var t=b(e)?d.getTag(e):"";return t===h||t===p||t===y}var k={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||!q(e)&&v(e)&&"[object String]"==d.getTag(e)},isChinese:function(e){return!!e&&!!/^[\u4E00-\u9FA5]+$/.test(e)},isObject:b,isObjectLike:v,isPlainObject:function(e){if(!v(e)||"[object Object]"!=d.getTag(e))return!1;if(null===Object.getPrototypeOf(e))return!0;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t},isSymbol:function(e){return"symbol"==typeof e||v(e)&&"[object Symbol]"===d.getTag(e)},isFunction:j,isArray:q,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:w,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 $=NaN,F=/^\s+|\s+$/g,A=/^[-+]0x[0-9a-f]+$/i,S=/^0b[01]+$/i,x=/^0o[0-7]+$/i,E=parseInt,R=1/0,P=17976931348623157e292;function I(e){if("number"==typeof e)return e;if(k.isSymbol(e))return $;if(k.isObject(e)){const t="function"==typeof e.valueOf?e.valueOf():e;e=k.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):A.test(e)?$:+e}function T(e){return e?(e=I(e))===R||e===-R?(e<0?-1:1)*P:e==e?e:0:0===e?e:0}var C={toNumber:I,toFinite:T,toInteger:function(e){var t=T(e),r=t%1;return t==t?r?t-r:t:0}};const D="Expected a function",M=Math.max,N=Math.min;function _(e,t=0,r={}){var n,s,i,o,u,a,c=0,l=!1,f=!1,d=!0;if("function"!=typeof e)throw new TypeError(D);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-a;return void 0===a||r>=t||r<0||f&&e-c>=i}function y(){var e=Date.now();if(p(e))return g(e);u=setTimeout(y,function(e){var r=t-(e-a);return f?N(r,i-(e-c)):r}(e))}function g(e){return u=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,a=r,i){if(void 0===u)return function(e){return c=e,u=setTimeout(y,t),l?h(e):o}(a);if(f)return u=setTimeout(y,t),h(a)}return void 0===u&&(u=setTimeout(y,t)),o}return t=C.toNumber(t)||0,k.isObject(r)&&(l=!!r.leading,i=(f="maxWait"in r)?M(C.toNumber(r.maxWait)||0,t):i,d="trailing"in r?!!r.trailing:d),m.cancel=function(){void 0!==u&&clearTimeout(u),c=0,n=a=s=u=void 0},m.flush=function(){return void 0===u?o:g(Date.now())},m}class L{source;constructor(e){this.source=e}run(){let e;try{let t;return t=k.isFunction(this.source)?this.source():this.source,e=k.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 k.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}};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 H,W,B=(H=Object.keys,W=Object,function(e){return H(W(e))}),Z=Math.max;function G(e,t){var r=k.isArray(e)||k.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||k.isIndex(i,n))||r.push(i);return r}const Y=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]=Y(e[r]));return t};var K={...k,...d,includes:function(e,t,r,n){e=k.isArrayLike(e)?e:function(e){return e?z(e,function(e){return k.isArrayLike(e)?G(e):function(e){if(!k.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?C.toInteger(r):0;var s=e.length;return r<0&&(r=Z(s+r,0)),k.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:Y};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(!k.isFunction(t))return;if(!k.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(!k.isArray(e)||e.length<=0)return[];const r=t;return e.slice(r)},take:(e,t,r=0)=>{if(!k.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=>!k.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],u=re(s),a=re(o);if(s!==o)if(u===te&&a===u&&s.length>=o.length)for(let e=0;e<s.length;e++)se(s[e],o[e],r,`${n?n+".":""}${i}[${e}]`);else if(u===ee&&a===u&&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={};handleRequest;handleEncrypt;handleDecrypt;handleError;interceptors={request:new ie,response:new ie};constructor(e){const{reqConfig:t={},requestEncrypt:r,responseDecrypt:n,handleError:s,api:i}=e;this.reqConfig=t,this.handleEncrypt=r,this.handleDecrypt=n,this.handleError=s,this.handleRequest=i}static blockId="blockid";static requestLock={};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=K.copy(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||"debounceUrl"===n.model){let e;e="debounceUrl"===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.handleError&&this.handleError(e)}return this.interceptors.response.invoke({res:i,reqId:this.getIdFromReq(s),refetch:()=>({sig:"REFETCH",result:this.request(e,t||{})})})}}const ue=e=>"function"!=typeof e?e:(t={})=>new Promise(((r,n)=>{e(Object.assign(t,{success:r,fail:n}))}));var ae={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:ue,run:(e,t={})=>{if(e)return U.run(ue(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,u=n||1e3;let a=(e=e.split(t)).length;u>0&&a>u&&(a=u);for(let t=0;t<a;++t){let n,u,a,c,l=e[t].replace(o,"%20"),f=l.indexOf(r);f>=0?(n=l.substr(0,f),u=l.substr(f+1)):(n=l,u=""),a=decodeURIComponent(n),c=decodeURIComponent(u),ce(i,a)&&s?Array.isArray(i[a])?i[a].push(c):i[a]=[i[a],c]:i[a]=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=({url:e,options:t})=>{const r={"Content-Type":"application/json; charset=utf-8",...t.headers||{}};return t.headers=r,new Promise(((r,n)=>{fetch(e,t).then((e=>{r(e.json())})).catch((e=>{n(e)}))}))};function ye(e){const{response:t}=e;return 0===t.code?Promise.resolve(t):Promise.reject(t)}function ge(e){const{url:t="",host:r,options:n}=e;let s=e;if(t.startsWith("http://")||t.startsWith("https://")||(s.url=(r||"")+t),"GET"===n.method.toUpperCase()&&n.body){const e=JSON.parse(n.body);if(K.isPlainObject(e)){const r=Object.keys(e).map((t=>`${encodeURIComponent(t)}=${encodeURIComponent(e[t])}`)).join("&"),n=-1===t.indexOf("?")?"?":"&";s.url=`${s.url||""}${n}${r}`,delete s.options.body}}return console.log("[debug] "),s}class me{host="";reqConfig={};interceptors={request:new ie,response:new ie};constructor(e){this.host=e.host||"",this.reqConfig=e.config,this.interceptors.request.use(e.handleRequest||[]),this.interceptors.request.use(ge),this.interceptors.response.use(e.handleResponse||ye)}static blockId="blockid";static requestLock={};lockR(e,t){me.requestLock[e]={lock:!0,request:t()}}unlockR(e){delete me.requestLock[e]}getIdFromReq(e){const{url:t,data:r={}}=e;return t+JSON.stringify(r)}getIdFromReqUrl(e){return e.url||""}async fetch(e,t){const r=K.copy(this.reqConfig[e])||{},n={host:this.host,url:r.url||"",options:{...r||{},body:JSON.stringify({...t||{}})}};try{const s=await this.interceptors.request.invoke(n);let i;if(delete s.options.plugins,"block"===r.model)this.lockR(me.blockId,(()=>pe(s))),i=await me.requestLock[me.blockId].request;else if(me.requestLock[me.blockId]&&me.requestLock[me.blockId].lock&&await me.requestLock[me.blockId].request,"debounce"===r.model||"debounceUrl"===r.model){let e;e="debounceUrl"===r.model?this.getIdFromReqUrl(s):this.getIdFromReq(s),me.requestLock[e]||this.lockR(e,(()=>pe(s))),i=await me.requestLock[e].request,this.unlockR(e)}else i=await pe(s);return this.interceptors.response.invoke({response:i,refetch:()=>({sig:"REFETCH",result:this.fetch(e,t)})})}catch(e){return Promise.reject(e)}}}const be=/%[sdj%]/g;let ve=()=>{};function qe(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 we(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(be,(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 Oe(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 je(e,t,r){let n=0;const s=e.length;!function i(o){if(o&&o.length)return void r(o);const u=n;n+=1,u<s?t(e[u],i):r([])}([])}"undefined"!=typeof process&&process.env&&"production"!==process.env.NODE_ENV&&"undefined"!=typeof window&&"undefined"!=typeof document&&(ve=(e,t)=>{"undefined"!=typeof console&&console.warn&&"undefined"==typeof ASYNC_VALIDATOR_NO_WARNING&&t.every((e=>"string"==typeof e))&&console.warn(e,t)});class ke extends Error{errors;fields;constructor(e,t){super("Async Validation Error"),this.errors=e,this.fields=t}}function $e(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);je(o,r,(e=>(n(e),e.length?i(new ke(e,qe(e))):t(s))))}));return t.catch((e=>e)),t}const i=!0===t.firstFields?Object.keys(e):t.firstFields||[],o=Object.keys(e),u=o.length;let a=0;const c=[],l=new Promise(((t,l)=>{const f=e=>{if(c.push.apply(c,e),a++,a===u)return n(c),c.length?l(new ke(c,qe(c))):t(s)};o.length||(n(c),t(s)),o.forEach((t=>{const n=e[t];-1!==i.indexOf(t)?je(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 Fe(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 Ae(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 Se=(e,t,r,n,s,i)=>{!e.required||r.hasOwnProperty(e.field||"")&&!Oe(t,i||e.type)||n.push(we(s.messages.required,e.fullField))};let xe;const Ee=/^(([^<>()\[\]\\.,;:\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,}))$/,Re=/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i,Pe={integer:e=>Pe.number(e)&&parseInt(e,10)===e,float:e=>Pe.number(e)&&!Pe.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&&!Pe.array(e),method:e=>"function"==typeof e,email:e=>"string"==typeof e&&e.length<=320&&!!e.match(Ee),url:e=>"string"==typeof e&&e.length<=2048&&!!e.match((()=>{if(xe)return xe;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}$`),u=new RegExp(`^${s}$`),a=e=>e&&e.exact?i:new RegExp(`(?:${t(e)}${r}${t(e)})|(?:${t(e)}${s}${t(e)})`,"g");a.v4=e=>e&&e.exact?o:new RegExp(`${t(e)}${r}${t(e)}`,"g"),a.v6=e=>e&&e.exact?u:new RegExp(`${t(e)}${s}${t(e)}`,"g");const c=a.v4().source,l=a.v6().source;return xe=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"),xe})()),hex:e=>"string"==typeof e&&!!e.match(Re)},Ie="enum";var Te={required:Se,whitespace:(e,t,r,n,s)=>{(/^\s+$/.test(t)||""===t)&&n.push(we(s.messages.whitespace,e.fullField))},type:(e,t,r,n,s)=>{if(e.required&&void 0===t)return void Se(e,t,r,n,s);const i=e.type;["integer","float","array","regexp","object","method","email","number","date","url","hex"].indexOf(i)>-1?Pe[i](t)||n.push(we(s.messages.types[i],e.fullField,e.type)):i&&typeof t!==e.type&&n.push(we(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,u="number"==typeof e.max,a=/[\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(a,"_").length),i?c!==e.len&&n.push(we(s.messages[l].len,e.fullField,e.len)):o&&!u&&c<e.min?n.push(we(s.messages[l].min,e.fullField,e.min)):u&&!o&&c>e.max?n.push(we(s.messages[l].max,e.fullField,e.max)):o&&u&&(c<e.min||c>e.max)&&n.push(we(s.messages[l].range,e.fullField,e.min,e.max))},enum:(e,t,r,n,s)=>{e[Ie]=Array.isArray(e[Ie])?e[Ie]:[],-1===e[Ie].indexOf(t)&&n.push(we(s.messages[Ie],e.fullField,e[Ie].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(we(s.messages.pattern.mismatch,e.fullField,t,e.pattern));else if("string"==typeof e.pattern){new RegExp(e.pattern).test(t)||n.push(we(s.messages.pattern.mismatch,e.fullField,t,e.pattern))}}};const Ce=(e,t,r,n,s)=>{const i=e.type,o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(Oe(t,i)&&!e.required)return r();Te.required(e,t,n,o,s,i),Oe(t,i)||Te.type(e,t,n,o,s)}r(o)};var De={string:(e,t,r,n,s)=>{const i=[];if(e.required||!e.required&&n.hasOwnProperty(e.field||"")){if(Oe(t,"string")&&!e.required)return r();Te.required(e,t,n,i,s,"string"),Oe(t,"string")||(Te.type(e,t,n,i,s),Te.range(e,t,n,i,s),Te.pattern(e,t,n,i,s),!0===e.whitespace&&Te.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(Oe(t)&&!e.required)return r();Te.required(e,t,n,i,s),void 0!==t&&Te.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),Oe(t)&&!e.required)return r();Te.required(e,t,n,i,s),void 0!==t&&(Te.type(e,t,n,i,s),Te.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(Oe(t)&&!e.required)return r();Te.required(e,t,n,i,s),void 0!==t&&Te.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(Oe(t)&&!e.required)return r();Te.required(e,t,n,i,s),Oe(t)||Te.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(Oe(t)&&!e.required)return r();Te.required(e,t,n,i,s),void 0!==t&&(Te.type(e,t,n,i,s),Te.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(Oe(t)&&!e.required)return r();Te.required(e,t,n,i,s),void 0!==t&&(Te.type(e,t,n,i,s),Te.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();Te.required(e,t,n,i,s,"array"),null!=t&&(Te.type(e,t,n,i,s),Te.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(Oe(t)&&!e.required)return r();Te.required(e,t,n,i,s),void 0!==t&&Te.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(Oe(t)&&!e.required)return r();Te.required(e,t,n,i,s),void 0!==t&&Te.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(Oe(t,"string")&&!e.required)return r();Te.required(e,t,n,i,s),Oe(t,"string")||Te.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(Oe(t,"date")&&!e.required)return r();if(Te.required(e,t,n,i,s),!Oe(t,"date")){let r;r=t instanceof Date?t:new Date(t),Te.type(e,r,n,i,s),r&&Te.range(e,r.getTime(),n,i,s)}}r(i)},url:Ce,hex:Ce,email:Ce,required:(e,t,r,n,s)=>{const i=[],o=Array.isArray(t)?"array":typeof t;Te.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(Oe(t)&&!e.required)return r();Te.required(e,t,n,i,s)}r(i)}};function Me(){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 Ne=Me();class _e{static register=function(e,t){if("function"!=typeof t)throw new Error("Cannot register a validator by type, validator is not a function");De[e]=t};static warning=ve;static messages=Ne;static validators=De;rules={};_messages=Ne;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=Ae(Me(),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===Ne&&(e=Me()),Ae(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 u={};return $e(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 a(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&&_e.warning("async-validator:",c),c.length&&void 0!==r.message&&(c=[].concat(r.message));let l=c.map(Fe(r,n));if(s.first&&l.length)return u[r.field]=1,t(l);if(o){if(r.required&&!e.value)return void 0!==r.message?l=[].concat(r.message).map(Fe(r,n)):s.error&&(l=[s.error(r,we(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(a.bind(null,e))}));const u=new _e(o);u.messages(s.messages),e.rule.options&&(e.rule.options.messages=s.messages,e.rule.options.error=s.error),u.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=qe(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&&!De.hasOwnProperty(e.type))throw new Error(we("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]?De.required:De[this.getType(e)]||void 0}}function Le(e){return new _e(e)}var Ue={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:Le,validate:function(e,t,r={},n=(()=>{})){return U.run(Le(e).validate(t,r,n))}};var Ve={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},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}};class Je{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 ze extends Q{setters={};getters={};actions={};persist;constructor(){super()}dispatch=async(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};query=async e=>{const t=Reflect.get(this,e);let r;return r=null!=t&&""!==t?K.copy(t):await this.dispatch(e),r};commit=(e,t)=>{K.isObject(t)&&(t=K.copy(t)),this[e]=t}}var He={gbk:e,time:n,hook:U,math:V,util:K,list:X,mini:ae,url:he,rule:Ue,convert:Ve,Event:Q,Http:me,Store:ze,storeRef:(e,t)=>{const r=Object.assign(new ze,e||{});r.__persist=new Je(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:Je,persistConfig:(e,t,r)=>({key:e,fields:t,storage:r})};return He}));
package/bin/lib/index.js CHANGED
@@ -9,6 +9,7 @@ const event_1 = require("./class/event");
9
9
  const list_1 = require("./modules/list");
10
10
  const mini_1 = require("./modules/mini");
11
11
  const url_1 = require("./modules/url");
12
+ const http_1 = require("./modules/http");
12
13
  const rule_1 = require("./modules/rule");
13
14
  const convert_1 = require("./modules/convert");
14
15
  const store_1 = require("./class/store");
@@ -25,6 +26,7 @@ exports.default = {
25
26
  rule: rule_1.default,
26
27
  convert: convert_1.default,
27
28
  Event: event_1.default,
29
+ Http: http_1.default,
28
30
  Store: store_1.default,
29
31
  storeRef: store_1.storeRef,
30
32
  Persist: persist_1.default,
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const time_1 = require("./time");
3
4
  function uint8ArrayToString(arr) {
4
5
  let dataString = "";
5
6
  for (let i = 0; i < arr.length; i++) {
@@ -16,4 +17,16 @@ function stringToArrayBuffer(str) {
16
17
  }
17
18
  return buffer;
18
19
  }
19
- exports.default = { uint8ArrayToString, stringToArrayBuffer };
20
+ function randomString(len, prefix = false) {
21
+ len = len || 32;
22
+ const chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
23
+ const maxPos = chars.length;
24
+ let pwd = "";
25
+ for (let i = 0; i < len; i++) {
26
+ pwd += chars.charAt(Math.floor(Math.random() * maxPos));
27
+ }
28
+ if (!prefix)
29
+ return pwd;
30
+ return time_1.default.format(new Date, "yyyyMMddhhmmss") + pwd;
31
+ }
32
+ exports.default = { uint8ArrayToString, stringToArrayBuffer, randomString };
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const interceptor_1 = require("./interceptor");
4
+ const util_1 = require("../../util");
5
+ const request = ({ url, options }) => {
6
+ const headers = {
7
+ "Content-Type": "application/json; charset=utf-8",
8
+ ...(options.headers || {})
9
+ };
10
+ options.headers = headers;
11
+ return new Promise((resolve, reject) => {
12
+ fetch(url, options)
13
+ .then(result => {
14
+ resolve(result.json());
15
+ })
16
+ .catch((error) => {
17
+ reject(error);
18
+ });
19
+ });
20
+ };
21
+ function handleResponse(result) {
22
+ const { response } = result;
23
+ return response.code === 0
24
+ ? Promise.resolve(response)
25
+ : Promise.reject(response);
26
+ }
27
+ function handleDefaultRequest(httpRequest) {
28
+ const { url = "", host, options } = httpRequest;
29
+ let result = httpRequest;
30
+ if (!url.startsWith("http://") && !url.startsWith("https://")) {
31
+ result.url = (host || "") + url;
32
+ }
33
+ if (options.method.toUpperCase() === "GET" &&
34
+ options.body) {
35
+ const data = JSON.parse(options.body);
36
+ if (util_1.default.isPlainObject(data)) {
37
+ const query = Object.keys(data)
38
+ .map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(data[key])}`)
39
+ .join("&");
40
+ const symbol = url.indexOf("?") === -1 ? "?" : "&";
41
+ result.url = `${result.url || ""}${symbol}${query}`;
42
+ delete result.options.body;
43
+ }
44
+ }
45
+ console.log(`[debug] `);
46
+ return result;
47
+ }
48
+ class Http {
49
+ host = "";
50
+ reqConfig = {};
51
+ interceptors = {
52
+ request: new interceptor_1.default(),
53
+ response: new interceptor_1.default(),
54
+ };
55
+ constructor(_) {
56
+ this.host = _.host || "";
57
+ this.reqConfig = _.config;
58
+ this.interceptors.request.use(_.handleRequest || []);
59
+ this.interceptors.request.use(handleDefaultRequest);
60
+ this.interceptors.response.use(_.handleResponse || handleResponse);
61
+ }
62
+ // 阻塞请求的锁id
63
+ static blockId = "blockid";
64
+ // 请求锁字典
65
+ static requestLock = {};
66
+ /**
67
+ * 加锁
68
+ * @param {string} id
69
+ * @param {function} func
70
+ */
71
+ lockR(id, func) {
72
+ Http.requestLock[id] = {
73
+ lock: true,
74
+ request: func(),
75
+ };
76
+ }
77
+ /**
78
+ * 解锁
79
+ * @param {string} id
80
+ */
81
+ unlockR(id) {
82
+ delete Http.requestLock[id];
83
+ }
84
+ /**
85
+ * 根据URL和请求参数构造唯一标识符
86
+ * @param {object} req
87
+ */
88
+ getIdFromReq(req) {
89
+ const { url, data = {} } = req;
90
+ return url + JSON.stringify(data);
91
+ }
92
+ /**
93
+ * 根据URL构造唯一标识符
94
+ * @param {object} req
95
+ */
96
+ getIdFromReqUrl(req) {
97
+ return req.url || "";
98
+ }
99
+ async fetch(name, payload) {
100
+ const _options = util_1.default.copy(this.reqConfig[name]) || {};
101
+ const config = {
102
+ host: this.host,
103
+ url: _options.url || "",
104
+ options: {
105
+ ...(_options || {}),
106
+ body: JSON.stringify({
107
+ ...(payload || {}),
108
+ }),
109
+ }
110
+ };
111
+ try {
112
+ const reqOptions = await this.interceptors.request.invoke(config);
113
+ delete reqOptions.options.plugins;
114
+ let result;
115
+ // 处理阻塞/去抖/普通请求
116
+ if (_options.model === "block") {
117
+ this.lockR(Http.blockId, () => request(reqOptions));
118
+ result = await Http.requestLock[Http.blockId].request;
119
+ // note: 在具体的回调函数中主动 unlock
120
+ }
121
+ else {
122
+ if (Http.requestLock[Http.blockId] &&
123
+ Http.requestLock[Http.blockId].lock) {
124
+ await Http.requestLock[Http.blockId].request;
125
+ }
126
+ //去抖模式
127
+ if (_options.model === "debounce" || _options.model === "debounceUrl") {
128
+ let id;
129
+ if (_options.model === "debounceUrl") {
130
+ // 仅针对url去抖的临时方案
131
+ id = this.getIdFromReqUrl(reqOptions);
132
+ }
133
+ else {
134
+ id = this.getIdFromReq(reqOptions);
135
+ }
136
+ if (!Http.requestLock[id]) {
137
+ this.lockR(id, () => request(reqOptions));
138
+ }
139
+ result = await Http.requestLock[id].request;
140
+ this.unlockR(id);
141
+ }
142
+ else {
143
+ result = await request(reqOptions);
144
+ }
145
+ }
146
+ return this.interceptors.response.invoke({
147
+ response: result,
148
+ refetch: () => {
149
+ return { sig: "REFETCH", result: this.fetch(name, payload) };
150
+ },
151
+ });
152
+ }
153
+ catch (error) {
154
+ return Promise.reject(error);
155
+ }
156
+ }
157
+ }
158
+ exports.default = Http;
@@ -9,9 +9,7 @@ class Interceptor {
9
9
  this.list = this.list.concat(func);
10
10
  }
11
11
  invoke(result) {
12
- return this.list
13
- .reduce((acc, func) => acc.then((res) => func(res)), Promise.resolve(result))
14
- .catch((res) => {
12
+ return this.list.reduce((acc, func) => acc.then((res) => func(res)), Promise.resolve(result)).catch((res) => {
15
13
  if (res.sig === "REFETCH") {
16
14
  return Promise.resolve(res.result);
17
15
  }
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const time_1 = require("../time");
4
3
  /**
5
4
  * 随机取值[0, max)
6
5
  * @param max 最大值
@@ -25,16 +24,4 @@ function randomRange(min, max) {
25
24
  function lerp(start, end, t) {
26
25
  return start * (1 - t) + end * t;
27
26
  }
28
- function randomString(len, prefix = false) {
29
- len = len || 32;
30
- const chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
31
- const maxPos = chars.length;
32
- let pwd = "";
33
- for (let i = 0; i < len; i++) {
34
- pwd += chars.charAt(Math.floor(Math.random() * maxPos));
35
- }
36
- if (!prefix)
37
- return pwd;
38
- return time_1.default.format(new Date, "yyyyMMddhhmmss") + pwd;
39
- }
40
- exports.default = { random, randomRange, lerp, randomString };
27
+ exports.default = { random, randomRange, lerp };
@@ -1,30 +1,32 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const interceptor_1 = require("./interceptor");
3
+ const util_1 = require("../../../util");
4
+ const interceptor_1 = require("../../http/interceptor");
5
+ ;
4
6
  class MiniHttp {
5
7
  // 接口配置
6
8
  reqConfig = {};
9
+ handleRequest;
7
10
  handleEncrypt;
8
11
  handleDecrypt;
9
- handleToast;
10
- handleRequest;
12
+ handleError;
11
13
  // 拦截器
12
14
  interceptors = {
13
15
  request: new interceptor_1.default(),
14
16
  response: new interceptor_1.default(),
15
17
  };
16
- // 阻塞请求的锁id
17
- static blockId = "blockid";
18
- // 请求锁字典
19
- static requestLock = {};
20
18
  constructor(options) {
21
- const { reqConfig = {}, requestEncrypt, responseDecrypt, handleToast, handleRequest } = options;
19
+ const { reqConfig = {}, requestEncrypt, responseDecrypt, handleError, api } = options;
22
20
  this.reqConfig = reqConfig;
23
21
  this.handleEncrypt = requestEncrypt;
24
22
  this.handleDecrypt = responseDecrypt;
25
- this.handleToast = handleToast;
26
- this.handleRequest = handleRequest;
23
+ this.handleError = handleError;
24
+ this.handleRequest = api;
27
25
  }
26
+ // 阻塞请求的锁id
27
+ static blockId = "blockid";
28
+ // 请求锁字典
29
+ static requestLock = {};
28
30
  /**
29
31
  * 加锁
30
32
  * @param {string} id
@@ -90,7 +92,7 @@ class MiniHttp {
90
92
  * @param {object} payload
91
93
  */
92
94
  async request(name, payload) {
93
- const config = JSON.parse(JSON.stringify(this.reqConfig[name]));
95
+ const config = util_1.default.copy(this.reqConfig[name]); // JSON.parse(JSON.stringify();
94
96
  // 进行请求参数的处理
95
97
  const { config: _, ...req } = await this.interceptors.request.invoke({
96
98
  url: config.url,
@@ -114,9 +116,9 @@ class MiniHttp {
114
116
  await MiniHttp.requestLock[MiniHttp.blockId].request;
115
117
  }
116
118
  //去抖模式
117
- if (_.model === "debounce" || _.model === "debounceAgainstUrl") {
119
+ if (_.model === "debounce" || _.model === "debounceUrl") {
118
120
  let id;
119
- if (_.model === "debounceAgainstUrl") {
121
+ if (_.model === "debounceUrl") {
120
122
  // 仅针对url去抖的临时方案
121
123
  id = this.getIdFromReqUrl(req);
122
124
  }
@@ -135,7 +137,7 @@ class MiniHttp {
135
137
  }
136
138
  }
137
139
  catch (error) {
138
- this.handleToast && this.handleToast({ title: JSON.stringify(error), icon: "none" });
140
+ this.handleError && this.handleError(error);
139
141
  }
140
142
  // 抛出response 拦截器 (由原来的直接抛出result改为抛出包含res、reqId、refetch的对象)
141
143
  // const res = this.interceptors.response.invoke(result);
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -32,6 +32,19 @@ function isObject(value) {
32
32
  function isObjectLike(value) {
33
33
  return value != null && typeof value == 'object';
34
34
  }
35
+ function isPlainObject(value) {
36
+ if (!isObjectLike(value) || _object_1.default.getTag(value) != '[object Object]') {
37
+ return false;
38
+ }
39
+ if (Object.getPrototypeOf(value) === null) {
40
+ return true;
41
+ }
42
+ let proto = value;
43
+ while (Object.getPrototypeOf(proto) !== null) {
44
+ proto = Object.getPrototypeOf(proto);
45
+ }
46
+ return Object.getPrototypeOf(value) === proto;
47
+ }
35
48
  function isSymbol(value) {
36
49
  return typeof value === 'symbol' || (isObjectLike(value) && _object_1.default.getTag(value) === '[object Symbol]');
37
50
  }
@@ -75,6 +88,7 @@ exports.default = {
75
88
  isChinese,
76
89
  isObject,
77
90
  isObjectLike,
91
+ isPlainObject,
78
92
  isSymbol,
79
93
  isFunction,
80
94
  isArray,
@@ -1,4 +1,5 @@
1
1
  import Event from "./class/event";
2
+ import Http from "./modules/http";
2
3
  import Store from "./class/store";
3
4
  import Persist from "./class/persist";
4
5
  declare const _default: {
@@ -34,7 +35,6 @@ declare const _default: {
34
35
  random: (max: number) => number;
35
36
  randomRange: (min: number, max: number) => number;
36
37
  lerp: (start: number, end: number, t: number) => number;
37
- randomString: (len: any, prefix?: boolean) => string;
38
38
  };
39
39
  util: {
40
40
  includes: typeof import("./util/includes").default;
@@ -53,6 +53,7 @@ declare const _default: {
53
53
  isChinese: (content: string) => boolean;
54
54
  isObject: (value: any) => boolean;
55
55
  isObjectLike: (value: any) => boolean;
56
+ isPlainObject: (value: any) => boolean;
56
57
  isSymbol: (value: any) => boolean;
57
58
  isFunction: (value: any) => boolean;
58
59
  isArray: (arg: any) => arg is any[];
@@ -114,8 +115,10 @@ declare const _default: {
114
115
  convert: {
115
116
  uint8ArrayToString: (arr: any) => string;
116
117
  stringToArrayBuffer: (str: any) => ArrayBuffer;
118
+ randomString: (len: any, prefix?: boolean) => string;
117
119
  };
118
120
  Event: typeof Event;
121
+ Http: typeof Http;
119
122
  Store: typeof Store;
120
123
  storeRef: (source: import("./typings").IDStore, persistConfig?: import("./typings").IDPersistConfig | undefined) => any;
121
124
  Persist: typeof Persist;
@@ -1,7 +1,9 @@
1
1
  declare function uint8ArrayToString(arr: any): string;
2
2
  declare function stringToArrayBuffer(str: any): ArrayBuffer;
3
+ declare function randomString(len: any, prefix?: boolean): string;
3
4
  declare const _default: {
4
5
  uint8ArrayToString: typeof uint8ArrayToString;
5
6
  stringToArrayBuffer: typeof stringToArrayBuffer;
7
+ randomString: typeof randomString;
6
8
  };
7
9
  export default _default;
@@ -0,0 +1,35 @@
1
+ import { IHttp, IHttpConfig } from "../../typings/http";
2
+ import Interceptor from "./interceptor";
3
+ export default class Http implements IHttp {
4
+ host: string;
5
+ reqConfig: {};
6
+ interceptors: {
7
+ request: Interceptor;
8
+ response: Interceptor;
9
+ };
10
+ constructor(_: IHttpConfig);
11
+ static blockId: string;
12
+ static requestLock: {};
13
+ /**
14
+ * 加锁
15
+ * @param {string} id
16
+ * @param {function} func
17
+ */
18
+ lockR(id: any, func: any): void;
19
+ /**
20
+ * 解锁
21
+ * @param {string} id
22
+ */
23
+ unlockR(id: any): void;
24
+ /**
25
+ * 根据URL和请求参数构造唯一标识符
26
+ * @param {object} req
27
+ */
28
+ getIdFromReq(req: any): string;
29
+ /**
30
+ * 根据URL构造唯一标识符
31
+ * @param {object} req
32
+ */
33
+ getIdFromReqUrl(req: any): any;
34
+ fetch(name: string, payload?: Record<string, any>): Promise<any>;
35
+ }
@@ -0,0 +1,6 @@
1
+ export default class Interceptor {
2
+ list: Function[];
3
+ constructor();
4
+ use(func: Function | Function[]): void;
5
+ invoke(result?: any): Promise<any>;
6
+ }
@@ -16,11 +16,9 @@ declare function randomRange(min: number, max: number): number;
16
16
  * @param t
17
17
  */
18
18
  declare function lerp(start: number, end: number, t: number): number;
19
- declare function randomString(len: any, prefix?: boolean): string;
20
19
  declare const _default: {
21
20
  random: typeof random;
22
21
  randomRange: typeof randomRange;
23
22
  lerp: typeof lerp;
24
- randomString: typeof randomString;
25
23
  };
26
24
  export default _default;
@@ -1,17 +1,24 @@
1
- import Interceptor from "./interceptor";
1
+ import Interceptor from "../../http/interceptor";
2
+ export interface IMiniHttpOptions {
3
+ reqConfig?: any;
4
+ api: (payload: any) => any;
5
+ requestEncrypt?: (payload: any) => any;
6
+ responseDecrypt?: (payload: any) => any;
7
+ handleError?: (error: any) => void;
8
+ }
2
9
  export default class MiniHttp {
3
10
  reqConfig: {};
4
- handleEncrypt: (payload: any) => any;
5
- handleDecrypt: (payload: any) => any;
6
- handleToast: (payload: any) => any;
7
11
  handleRequest: (payload: any) => any;
12
+ handleEncrypt?: (payload: any) => any;
13
+ handleDecrypt?: (payload: any) => any;
14
+ handleError?: (error: any) => void;
8
15
  interceptors: {
9
16
  request: Interceptor;
10
17
  response: Interceptor;
11
18
  };
19
+ constructor(options: IMiniHttpOptions);
12
20
  static blockId: string;
13
21
  static requestLock: {};
14
- constructor(options: any);
15
22
  /**
16
23
  * 加锁
17
24
  * @param {string} id
@@ -0,0 +1,38 @@
1
+ export interface IHttpRequest {
2
+ url: string;
3
+ host: string;
4
+ options: IHttpRequestInit;
5
+ }
6
+ export interface IHttpApiConfig {
7
+ [key: string]: IHttpRequestInit;
8
+ }
9
+ export type ResponseInterceptFunc = (arg: IHttpResponse) => any;
10
+ export type RequestInterceptFunc = (arg: IHttpRequest) => IHttpRequest;
11
+ export interface IHttpConfig {
12
+ host?: string;
13
+ config: IHttpApiConfig;
14
+ handleRequest?: RequestInterceptFunc | RequestInterceptFunc[];
15
+ handleResponse?: RequestInterceptFunc | RequestInterceptFunc[];
16
+ }
17
+ export interface IHttpRequestInit extends RequestInit {
18
+ [key: string]: any;
19
+ url: string;
20
+ model?: string;
21
+ method: "get" | "post" | "put";
22
+ body?: string;
23
+ needToken?: boolean;
24
+ plugins?: any;
25
+ }
26
+ export interface IHttp {
27
+ host: string;
28
+ interceptors: {
29
+ request: any;
30
+ response: any;
31
+ };
32
+ fetch: (name: string, payload?: Record<string, any>) => Promise<any>;
33
+ [key: string]: any;
34
+ }
35
+ export interface IHttpResponse {
36
+ response: Response & Record<string, any>;
37
+ refetch: () => Promise<any>;
38
+ }
@@ -24,6 +24,7 @@ declare const _default: {
24
24
  isChinese: (content: string) => boolean;
25
25
  isObject: (value: any) => boolean;
26
26
  isObjectLike: (value: any) => boolean;
27
+ isPlainObject: (value: any) => boolean;
27
28
  isSymbol: (value: any) => boolean;
28
29
  isFunction: (value: any) => boolean;
29
30
  isArray: (arg: any) => arg is any[];
@@ -4,6 +4,7 @@ declare function isString(value: any): boolean;
4
4
  declare function isChinese(content: string): boolean;
5
5
  declare function isObject(value: any): boolean;
6
6
  declare function isObjectLike(value: any): boolean;
7
+ declare function isPlainObject(value: any): boolean;
7
8
  declare function isSymbol(value: any): boolean;
8
9
  declare function isArrayLike(value: any): boolean;
9
10
  declare function isArrayLikeObject(value: any): boolean;
@@ -19,6 +20,7 @@ declare const _default: {
19
20
  isChinese: typeof isChinese;
20
21
  isObject: typeof isObject;
21
22
  isObjectLike: typeof isObjectLike;
23
+ isPlainObject: typeof isPlainObject;
22
24
  isSymbol: typeof isSymbol;
23
25
  isFunction: typeof isFunction;
24
26
  isArray: (arg: any) => arg is any[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ddan-js",
3
- "version": "1.4.0",
3
+ "version": "1.4.2",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "main": "bin/ddan-js.js",
@@ -1,6 +0,0 @@
1
- export default class Interceptor {
2
- list: Function[];
3
- constructor();
4
- use(func: Function): void;
5
- invoke(result: any): Promise<any>;
6
- }