@andrewcaires/utils.js 0.4.7 → 0.4.9
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.
- package/dist/index.cjs.js +2 -2
- package/dist/index.d.ts +21 -7
- package/dist/index.esm.js +2 -2
- package/dist/index.min.js +2 -2
- package/package.json +2 -2
package/dist/index.cjs.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @andrewcaires/utils.js v0.4.
|
|
2
|
+
* @andrewcaires/utils.js v0.4.9
|
|
3
3
|
* JavaScript utility library for web and nodejs development
|
|
4
4
|
* (c) 2025 Andrew Caires
|
|
5
5
|
* @license: MIT
|
|
6
6
|
*/
|
|
7
|
-
"use strict";const e=(e,t,s)=>Math.max(t,Math.min(s,e)),t=(e,t)=>Math.floor(Math.random()*(t-e+1)+e),s=e=>{for(let s=e.length-1;s>0;s--){const r=t(0,s);[e[s],e[r]]=[e[r],e[s]]}return e},r={},n=e=>null==e?"null":r[r.toString.call(e)]||"object";["Array","AsyncFunction","Boolean","Date","Function","Map","Number","Object","RegExp","Set","String"].forEach((e=>r["[object "+e+"]"]=e.toLowerCase()));const i=e=>"array"==n(e),a=e=>"boolean"==n(e),o=e=>"null"!=n(e),u=e=>"number"==n(e),l=e=>u(e)&&!!(e%1),h=e=>"function"==typeof e,c=e=>u(e)&&!(e%1),p=e=>"object"==n(e),v=e=>p(e)&&e.constructor===Object,x=["boolean","number","string"],d=e=>"string"==typeof e,m=e=>void 0===e,f=[1,"1",!0,"true"],g=e=>-1!=f.indexOf(e),y=(e,t,s)=>{for(let r=0;r<e.length&&!1!==t.call(s,e[r],r,e);r++);return e},b=(e,t,s)=>{let r="";const n=Object.keys(e);for(let i=0;i<n.length&&(r=n[i],!1!==t.call(s,e[r],r,e));i++);return e},E=(e,t,s)=>Object.fromEntries(Object.entries(e).map((([r,n])=>[r,t.call(s,n,r,e)]))),w=e=>parseInt(null!=e?e:"0",16)||0,S=e=>{var t;return(null===(t=e.replace(/^#/,"").match(/.{1,2}/g))||void 0===t?void 0:t.map(w))||[]},R=e=>("0"+e.toString(16)).slice(-2),C=(e,t,s)=>"#"+R(e)+R(t)+R(s),O=(t,s)=>{const r=S(t);s=e(s,0,1);const[n,i,a]=r.map((e=>Math.round(e*s)));return C(n,i,a)},M=(t,s)=>{const r=S(t);s=e(s,0,1);const[n,i,a]=r.map((e=>Math.round(e+(255-e)*s)));return C(n,i,a)},A={50:.95,100:.9,200:.75,300:.6,400:.3,500:0,600:-.1,700:-.25,800:-.4,900:-.55,950:-.71},I=(e,t,s,r,n)=>0===e?0:t===s?(r-n)/e%6:t===r?(n-s)/e+2:t===n?(s-r)/e+4:0,k=(e,t)=>0===e?0:e/(1-Math.abs(2*t-1));class j{constructor(e){this.key=this.shuffle(j.dictionary,e,!1)}encrypt(e){return this.shuffle(e,this.key,!1)}decrypt(e){return this.shuffle(e,this.key,!0)}index(e,t,s){return[j.dictionary.indexOf(e[s]),j.dictionary.indexOf(t[s%t.length])]}result(e,t,s){return j.dictionary[(s?e-t+j.dictionary.length:e+t)%j.dictionary.length]}shuffle(e,t,s){let r="";for(let n=0;n<e.length;n++){const[i,a]=this.index(e,t,n);r+=-1===i||-1===a?e[n]:this.result(i,a,s)}return r}}j.dictionary="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";const D=e=>Math.random().toString(16).slice(e),T=()=>D(-3),N=()=>D(-4),U=()=>N()+N(),P=()=>U()+U(),L=e=>("0"+e.toString()).slice(-2),$={"%y":e=>L(e.getFullYear()),"%Y":e=>e.getFullYear().toString(),"%m":e=>L(e.getMonth()+1),"%d":e=>L(e.getDate()),"%H":e=>L(e.getHours()),"%M":e=>L(e.getMinutes()),"%S":e=>L(e.getSeconds())},F=(e,t)=>(t=null!=t?t:new Date,e.replace(/%[yYmdHMS]/g,(e=>$[e]?$[e](t):e.slice(1)))),q=36e5,_=24*q,Y={ms:1,s:1e3,m:6e4,h:q,d:_,w:7*_,y:315576e5},H=["y","d","h","m","s","ms"];function Q(e,t,s,r){return new(s||(s=Promise))((function(n,i){function a(e){try{u(r.next(e))}catch(e){i(e)}}function o(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){e.done?n(e.value):function(e){return e instanceof s?e:new s((function(t){t(e)}))}(e.value).then(a,o)}u((r=r.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const B=e=>{var t;return 0==(null!==(t=null==e?void 0:e.length)&&void 0!==t?t:0)},z=["",0,"0",null,!1,void 0],V=e=>-1==z.indexOf(e),Z=()=>{},J=(e,t,s)=>t(e.toLowerCase().replace(/\W+/g," ")).replace(/\s/g,null!=s?s:""),K=(e,t)=>J(e,(e=>e.replace(/\s(\w)/g,(e=>e.toUpperCase()))),t),W=K,G=/&(amp|apos|lt|gt|nbsp|quot);/g,X={amp:"&",apos:"'",lt:"<",gt:">",nbsp:" ",quot:'"'},ee=e=>/^[\d]$/.test(e),te=e=>/^[A-Za-z]$/.test(e),se=e=>/^[^\w]$/.test(e),re=e=>s(e.split("")).join("");class ne{constructor(){this.hasSpace=!1,this._space=" ",this.hasNumbers=!1,this._numbers="0123456789",this.hasSymbols=!1,this._symbols="!@#$%^&*()<>.<~:;?+=-_",this.hasUpper=!1,this._upper="ABCDEFGHIJKLMNOPQRSTUVWXYZ",this.hasLower=!1,this._lower="abcdefghijklmnopqrstuvwxyz",this.hasChars=!1,this._chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"}chars(){return this.hasChars=!0,this}static chars(){return(new ne).chars()}lower(){return this.hasLower=!0,this}static lower(){return(new ne).lower()}make(e){let s="";this.hasSpace&&(s+=this._space),this.hasNumbers&&(s+=this._numbers),this.hasSymbols&&(s+=this._symbols),this.hasUpper&&!this.hasChars&&(s+=this._upper),this.hasLower&&!this.hasChars&&(s+=this._lower),this.hasChars&&(s+=this._chars);let r="";if(e&&s.length){s=re(s);for(let n=0;n<e;n++)r+=s.charAt(t(0,s.length-1))}return r}numbers(){return this.hasNumbers=!0,this}static numbers(){return(new ne).numbers()}space(){return this.hasSpace=!0,this}static space(){return(new ne).space()}symbols(){return this.hasSymbols=!0,this}static symbols(){return(new ne).symbols()}upper(){return this.hasUpper=!0,this}static upper(){return(new ne).upper()}}const ie=e=>e.split("").reverse().join(""),ae=(e,t)=>J(e,(e=>e.replace(/(\w)(\w*)/g,((e,t,s)=>t.toUpperCase()+s))),t),oe=(e,t)=>t(e.value)?e.value:(e=>(e.maskIndex--,""))(e),ue={"#":e=>e.value,0:e=>oe(e,ee),9:e=>oe(e,ee),A:e=>oe(e,te),Z:e=>oe(e,te),L:e=>oe(e,te).toLowerCase(),U:e=>oe(e,te).toUpperCase(),S:e=>oe(e,se)},le=e=>{e.maskIndex++,e.textIndex++;const{mask:t,maskIndex:s,text:r,textIndex:n}=e;e.key=t[s],e.value=r[n];const{key:i,value:a}=e;return m(i)||m(a)?"":(e=>ue[e.key]?ue[e.key](e):(e.key!=e.value&&e.textIndex--,e.key))(e)+le(e)},he=(e,t)=>le({mask:e,maskIndex:-1,text:t,textIndex:-1,key:"",value:""}),ce=(e,t)=>ie(he(ie(e),ie(t))),pe=(e,t)=>e.reduce(((e,s)=>Object.assign(Object.assign({},e),{[s]:t[s]})),{}),ve=(e,...t)=>{if(!t.length)return e;const s=t.shift();if(v(e)&&v(s))for(const t in s)v(s[t])?(e[t]||(e=Object.assign(Object.assign({},e),{[t]:{}})),e[t]=ve(e[t],s[t])):e=Object.assign(Object.assign({},e),{[t]:s[t]});return ve(e,...t)};class xe{}var de,me,fe,ge,ye;xe.DESCRIPTION=Symbol("DESCRIPTION"),xe.ERROR=Symbol("ERROR"),xe.NAME=Symbol("NAME"),xe.REQUIRED=Symbol("REQUIRED"),xe.SOURCE=Symbol("SOURCE"),xe.TYPE=Symbol("TYPE");class be{constructor(e){this[de]="",this[me]="",this[fe]="",this[ge]="any",this[ye]=!1,this.rules=[],this.custom=[],this[xe.TYPE]=e}description(e){return this[xe.DESCRIPTION]=e,this}empty(e,t=!0){const s=e;return this.unshift((({value:e})=>{const r=o(e);return{stop:t&&!r,value:r?e:h(s)?s():s}}))}equal(e,t){const s=this.fn(e);return this.push((({value:e,context:r})=>{const n=s({value:e,context:r});return e==n?{value:e}:this.invalid(`.equal(${n})`,t)}))}error(e){return d(e)&&(this[xe.ERROR]=e),this}filter(...e){const t=e;return this.unshift((({value:e})=>{const s=-1==t.indexOf(e);return{stop:!s,value:s?e:void 0}}))}fn(e){return h(e)?e:()=>e}from(e){return this[xe.SOURCE]=e,this}invalid(e,t){return e=`[${this[xe.TYPE]}]${e}`,{error:this[xe.ERROR]?this[xe.ERROR]:this[xe.NAME]?this[xe.NAME]+":"+e:e,message:t}}parse(){return this.unshift((({value:e})=>({value:e})))}push(e){return this.rules.push(e),this}required(e){return this[xe.REQUIRED]=!0,this.unshift((({value:t})=>o(t)?{value:t}:this.invalid(".required",e)))}test(e){return!d(this.validate(e).error)}testAsync(e){return Q(this,void 0,void 0,(function*(){return!d((yield this.validateAsync(e)).error)}))}unshift(e){return this.rules.unshift(e),this}validate(e,t){var s;if(this.custom.length)return this.invalid("[async]");let r={value:e};for(let e=0;e<this.rules.length;e++){if(r=this.rules[e]({value:r.value,context:t}),null===(s=r.error)||void 0===s?void 0:s.length)return Object.assign({error:r.error},r.message?{message:r.message}:{});if(r.stop)return{value:r.value}}return{value:r.value}}validateAsync(e,t){return Q(this,void 0,void 0,(function*(){let s=this.validate(e,t);if(s.error)return{error:s.error};for(let e=0;e<this.custom.length;e++){if(s=yield this.custom[e]({value:s.value}),s.error)return{error:s.error};if(s.stop)return{value:s.value}}return{value:s.value}}))}}de=xe.NAME,me=xe.DESCRIPTION,xe.SOURCE,fe=xe.ERROR,ge=xe.TYPE,ye=xe.REQUIRED;class Ee extends be{constructor(e){super("array"),this.push((({value:t})=>i(t)?{value:t}:this.invalid("",e)))}between(e,t,s){return this.min(e,s),this.max(t,s)}items(e,t){const s=e;return s?this.push((({value:e})=>{s[xe.NAME]="";for(let r=0;r<e.length;r++){const{error:n,value:i}=s.validate(e[r],e);if(n)return this.invalid("< "+n+"["+r+"] >",t);e[r]=i}return{value:e}})):this}length(e,t){const s=e;return this.push((({value:e})=>e.length==s?{value:e}:this.invalid(".length("+s+")",t)))}max(e,t){const s=e;return this.push((({value:e})=>e.length<=s?{value:e}:this.invalid(".max("+s+")",t)))}min(e,t){const s=e;return this.push((({value:e})=>e.length>=s?{value:e}:this.invalid(".min("+s+")",t)))}}class we extends be{constructor(e){super("boolean"),this.push((({value:t})=>a(t)?{value:t}:this.invalid("",e)))}parse(){return this.unshift((({value:e})=>({value:o(e)?g(e):e})))}}class Se extends be{constructor(e){super("date"),this.push((({value:t})=>d(t)&&t.length>=9&&!isNaN(new Date(t).getTime())?{value:t}:this.invalid("",e)))}format(e){const t=e;return this.push((({value:e})=>({value:F(t,new Date(e))})))}parse(){return this.unshift((({value:e})=>({value:new Date(d(e)&&e.length<=10?`${e} 12:00`:e)})))}}class Re extends be{constructor(e){super("number"),this.push((({value:t})=>u(t)?{value:t}:this.invalid("",e)))}between(e,t,s){return this.min(e,s),this.max(t,s)}float(e){return this.push((({value:t})=>l(t)?{value:t}:this.invalid(".float",e)))}integer(e){return this.push((({value:t})=>c(t)?{value:t}:this.invalid(".integer",e)))}max(e,t){const s=this.fn(e);return this.push((({value:e,context:r})=>{const n=s({value:e,context:r});return e<=n?{value:e}:this.invalid(`.max(${n})`,t)}))}min(e,t){const s=this.fn(e);return this.push((({value:e,context:r})=>{const n=s({value:e,context:r});return e>=n?{value:e}:this.invalid(`.min(${n})`,t)}))}parse(){return this.unshift((({value:e})=>({value:o(e)?parseFloat(e.toString()):e})))}}class Ce extends be{constructor(e){super("object"),this.push((({value:t})=>p(t)?{value:t}:this.invalid("",e)))}keys(e,t){const s=e;return s?this.push((({value:e})=>{const r=[],n={};return Object.keys(s).forEach((i=>{var a;const u=s[i];u[xe.NAME]=null!==(a=u[xe.SOURCE])&&void 0!==a?a:i;const{error:l,message:h,value:c}=u.validate(e[u[xe.NAME]],n);!t&&h&&(t=h),l&&r.push(l),o(c)&&(n[i]=c)})),r.length?this.invalid("{ "+r.join(", ")+" }",t):{value:n}})):this}parse(e){return this.unshift((({value:t})=>{if(!p(t))try{t=JSON.parse(t)}catch(t){return this.invalid("",e)}return{value:t}}))}}class Oe extends be{constructor(e){super("string"),this.push((({value:t})=>d(t)?{value:t}:this.invalid("",e)))}between(e,t,s){return this.min(e,s),this.max(t,s)}email(e){const t=/^[\w-\\.]+@([\w-]+\.)+[\w-]{2,4}$/i;return this.push((({value:s})=>t.test(s)?{value:s}:this.invalid(".email",e)))}length(e,t){const s=this.fn(e);return this.push((({value:e,context:r})=>{const n=s({value:e,context:r});return e.length==n?{value:e}:this.invalid(`.length(${n})`,t)}))}lowerCase(){return this.push((({value:e})=>({value:e.toLowerCase()})))}lowerCamelCase(){return this.push((({value:e})=>({value:K(e)})))}max(e,t){const s=this.fn(e);return this.push((({value:e,context:r})=>{const n=s({value:e,context:r});return e.length<=n?{value:e}:this.invalid(`.max(${n})`,t)}))}mask(e){const t=this.fn(e);return this.push((({value:e,context:s})=>({value:he(t({value:e,context:s}),e)})))}min(e,t){const s=this.fn(e);return this.push((({value:e,context:r})=>{const n=s({value:e,context:r});return e.length>=n?{value:e}:this.invalid(`.min(${n})`,t)}))}parse(){return this.unshift((({value:e})=>({value:p(e)?JSON.stringify(e):o(e)?e.toString():e})))}required(e){return this[xe.REQUIRED]=!0,this.push((({value:t})=>t.length?{value:t}:this.invalid(".required",e)))}regex(e,t){return this.push((({value:s})=>e.test(s)?{value:s}:this.invalid(".regex",t)))}replace(e,t){const s=this.fn(e);return this.push((({value:e,context:r})=>({value:e.replace(s({value:e,context:r}),((...e)=>h(t)?t(...e):t))})))}trim(){return this.push((({value:e})=>({value:e.trim()})))}upperCase(){return this.push((({value:e})=>({value:e.toUpperCase()})))}upperCamelCase(){return this.push((({value:e})=>({value:ae(e)})))}}class Me{static array(e,t){return new Ee(t).items(e)}static boolean(e){return new we(e)}static date(e){return new Se(e)}static number(e){return new Re(e)}static object(e,t){return new Ce(t).keys(e)}static ref(e,t){return({context:s})=>s&&o(s[e])?s[e]:t}static string(e){return new Oe(e)}test(e,...t){return!d(Me.validate(e,...t).error)}testAsync(e,...t){return Q(this,void 0,void 0,(function*(){return!d((yield Me.validateAsync(e,...t)).error)}))}static validate(e,...t){let s={value:e};for(let e=0;e<t.length;e++)if(s=t[e].validate(s.value),s.error)return{value:s.value,error:s.error};return{value:s.value}}static validateAsync(e,...t){return Q(this,void 0,void 0,(function*(){let s={value:e};for(let e=0;e<t.length;e++)if(s=yield t[e].validateAsync(s.value),s.error)return{value:s.value,error:s.error};return{value:s.value}}))}}exports.EventEmitter=class{constructor(){this.events=new Map}on(e,t){const s=this.events.get(e);return s?s.push(t):this.events.set(e,[t]),{dispose:()=>this.off(e,t)}}once(e,t){const s=r=>{t(r),this.off(e,s)};return this.on(e,s),{dispose:()=>this.off(e,s)}}off(e,t){const s=this.events.get(e);if(t){if(s){const e=s.indexOf(t);e>=0&&s.splice(e,1)}}else this.events.set(e,[])}emit(e,t){const s=this.events.get(e);s&&s.forEach((e=>e(t)))}},exports.Hash=j,exports.RandomString=ne,exports.Validation=Me,exports.ValidationBase=be,exports.ValidationKeys=xe,exports.allowed=pe,exports.cache=()=>{const e=[],t=[];return s=>{let r=e.indexOf(s);return-1==r&&(e.push(s),t.push({}),r=t.length-1),t[r]}},exports.camelCase=W,exports.chunkArray=(e,t)=>{const s=[];for(let r=0;r<e.length;r+=t)s.push(e.slice(r,r+t));return s},exports.clamp=e,exports.colorPalette=(e,t)=>E(null!=t?t:A,(t=>0==t?e:t>0?M(e,t):O(e,1- -1*t))),exports.compareArray=(e,t)=>e.length===t.length&&e.every(((e,s)=>e===t[s])),exports.countArray=e=>{const t={};return e.forEach((e=>{const s=e.toString();t[s]=(t[s]||0)+1})),t},exports.cutText=(e,t)=>{if(e.length>t){const s=e.substring(0,t).split(" ");return s.pop(),s.join(" ")+"..."}return e},exports.dateFormat=F,exports.dateRange=(e,t)=>{const s=new Date(e),r=[];for(;e<t;)s.setDate(s.getDate()+1),r.push(new Date(s));return r},exports.debounce=(e,t)=>{let s;const r=()=>{s&&clearTimeout(s)};return{cancel:r,run(...n){r(),s=setTimeout((()=>e(...n)),t)}}},exports.decodeHTML=e=>e.replace(G,((e,t)=>X[t])).replace(/&#(\d+);/gi,((e,t)=>String.fromCharCode(parseInt(t,10)))),exports.denied=(e,t)=>pe(Object.keys(t).filter((t=>-1==e.indexOf(t))),t),exports.each=(e,t,s)=>i(e)?y(e,t,s):p(e)?b(e,t,s):e,exports.encodeHTML=e=>e.replace(/[^0-9A-Za-z ]/g,(e=>"&#"+e.charCodeAt(0)+";")),exports.forEachAsync=(e,t,s)=>Q(void 0,void 0,void 0,(function*(){yield Promise.allSettled(e.map(((r,n)=>t.call(s,r,n,e)))).catch(Z)})),exports.forEachIndex=y,exports.forEachKey=b,exports.forEachSeries=(e,t,s)=>Q(void 0,void 0,void 0,(function*(){for(let r=0;r<e.length;r++)yield t.call(s,e[r],r,e).catch(Z)})),exports.forLoop=(e,t,s)=>{for(let r=1;r<=e&&!1!==t.call(s,r,e);r++);return e},exports.hexToRgb=S,exports.hslToRgb=(e,t,s)=>{e/=60;const r=(1-Math.abs(2*s-1))*t,n=r*(1-Math.abs(e%2-1));let i=[0,0,0];e<=1?i=[r,n,0]:e<=2?i=[n,r,0]:e<=3?i=[0,r,n]:e<=4?i=[0,n,r]:e<=5?i=[n,0,r]:e<=6&&(i=[r,0,n]);const a=s-.5*r;return[Math.round(255*(i[0]+a)),Math.round(255*(i[1]+a)),Math.round(255*(i[2]+a))]},exports.isArray=i,exports.isBoolean=a,exports.isCharacter=e=>/^[\w]$/.test(e),exports.isDate=e=>"date"==n(e),exports.isDef=o,exports.isDigit=ee,exports.isEmpty=B,exports.isFalse=e=>!V(e),exports.isFloat=l,exports.isFunction=h,exports.isInteger=c,exports.isLetter=te,exports.isMap=e=>"map"==n(e),exports.isNotEmpty=e=>!B(e),exports.isNull=e=>null===e,exports.isNumber=u,exports.isObject=p,exports.isPlainObject=v,exports.isRegExp=e=>"regexp"==n(e),exports.isScalar=e=>-1!=x.indexOf(n(e)),exports.isSet=e=>"set"==n(e),exports.isSpecialChar=se,exports.isString=d,exports.isSymbol=e=>"symbol"==typeof e,exports.isTrue=V,exports.isUndefined=m,exports.lerp=(t,s,r)=>t+(s-t)*e(r,0,1),exports.loop=(e,t)=>{let s=!1;const r=()=>Q(void 0,void 0,void 0,(function*(){s&&(yield e(),setTimeout(r,t))}));return{start(){s||(s=!0,r())},stop(){s=!1}}},exports.lowerCamelCase=K,exports.map=E,exports.mask=he,exports.maskMoney=(e,t,s)=>(s++,t=parseInt((t||"0").replace(/\D/g,"")).toString(),ce(e,t.length<s?("0".repeat(s)+t).slice(-1*s):t)),exports.maskReverse=ce,exports.maskTest=(e,t)=>e.length==he(e,t).length,exports.merge=ve,exports.msToString=e=>{const t=[];return H.forEach((s=>{const r=Y[s],n=(e-e%r)/r;n&&(e-=n*r,t.push(n.toString()+s))})),t.join(" ")},exports.noop=Z,exports.parseMs=e=>{const t=/(-?(?:\d+)?\.?\d+) *(ms|s|m|h|d|w|y)/gm;let s,r=0;for(;null!==(s=t.exec(e));)s.index===t.lastIndex&&t.lastIndex++,r+=parseFloat(s[1])*Y[s[2]]||0;return r},exports.parseSize=e=>{if(u(e))return e+"px";const t=(e=>/(-?(?:\d+)?\.?\d+) *(px|%|cm|mm|in|pt|pc|en|ex|ch|rem|vw|vh|vmin|vmax)*/g.exec(e))(e);return t?parseFloat(t[1])+(t[2]||"px"):"0px"},exports.random=t,exports.randomCase=e=>e.split("").map((e=>Math.random()<.5?e.toUpperCase():e.toLowerCase())).join(""),exports.randomElement=e=>e.length?e[t(0,e.length-1)]:null,exports.rangeArray=(e,t,s=1)=>Array.from({length:(t-e)/s+1},((t,r)=>e+r*s)),exports.rgbToHex=C,exports.rgbToHsl=(e,t,s)=>{const[r,n,i]=((...e)=>e.map((e=>e/255)))(e,t,s),a=Math.max(r,n,i),o=Math.min(r,n,i),u=a-o,l=(o+a)/2;return[60*I(u,a,r,n,i),k(u,l),l]},exports.shadeColor=O,exports.shuffleArray=s,exports.shuffleString=re,exports.simpleID=()=>T()+N(),exports.sleep=e=>new Promise((t=>setTimeout(t,e))),exports.stringReverse=ie,exports.tintColor=M,exports.toArray=e=>i(e)?e:o(e)?[e]:[],exports.toBool=g,exports.type=n,exports.uniqueArray=e=>e.filter(((e,t,s)=>s.indexOf(e)===t)),exports.uniqueID=()=>P()+P()+P()+P(),exports.upperCamelCase=ae,exports.uuidv4=()=>U()+"-"+N()+"-4"+T()+"-"+N()+"-"+(U()+N());
|
|
7
|
+
"use strict";const t=(t,e,s)=>Math.max(e,Math.min(s,t)),e=(t,e)=>Math.floor(Math.random()*(e-t+1)+t),s=t=>{for(let s=t.length-1;s>0;s--){const r=e(0,s);[t[s],t[r]]=[t[r],t[s]]}return t},r={},n=t=>null==t?"null":r[r.toString.call(t)]||"object";["Array","AsyncFunction","Boolean","Date","Function","Map","Number","Object","RegExp","Set","String"].forEach((t=>r["[object "+t+"]"]=t.toLowerCase()));const i=t=>"array"==n(t),a=t=>"boolean"==n(t),o=t=>"null"!=n(t),u=t=>"number"==n(t),l=t=>u(t)&&!!(t%1),h=t=>"function"==typeof t,c=t=>u(t)&&!(t%1),p=t=>"object"==n(t),v=t=>p(t)&&t.constructor===Object,d=["boolean","number","string"],x=t=>"string"==typeof t,m=t=>void 0===t,f=[1,"1",!0,"true"],g=t=>-1!=f.indexOf(t),y=(t,e,s)=>{for(let r=0;r<t.length&&!1!==e.call(s,t[r],r,t);r++);return t},E=(t,e,s)=>{let r="";const n=Object.keys(t);for(let i=0;i<n.length&&(r=n[i],!1!==e.call(s,t[r],r,t));i++);return t},b=(t,e,s)=>Object.fromEntries(Object.entries(t).map((([r,n])=>[r,e.call(s,n,r,t)]))),S=t=>parseInt(null!=t?t:"0",16)||0,w=t=>{var e;return(null===(e=t.replace(/^#/,"").match(/.{1,2}/g))||void 0===e?void 0:e.map(S))||[]},O=t=>("0"+t.toString(16)).slice(-2),R=(t,e,s)=>"#"+O(t)+O(e)+O(s),C=(e,s)=>{const r=w(e);s=t(s,0,1);const[n,i,a]=r.map((t=>Math.round(t*s)));return R(n,i,a)},I=(e,s)=>{const r=w(e);s=t(s,0,1);const[n,i,a]=r.map((t=>Math.round(t+(255-t)*s)));return R(n,i,a)},M={50:.95,100:.9,200:.75,300:.6,400:.3,500:0,600:-.1,700:-.25,800:-.4,900:-.55,950:-.71},k=(t,e,s,r,n)=>0===t?0:e===s?(r-n)/t%6:e===r?(n-s)/t+2:e===n?(s-r)/t+4:0,A=(t,e)=>0===t?0:t/(1-Math.abs(2*e-1));class D{constructor(t){this.key=this.shuffle(D.dictionary,t,!1)}encrypt(t){return this.shuffle(t,this.key,!1)}decrypt(t){return this.shuffle(t,this.key,!0)}index(t,e,s){return[D.dictionary.indexOf(t[s]),D.dictionary.indexOf(e[s%e.length])]}result(t,e,s){return D.dictionary[(s?t-e+D.dictionary.length:t+e)%D.dictionary.length]}shuffle(t,e,s){let r="";for(let n=0;n<t.length;n++){const[i,a]=this.index(t,e,n);r+=-1===i||-1===a?t[n]:this.result(i,a,s)}return r}}D.dictionary="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";const N=t=>Math.random().toString(16).slice(t),j=()=>N(-3),T=()=>N(-4),Y=()=>T()+T(),P=()=>Y()+Y(),U=t=>("0"+t.toString()).slice(-2),L={"%y":t=>U(t.getFullYear()),"%Y":t=>t.getFullYear().toString(),"%m":t=>U(t.getMonth()+1),"%d":t=>U(t.getDate()),"%H":t=>U(t.getHours()),"%M":t=>U(t.getMinutes()),"%S":t=>U(t.getSeconds())},$=(t,e)=>(e=null!=e?e:new Date,t.replace(/%[yYmdHMS]/g,(t=>L[t]?L[t](e):t.slice(1)))),F=36e5,q=24*F,K={ms:1,s:1e3,m:6e4,h:F,d:q,w:7*q,y:315576e5},_=["y","d","h","m","s","ms"];function H(t,e,s,r){return new(s||(s=Promise))((function(n,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function o(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){t.done?n(t.value):function(t){return t instanceof s?t:new s((function(e){e(t)}))}(t.value).then(a,o)}u((r=r.apply(t,e||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const X=t=>{var e;return 0==(null!==(e=null==t?void 0:t.length)&&void 0!==e?e:0)},Q=["",0,"0",null,!1,void 0],B=t=>-1==Q.indexOf(t),J=()=>{},z=(t,e,s)=>e(t.toLowerCase().replace(/\W+/g," ")).replace(/\s/g,null!=s?s:""),V=(t,e)=>z(t,(t=>t.replace(/\s(\w)/g,(t=>t.toUpperCase()))),e),Z=V,W=/&(amp|apos|lt|gt|nbsp|quot);/g,G={amp:"&",apos:"'",lt:"<",gt:">",nbsp:" ",quot:'"'},tt=t=>/^[\d]$/.test(t),et=t=>/^[A-Za-z]$/.test(t),st=t=>/^[^\w]$/.test(t),rt=t=>s(t.split("")).join("");class nt{constructor(){this.hasSpace=!1,this._space=" ",this.hasNumbers=!1,this._numbers="0123456789",this.hasSymbols=!1,this._symbols="!@#$%^&*()<>.<~:;?+=-_",this.hasUpper=!1,this._upper="ABCDEFGHIJKLMNOPQRSTUVWXYZ",this.hasLower=!1,this._lower="abcdefghijklmnopqrstuvwxyz",this.hasChars=!1,this._chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"}chars(){return this.hasChars=!0,this}static chars(){return(new nt).chars()}lower(){return this.hasLower=!0,this}static lower(){return(new nt).lower()}make(t){let s="";this.hasSpace&&(s+=this._space),this.hasNumbers&&(s+=this._numbers),this.hasSymbols&&(s+=this._symbols),this.hasUpper&&!this.hasChars&&(s+=this._upper),this.hasLower&&!this.hasChars&&(s+=this._lower),this.hasChars&&(s+=this._chars);let r="";if(t&&s.length){s=rt(s);for(let n=0;n<t;n++)r+=s.charAt(e(0,s.length-1))}return r}numbers(){return this.hasNumbers=!0,this}static numbers(){return(new nt).numbers()}space(){return this.hasSpace=!0,this}static space(){return(new nt).space()}symbols(){return this.hasSymbols=!0,this}static symbols(){return(new nt).symbols()}upper(){return this.hasUpper=!0,this}static upper(){return(new nt).upper()}}const it=t=>t.split("").reverse().join(""),at=(t,e)=>z(t,(t=>t.replace(/(\w)(\w*)/g,((t,e,s)=>e.toUpperCase()+s))),e),ot=(t,e)=>e(t.value)?t.value:(t=>(t.maskIndex--,""))(t),ut={"#":t=>t.value,0:t=>ot(t,tt),9:t=>ot(t,tt),A:t=>ot(t,et),Z:t=>ot(t,et),L:t=>ot(t,et).toLowerCase(),U:t=>ot(t,et).toUpperCase(),S:t=>ot(t,st)},lt=t=>{t.maskIndex++,t.textIndex++;const{mask:e,maskIndex:s,text:r,textIndex:n}=t;t.key=e[s],t.value=r[n];const{key:i,value:a}=t;return m(i)||m(a)?"":(t=>ut[t.key]?ut[t.key](t):(t.key!=t.value&&t.textIndex--,t.key))(t)+lt(t)},ht=(t,e)=>lt({mask:t,maskIndex:-1,text:e,textIndex:-1,key:"",value:""}),ct=(t,e)=>it(ht(it(t),it(e))),pt=(t,e)=>t.reduce(((t,s)=>Object.assign(Object.assign({},t),{[s]:e[s]})),{}),vt=(t,...e)=>{if(!e.length)return t;const s=e.shift();if(v(t)&&v(s))for(const e in s)v(s[e])?(t[e]||(t=Object.assign(Object.assign({},t),{[e]:{}})),t[e]=vt(t[e],s[e])):t=Object.assign(Object.assign({},t),{[e]:s[e]});return vt(t,...e)};class dt{}var xt,mt,ft,gt,yt,Et,bt;dt.DESCRIPTION=Symbol("DESCRIPTION"),dt.ERROR=Symbol("ERROR"),dt.INDEXES=Symbol("INDEXES"),dt.KEYS=Symbol("KEYS"),dt.NAME=Symbol("NAME"),dt.REQUIRED=Symbol("REQUIRED"),dt.SOURCE=Symbol("SOURCE"),dt.TYPE=Symbol("TYPE");class St{constructor(t){this[xt]="",this[mt]="",this[ft]="",this[gt]="any",this[yt]=!1,this.rules=[],this.custom=[],this[dt.TYPE]=t}description(t){return this[dt.DESCRIPTION]=t,this}empty(t){const e=t;return this.unshift((({value:t})=>{const s=o(t);return{break:!o(e)&&!s,value:s?t:h(e)?e():e}}))}equal(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>{const n=s({value:t,context:r});return t==n?{value:t}:this.invalid(`.equal(${n})`,e)}))}error(t){return x(t)&&(this[dt.ERROR]=t),this}filter(...t){const e=t;return this.unshift((({value:t})=>{const s=-1==e.indexOf(t);return{break:!s,value:s?t:void 0}}))}fn(t){return h(t)?t:()=>t}from(t){return this[dt.SOURCE]=t,this}invalid(t,e){return t=`[${this[dt.TYPE]}]${t}`,{error:this[dt.ERROR]?this[dt.ERROR]:this[dt.NAME]?this[dt.NAME]+":"+t:t,message:e}}model(){return this.toString()}parse(){return this.unshift((({value:t})=>({value:t})))}push(t){return this.rules.push(t),this}required(t){return this[dt.REQUIRED]=!0,this.unshift((({value:e})=>o(e)?{value:e}:this.invalid(".required",t)))}test(t){return!x(this.validate(t).error)}testAsync(t){return H(this,void 0,void 0,(function*(){return!x((yield this.validateAsync(t)).error)}))}toString(){return this[dt.TYPE]}unshift(t){return this.rules.unshift(t),this}validate(t,e){var s;if(this.custom.length)return this.invalid("[async]");let r={value:t};for(let t=0;t<this.rules.length;t++){if(r=this.rules[t]({value:r.value,context:e}),null===(s=r.error)||void 0===s?void 0:s.length)return Object.assign({error:r.error},r.message?{message:r.message}:{});if(r.break)return{value:r.value}}return{value:r.value}}validateAsync(t,e){return H(this,void 0,void 0,(function*(){let s=this.validate(t,e);if(s.error)return{error:s.error};for(let t=0;t<this.custom.length;t++){if(s=yield this.custom[t]({value:s.value}),s.error)return{error:s.error};if(s.break)return{value:s.value}}return{value:s.value}}))}}xt=dt.NAME,mt=dt.DESCRIPTION,dt.SOURCE,ft=dt.ERROR,gt=dt.TYPE,yt=dt.REQUIRED;class wt extends St{constructor(t){super("array"),this[Et]=[],this.push((({value:e})=>i(e)?{value:e}:this.invalid("",t)))}between(t,e,s){return this.min(t,s),this.max(e,s)}items(t,e){const s=t;return s&&this[dt.INDEXES].push(s),s?this.push((({value:t})=>{s[dt.NAME]="";for(let r=0;r<t.length;r++){const{error:n,value:i}=s.validate(t[r],t);if(n)return this.invalid("< "+n+"["+r+"] >",e);t[r]=i}return{value:t}})):this}length(t,e){const s=t;return this.push((({value:t})=>t.length==s?{value:t}:this.invalid(".length("+s+")",e)))}max(t,e){const s=t;return this.push((({value:t})=>t.length<=s?{value:t}:this.invalid(".max("+s+")",e)))}min(t,e){const s=t;return this.push((({value:t})=>t.length>=s?{value:t}:this.invalid(".min("+s+")",e)))}model(){return this[dt.INDEXES].length?this[dt.INDEXES].map((t=>t.model())):this[dt.TYPE]}toString(){return this[dt.INDEXES].length?JSON.stringify(this.model(),null,4):this[dt.TYPE]}}Et=dt.INDEXES;class Ot extends St{constructor(t){super("boolean"),this.push((({value:e})=>a(e)?{value:e}:this.invalid("",t)))}parse(){return this.unshift((({value:t})=>({value:o(t)?g(t):t})))}}class Rt extends St{constructor(t){super("date"),this.push((({value:e})=>x(e)&&e.length>=9&&!isNaN(new Date(e).getTime())?{value:e}:this.invalid("",t)))}format(t){const e=t;return this.push((({value:t})=>({value:$(e,new Date(t))})))}parse(){return this.unshift((({value:t})=>({value:new Date(x(t)&&t.length<=10?`${t} 12:00`:t)})))}}class Ct extends St{constructor(t){super("number"),this.push((({value:e})=>u(e)?{value:e}:this.invalid("",t)))}between(t,e,s){return this.min(t,s),this.max(e,s)}float(t){return this.push((({value:e})=>l(e)?{value:e}:this.invalid(".float",t)))}integer(t){return this.push((({value:e})=>c(e)?{value:e}:this.invalid(".integer",t)))}max(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>{const n=s({value:t,context:r});return t<=n?{value:t}:this.invalid(`.max(${n})`,e)}))}min(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>{const n=s({value:t,context:r});return t>=n?{value:t}:this.invalid(`.min(${n})`,e)}))}parse(){return this.unshift((({value:t})=>({value:o(t)?parseFloat(t.toString()):t})))}}class It extends St{constructor(t){super("object"),this[bt]={},this.push((({value:e})=>p(e)?{value:e}:this.invalid("",t)))}keys(t,e){const s=t;return s&&(this[dt.KEYS]=Object.assign(Object.assign({},this[dt.KEYS]),s)),s?this.push((({value:t})=>{const r=[],n={};return Object.keys(s).forEach((i=>{var a;const u=s[i];u[dt.NAME]=null!==(a=u[dt.SOURCE])&&void 0!==a?a:i;const{error:l,message:h,value:c}=u.validate(t[u[dt.NAME]],n);!e&&h&&(e=h),l&&r.push(l),o(c)&&(n[i]=c)})),r.length?this.invalid("{ "+r.join(", ")+" }",e):{value:n}})):this}model(){const t={},e=Object.keys(this[dt.KEYS]);return e.length&&e.forEach((e=>t[e]=this[dt.KEYS][e].model())),e.length?t:this[dt.TYPE]}parse(t){return this.unshift((({value:e})=>{if(!p(e))try{e=JSON.parse(e)}catch(e){return this.invalid("",t)}return{value:e}}))}toString(){return Object.keys(this[dt.KEYS]).length?JSON.stringify(this.model(),null,4):this[dt.TYPE]}}bt=dt.KEYS;class Mt extends St{constructor(t){super("string"),this.push((({value:e})=>x(e)?{value:e}:this.invalid("",t)))}between(t,e,s){return this.min(t,s),this.max(e,s)}email(t){const e=/^[\w-\\.]+@([\w-]+\.)+[\w-]{2,4}$/i;return this.push((({value:s})=>e.test(s)?{value:s}:this.invalid(".email",t)))}length(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>{const n=s({value:t,context:r});return t.length==n?{value:t}:this.invalid(`.length(${n})`,e)}))}lowerCase(){return this.push((({value:t})=>({value:t.toLowerCase()})))}lowerCamelCase(){return this.push((({value:t})=>({value:V(t)})))}max(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>{const n=s({value:t,context:r});return t.length<=n?{value:t}:this.invalid(`.max(${n})`,e)}))}mask(t){const e=this.fn(t);return this.push((({value:t,context:s})=>({value:ht(e({value:t,context:s}),t)})))}min(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>{const n=s({value:t,context:r});return t.length>=n?{value:t}:this.invalid(`.min(${n})`,e)}))}parse(){return this.unshift((({value:t})=>({value:p(t)?JSON.stringify(t):o(t)?t.toString():t})))}required(t){return this[dt.REQUIRED]=!0,this.push((({value:e})=>e.length?{value:e}:this.invalid(".required",t)))}regex(t,e){return this.push((({value:s})=>t.test(s)?{value:s}:this.invalid(".regex",e)))}replace(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>({value:t.replace(s({value:t,context:r}),e)})))}trim(){return this.push((({value:t})=>({value:t.trim()})))}upperCase(){return this.push((({value:t})=>({value:t.toUpperCase()})))}upperCamelCase(){return this.push((({value:t})=>({value:at(t)})))}}class kt{static array(t,e){return new wt(e).items(t)}static boolean(t){return new Ot(t)}static date(t){return new Rt(t)}static number(t){return new Ct(t)}static object(t,e){return new It(e).keys(t)}static ref(t,e){return({context:s})=>s&&o(s[t])?s[t]:e}static string(t){return new Mt(t)}test(t,...e){return!x(kt.validate(t,...e).error)}testAsync(t,...e){return H(this,void 0,void 0,(function*(){return!x((yield kt.validateAsync(t,...e)).error)}))}static validate(t,...e){let s={value:t};for(let t=0;t<e.length;t++)if(s=e[t].validate(s.value),s.error)return{value:s.value,error:s.error};return{value:s.value}}static validateAsync(t,...e){return H(this,void 0,void 0,(function*(){let s={value:t};for(let t=0;t<e.length;t++)if(s=yield e[t].validateAsync(s.value),s.error)return{value:s.value,error:s.error};return{value:s.value}}))}}exports.EventEmitter=class{constructor(){this.events=new Map}on(t,e){const s=this.events.get(t);return s?s.push(e):this.events.set(t,[e]),{dispose:()=>this.off(t,e)}}once(t,e){const s=r=>{e(r),this.off(t,s)};return this.on(t,s),{dispose:()=>this.off(t,s)}}off(t,e){const s=this.events.get(t);if(e){if(s){const t=s.indexOf(e);t>=0&&s.splice(t,1)}}else this.events.set(t,[])}emit(t,e){const s=this.events.get(t);s&&s.forEach((t=>t(e)))}},exports.Hash=D,exports.RandomString=nt,exports.Validation=kt,exports.ValidationBase=St,exports.ValidationKeys=dt,exports.allowed=pt,exports.cache=()=>{const t=[],e=[];return s=>{let r=t.indexOf(s);return-1==r&&(t.push(s),e.push({}),r=e.length-1),e[r]}},exports.camelCase=Z,exports.chunkArray=(t,e)=>{const s=[];for(let r=0;r<t.length;r+=e)s.push(t.slice(r,r+e));return s},exports.clamp=t,exports.colorPalette=(t,e)=>b(null!=e?e:M,(e=>0==e?t:e>0?I(t,e):C(t,1- -1*e))),exports.compareArray=(t,e)=>t.length===e.length&&t.every(((t,s)=>t===e[s])),exports.countArray=t=>{const e={};return t.forEach((t=>{const s=t.toString();e[s]=(e[s]||0)+1})),e},exports.cutText=(t,e)=>{if(t.length>e){const s=t.substring(0,e).split(" ");return s.pop(),s.join(" ")+"..."}return t},exports.dateFormat=$,exports.dateRange=(t,e)=>{const s=new Date(t),r=[];for(;t<e;)s.setDate(s.getDate()+1),r.push(new Date(s));return r},exports.debounce=(t,e)=>{let s;const r=()=>{s&&clearTimeout(s)};return{cancel:r,run(...n){r(),s=setTimeout((()=>t(...n)),e)}}},exports.decodeHTML=t=>t.replace(W,((t,e)=>G[e])).replace(/&#(\d+);/gi,((t,e)=>String.fromCharCode(parseInt(e,10)))),exports.denied=(t,e)=>pt(Object.keys(e).filter((e=>-1==t.indexOf(e))),e),exports.each=(t,e,s)=>i(t)?y(t,e,s):p(t)?E(t,e,s):t,exports.encodeHTML=t=>t.replace(/[^0-9A-Za-z ]/g,(t=>"&#"+t.charCodeAt(0)+";")),exports.forEachAsync=(t,e,s)=>H(void 0,void 0,void 0,(function*(){yield Promise.allSettled(t.map(((r,n)=>{var i;return null===(i=e.call(s,r,n,t))||void 0===i?void 0:i.catch(J)}))).catch(J)})),exports.forEachIndex=y,exports.forEachKey=E,exports.forEachPage=t=>H(void 0,void 0,void 0,(function*(){var e;let s=!0;const r=()=>s=!0;let n=1;for(;s;)s=!1,yield null===(e=t(n,r))||void 0===e?void 0:e.catch(J),n+=1})),exports.forEachSeries=(t,e,s)=>H(void 0,void 0,void 0,(function*(){var r;for(let n=0;n<t.length;n++)yield null===(r=e.call(s,t[n],n,t))||void 0===r?void 0:r.catch(J)})),exports.forLoop=(t,e,s)=>{for(let r=1;r<=t&&!1!==e.call(s,r,t);r++);return t},exports.hexToRgb=w,exports.hslToRgb=(t,e,s)=>{t/=60;const r=(1-Math.abs(2*s-1))*e,n=r*(1-Math.abs(t%2-1));let i=[0,0,0];t<=1?i=[r,n,0]:t<=2?i=[n,r,0]:t<=3?i=[0,r,n]:t<=4?i=[0,n,r]:t<=5?i=[n,0,r]:t<=6&&(i=[r,0,n]);const a=s-.5*r;return[Math.round(255*(i[0]+a)),Math.round(255*(i[1]+a)),Math.round(255*(i[2]+a))]},exports.isArray=i,exports.isBoolean=a,exports.isCharacter=t=>/^[\w]$/.test(t),exports.isDate=t=>"date"==n(t),exports.isDef=o,exports.isDigit=tt,exports.isEmpty=X,exports.isFalse=t=>!B(t),exports.isFloat=l,exports.isFunction=h,exports.isInteger=c,exports.isLetter=et,exports.isMap=t=>"map"==n(t),exports.isNotEmpty=t=>!X(t),exports.isNull=t=>null===t,exports.isNumber=u,exports.isObject=p,exports.isPlainObject=v,exports.isRegExp=t=>"regexp"==n(t),exports.isScalar=t=>-1!=d.indexOf(n(t)),exports.isSet=t=>"set"==n(t),exports.isSpecialChar=st,exports.isString=x,exports.isSymbol=t=>"symbol"==typeof t,exports.isTrue=B,exports.isUndefined=m,exports.lerp=(e,s,r)=>e+(s-e)*t(r,0,1),exports.loop=(t,e)=>{let s=!1;const r=()=>H(void 0,void 0,void 0,(function*(){s&&(yield t(),setTimeout(r,e))}));return{start(){s||(s=!0,r())},stop(){s=!1}}},exports.lowerCamelCase=V,exports.map=b,exports.mask=ht,exports.maskMoney=(t,e,s)=>(s++,e=parseInt((e||"0").replace(/\D/g,"")).toString(),ct(t,e.length<s?("0".repeat(s)+e).slice(-1*s):e)),exports.maskReverse=ct,exports.maskTest=(t,e)=>t.length==ht(t,e).length,exports.merge=vt,exports.msToString=t=>{const e=[];return _.forEach((s=>{const r=K[s],n=(t-t%r)/r;n&&(t-=n*r,e.push(n.toString()+s))})),e.join(" ")},exports.noop=J,exports.parseMs=t=>{const e=/(-?(?:\d+)?\.?\d+) *(ms|s|m|h|d|w|y)/gm;let s,r=0;for(;null!==(s=e.exec(t));)s.index===e.lastIndex&&e.lastIndex++,r+=parseFloat(s[1])*K[s[2]]||0;return r},exports.parseSize=t=>{if(u(t))return t+"px";const e=(t=>/(-?(?:\d+)?\.?\d+) *(px|%|cm|mm|in|pt|pc|en|ex|ch|rem|vw|vh|vmin|vmax)*/g.exec(t))(t);return e?parseFloat(e[1])+(e[2]||"px"):"0px"},exports.random=e,exports.randomCase=t=>t.split("").map((t=>Math.random()<.5?t.toUpperCase():t.toLowerCase())).join(""),exports.randomElement=t=>t.length?t[e(0,t.length-1)]:null,exports.rangeArray=(t,e,s=1)=>Array.from({length:(e-t)/s+1},((e,r)=>t+r*s)),exports.rgbToHex=R,exports.rgbToHsl=(t,e,s)=>{const[r,n,i]=((...t)=>t.map((t=>t/255)))(t,e,s),a=Math.max(r,n,i),o=Math.min(r,n,i),u=a-o,l=(o+a)/2;return[60*k(u,a,r,n,i),A(u,l),l]},exports.shadeColor=C,exports.shuffleArray=s,exports.shuffleString=rt,exports.simpleID=()=>j()+T(),exports.sleep=t=>new Promise((e=>setTimeout(e,t))),exports.stringReverse=it,exports.tintColor=I,exports.toArray=t=>i(t)?t:o(t)?[t]:[],exports.toBool=g,exports.type=n,exports.uniqueArray=t=>t.filter(((t,e,s)=>s.indexOf(t)===e)),exports.uniqueID=()=>P()+P()+P()+P(),exports.upperCamelCase=at,exports.uuidv4=()=>Y()+"-"+T()+"-4"+j()+"-"+T()+"-"+(Y()+T());
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @andrewcaires/utils.js v0.4.
|
|
2
|
+
* @andrewcaires/utils.js v0.4.9
|
|
3
3
|
* JavaScript utility library for web and nodejs development
|
|
4
4
|
* (c) 2025 Andrew Caires
|
|
5
5
|
* @license: MIT
|
|
@@ -205,10 +205,14 @@ declare const denied: (denied: Array<string>, target: TypeObjectAny) => TypeObje
|
|
|
205
205
|
|
|
206
206
|
declare const merge: (target: TypeObjectAny, ...sources: Array<TypeObjectAny>) => TypeObjectAny;
|
|
207
207
|
|
|
208
|
-
type ForEachCallback<T> = TypeCallback<T, number, Array<T>, Promise<void>>;
|
|
208
|
+
type ForEachCallback<T> = TypeCallback<T, number, Array<T>, void | Promise<void>>;
|
|
209
209
|
|
|
210
210
|
declare const forEachAsync: <T>(array: Array<T>, callback: ForEachCallback<T>, thisArg?: any) => Promise<void>;
|
|
211
211
|
|
|
212
|
+
type forEachPageCallback = (index: number, next: TypeCallbackFunction) => void | Promise<void>;
|
|
213
|
+
|
|
214
|
+
declare const forEachPage: (callback: forEachPageCallback) => Promise<void>;
|
|
215
|
+
|
|
212
216
|
declare const forEachSeries: <T>(array: Array<T>, callback: ForEachCallback<T>, thisArg?: any) => Promise<void>;
|
|
213
217
|
|
|
214
218
|
declare const sleep: (ms: number) => Promise<void>;
|
|
@@ -274,6 +278,8 @@ type ValidationCallback<T = any> = (value: IValidationInput<T>) => IValidationOu
|
|
|
274
278
|
declare class ValidationKeys {
|
|
275
279
|
static readonly DESCRIPTION: unique symbol;
|
|
276
280
|
static readonly ERROR: unique symbol;
|
|
281
|
+
static readonly INDEXES: unique symbol;
|
|
282
|
+
static readonly KEYS: unique symbol;
|
|
277
283
|
static readonly NAME: unique symbol;
|
|
278
284
|
static readonly REQUIRED: unique symbol;
|
|
279
285
|
static readonly SOURCE: unique symbol;
|
|
@@ -291,29 +297,31 @@ declare class ValidationBase<T = any> {
|
|
|
291
297
|
private custom;
|
|
292
298
|
constructor(type: string);
|
|
293
299
|
description(value: string): this;
|
|
294
|
-
empty(value?: T | TypeCallbackFunction<T
|
|
300
|
+
empty(value?: T | TypeCallbackFunction<T>): this;
|
|
295
301
|
equal(value: T | IValidationFunction<T>, message?: string): this;
|
|
296
302
|
error(value?: string): this;
|
|
297
303
|
filter(...values: Array<T>): this;
|
|
298
304
|
protected fn<T = any>(value: T | TypeCallbackFunction<T>): TypeCallbackFunction<T>;
|
|
299
305
|
from(value: string): this;
|
|
300
306
|
protected invalid(error: string, message?: string): IValidationOutput<T>;
|
|
307
|
+
model(): string | TypeObjectAny | Array<string | TypeObjectAny>;
|
|
301
308
|
parse(): this;
|
|
302
309
|
push(callback: ValidationCallback<T>): this;
|
|
303
310
|
required(message?: string): this;
|
|
304
311
|
test(value?: any): boolean;
|
|
305
312
|
testAsync(value?: any): Promise<boolean>;
|
|
313
|
+
toString(): string;
|
|
306
314
|
unshift(callback: ValidationCallback<T>): this;
|
|
307
315
|
validate(value?: any, context?: any): IValidationOutput<T>;
|
|
308
316
|
validateAsync(value?: any, context?: any): Promise<IValidationOutput<T>>;
|
|
309
317
|
}
|
|
310
318
|
|
|
311
319
|
interface IValidationOutput<T = any> {
|
|
320
|
+
break?: boolean;
|
|
312
321
|
context?: any;
|
|
313
322
|
error?: string;
|
|
314
323
|
message?: string;
|
|
315
324
|
self?: ValidationBase<T>;
|
|
316
|
-
stop?: boolean;
|
|
317
325
|
value?: T;
|
|
318
326
|
}
|
|
319
327
|
|
|
@@ -324,12 +332,15 @@ interface IValidationInput<T = any> extends IValidationOutput<T> {
|
|
|
324
332
|
type IValidationFunction<T> = (value: IValidationInput) => T;
|
|
325
333
|
|
|
326
334
|
declare class ValidationArray extends ValidationBase<Array<any>> {
|
|
335
|
+
private [ValidationKeys.INDEXES];
|
|
327
336
|
constructor(message?: string);
|
|
328
337
|
between(min: number, max: number, message?: string): this;
|
|
329
338
|
items(value?: ValidationBase, message?: string): this;
|
|
330
339
|
length(value: number, message?: string): this;
|
|
331
340
|
max(value: number, message?: string): this;
|
|
332
341
|
min(value: number, message?: string): this;
|
|
342
|
+
model(): string | TypeObjectAny | Array<string | TypeObjectAny>;
|
|
343
|
+
toString(): string;
|
|
333
344
|
}
|
|
334
345
|
|
|
335
346
|
declare class ValidationBoolean extends ValidationBase<boolean> {
|
|
@@ -354,9 +365,12 @@ declare class ValidationNumber extends ValidationBase<number> {
|
|
|
354
365
|
}
|
|
355
366
|
|
|
356
367
|
declare class ValidationObject extends ValidationBase<TypeObjectAny> {
|
|
368
|
+
private [ValidationKeys.KEYS];
|
|
357
369
|
constructor(message?: string);
|
|
358
370
|
keys(value?: TypeObject<ValidationBase>, message?: string): this;
|
|
371
|
+
model(): string | TypeObjectAny | Array<string | TypeObjectAny>;
|
|
359
372
|
parse(message?: string): this;
|
|
373
|
+
toString(): string;
|
|
360
374
|
}
|
|
361
375
|
|
|
362
376
|
declare class ValidationString extends ValidationBase<string> {
|
|
@@ -372,7 +386,7 @@ declare class ValidationString extends ValidationBase<string> {
|
|
|
372
386
|
parse(): this;
|
|
373
387
|
required(message?: string): this;
|
|
374
388
|
regex(regex: RegExp, message?: string): this;
|
|
375
|
-
replace<T extends string>(value: T | RegExp | IValidationFunction<T>, text:
|
|
389
|
+
replace<T extends string>(value: T | RegExp | IValidationFunction<T>, text: string): this;
|
|
376
390
|
trim(): this;
|
|
377
391
|
upperCase(): this;
|
|
378
392
|
upperCamelCase(): this;
|
|
@@ -394,5 +408,5 @@ declare class Validation {
|
|
|
394
408
|
|
|
395
409
|
type ValidationCallbackAsync<T = any> = (value: IValidationInput<T>) => Promise<IValidationOutput<T>>;
|
|
396
410
|
|
|
397
|
-
export { EventEmitter, Hash, RandomString, Validation, ValidationBase, ValidationKeys, allowed, cache, camelCase, chunkArray, clamp, colorPalette, compareArray, countArray, cutText, dateFormat, dateRange, debounce, decodeHTML, denied, each, encodeHTML, forEachAsync, forEachIndex, forEachKey, forEachSeries, forLoop, hexToRgb, hslToRgb, isArray, isBoolean, isCharacter, isDate, isDef, isDigit, isEmpty, isFalse, isFloat, isFunction, isInteger, isLetter, isMap, isNotEmpty, isNull, isNumber, isObject, isPlainObject, isRegExp, isScalar, isSet, isSpecialChar, isString, isSymbol, isTrue, isUndefined, lerp, loop, lowerCamelCase, map, mask, maskMoney, maskReverse, maskTest, merge, msToString, noop, parseMs, parseSize, random, randomCase, randomElement, rangeArray, rgbToHex, rgbToHsl, shadeColor, shuffleArray, shuffleString, simpleID, sleep, stringReverse, tintColor, toArray, toBool, type, uniqueArray, uniqueID, upperCamelCase, uuidv4 };
|
|
398
|
-
export type { CacheCallback, EachCallback, EachValue, EventCallback, EventList, ForEachCallback, IDebounceCallbacks, IEventDisposable, ILoopCallbacks, IValidationFunction, IValidationInput, IValidationOutput, TypeArray, TypeArrayAny, TypeArrayFunction, TypeArrayNumber, TypeArrayString, TypeCallback, TypeCallbackArray, TypeCallbackFunction, TypeCallbackMap, TypeCallbackObject, TypeKey, TypeNullable, TypeObject, TypeObjectAny, TypeObjectBoolean, TypeObjectFunction, TypeObjectNullable, TypeObjectNumber, TypeObjectString, TypeScalar, ValidationCallback, ValidationCallbackAsync };
|
|
411
|
+
export { EventEmitter, Hash, RandomString, Validation, ValidationBase, ValidationKeys, allowed, cache, camelCase, chunkArray, clamp, colorPalette, compareArray, countArray, cutText, dateFormat, dateRange, debounce, decodeHTML, denied, each, encodeHTML, forEachAsync, forEachIndex, forEachKey, forEachPage, forEachSeries, forLoop, hexToRgb, hslToRgb, isArray, isBoolean, isCharacter, isDate, isDef, isDigit, isEmpty, isFalse, isFloat, isFunction, isInteger, isLetter, isMap, isNotEmpty, isNull, isNumber, isObject, isPlainObject, isRegExp, isScalar, isSet, isSpecialChar, isString, isSymbol, isTrue, isUndefined, lerp, loop, lowerCamelCase, map, mask, maskMoney, maskReverse, maskTest, merge, msToString, noop, parseMs, parseSize, random, randomCase, randomElement, rangeArray, rgbToHex, rgbToHsl, shadeColor, shuffleArray, shuffleString, simpleID, sleep, stringReverse, tintColor, toArray, toBool, type, uniqueArray, uniqueID, upperCamelCase, uuidv4 };
|
|
412
|
+
export type { CacheCallback, EachCallback, EachValue, EventCallback, EventList, ForEachCallback, IDebounceCallbacks, IEventDisposable, ILoopCallbacks, IValidationFunction, IValidationInput, IValidationOutput, TypeArray, TypeArrayAny, TypeArrayFunction, TypeArrayNumber, TypeArrayString, TypeCallback, TypeCallbackArray, TypeCallbackFunction, TypeCallbackMap, TypeCallbackObject, TypeKey, TypeNullable, TypeObject, TypeObjectAny, TypeObjectBoolean, TypeObjectFunction, TypeObjectNullable, TypeObjectNumber, TypeObjectString, TypeScalar, ValidationCallback, ValidationCallbackAsync, forEachPageCallback };
|
package/dist/index.esm.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @andrewcaires/utils.js v0.4.
|
|
2
|
+
* @andrewcaires/utils.js v0.4.9
|
|
3
3
|
* JavaScript utility library for web and nodejs development
|
|
4
4
|
* (c) 2025 Andrew Caires
|
|
5
5
|
* @license: MIT
|
|
6
6
|
*/
|
|
7
|
-
const t=(t,e)=>{const s=[];for(let r=0;r<t.length;r+=e)s.push(t.slice(r,r+e));return s},e=(t,e)=>t.length===e.length&&t.every(((t,s)=>t===e[s])),s=t=>{const e={};return t.forEach((t=>{const s=t.toString();e[s]=(e[s]||0)+1})),e},r=(t,e,s)=>Math.max(e,Math.min(s,t)),n=(t,e,s)=>t+(e-t)*r(s,0,1),i=(t,e)=>Math.floor(Math.random()*(e-t+1)+t),a=t=>t.length?t[i(0,t.length-1)]:null,u=(t,e,s=1)=>Array.from({length:(e-t)/s+1},((e,r)=>t+r*s)),l=t=>{for(let e=t.length-1;e>0;e--){const s=i(0,e);[t[e],t[s]]=[t[s],t[e]]}return t},h={},o=t=>null==t?"null":h[h.toString.call(t)]||"object";["Array","AsyncFunction","Boolean","Date","Function","Map","Number","Object","RegExp","Set","String"].forEach((t=>h["[object "+t+"]"]=t.toLowerCase()));const c=t=>"array"==o(t),v=t=>"boolean"==o(t),p=t=>"date"==o(t),d=t=>"null"!=o(t),f=t=>"number"==o(t),m=t=>f(t)&&!!(t%1),g=t=>"function"==typeof t,x=t=>f(t)&&!(t%1),y=t=>"map"==o(t),b=t=>null===t,w=t=>"object"==o(t),E=t=>w(t)&&t.constructor===Object,S=t=>"regexp"==o(t),O=["boolean","number","string"],R=t=>-1!=O.indexOf(o(t)),C=t=>"set"==o(t),M=t=>"string"==typeof t,I=t=>"symbol"==typeof t,j=t=>void 0===t,k=t=>c(t)?t:d(t)?[t]:[],A=t=>t.filter(((t,e,s)=>s.indexOf(t)===e)),D=[1,"1",!0,"true"],N=t=>-1!=D.indexOf(t),U=()=>{const t=[],e=[];return s=>{let r=t.indexOf(s);return-1==r&&(t.push(s),e.push({}),r=e.length-1),e[r]}},T=(t,e,s)=>{for(let r=0;r<t.length&&!1!==e.call(s,t[r],r,t);r++);return t},P=(t,e,s)=>{let r="";const n=Object.keys(t);for(let i=0;i<n.length&&(r=n[i],!1!==e.call(s,t[r],r,t));i++);return t},$=(t,e,s)=>c(t)?T(t,e,s):w(t)?P(t,e,s):t,_=(t,e,s)=>{for(let r=1;r<=t&&!1!==e.call(s,r,t);r++);return t},L=(t,e,s)=>Object.fromEntries(Object.entries(t).map((([r,n])=>[r,e.call(s,n,r,t)]))),Y=t=>parseInt(null!=t?t:"0",16)||0,q=t=>{var e;return(null===(e=t.replace(/^#/,"").match(/.{1,2}/g))||void 0===e?void 0:e.map(Y))||[]},F=t=>("0"+t.toString(16)).slice(-2),Q=(t,e,s)=>"#"+F(t)+F(e)+F(s),H=(t,e)=>{const s=q(t);e=r(e,0,1);const[n,i,a]=s.map((t=>Math.round(t*e)));return Q(n,i,a)},Z=(t,e)=>{const s=q(t);e=r(e,0,1);const[n,i,a]=s.map((t=>Math.round(t+(255-t)*e)));return Q(n,i,a)},z={50:.95,100:.9,200:.75,300:.6,400:.3,500:0,600:-.1,700:-.25,800:-.4,900:-.55,950:-.71},J=(t,e)=>L(null!=e?e:z,(e=>0==e?t:e>0?Z(t,e):H(t,1- -1*e))),B=(t,e,s)=>{t/=60;const r=(1-Math.abs(2*s-1))*e,n=r*(1-Math.abs(t%2-1));let i=[0,0,0];t<=1?i=[r,n,0]:t<=2?i=[n,r,0]:t<=3?i=[0,r,n]:t<=4?i=[0,n,r]:t<=5?i=[n,0,r]:t<=6&&(i=[r,0,n]);const a=s-.5*r;return[Math.round(255*(i[0]+a)),Math.round(255*(i[1]+a)),Math.round(255*(i[2]+a))]},W=(t,e,s,r,n)=>0===t?0:e===s?(r-n)/t%6:e===r?(n-s)/t+2:e===n?(s-r)/t+4:0,G=(t,e)=>0===t?0:t/(1-Math.abs(2*e-1)),K=(t,e,s)=>{const[r,n,i]=((...t)=>t.map((t=>t/255)))(t,e,s),a=Math.max(r,n,i),u=Math.min(r,n,i),l=a-u,h=(u+a)/2;return[60*W(l,a,r,n,i),G(l,h),h]};class V{constructor(t){this.key=this.shuffle(V.dictionary,t,!1)}encrypt(t){return this.shuffle(t,this.key,!1)}decrypt(t){return this.shuffle(t,this.key,!0)}index(t,e,s){return[V.dictionary.indexOf(t[s]),V.dictionary.indexOf(e[s%e.length])]}result(t,e,s){return V.dictionary[(s?t-e+V.dictionary.length:t+e)%V.dictionary.length]}shuffle(t,e,s){let r="";for(let n=0;n<t.length;n++){const[i,a]=this.index(t,e,n);r+=-1===i||-1===a?t[n]:this.result(i,a,s)}return r}}V.dictionary="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";const X=t=>Math.random().toString(16).slice(t),tt=()=>X(-3),et=()=>X(-4),st=()=>et()+et(),rt=()=>st()+st(),nt=()=>tt()+et(),it=()=>rt()+rt()+rt()+rt(),at=()=>st()+"-"+et()+"-4"+tt()+"-"+et()+"-"+(st()+et()),ut=t=>("0"+t.toString()).slice(-2),lt={"%y":t=>ut(t.getFullYear()),"%Y":t=>t.getFullYear().toString(),"%m":t=>ut(t.getMonth()+1),"%d":t=>ut(t.getDate()),"%H":t=>ut(t.getHours()),"%M":t=>ut(t.getMinutes()),"%S":t=>ut(t.getSeconds())},ht=(t,e)=>(e=null!=e?e:new Date,t.replace(/%[yYmdHMS]/g,(t=>lt[t]?lt[t](e):t.slice(1)))),ot=(t,e)=>{const s=new Date(t),r=[];for(;t<e;)s.setDate(s.getDate()+1),r.push(new Date(s));return r},ct=36e5,vt=24*ct,pt={ms:1,s:1e3,m:6e4,h:ct,d:vt,w:7*vt,y:315576e5},dt=["y","d","h","m","s","ms"],ft=t=>{const e=[];return dt.forEach((s=>{const r=pt[s],n=(t-t%r)/r;n&&(t-=n*r,e.push(n.toString()+s))})),e.join(" ")},mt=t=>{const e=/(-?(?:\d+)?\.?\d+) *(ms|s|m|h|d|w|y)/gm;let s,r=0;for(;null!==(s=e.exec(t));)s.index===e.lastIndex&&e.lastIndex++,r+=parseFloat(s[1])*pt[s[2]]||0;return r},gt=(t,e)=>{let s;const r=()=>{s&&clearTimeout(s)};return{cancel:r,run(...n){r(),s=setTimeout((()=>t(...n)),e)}}};class xt{constructor(){this.events=new Map}on(t,e){const s=this.events.get(t);return s?s.push(e):this.events.set(t,[e]),{dispose:()=>this.off(t,e)}}once(t,e){const s=r=>{e(r),this.off(t,s)};return this.on(t,s),{dispose:()=>this.off(t,s)}}off(t,e){const s=this.events.get(t);if(e){if(s){const t=s.indexOf(e);t>=0&&s.splice(t,1)}}else this.events.set(t,[])}emit(t,e){const s=this.events.get(t);s&&s.forEach((t=>t(e)))}}function yt(t,e,s,r){return new(s||(s=Promise))((function(n,i){function a(t){try{l(r.next(t))}catch(t){i(t)}}function u(t){try{l(r.throw(t))}catch(t){i(t)}}function l(t){t.done?n(t.value):function(t){return t instanceof s?t:new s((function(e){e(t)}))}(t.value).then(a,u)}l((r=r.apply(t,e||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const bt=(t,e)=>{let s=!1;const r=()=>yt(void 0,void 0,void 0,(function*(){s&&(yield t(),setTimeout(r,e))}));return{start(){s||(s=!0,r())},stop(){s=!1}}},wt=t=>{var e;return 0==(null!==(e=null==t?void 0:t.length)&&void 0!==e?e:0)},Et=["",0,"0",null,!1,void 0],St=t=>-1==Et.indexOf(t),Ot=t=>!St(t),Rt=t=>!wt(t),Ct=()=>{},Mt=(t,e,s)=>e(t.toLowerCase().replace(/\W+/g," ")).replace(/\s/g,null!=s?s:""),It=(t,e)=>Mt(t,(t=>t.replace(/\s(\w)/g,(t=>t.toUpperCase()))),e),jt=It,kt=(t,e)=>{if(t.length>e){const s=t.substring(0,e).split(" ");return s.pop(),s.join(" ")+"..."}return t},At=/&(amp|apos|lt|gt|nbsp|quot);/g,Dt={amp:"&",apos:"'",lt:"<",gt:">",nbsp:" ",quot:'"'},Nt=t=>t.replace(At,((t,e)=>Dt[e])).replace(/&#(\d+);/gi,((t,e)=>String.fromCharCode(parseInt(e,10)))),Ut=t=>t.replace(/[^0-9A-Za-z ]/g,(t=>"&#"+t.charCodeAt(0)+";")),Tt=t=>/^[\w]$/.test(t),Pt=t=>/^[\d]$/.test(t),$t=t=>/^[A-Za-z]$/.test(t),_t=t=>/^[^\w]$/.test(t),Lt=t=>{if(f(t))return t+"px";const e=(t=>/(-?(?:\d+)?\.?\d+) *(px|%|cm|mm|in|pt|pc|en|ex|ch|rem|vw|vh|vmin|vmax)*/g.exec(t))(t);return e?parseFloat(e[1])+(e[2]||"px"):"0px"},Yt=t=>t.split("").map((t=>Math.random()<.5?t.toUpperCase():t.toLowerCase())).join(""),qt=t=>l(t.split("")).join("");class Ft{constructor(){this.hasSpace=!1,this._space=" ",this.hasNumbers=!1,this._numbers="0123456789",this.hasSymbols=!1,this._symbols="!@#$%^&*()<>.<~:;?+=-_",this.hasUpper=!1,this._upper="ABCDEFGHIJKLMNOPQRSTUVWXYZ",this.hasLower=!1,this._lower="abcdefghijklmnopqrstuvwxyz",this.hasChars=!1,this._chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"}chars(){return this.hasChars=!0,this}static chars(){return(new Ft).chars()}lower(){return this.hasLower=!0,this}static lower(){return(new Ft).lower()}make(t){let e="";this.hasSpace&&(e+=this._space),this.hasNumbers&&(e+=this._numbers),this.hasSymbols&&(e+=this._symbols),this.hasUpper&&!this.hasChars&&(e+=this._upper),this.hasLower&&!this.hasChars&&(e+=this._lower),this.hasChars&&(e+=this._chars);let s="";if(t&&e.length){e=qt(e);for(let r=0;r<t;r++)s+=e.charAt(i(0,e.length-1))}return s}numbers(){return this.hasNumbers=!0,this}static numbers(){return(new Ft).numbers()}space(){return this.hasSpace=!0,this}static space(){return(new Ft).space()}symbols(){return this.hasSymbols=!0,this}static symbols(){return(new Ft).symbols()}upper(){return this.hasUpper=!0,this}static upper(){return(new Ft).upper()}}const Qt=t=>t.split("").reverse().join(""),Ht=(t,e)=>Mt(t,(t=>t.replace(/(\w)(\w*)/g,((t,e,s)=>e.toUpperCase()+s))),e),Zt=(t,e)=>e(t.value)?t.value:(t=>(t.maskIndex--,""))(t),zt={"#":t=>t.value,0:t=>Zt(t,Pt),9:t=>Zt(t,Pt),A:t=>Zt(t,$t),Z:t=>Zt(t,$t),L:t=>Zt(t,$t).toLowerCase(),U:t=>Zt(t,$t).toUpperCase(),S:t=>Zt(t,_t)},Jt=t=>{t.maskIndex++,t.textIndex++;const{mask:e,maskIndex:s,text:r,textIndex:n}=t;t.key=e[s],t.value=r[n];const{key:i,value:a}=t;return j(i)||j(a)?"":(t=>zt[t.key]?zt[t.key](t):(t.key!=t.value&&t.textIndex--,t.key))(t)+Jt(t)},Bt=(t,e)=>Jt({mask:t,maskIndex:-1,text:e,textIndex:-1,key:"",value:""}),Wt=(t,e)=>Qt(Bt(Qt(t),Qt(e))),Gt=(t,e,s)=>(s++,e=parseInt((e||"0").replace(/\D/g,"")).toString(),Wt(t,e.length<s?("0".repeat(s)+e).slice(-1*s):e)),Kt=(t,e)=>t.length==Bt(t,e).length,Vt=(t,e)=>t.reduce(((t,s)=>Object.assign(Object.assign({},t),{[s]:e[s]})),{}),Xt=(t,e)=>Vt(Object.keys(e).filter((e=>-1==t.indexOf(e))),e),te=(t,...e)=>{if(!e.length)return t;const s=e.shift();if(E(t)&&E(s))for(const e in s)E(s[e])?(t[e]||(t=Object.assign(Object.assign({},t),{[e]:{}})),t[e]=te(t[e],s[e])):t=Object.assign(Object.assign({},t),{[e]:s[e]});return te(t,...e)},ee=(t,e,s)=>yt(void 0,void 0,void 0,(function*(){yield Promise.allSettled(t.map(((r,n)=>e.call(s,r,n,t)))).catch(Ct)})),se=(t,e,s)=>yt(void 0,void 0,void 0,(function*(){for(let r=0;r<t.length;r++)yield e.call(s,t[r],r,t).catch(Ct)})),re=t=>new Promise((e=>setTimeout(e,t)));class ne{}var ie,ae,ue,le,he;ne.DESCRIPTION=Symbol("DESCRIPTION"),ne.ERROR=Symbol("ERROR"),ne.NAME=Symbol("NAME"),ne.REQUIRED=Symbol("REQUIRED"),ne.SOURCE=Symbol("SOURCE"),ne.TYPE=Symbol("TYPE");class oe{constructor(t){this[ie]="",this[ae]="",this[ue]="",this[le]="any",this[he]=!1,this.rules=[],this.custom=[],this[ne.TYPE]=t}description(t){return this[ne.DESCRIPTION]=t,this}empty(t,e=!0){const s=t;return this.unshift((({value:t})=>{const r=d(t);return{stop:e&&!r,value:r?t:g(s)?s():s}}))}equal(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>{const n=s({value:t,context:r});return t==n?{value:t}:this.invalid(`.equal(${n})`,e)}))}error(t){return M(t)&&(this[ne.ERROR]=t),this}filter(...t){const e=t;return this.unshift((({value:t})=>{const s=-1==e.indexOf(t);return{stop:!s,value:s?t:void 0}}))}fn(t){return g(t)?t:()=>t}from(t){return this[ne.SOURCE]=t,this}invalid(t,e){return t=`[${this[ne.TYPE]}]${t}`,{error:this[ne.ERROR]?this[ne.ERROR]:this[ne.NAME]?this[ne.NAME]+":"+t:t,message:e}}parse(){return this.unshift((({value:t})=>({value:t})))}push(t){return this.rules.push(t),this}required(t){return this[ne.REQUIRED]=!0,this.unshift((({value:e})=>d(e)?{value:e}:this.invalid(".required",t)))}test(t){return!M(this.validate(t).error)}testAsync(t){return yt(this,void 0,void 0,(function*(){return!M((yield this.validateAsync(t)).error)}))}unshift(t){return this.rules.unshift(t),this}validate(t,e){var s;if(this.custom.length)return this.invalid("[async]");let r={value:t};for(let t=0;t<this.rules.length;t++){if(r=this.rules[t]({value:r.value,context:e}),null===(s=r.error)||void 0===s?void 0:s.length)return Object.assign({error:r.error},r.message?{message:r.message}:{});if(r.stop)return{value:r.value}}return{value:r.value}}validateAsync(t,e){return yt(this,void 0,void 0,(function*(){let s=this.validate(t,e);if(s.error)return{error:s.error};for(let t=0;t<this.custom.length;t++){if(s=yield this.custom[t]({value:s.value}),s.error)return{error:s.error};if(s.stop)return{value:s.value}}return{value:s.value}}))}}ie=ne.NAME,ae=ne.DESCRIPTION,ne.SOURCE,ue=ne.ERROR,le=ne.TYPE,he=ne.REQUIRED;class ce extends oe{constructor(t){super("array"),this.push((({value:e})=>c(e)?{value:e}:this.invalid("",t)))}between(t,e,s){return this.min(t,s),this.max(e,s)}items(t,e){const s=t;return s?this.push((({value:t})=>{s[ne.NAME]="";for(let r=0;r<t.length;r++){const{error:n,value:i}=s.validate(t[r],t);if(n)return this.invalid("< "+n+"["+r+"] >",e);t[r]=i}return{value:t}})):this}length(t,e){const s=t;return this.push((({value:t})=>t.length==s?{value:t}:this.invalid(".length("+s+")",e)))}max(t,e){const s=t;return this.push((({value:t})=>t.length<=s?{value:t}:this.invalid(".max("+s+")",e)))}min(t,e){const s=t;return this.push((({value:t})=>t.length>=s?{value:t}:this.invalid(".min("+s+")",e)))}}class ve extends oe{constructor(t){super("boolean"),this.push((({value:e})=>v(e)?{value:e}:this.invalid("",t)))}parse(){return this.unshift((({value:t})=>({value:d(t)?N(t):t})))}}class pe extends oe{constructor(t){super("date"),this.push((({value:e})=>M(e)&&e.length>=9&&!isNaN(new Date(e).getTime())?{value:e}:this.invalid("",t)))}format(t){const e=t;return this.push((({value:t})=>({value:ht(e,new Date(t))})))}parse(){return this.unshift((({value:t})=>({value:new Date(M(t)&&t.length<=10?`${t} 12:00`:t)})))}}class de extends oe{constructor(t){super("number"),this.push((({value:e})=>f(e)?{value:e}:this.invalid("",t)))}between(t,e,s){return this.min(t,s),this.max(e,s)}float(t){return this.push((({value:e})=>m(e)?{value:e}:this.invalid(".float",t)))}integer(t){return this.push((({value:e})=>x(e)?{value:e}:this.invalid(".integer",t)))}max(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>{const n=s({value:t,context:r});return t<=n?{value:t}:this.invalid(`.max(${n})`,e)}))}min(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>{const n=s({value:t,context:r});return t>=n?{value:t}:this.invalid(`.min(${n})`,e)}))}parse(){return this.unshift((({value:t})=>({value:d(t)?parseFloat(t.toString()):t})))}}class fe extends oe{constructor(t){super("object"),this.push((({value:e})=>w(e)?{value:e}:this.invalid("",t)))}keys(t,e){const s=t;return s?this.push((({value:t})=>{const r=[],n={};return Object.keys(s).forEach((i=>{var a;const u=s[i];u[ne.NAME]=null!==(a=u[ne.SOURCE])&&void 0!==a?a:i;const{error:l,message:h,value:o}=u.validate(t[u[ne.NAME]],n);!e&&h&&(e=h),l&&r.push(l),d(o)&&(n[i]=o)})),r.length?this.invalid("{ "+r.join(", ")+" }",e):{value:n}})):this}parse(t){return this.unshift((({value:e})=>{if(!w(e))try{e=JSON.parse(e)}catch(e){return this.invalid("",t)}return{value:e}}))}}class me extends oe{constructor(t){super("string"),this.push((({value:e})=>M(e)?{value:e}:this.invalid("",t)))}between(t,e,s){return this.min(t,s),this.max(e,s)}email(t){const e=/^[\w-\\.]+@([\w-]+\.)+[\w-]{2,4}$/i;return this.push((({value:s})=>e.test(s)?{value:s}:this.invalid(".email",t)))}length(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>{const n=s({value:t,context:r});return t.length==n?{value:t}:this.invalid(`.length(${n})`,e)}))}lowerCase(){return this.push((({value:t})=>({value:t.toLowerCase()})))}lowerCamelCase(){return this.push((({value:t})=>({value:It(t)})))}max(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>{const n=s({value:t,context:r});return t.length<=n?{value:t}:this.invalid(`.max(${n})`,e)}))}mask(t){const e=this.fn(t);return this.push((({value:t,context:s})=>({value:Bt(e({value:t,context:s}),t)})))}min(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>{const n=s({value:t,context:r});return t.length>=n?{value:t}:this.invalid(`.min(${n})`,e)}))}parse(){return this.unshift((({value:t})=>({value:w(t)?JSON.stringify(t):d(t)?t.toString():t})))}required(t){return this[ne.REQUIRED]=!0,this.push((({value:e})=>e.length?{value:e}:this.invalid(".required",t)))}regex(t,e){return this.push((({value:s})=>t.test(s)?{value:s}:this.invalid(".regex",e)))}replace(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>({value:t.replace(s({value:t,context:r}),((...t)=>g(e)?e(...t):e))})))}trim(){return this.push((({value:t})=>({value:t.trim()})))}upperCase(){return this.push((({value:t})=>({value:t.toUpperCase()})))}upperCamelCase(){return this.push((({value:t})=>({value:Ht(t)})))}}class ge{static array(t,e){return new ce(e).items(t)}static boolean(t){return new ve(t)}static date(t){return new pe(t)}static number(t){return new de(t)}static object(t,e){return new fe(e).keys(t)}static ref(t,e){return({context:s})=>s&&d(s[t])?s[t]:e}static string(t){return new me(t)}test(t,...e){return!M(ge.validate(t,...e).error)}testAsync(t,...e){return yt(this,void 0,void 0,(function*(){return!M((yield ge.validateAsync(t,...e)).error)}))}static validate(t,...e){let s={value:t};for(let t=0;t<e.length;t++)if(s=e[t].validate(s.value),s.error)return{value:s.value,error:s.error};return{value:s.value}}static validateAsync(t,...e){return yt(this,void 0,void 0,(function*(){let s={value:t};for(let t=0;t<e.length;t++)if(s=yield e[t].validateAsync(s.value),s.error)return{value:s.value,error:s.error};return{value:s.value}}))}}export{xt as EventEmitter,V as Hash,Ft as RandomString,ge as Validation,oe as ValidationBase,ne as ValidationKeys,Vt as allowed,U as cache,jt as camelCase,t as chunkArray,r as clamp,J as colorPalette,e as compareArray,s as countArray,kt as cutText,ht as dateFormat,ot as dateRange,gt as debounce,Nt as decodeHTML,Xt as denied,$ as each,Ut as encodeHTML,ee as forEachAsync,T as forEachIndex,P as forEachKey,se as forEachSeries,_ as forLoop,q as hexToRgb,B as hslToRgb,c as isArray,v as isBoolean,Tt as isCharacter,p as isDate,d as isDef,Pt as isDigit,wt as isEmpty,Ot as isFalse,m as isFloat,g as isFunction,x as isInteger,$t as isLetter,y as isMap,Rt as isNotEmpty,b as isNull,f as isNumber,w as isObject,E as isPlainObject,S as isRegExp,R as isScalar,C as isSet,_t as isSpecialChar,M as isString,I as isSymbol,St as isTrue,j as isUndefined,n as lerp,bt as loop,It as lowerCamelCase,L as map,Bt as mask,Gt as maskMoney,Wt as maskReverse,Kt as maskTest,te as merge,ft as msToString,Ct as noop,mt as parseMs,Lt as parseSize,i as random,Yt as randomCase,a as randomElement,u as rangeArray,Q as rgbToHex,K as rgbToHsl,H as shadeColor,l as shuffleArray,qt as shuffleString,nt as simpleID,re as sleep,Qt as stringReverse,Z as tintColor,k as toArray,N as toBool,o as type,A as uniqueArray,it as uniqueID,Ht as upperCamelCase,at as uuidv4};
|
|
7
|
+
const t=(t,e)=>{const s=[];for(let r=0;r<t.length;r+=e)s.push(t.slice(r,r+e));return s},e=(t,e)=>t.length===e.length&&t.every(((t,s)=>t===e[s])),s=t=>{const e={};return t.forEach((t=>{const s=t.toString();e[s]=(e[s]||0)+1})),e},r=(t,e,s)=>Math.max(e,Math.min(s,t)),n=(t,e,s)=>t+(e-t)*r(s,0,1),i=(t,e)=>Math.floor(Math.random()*(e-t+1)+t),a=t=>t.length?t[i(0,t.length-1)]:null,u=(t,e,s=1)=>Array.from({length:(e-t)/s+1},((e,r)=>t+r*s)),l=t=>{for(let e=t.length-1;e>0;e--){const s=i(0,e);[t[e],t[s]]=[t[s],t[e]]}return t},h={},o=t=>null==t?"null":h[h.toString.call(t)]||"object";["Array","AsyncFunction","Boolean","Date","Function","Map","Number","Object","RegExp","Set","String"].forEach((t=>h["[object "+t+"]"]=t.toLowerCase()));const c=t=>"array"==o(t),v=t=>"boolean"==o(t),d=t=>"date"==o(t),p=t=>"null"!=o(t),m=t=>"number"==o(t),f=t=>m(t)&&!!(t%1),g=t=>"function"==typeof t,y=t=>m(t)&&!(t%1),x=t=>"map"==o(t),E=t=>null===t,b=t=>"object"==o(t),S=t=>b(t)&&t.constructor===Object,w=t=>"regexp"==o(t),O=["boolean","number","string"],R=t=>-1!=O.indexOf(o(t)),C=t=>"set"==o(t),I=t=>"string"==typeof t,M=t=>"symbol"==typeof t,j=t=>void 0===t,k=t=>c(t)?t:p(t)?[t]:[],N=t=>t.filter(((t,e,s)=>s.indexOf(t)===e)),D=[1,"1",!0,"true"],A=t=>-1!=D.indexOf(t),Y=()=>{const t=[],e=[];return s=>{let r=t.indexOf(s);return-1==r&&(t.push(s),e.push({}),r=e.length-1),e[r]}},T=(t,e,s)=>{for(let r=0;r<t.length&&!1!==e.call(s,t[r],r,t);r++);return t},U=(t,e,s)=>{let r="";const n=Object.keys(t);for(let i=0;i<n.length&&(r=n[i],!1!==e.call(s,t[r],r,t));i++);return t},P=(t,e,s)=>c(t)?T(t,e,s):b(t)?U(t,e,s):t,$=(t,e,s)=>{for(let r=1;r<=t&&!1!==e.call(s,r,t);r++);return t},_=(t,e,s)=>Object.fromEntries(Object.entries(t).map((([r,n])=>[r,e.call(s,n,r,t)]))),L=t=>parseInt(null!=t?t:"0",16)||0,q=t=>{var e;return(null===(e=t.replace(/^#/,"").match(/.{1,2}/g))||void 0===e?void 0:e.map(L))||[]},K=t=>("0"+t.toString(16)).slice(-2),F=(t,e,s)=>"#"+K(t)+K(e)+K(s),X=(t,e)=>{const s=q(t);e=r(e,0,1);const[n,i,a]=s.map((t=>Math.round(t*e)));return F(n,i,a)},Q=(t,e)=>{const s=q(t);e=r(e,0,1);const[n,i,a]=s.map((t=>Math.round(t+(255-t)*e)));return F(n,i,a)},J={50:.95,100:.9,200:.75,300:.6,400:.3,500:0,600:-.1,700:-.25,800:-.4,900:-.55,950:-.71},H=(t,e)=>_(null!=e?e:J,(e=>0==e?t:e>0?Q(t,e):X(t,1- -1*e))),Z=(t,e,s)=>{t/=60;const r=(1-Math.abs(2*s-1))*e,n=r*(1-Math.abs(t%2-1));let i=[0,0,0];t<=1?i=[r,n,0]:t<=2?i=[n,r,0]:t<=3?i=[0,r,n]:t<=4?i=[0,n,r]:t<=5?i=[n,0,r]:t<=6&&(i=[r,0,n]);const a=s-.5*r;return[Math.round(255*(i[0]+a)),Math.round(255*(i[1]+a)),Math.round(255*(i[2]+a))]},z=(t,e,s,r,n)=>0===t?0:e===s?(r-n)/t%6:e===r?(n-s)/t+2:e===n?(s-r)/t+4:0,B=(t,e)=>0===t?0:t/(1-Math.abs(2*e-1)),W=(t,e,s)=>{const[r,n,i]=((...t)=>t.map((t=>t/255)))(t,e,s),a=Math.max(r,n,i),u=Math.min(r,n,i),l=a-u,h=(u+a)/2;return[60*z(l,a,r,n,i),B(l,h),h]};class G{constructor(t){this.key=this.shuffle(G.dictionary,t,!1)}encrypt(t){return this.shuffle(t,this.key,!1)}decrypt(t){return this.shuffle(t,this.key,!0)}index(t,e,s){return[G.dictionary.indexOf(t[s]),G.dictionary.indexOf(e[s%e.length])]}result(t,e,s){return G.dictionary[(s?t-e+G.dictionary.length:t+e)%G.dictionary.length]}shuffle(t,e,s){let r="";for(let n=0;n<t.length;n++){const[i,a]=this.index(t,e,n);r+=-1===i||-1===a?t[n]:this.result(i,a,s)}return r}}G.dictionary="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";const V=t=>Math.random().toString(16).slice(t),tt=()=>V(-3),et=()=>V(-4),st=()=>et()+et(),rt=()=>st()+st(),nt=()=>tt()+et(),it=()=>rt()+rt()+rt()+rt(),at=()=>st()+"-"+et()+"-4"+tt()+"-"+et()+"-"+(st()+et()),ut=t=>("0"+t.toString()).slice(-2),lt={"%y":t=>ut(t.getFullYear()),"%Y":t=>t.getFullYear().toString(),"%m":t=>ut(t.getMonth()+1),"%d":t=>ut(t.getDate()),"%H":t=>ut(t.getHours()),"%M":t=>ut(t.getMinutes()),"%S":t=>ut(t.getSeconds())},ht=(t,e)=>(e=null!=e?e:new Date,t.replace(/%[yYmdHMS]/g,(t=>lt[t]?lt[t](e):t.slice(1)))),ot=(t,e)=>{const s=new Date(t),r=[];for(;t<e;)s.setDate(s.getDate()+1),r.push(new Date(s));return r},ct=36e5,vt=24*ct,dt={ms:1,s:1e3,m:6e4,h:ct,d:vt,w:7*vt,y:315576e5},pt=["y","d","h","m","s","ms"],mt=t=>{const e=[];return pt.forEach((s=>{const r=dt[s],n=(t-t%r)/r;n&&(t-=n*r,e.push(n.toString()+s))})),e.join(" ")},ft=t=>{const e=/(-?(?:\d+)?\.?\d+) *(ms|s|m|h|d|w|y)/gm;let s,r=0;for(;null!==(s=e.exec(t));)s.index===e.lastIndex&&e.lastIndex++,r+=parseFloat(s[1])*dt[s[2]]||0;return r},gt=(t,e)=>{let s;const r=()=>{s&&clearTimeout(s)};return{cancel:r,run(...n){r(),s=setTimeout((()=>t(...n)),e)}}};class yt{constructor(){this.events=new Map}on(t,e){const s=this.events.get(t);return s?s.push(e):this.events.set(t,[e]),{dispose:()=>this.off(t,e)}}once(t,e){const s=r=>{e(r),this.off(t,s)};return this.on(t,s),{dispose:()=>this.off(t,s)}}off(t,e){const s=this.events.get(t);if(e){if(s){const t=s.indexOf(e);t>=0&&s.splice(t,1)}}else this.events.set(t,[])}emit(t,e){const s=this.events.get(t);s&&s.forEach((t=>t(e)))}}function xt(t,e,s,r){return new(s||(s=Promise))((function(n,i){function a(t){try{l(r.next(t))}catch(t){i(t)}}function u(t){try{l(r.throw(t))}catch(t){i(t)}}function l(t){t.done?n(t.value):function(t){return t instanceof s?t:new s((function(e){e(t)}))}(t.value).then(a,u)}l((r=r.apply(t,e||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const Et=(t,e)=>{let s=!1;const r=()=>xt(void 0,void 0,void 0,(function*(){s&&(yield t(),setTimeout(r,e))}));return{start(){s||(s=!0,r())},stop(){s=!1}}},bt=t=>{var e;return 0==(null!==(e=null==t?void 0:t.length)&&void 0!==e?e:0)},St=["",0,"0",null,!1,void 0],wt=t=>-1==St.indexOf(t),Ot=t=>!wt(t),Rt=t=>!bt(t),Ct=()=>{},It=(t,e,s)=>e(t.toLowerCase().replace(/\W+/g," ")).replace(/\s/g,null!=s?s:""),Mt=(t,e)=>It(t,(t=>t.replace(/\s(\w)/g,(t=>t.toUpperCase()))),e),jt=Mt,kt=(t,e)=>{if(t.length>e){const s=t.substring(0,e).split(" ");return s.pop(),s.join(" ")+"..."}return t},Nt=/&(amp|apos|lt|gt|nbsp|quot);/g,Dt={amp:"&",apos:"'",lt:"<",gt:">",nbsp:" ",quot:'"'},At=t=>t.replace(Nt,((t,e)=>Dt[e])).replace(/&#(\d+);/gi,((t,e)=>String.fromCharCode(parseInt(e,10)))),Yt=t=>t.replace(/[^0-9A-Za-z ]/g,(t=>"&#"+t.charCodeAt(0)+";")),Tt=t=>/^[\w]$/.test(t),Ut=t=>/^[\d]$/.test(t),Pt=t=>/^[A-Za-z]$/.test(t),$t=t=>/^[^\w]$/.test(t),_t=t=>{if(m(t))return t+"px";const e=(t=>/(-?(?:\d+)?\.?\d+) *(px|%|cm|mm|in|pt|pc|en|ex|ch|rem|vw|vh|vmin|vmax)*/g.exec(t))(t);return e?parseFloat(e[1])+(e[2]||"px"):"0px"},Lt=t=>t.split("").map((t=>Math.random()<.5?t.toUpperCase():t.toLowerCase())).join(""),qt=t=>l(t.split("")).join("");class Kt{constructor(){this.hasSpace=!1,this._space=" ",this.hasNumbers=!1,this._numbers="0123456789",this.hasSymbols=!1,this._symbols="!@#$%^&*()<>.<~:;?+=-_",this.hasUpper=!1,this._upper="ABCDEFGHIJKLMNOPQRSTUVWXYZ",this.hasLower=!1,this._lower="abcdefghijklmnopqrstuvwxyz",this.hasChars=!1,this._chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"}chars(){return this.hasChars=!0,this}static chars(){return(new Kt).chars()}lower(){return this.hasLower=!0,this}static lower(){return(new Kt).lower()}make(t){let e="";this.hasSpace&&(e+=this._space),this.hasNumbers&&(e+=this._numbers),this.hasSymbols&&(e+=this._symbols),this.hasUpper&&!this.hasChars&&(e+=this._upper),this.hasLower&&!this.hasChars&&(e+=this._lower),this.hasChars&&(e+=this._chars);let s="";if(t&&e.length){e=qt(e);for(let r=0;r<t;r++)s+=e.charAt(i(0,e.length-1))}return s}numbers(){return this.hasNumbers=!0,this}static numbers(){return(new Kt).numbers()}space(){return this.hasSpace=!0,this}static space(){return(new Kt).space()}symbols(){return this.hasSymbols=!0,this}static symbols(){return(new Kt).symbols()}upper(){return this.hasUpper=!0,this}static upper(){return(new Kt).upper()}}const Ft=t=>t.split("").reverse().join(""),Xt=(t,e)=>It(t,(t=>t.replace(/(\w)(\w*)/g,((t,e,s)=>e.toUpperCase()+s))),e),Qt=(t,e)=>e(t.value)?t.value:(t=>(t.maskIndex--,""))(t),Jt={"#":t=>t.value,0:t=>Qt(t,Ut),9:t=>Qt(t,Ut),A:t=>Qt(t,Pt),Z:t=>Qt(t,Pt),L:t=>Qt(t,Pt).toLowerCase(),U:t=>Qt(t,Pt).toUpperCase(),S:t=>Qt(t,$t)},Ht=t=>{t.maskIndex++,t.textIndex++;const{mask:e,maskIndex:s,text:r,textIndex:n}=t;t.key=e[s],t.value=r[n];const{key:i,value:a}=t;return j(i)||j(a)?"":(t=>Jt[t.key]?Jt[t.key](t):(t.key!=t.value&&t.textIndex--,t.key))(t)+Ht(t)},Zt=(t,e)=>Ht({mask:t,maskIndex:-1,text:e,textIndex:-1,key:"",value:""}),zt=(t,e)=>Ft(Zt(Ft(t),Ft(e))),Bt=(t,e,s)=>(s++,e=parseInt((e||"0").replace(/\D/g,"")).toString(),zt(t,e.length<s?("0".repeat(s)+e).slice(-1*s):e)),Wt=(t,e)=>t.length==Zt(t,e).length,Gt=(t,e)=>t.reduce(((t,s)=>Object.assign(Object.assign({},t),{[s]:e[s]})),{}),Vt=(t,e)=>Gt(Object.keys(e).filter((e=>-1==t.indexOf(e))),e),te=(t,...e)=>{if(!e.length)return t;const s=e.shift();if(S(t)&&S(s))for(const e in s)S(s[e])?(t[e]||(t=Object.assign(Object.assign({},t),{[e]:{}})),t[e]=te(t[e],s[e])):t=Object.assign(Object.assign({},t),{[e]:s[e]});return te(t,...e)},ee=(t,e,s)=>xt(void 0,void 0,void 0,(function*(){yield Promise.allSettled(t.map(((r,n)=>{var i;return null===(i=e.call(s,r,n,t))||void 0===i?void 0:i.catch(Ct)}))).catch(Ct)})),se=t=>xt(void 0,void 0,void 0,(function*(){var e;let s=!0;const r=()=>s=!0;let n=1;for(;s;)s=!1,yield null===(e=t(n,r))||void 0===e?void 0:e.catch(Ct),n+=1})),re=(t,e,s)=>xt(void 0,void 0,void 0,(function*(){var r;for(let n=0;n<t.length;n++)yield null===(r=e.call(s,t[n],n,t))||void 0===r?void 0:r.catch(Ct)})),ne=t=>new Promise((e=>setTimeout(e,t)));class ie{}var ae,ue,le,he,oe,ce,ve;ie.DESCRIPTION=Symbol("DESCRIPTION"),ie.ERROR=Symbol("ERROR"),ie.INDEXES=Symbol("INDEXES"),ie.KEYS=Symbol("KEYS"),ie.NAME=Symbol("NAME"),ie.REQUIRED=Symbol("REQUIRED"),ie.SOURCE=Symbol("SOURCE"),ie.TYPE=Symbol("TYPE");class de{constructor(t){this[ae]="",this[ue]="",this[le]="",this[he]="any",this[oe]=!1,this.rules=[],this.custom=[],this[ie.TYPE]=t}description(t){return this[ie.DESCRIPTION]=t,this}empty(t){const e=t;return this.unshift((({value:t})=>{const s=p(t);return{break:!p(e)&&!s,value:s?t:g(e)?e():e}}))}equal(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>{const n=s({value:t,context:r});return t==n?{value:t}:this.invalid(`.equal(${n})`,e)}))}error(t){return I(t)&&(this[ie.ERROR]=t),this}filter(...t){const e=t;return this.unshift((({value:t})=>{const s=-1==e.indexOf(t);return{break:!s,value:s?t:void 0}}))}fn(t){return g(t)?t:()=>t}from(t){return this[ie.SOURCE]=t,this}invalid(t,e){return t=`[${this[ie.TYPE]}]${t}`,{error:this[ie.ERROR]?this[ie.ERROR]:this[ie.NAME]?this[ie.NAME]+":"+t:t,message:e}}model(){return this.toString()}parse(){return this.unshift((({value:t})=>({value:t})))}push(t){return this.rules.push(t),this}required(t){return this[ie.REQUIRED]=!0,this.unshift((({value:e})=>p(e)?{value:e}:this.invalid(".required",t)))}test(t){return!I(this.validate(t).error)}testAsync(t){return xt(this,void 0,void 0,(function*(){return!I((yield this.validateAsync(t)).error)}))}toString(){return this[ie.TYPE]}unshift(t){return this.rules.unshift(t),this}validate(t,e){var s;if(this.custom.length)return this.invalid("[async]");let r={value:t};for(let t=0;t<this.rules.length;t++){if(r=this.rules[t]({value:r.value,context:e}),null===(s=r.error)||void 0===s?void 0:s.length)return Object.assign({error:r.error},r.message?{message:r.message}:{});if(r.break)return{value:r.value}}return{value:r.value}}validateAsync(t,e){return xt(this,void 0,void 0,(function*(){let s=this.validate(t,e);if(s.error)return{error:s.error};for(let t=0;t<this.custom.length;t++){if(s=yield this.custom[t]({value:s.value}),s.error)return{error:s.error};if(s.break)return{value:s.value}}return{value:s.value}}))}}ae=ie.NAME,ue=ie.DESCRIPTION,ie.SOURCE,le=ie.ERROR,he=ie.TYPE,oe=ie.REQUIRED;class pe extends de{constructor(t){super("array"),this[ce]=[],this.push((({value:e})=>c(e)?{value:e}:this.invalid("",t)))}between(t,e,s){return this.min(t,s),this.max(e,s)}items(t,e){const s=t;return s&&this[ie.INDEXES].push(s),s?this.push((({value:t})=>{s[ie.NAME]="";for(let r=0;r<t.length;r++){const{error:n,value:i}=s.validate(t[r],t);if(n)return this.invalid("< "+n+"["+r+"] >",e);t[r]=i}return{value:t}})):this}length(t,e){const s=t;return this.push((({value:t})=>t.length==s?{value:t}:this.invalid(".length("+s+")",e)))}max(t,e){const s=t;return this.push((({value:t})=>t.length<=s?{value:t}:this.invalid(".max("+s+")",e)))}min(t,e){const s=t;return this.push((({value:t})=>t.length>=s?{value:t}:this.invalid(".min("+s+")",e)))}model(){return this[ie.INDEXES].length?this[ie.INDEXES].map((t=>t.model())):this[ie.TYPE]}toString(){return this[ie.INDEXES].length?JSON.stringify(this.model(),null,4):this[ie.TYPE]}}ce=ie.INDEXES;class me extends de{constructor(t){super("boolean"),this.push((({value:e})=>v(e)?{value:e}:this.invalid("",t)))}parse(){return this.unshift((({value:t})=>({value:p(t)?A(t):t})))}}class fe extends de{constructor(t){super("date"),this.push((({value:e})=>I(e)&&e.length>=9&&!isNaN(new Date(e).getTime())?{value:e}:this.invalid("",t)))}format(t){const e=t;return this.push((({value:t})=>({value:ht(e,new Date(t))})))}parse(){return this.unshift((({value:t})=>({value:new Date(I(t)&&t.length<=10?`${t} 12:00`:t)})))}}class ge extends de{constructor(t){super("number"),this.push((({value:e})=>m(e)?{value:e}:this.invalid("",t)))}between(t,e,s){return this.min(t,s),this.max(e,s)}float(t){return this.push((({value:e})=>f(e)?{value:e}:this.invalid(".float",t)))}integer(t){return this.push((({value:e})=>y(e)?{value:e}:this.invalid(".integer",t)))}max(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>{const n=s({value:t,context:r});return t<=n?{value:t}:this.invalid(`.max(${n})`,e)}))}min(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>{const n=s({value:t,context:r});return t>=n?{value:t}:this.invalid(`.min(${n})`,e)}))}parse(){return this.unshift((({value:t})=>({value:p(t)?parseFloat(t.toString()):t})))}}class ye extends de{constructor(t){super("object"),this[ve]={},this.push((({value:e})=>b(e)?{value:e}:this.invalid("",t)))}keys(t,e){const s=t;return s&&(this[ie.KEYS]=Object.assign(Object.assign({},this[ie.KEYS]),s)),s?this.push((({value:t})=>{const r=[],n={};return Object.keys(s).forEach((i=>{var a;const u=s[i];u[ie.NAME]=null!==(a=u[ie.SOURCE])&&void 0!==a?a:i;const{error:l,message:h,value:o}=u.validate(t[u[ie.NAME]],n);!e&&h&&(e=h),l&&r.push(l),p(o)&&(n[i]=o)})),r.length?this.invalid("{ "+r.join(", ")+" }",e):{value:n}})):this}model(){const t={},e=Object.keys(this[ie.KEYS]);return e.length&&e.forEach((e=>t[e]=this[ie.KEYS][e].model())),e.length?t:this[ie.TYPE]}parse(t){return this.unshift((({value:e})=>{if(!b(e))try{e=JSON.parse(e)}catch(e){return this.invalid("",t)}return{value:e}}))}toString(){return Object.keys(this[ie.KEYS]).length?JSON.stringify(this.model(),null,4):this[ie.TYPE]}}ve=ie.KEYS;class xe extends de{constructor(t){super("string"),this.push((({value:e})=>I(e)?{value:e}:this.invalid("",t)))}between(t,e,s){return this.min(t,s),this.max(e,s)}email(t){const e=/^[\w-\\.]+@([\w-]+\.)+[\w-]{2,4}$/i;return this.push((({value:s})=>e.test(s)?{value:s}:this.invalid(".email",t)))}length(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>{const n=s({value:t,context:r});return t.length==n?{value:t}:this.invalid(`.length(${n})`,e)}))}lowerCase(){return this.push((({value:t})=>({value:t.toLowerCase()})))}lowerCamelCase(){return this.push((({value:t})=>({value:Mt(t)})))}max(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>{const n=s({value:t,context:r});return t.length<=n?{value:t}:this.invalid(`.max(${n})`,e)}))}mask(t){const e=this.fn(t);return this.push((({value:t,context:s})=>({value:Zt(e({value:t,context:s}),t)})))}min(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>{const n=s({value:t,context:r});return t.length>=n?{value:t}:this.invalid(`.min(${n})`,e)}))}parse(){return this.unshift((({value:t})=>({value:b(t)?JSON.stringify(t):p(t)?t.toString():t})))}required(t){return this[ie.REQUIRED]=!0,this.push((({value:e})=>e.length?{value:e}:this.invalid(".required",t)))}regex(t,e){return this.push((({value:s})=>t.test(s)?{value:s}:this.invalid(".regex",e)))}replace(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>({value:t.replace(s({value:t,context:r}),e)})))}trim(){return this.push((({value:t})=>({value:t.trim()})))}upperCase(){return this.push((({value:t})=>({value:t.toUpperCase()})))}upperCamelCase(){return this.push((({value:t})=>({value:Xt(t)})))}}class Ee{static array(t,e){return new pe(e).items(t)}static boolean(t){return new me(t)}static date(t){return new fe(t)}static number(t){return new ge(t)}static object(t,e){return new ye(e).keys(t)}static ref(t,e){return({context:s})=>s&&p(s[t])?s[t]:e}static string(t){return new xe(t)}test(t,...e){return!I(Ee.validate(t,...e).error)}testAsync(t,...e){return xt(this,void 0,void 0,(function*(){return!I((yield Ee.validateAsync(t,...e)).error)}))}static validate(t,...e){let s={value:t};for(let t=0;t<e.length;t++)if(s=e[t].validate(s.value),s.error)return{value:s.value,error:s.error};return{value:s.value}}static validateAsync(t,...e){return xt(this,void 0,void 0,(function*(){let s={value:t};for(let t=0;t<e.length;t++)if(s=yield e[t].validateAsync(s.value),s.error)return{value:s.value,error:s.error};return{value:s.value}}))}}export{yt as EventEmitter,G as Hash,Kt as RandomString,Ee as Validation,de as ValidationBase,ie as ValidationKeys,Gt as allowed,Y as cache,jt as camelCase,t as chunkArray,r as clamp,H as colorPalette,e as compareArray,s as countArray,kt as cutText,ht as dateFormat,ot as dateRange,gt as debounce,At as decodeHTML,Vt as denied,P as each,Yt as encodeHTML,ee as forEachAsync,T as forEachIndex,U as forEachKey,se as forEachPage,re as forEachSeries,$ as forLoop,q as hexToRgb,Z as hslToRgb,c as isArray,v as isBoolean,Tt as isCharacter,d as isDate,p as isDef,Ut as isDigit,bt as isEmpty,Ot as isFalse,f as isFloat,g as isFunction,y as isInteger,Pt as isLetter,x as isMap,Rt as isNotEmpty,E as isNull,m as isNumber,b as isObject,S as isPlainObject,w as isRegExp,R as isScalar,C as isSet,$t as isSpecialChar,I as isString,M as isSymbol,wt as isTrue,j as isUndefined,n as lerp,Et as loop,Mt as lowerCamelCase,_ as map,Zt as mask,Bt as maskMoney,zt as maskReverse,Wt as maskTest,te as merge,mt as msToString,Ct as noop,ft as parseMs,_t as parseSize,i as random,Lt as randomCase,a as randomElement,u as rangeArray,F as rgbToHex,W as rgbToHsl,X as shadeColor,l as shuffleArray,qt as shuffleString,nt as simpleID,ne as sleep,Ft as stringReverse,Q as tintColor,k as toArray,A as toBool,o as type,N as uniqueArray,it as uniqueID,Xt as upperCamelCase,at as uuidv4};
|
package/dist/index.min.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @andrewcaires/utils.js v0.4.
|
|
2
|
+
* @andrewcaires/utils.js v0.4.9
|
|
3
3
|
* JavaScript utility library for web and nodejs development
|
|
4
4
|
* (c) 2025 Andrew Caires
|
|
5
5
|
* @license: MIT
|
|
6
6
|
*/
|
|
7
|
-
var UtilsJS=function(e){"use strict";const t=(e,t,s)=>Math.max(t,Math.min(s,e)),s=(e,t)=>Math.floor(Math.random()*(t-e+1)+e),r=e=>{for(let t=e.length-1;t>0;t--){const r=s(0,t);[e[t],e[r]]=[e[r],e[t]]}return e},n={},i=e=>null==e?"null":n[n.toString.call(e)]||"object";["Array","AsyncFunction","Boolean","Date","Function","Map","Number","Object","RegExp","Set","String"].forEach((e=>n["[object "+e+"]"]=e.toLowerCase()));const a=e=>"array"==i(e),u=e=>"boolean"==i(e),l=e=>"null"!=i(e),o=e=>"number"==i(e),h=e=>o(e)&&!!(e%1),c=e=>"function"==typeof e,v=e=>o(e)&&!(e%1),p=e=>"object"==i(e),d=e=>p(e)&&e.constructor===Object,m=["boolean","number","string"],f=e=>"string"==typeof e,g=e=>void 0===e,y=[1,"1",!0,"true"],x=e=>-1!=y.indexOf(e),b=(e,t,s)=>{for(let r=0;r<e.length&&!1!==t.call(s,e[r],r,e);r++);return e},E=(e,t,s)=>{let r="";const n=Object.keys(e);for(let i=0;i<n.length&&(r=n[i],!1!==t.call(s,e[r],r,e));i++);return e},w=(e,t,s)=>Object.fromEntries(Object.entries(e).map((([r,n])=>[r,t.call(s,n,r,e)]))),S=e=>parseInt(null!=e?e:"0",16)||0,R=e=>{var t;return(null===(t=e.replace(/^#/,"").match(/.{1,2}/g))||void 0===t?void 0:t.map(S))||[]},C=e=>("0"+e.toString(16)).slice(-2),O=(e,t,s)=>"#"+C(e)+C(t)+C(s),M=(e,s)=>{const r=R(e);s=t(s,0,1);const[n,i,a]=r.map((e=>Math.round(e*s)));return O(n,i,a)},A=(e,s)=>{const r=R(e);s=t(s,0,1);const[n,i,a]=r.map((e=>Math.round(e+(255-e)*s)));return O(n,i,a)},I={50:.95,100:.9,200:.75,300:.6,400:.3,500:0,600:-.1,700:-.25,800:-.4,900:-.55,950:-.71},k=(e,t,s,r,n)=>0===e?0:t===s?(r-n)/e%6:t===r?(n-s)/e+2:t===n?(s-r)/e+4:0,j=(e,t)=>0===e?0:e/(1-Math.abs(2*t-1));class D{constructor(e){this.key=this.shuffle(D.dictionary,e,!1)}encrypt(e){return this.shuffle(e,this.key,!1)}decrypt(e){return this.shuffle(e,this.key,!0)}index(e,t,s){return[D.dictionary.indexOf(e[s]),D.dictionary.indexOf(t[s%t.length])]}result(e,t,s){return D.dictionary[(s?e-t+D.dictionary.length:e+t)%D.dictionary.length]}shuffle(e,t,s){let r="";for(let n=0;n<e.length;n++){const[i,a]=this.index(e,t,n);r+=-1===i||-1===a?e[n]:this.result(i,a,s)}return r}}D.dictionary="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";const T=e=>Math.random().toString(16).slice(e),N=()=>T(-3),U=()=>T(-4),P=()=>U()+U(),L=()=>P()+P(),$=e=>("0"+e.toString()).slice(-2),F={"%y":e=>$(e.getFullYear()),"%Y":e=>e.getFullYear().toString(),"%m":e=>$(e.getMonth()+1),"%d":e=>$(e.getDate()),"%H":e=>$(e.getHours()),"%M":e=>$(e.getMinutes()),"%S":e=>$(e.getSeconds())},q=(e,t)=>(t=null!=t?t:new Date,e.replace(/%[yYmdHMS]/g,(e=>F[e]?F[e](t):e.slice(1)))),_=36e5,Y=24*_,H={ms:1,s:1e3,m:6e4,h:_,d:Y,w:7*Y,y:315576e5},Q=["y","d","h","m","s","ms"];function B(e,t,s,r){return new(s||(s=Promise))((function(n,i){function a(e){try{l(r.next(e))}catch(e){i(e)}}function u(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){e.done?n(e.value):function(e){return e instanceof s?e:new s((function(t){t(e)}))}(e.value).then(a,u)}l((r=r.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const z=e=>{var t;return 0==(null!==(t=null==e?void 0:e.length)&&void 0!==t?t:0)},J=["",0,"0",null,!1,void 0],V=e=>-1==J.indexOf(e),Z=()=>{},K=(e,t,s)=>t(e.toLowerCase().replace(/\W+/g," ")).replace(/\s/g,null!=s?s:""),W=(e,t)=>K(e,(e=>e.replace(/\s(\w)/g,(e=>e.toUpperCase()))),t),G=W,X=/&(amp|apos|lt|gt|nbsp|quot);/g,ee={amp:"&",apos:"'",lt:"<",gt:">",nbsp:" ",quot:'"'},te=e=>/^[\d]$/.test(e),se=e=>/^[A-Za-z]$/.test(e),re=e=>/^[^\w]$/.test(e),ne=e=>r(e.split("")).join("");class ie{constructor(){this.hasSpace=!1,this._space=" ",this.hasNumbers=!1,this._numbers="0123456789",this.hasSymbols=!1,this._symbols="!@#$%^&*()<>.<~:;?+=-_",this.hasUpper=!1,this._upper="ABCDEFGHIJKLMNOPQRSTUVWXYZ",this.hasLower=!1,this._lower="abcdefghijklmnopqrstuvwxyz",this.hasChars=!1,this._chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"}chars(){return this.hasChars=!0,this}static chars(){return(new ie).chars()}lower(){return this.hasLower=!0,this}static lower(){return(new ie).lower()}make(e){let t="";this.hasSpace&&(t+=this._space),this.hasNumbers&&(t+=this._numbers),this.hasSymbols&&(t+=this._symbols),this.hasUpper&&!this.hasChars&&(t+=this._upper),this.hasLower&&!this.hasChars&&(t+=this._lower),this.hasChars&&(t+=this._chars);let r="";if(e&&t.length){t=ne(t);for(let n=0;n<e;n++)r+=t.charAt(s(0,t.length-1))}return r}numbers(){return this.hasNumbers=!0,this}static numbers(){return(new ie).numbers()}space(){return this.hasSpace=!0,this}static space(){return(new ie).space()}symbols(){return this.hasSymbols=!0,this}static symbols(){return(new ie).symbols()}upper(){return this.hasUpper=!0,this}static upper(){return(new ie).upper()}}const ae=e=>e.split("").reverse().join(""),ue=(e,t)=>K(e,(e=>e.replace(/(\w)(\w*)/g,((e,t,s)=>t.toUpperCase()+s))),t),le=(e,t)=>t(e.value)?e.value:(e=>(e.maskIndex--,""))(e),oe={"#":e=>e.value,0:e=>le(e,te),9:e=>le(e,te),A:e=>le(e,se),Z:e=>le(e,se),L:e=>le(e,se).toLowerCase(),U:e=>le(e,se).toUpperCase(),S:e=>le(e,re)},he=e=>{e.maskIndex++,e.textIndex++;const{mask:t,maskIndex:s,text:r,textIndex:n}=e;e.key=t[s],e.value=r[n];const{key:i,value:a}=e;return g(i)||g(a)?"":(e=>oe[e.key]?oe[e.key](e):(e.key!=e.value&&e.textIndex--,e.key))(e)+he(e)},ce=(e,t)=>he({mask:e,maskIndex:-1,text:t,textIndex:-1,key:"",value:""}),ve=(e,t)=>ae(ce(ae(e),ae(t))),pe=(e,t)=>e.reduce(((e,s)=>Object.assign(Object.assign({},e),{[s]:t[s]})),{}),de=(e,...t)=>{if(!t.length)return e;const s=t.shift();if(d(e)&&d(s))for(const t in s)d(s[t])?(e[t]||(e=Object.assign(Object.assign({},e),{[t]:{}})),e[t]=de(e[t],s[t])):e=Object.assign(Object.assign({},e),{[t]:s[t]});return de(e,...t)};class me{}var fe,ge,ye,xe,be;me.DESCRIPTION=Symbol("DESCRIPTION"),me.ERROR=Symbol("ERROR"),me.NAME=Symbol("NAME"),me.REQUIRED=Symbol("REQUIRED"),me.SOURCE=Symbol("SOURCE"),me.TYPE=Symbol("TYPE");class Ee{constructor(e){this[fe]="",this[ge]="",this[ye]="",this[xe]="any",this[be]=!1,this.rules=[],this.custom=[],this[me.TYPE]=e}description(e){return this[me.DESCRIPTION]=e,this}empty(e,t=!0){const s=e;return this.unshift((({value:e})=>{const r=l(e);return{stop:t&&!r,value:r?e:c(s)?s():s}}))}equal(e,t){const s=this.fn(e);return this.push((({value:e,context:r})=>{const n=s({value:e,context:r});return e==n?{value:e}:this.invalid(`.equal(${n})`,t)}))}error(e){return f(e)&&(this[me.ERROR]=e),this}filter(...e){const t=e;return this.unshift((({value:e})=>{const s=-1==t.indexOf(e);return{stop:!s,value:s?e:void 0}}))}fn(e){return c(e)?e:()=>e}from(e){return this[me.SOURCE]=e,this}invalid(e,t){return e=`[${this[me.TYPE]}]${e}`,{error:this[me.ERROR]?this[me.ERROR]:this[me.NAME]?this[me.NAME]+":"+e:e,message:t}}parse(){return this.unshift((({value:e})=>({value:e})))}push(e){return this.rules.push(e),this}required(e){return this[me.REQUIRED]=!0,this.unshift((({value:t})=>l(t)?{value:t}:this.invalid(".required",e)))}test(e){return!f(this.validate(e).error)}testAsync(e){return B(this,void 0,void 0,(function*(){return!f((yield this.validateAsync(e)).error)}))}unshift(e){return this.rules.unshift(e),this}validate(e,t){var s;if(this.custom.length)return this.invalid("[async]");let r={value:e};for(let e=0;e<this.rules.length;e++){if(r=this.rules[e]({value:r.value,context:t}),null===(s=r.error)||void 0===s?void 0:s.length)return Object.assign({error:r.error},r.message?{message:r.message}:{});if(r.stop)return{value:r.value}}return{value:r.value}}validateAsync(e,t){return B(this,void 0,void 0,(function*(){let s=this.validate(e,t);if(s.error)return{error:s.error};for(let e=0;e<this.custom.length;e++){if(s=yield this.custom[e]({value:s.value}),s.error)return{error:s.error};if(s.stop)return{value:s.value}}return{value:s.value}}))}}fe=me.NAME,ge=me.DESCRIPTION,me.SOURCE,ye=me.ERROR,xe=me.TYPE,be=me.REQUIRED;class we extends Ee{constructor(e){super("array"),this.push((({value:t})=>a(t)?{value:t}:this.invalid("",e)))}between(e,t,s){return this.min(e,s),this.max(t,s)}items(e,t){const s=e;return s?this.push((({value:e})=>{s[me.NAME]="";for(let r=0;r<e.length;r++){const{error:n,value:i}=s.validate(e[r],e);if(n)return this.invalid("< "+n+"["+r+"] >",t);e[r]=i}return{value:e}})):this}length(e,t){const s=e;return this.push((({value:e})=>e.length==s?{value:e}:this.invalid(".length("+s+")",t)))}max(e,t){const s=e;return this.push((({value:e})=>e.length<=s?{value:e}:this.invalid(".max("+s+")",t)))}min(e,t){const s=e;return this.push((({value:e})=>e.length>=s?{value:e}:this.invalid(".min("+s+")",t)))}}class Se extends Ee{constructor(e){super("boolean"),this.push((({value:t})=>u(t)?{value:t}:this.invalid("",e)))}parse(){return this.unshift((({value:e})=>({value:l(e)?x(e):e})))}}class Re extends Ee{constructor(e){super("date"),this.push((({value:t})=>f(t)&&t.length>=9&&!isNaN(new Date(t).getTime())?{value:t}:this.invalid("",e)))}format(e){const t=e;return this.push((({value:e})=>({value:q(t,new Date(e))})))}parse(){return this.unshift((({value:e})=>({value:new Date(f(e)&&e.length<=10?`${e} 12:00`:e)})))}}class Ce extends Ee{constructor(e){super("number"),this.push((({value:t})=>o(t)?{value:t}:this.invalid("",e)))}between(e,t,s){return this.min(e,s),this.max(t,s)}float(e){return this.push((({value:t})=>h(t)?{value:t}:this.invalid(".float",e)))}integer(e){return this.push((({value:t})=>v(t)?{value:t}:this.invalid(".integer",e)))}max(e,t){const s=this.fn(e);return this.push((({value:e,context:r})=>{const n=s({value:e,context:r});return e<=n?{value:e}:this.invalid(`.max(${n})`,t)}))}min(e,t){const s=this.fn(e);return this.push((({value:e,context:r})=>{const n=s({value:e,context:r});return e>=n?{value:e}:this.invalid(`.min(${n})`,t)}))}parse(){return this.unshift((({value:e})=>({value:l(e)?parseFloat(e.toString()):e})))}}class Oe extends Ee{constructor(e){super("object"),this.push((({value:t})=>p(t)?{value:t}:this.invalid("",e)))}keys(e,t){const s=e;return s?this.push((({value:e})=>{const r=[],n={};return Object.keys(s).forEach((i=>{var a;const u=s[i];u[me.NAME]=null!==(a=u[me.SOURCE])&&void 0!==a?a:i;const{error:o,message:h,value:c}=u.validate(e[u[me.NAME]],n);!t&&h&&(t=h),o&&r.push(o),l(c)&&(n[i]=c)})),r.length?this.invalid("{ "+r.join(", ")+" }",t):{value:n}})):this}parse(e){return this.unshift((({value:t})=>{if(!p(t))try{t=JSON.parse(t)}catch(t){return this.invalid("",e)}return{value:t}}))}}class Me extends Ee{constructor(e){super("string"),this.push((({value:t})=>f(t)?{value:t}:this.invalid("",e)))}between(e,t,s){return this.min(e,s),this.max(t,s)}email(e){const t=/^[\w-\\.]+@([\w-]+\.)+[\w-]{2,4}$/i;return this.push((({value:s})=>t.test(s)?{value:s}:this.invalid(".email",e)))}length(e,t){const s=this.fn(e);return this.push((({value:e,context:r})=>{const n=s({value:e,context:r});return e.length==n?{value:e}:this.invalid(`.length(${n})`,t)}))}lowerCase(){return this.push((({value:e})=>({value:e.toLowerCase()})))}lowerCamelCase(){return this.push((({value:e})=>({value:W(e)})))}max(e,t){const s=this.fn(e);return this.push((({value:e,context:r})=>{const n=s({value:e,context:r});return e.length<=n?{value:e}:this.invalid(`.max(${n})`,t)}))}mask(e){const t=this.fn(e);return this.push((({value:e,context:s})=>({value:ce(t({value:e,context:s}),e)})))}min(e,t){const s=this.fn(e);return this.push((({value:e,context:r})=>{const n=s({value:e,context:r});return e.length>=n?{value:e}:this.invalid(`.min(${n})`,t)}))}parse(){return this.unshift((({value:e})=>({value:p(e)?JSON.stringify(e):l(e)?e.toString():e})))}required(e){return this[me.REQUIRED]=!0,this.push((({value:t})=>t.length?{value:t}:this.invalid(".required",e)))}regex(e,t){return this.push((({value:s})=>e.test(s)?{value:s}:this.invalid(".regex",t)))}replace(e,t){const s=this.fn(e);return this.push((({value:e,context:r})=>({value:e.replace(s({value:e,context:r}),((...e)=>c(t)?t(...e):t))})))}trim(){return this.push((({value:e})=>({value:e.trim()})))}upperCase(){return this.push((({value:e})=>({value:e.toUpperCase()})))}upperCamelCase(){return this.push((({value:e})=>({value:ue(e)})))}}class Ae{static array(e,t){return new we(t).items(e)}static boolean(e){return new Se(e)}static date(e){return new Re(e)}static number(e){return new Ce(e)}static object(e,t){return new Oe(t).keys(e)}static ref(e,t){return({context:s})=>s&&l(s[e])?s[e]:t}static string(e){return new Me(e)}test(e,...t){return!f(Ae.validate(e,...t).error)}testAsync(e,...t){return B(this,void 0,void 0,(function*(){return!f((yield Ae.validateAsync(e,...t)).error)}))}static validate(e,...t){let s={value:e};for(let e=0;e<t.length;e++)if(s=t[e].validate(s.value),s.error)return{value:s.value,error:s.error};return{value:s.value}}static validateAsync(e,...t){return B(this,void 0,void 0,(function*(){let s={value:e};for(let e=0;e<t.length;e++)if(s=yield t[e].validateAsync(s.value),s.error)return{value:s.value,error:s.error};return{value:s.value}}))}}return e.EventEmitter=class{constructor(){this.events=new Map}on(e,t){const s=this.events.get(e);return s?s.push(t):this.events.set(e,[t]),{dispose:()=>this.off(e,t)}}once(e,t){const s=r=>{t(r),this.off(e,s)};return this.on(e,s),{dispose:()=>this.off(e,s)}}off(e,t){const s=this.events.get(e);if(t){if(s){const e=s.indexOf(t);e>=0&&s.splice(e,1)}}else this.events.set(e,[])}emit(e,t){const s=this.events.get(e);s&&s.forEach((e=>e(t)))}},e.Hash=D,e.RandomString=ie,e.Validation=Ae,e.ValidationBase=Ee,e.ValidationKeys=me,e.allowed=pe,e.cache=()=>{const e=[],t=[];return s=>{let r=e.indexOf(s);return-1==r&&(e.push(s),t.push({}),r=t.length-1),t[r]}},e.camelCase=G,e.chunkArray=(e,t)=>{const s=[];for(let r=0;r<e.length;r+=t)s.push(e.slice(r,r+t));return s},e.clamp=t,e.colorPalette=(e,t)=>w(null!=t?t:I,(t=>0==t?e:t>0?A(e,t):M(e,1- -1*t))),e.compareArray=(e,t)=>e.length===t.length&&e.every(((e,s)=>e===t[s])),e.countArray=e=>{const t={};return e.forEach((e=>{const s=e.toString();t[s]=(t[s]||0)+1})),t},e.cutText=(e,t)=>{if(e.length>t){const s=e.substring(0,t).split(" ");return s.pop(),s.join(" ")+"..."}return e},e.dateFormat=q,e.dateRange=(e,t)=>{const s=new Date(e),r=[];for(;e<t;)s.setDate(s.getDate()+1),r.push(new Date(s));return r},e.debounce=(e,t)=>{let s;const r=()=>{s&&clearTimeout(s)};return{cancel:r,run(...n){r(),s=setTimeout((()=>e(...n)),t)}}},e.decodeHTML=e=>e.replace(X,((e,t)=>ee[t])).replace(/&#(\d+);/gi,((e,t)=>String.fromCharCode(parseInt(t,10)))),e.denied=(e,t)=>pe(Object.keys(t).filter((t=>-1==e.indexOf(t))),t),e.each=(e,t,s)=>a(e)?b(e,t,s):p(e)?E(e,t,s):e,e.encodeHTML=e=>e.replace(/[^0-9A-Za-z ]/g,(e=>"&#"+e.charCodeAt(0)+";")),e.forEachAsync=(e,t,s)=>B(void 0,void 0,void 0,(function*(){yield Promise.allSettled(e.map(((r,n)=>t.call(s,r,n,e)))).catch(Z)})),e.forEachIndex=b,e.forEachKey=E,e.forEachSeries=(e,t,s)=>B(void 0,void 0,void 0,(function*(){for(let r=0;r<e.length;r++)yield t.call(s,e[r],r,e).catch(Z)})),e.forLoop=(e,t,s)=>{for(let r=1;r<=e&&!1!==t.call(s,r,e);r++);return e},e.hexToRgb=R,e.hslToRgb=(e,t,s)=>{e/=60;const r=(1-Math.abs(2*s-1))*t,n=r*(1-Math.abs(e%2-1));let i=[0,0,0];e<=1?i=[r,n,0]:e<=2?i=[n,r,0]:e<=3?i=[0,r,n]:e<=4?i=[0,n,r]:e<=5?i=[n,0,r]:e<=6&&(i=[r,0,n]);const a=s-.5*r;return[Math.round(255*(i[0]+a)),Math.round(255*(i[1]+a)),Math.round(255*(i[2]+a))]},e.isArray=a,e.isBoolean=u,e.isCharacter=e=>/^[\w]$/.test(e),e.isDate=e=>"date"==i(e),e.isDef=l,e.isDigit=te,e.isEmpty=z,e.isFalse=e=>!V(e),e.isFloat=h,e.isFunction=c,e.isInteger=v,e.isLetter=se,e.isMap=e=>"map"==i(e),e.isNotEmpty=e=>!z(e),e.isNull=e=>null===e,e.isNumber=o,e.isObject=p,e.isPlainObject=d,e.isRegExp=e=>"regexp"==i(e),e.isScalar=e=>-1!=m.indexOf(i(e)),e.isSet=e=>"set"==i(e),e.isSpecialChar=re,e.isString=f,e.isSymbol=e=>"symbol"==typeof e,e.isTrue=V,e.isUndefined=g,e.lerp=(e,s,r)=>e+(s-e)*t(r,0,1),e.loop=(e,t)=>{let s=!1;const r=()=>B(void 0,void 0,void 0,(function*(){s&&(yield e(),setTimeout(r,t))}));return{start(){s||(s=!0,r())},stop(){s=!1}}},e.lowerCamelCase=W,e.map=w,e.mask=ce,e.maskMoney=(e,t,s)=>(s++,t=parseInt((t||"0").replace(/\D/g,"")).toString(),ve(e,t.length<s?("0".repeat(s)+t).slice(-1*s):t)),e.maskReverse=ve,e.maskTest=(e,t)=>e.length==ce(e,t).length,e.merge=de,e.msToString=e=>{const t=[];return Q.forEach((s=>{const r=H[s],n=(e-e%r)/r;n&&(e-=n*r,t.push(n.toString()+s))})),t.join(" ")},e.noop=Z,e.parseMs=e=>{const t=/(-?(?:\d+)?\.?\d+) *(ms|s|m|h|d|w|y)/gm;let s,r=0;for(;null!==(s=t.exec(e));)s.index===t.lastIndex&&t.lastIndex++,r+=parseFloat(s[1])*H[s[2]]||0;return r},e.parseSize=e=>{if(o(e))return e+"px";const t=(e=>/(-?(?:\d+)?\.?\d+) *(px|%|cm|mm|in|pt|pc|en|ex|ch|rem|vw|vh|vmin|vmax)*/g.exec(e))(e);return t?parseFloat(t[1])+(t[2]||"px"):"0px"},e.random=s,e.randomCase=e=>e.split("").map((e=>Math.random()<.5?e.toUpperCase():e.toLowerCase())).join(""),e.randomElement=e=>e.length?e[s(0,e.length-1)]:null,e.rangeArray=(e,t,s=1)=>Array.from({length:(t-e)/s+1},((t,r)=>e+r*s)),e.rgbToHex=O,e.rgbToHsl=(e,t,s)=>{const[r,n,i]=((...e)=>e.map((e=>e/255)))(e,t,s),a=Math.max(r,n,i),u=Math.min(r,n,i),l=a-u,o=(u+a)/2;return[60*k(l,a,r,n,i),j(l,o),o]},e.shadeColor=M,e.shuffleArray=r,e.shuffleString=ne,e.simpleID=()=>N()+U(),e.sleep=e=>new Promise((t=>setTimeout(t,e))),e.stringReverse=ae,e.tintColor=A,e.toArray=e=>a(e)?e:l(e)?[e]:[],e.toBool=x,e.type=i,e.uniqueArray=e=>e.filter(((e,t,s)=>s.indexOf(e)===t)),e.uniqueID=()=>L()+L()+L()+L(),e.upperCamelCase=ue,e.uuidv4=()=>P()+"-"+U()+"-4"+N()+"-"+U()+"-"+(P()+U()),e}({});
|
|
7
|
+
var UtilsJS=function(t){"use strict";const e=(t,e,s)=>Math.max(e,Math.min(s,t)),s=(t,e)=>Math.floor(Math.random()*(e-t+1)+t),r=t=>{for(let e=t.length-1;e>0;e--){const r=s(0,e);[t[e],t[r]]=[t[r],t[e]]}return t},n={},i=t=>null==t?"null":n[n.toString.call(t)]||"object";["Array","AsyncFunction","Boolean","Date","Function","Map","Number","Object","RegExp","Set","String"].forEach((t=>n["[object "+t+"]"]=t.toLowerCase()));const a=t=>"array"==i(t),u=t=>"boolean"==i(t),l=t=>"null"!=i(t),o=t=>"number"==i(t),h=t=>o(t)&&!!(t%1),c=t=>"function"==typeof t,v=t=>o(t)&&!(t%1),d=t=>"object"==i(t),p=t=>d(t)&&t.constructor===Object,m=["boolean","number","string"],f=t=>"string"==typeof t,g=t=>void 0===t,y=[1,"1",!0,"true"],E=t=>-1!=y.indexOf(t),x=(t,e,s)=>{for(let r=0;r<t.length&&!1!==e.call(s,t[r],r,t);r++);return t},b=(t,e,s)=>{let r="";const n=Object.keys(t);for(let i=0;i<n.length&&(r=n[i],!1!==e.call(s,t[r],r,t));i++);return t},S=(t,e,s)=>Object.fromEntries(Object.entries(t).map((([r,n])=>[r,e.call(s,n,r,t)]))),w=t=>parseInt(null!=t?t:"0",16)||0,O=t=>{var e;return(null===(e=t.replace(/^#/,"").match(/.{1,2}/g))||void 0===e?void 0:e.map(w))||[]},R=t=>("0"+t.toString(16)).slice(-2),C=(t,e,s)=>"#"+R(t)+R(e)+R(s),I=(t,s)=>{const r=O(t);s=e(s,0,1);const[n,i,a]=r.map((t=>Math.round(t*s)));return C(n,i,a)},M=(t,s)=>{const r=O(t);s=e(s,0,1);const[n,i,a]=r.map((t=>Math.round(t+(255-t)*s)));return C(n,i,a)},k={50:.95,100:.9,200:.75,300:.6,400:.3,500:0,600:-.1,700:-.25,800:-.4,900:-.55,950:-.71},A=(t,e,s,r,n)=>0===t?0:e===s?(r-n)/t%6:e===r?(n-s)/t+2:e===n?(s-r)/t+4:0,D=(t,e)=>0===t?0:t/(1-Math.abs(2*e-1));class N{constructor(t){this.key=this.shuffle(N.dictionary,t,!1)}encrypt(t){return this.shuffle(t,this.key,!1)}decrypt(t){return this.shuffle(t,this.key,!0)}index(t,e,s){return[N.dictionary.indexOf(t[s]),N.dictionary.indexOf(e[s%e.length])]}result(t,e,s){return N.dictionary[(s?t-e+N.dictionary.length:t+e)%N.dictionary.length]}shuffle(t,e,s){let r="";for(let n=0;n<t.length;n++){const[i,a]=this.index(t,e,n);r+=-1===i||-1===a?t[n]:this.result(i,a,s)}return r}}N.dictionary="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";const j=t=>Math.random().toString(16).slice(t),T=()=>j(-3),Y=()=>j(-4),U=()=>Y()+Y(),P=()=>U()+U(),L=t=>("0"+t.toString()).slice(-2),$={"%y":t=>L(t.getFullYear()),"%Y":t=>t.getFullYear().toString(),"%m":t=>L(t.getMonth()+1),"%d":t=>L(t.getDate()),"%H":t=>L(t.getHours()),"%M":t=>L(t.getMinutes()),"%S":t=>L(t.getSeconds())},F=(t,e)=>(e=null!=e?e:new Date,t.replace(/%[yYmdHMS]/g,(t=>$[t]?$[t](e):t.slice(1)))),q=36e5,K=24*q,_={ms:1,s:1e3,m:6e4,h:q,d:K,w:7*K,y:315576e5},H=["y","d","h","m","s","ms"];function X(t,e,s,r){return new(s||(s=Promise))((function(n,i){function a(t){try{l(r.next(t))}catch(t){i(t)}}function u(t){try{l(r.throw(t))}catch(t){i(t)}}function l(t){t.done?n(t.value):function(t){return t instanceof s?t:new s((function(e){e(t)}))}(t.value).then(a,u)}l((r=r.apply(t,e||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const J=t=>{var e;return 0==(null!==(e=null==t?void 0:t.length)&&void 0!==e?e:0)},Q=["",0,"0",null,!1,void 0],B=t=>-1==Q.indexOf(t),z=()=>{},V=(t,e,s)=>e(t.toLowerCase().replace(/\W+/g," ")).replace(/\s/g,null!=s?s:""),Z=(t,e)=>V(t,(t=>t.replace(/\s(\w)/g,(t=>t.toUpperCase()))),e),W=Z,G=/&(amp|apos|lt|gt|nbsp|quot);/g,tt={amp:"&",apos:"'",lt:"<",gt:">",nbsp:" ",quot:'"'},et=t=>/^[\d]$/.test(t),st=t=>/^[A-Za-z]$/.test(t),rt=t=>/^[^\w]$/.test(t),nt=t=>r(t.split("")).join("");class it{constructor(){this.hasSpace=!1,this._space=" ",this.hasNumbers=!1,this._numbers="0123456789",this.hasSymbols=!1,this._symbols="!@#$%^&*()<>.<~:;?+=-_",this.hasUpper=!1,this._upper="ABCDEFGHIJKLMNOPQRSTUVWXYZ",this.hasLower=!1,this._lower="abcdefghijklmnopqrstuvwxyz",this.hasChars=!1,this._chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"}chars(){return this.hasChars=!0,this}static chars(){return(new it).chars()}lower(){return this.hasLower=!0,this}static lower(){return(new it).lower()}make(t){let e="";this.hasSpace&&(e+=this._space),this.hasNumbers&&(e+=this._numbers),this.hasSymbols&&(e+=this._symbols),this.hasUpper&&!this.hasChars&&(e+=this._upper),this.hasLower&&!this.hasChars&&(e+=this._lower),this.hasChars&&(e+=this._chars);let r="";if(t&&e.length){e=nt(e);for(let n=0;n<t;n++)r+=e.charAt(s(0,e.length-1))}return r}numbers(){return this.hasNumbers=!0,this}static numbers(){return(new it).numbers()}space(){return this.hasSpace=!0,this}static space(){return(new it).space()}symbols(){return this.hasSymbols=!0,this}static symbols(){return(new it).symbols()}upper(){return this.hasUpper=!0,this}static upper(){return(new it).upper()}}const at=t=>t.split("").reverse().join(""),ut=(t,e)=>V(t,(t=>t.replace(/(\w)(\w*)/g,((t,e,s)=>e.toUpperCase()+s))),e),lt=(t,e)=>e(t.value)?t.value:(t=>(t.maskIndex--,""))(t),ot={"#":t=>t.value,0:t=>lt(t,et),9:t=>lt(t,et),A:t=>lt(t,st),Z:t=>lt(t,st),L:t=>lt(t,st).toLowerCase(),U:t=>lt(t,st).toUpperCase(),S:t=>lt(t,rt)},ht=t=>{t.maskIndex++,t.textIndex++;const{mask:e,maskIndex:s,text:r,textIndex:n}=t;t.key=e[s],t.value=r[n];const{key:i,value:a}=t;return g(i)||g(a)?"":(t=>ot[t.key]?ot[t.key](t):(t.key!=t.value&&t.textIndex--,t.key))(t)+ht(t)},ct=(t,e)=>ht({mask:t,maskIndex:-1,text:e,textIndex:-1,key:"",value:""}),vt=(t,e)=>at(ct(at(t),at(e))),dt=(t,e)=>t.reduce(((t,s)=>Object.assign(Object.assign({},t),{[s]:e[s]})),{}),pt=(t,...e)=>{if(!e.length)return t;const s=e.shift();if(p(t)&&p(s))for(const e in s)p(s[e])?(t[e]||(t=Object.assign(Object.assign({},t),{[e]:{}})),t[e]=pt(t[e],s[e])):t=Object.assign(Object.assign({},t),{[e]:s[e]});return pt(t,...e)};class mt{}var ft,gt,yt,Et,xt,bt,St;mt.DESCRIPTION=Symbol("DESCRIPTION"),mt.ERROR=Symbol("ERROR"),mt.INDEXES=Symbol("INDEXES"),mt.KEYS=Symbol("KEYS"),mt.NAME=Symbol("NAME"),mt.REQUIRED=Symbol("REQUIRED"),mt.SOURCE=Symbol("SOURCE"),mt.TYPE=Symbol("TYPE");class wt{constructor(t){this[ft]="",this[gt]="",this[yt]="",this[Et]="any",this[xt]=!1,this.rules=[],this.custom=[],this[mt.TYPE]=t}description(t){return this[mt.DESCRIPTION]=t,this}empty(t){const e=t;return this.unshift((({value:t})=>{const s=l(t);return{break:!l(e)&&!s,value:s?t:c(e)?e():e}}))}equal(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>{const n=s({value:t,context:r});return t==n?{value:t}:this.invalid(`.equal(${n})`,e)}))}error(t){return f(t)&&(this[mt.ERROR]=t),this}filter(...t){const e=t;return this.unshift((({value:t})=>{const s=-1==e.indexOf(t);return{break:!s,value:s?t:void 0}}))}fn(t){return c(t)?t:()=>t}from(t){return this[mt.SOURCE]=t,this}invalid(t,e){return t=`[${this[mt.TYPE]}]${t}`,{error:this[mt.ERROR]?this[mt.ERROR]:this[mt.NAME]?this[mt.NAME]+":"+t:t,message:e}}model(){return this.toString()}parse(){return this.unshift((({value:t})=>({value:t})))}push(t){return this.rules.push(t),this}required(t){return this[mt.REQUIRED]=!0,this.unshift((({value:e})=>l(e)?{value:e}:this.invalid(".required",t)))}test(t){return!f(this.validate(t).error)}testAsync(t){return X(this,void 0,void 0,(function*(){return!f((yield this.validateAsync(t)).error)}))}toString(){return this[mt.TYPE]}unshift(t){return this.rules.unshift(t),this}validate(t,e){var s;if(this.custom.length)return this.invalid("[async]");let r={value:t};for(let t=0;t<this.rules.length;t++){if(r=this.rules[t]({value:r.value,context:e}),null===(s=r.error)||void 0===s?void 0:s.length)return Object.assign({error:r.error},r.message?{message:r.message}:{});if(r.break)return{value:r.value}}return{value:r.value}}validateAsync(t,e){return X(this,void 0,void 0,(function*(){let s=this.validate(t,e);if(s.error)return{error:s.error};for(let t=0;t<this.custom.length;t++){if(s=yield this.custom[t]({value:s.value}),s.error)return{error:s.error};if(s.break)return{value:s.value}}return{value:s.value}}))}}ft=mt.NAME,gt=mt.DESCRIPTION,mt.SOURCE,yt=mt.ERROR,Et=mt.TYPE,xt=mt.REQUIRED;class Ot extends wt{constructor(t){super("array"),this[bt]=[],this.push((({value:e})=>a(e)?{value:e}:this.invalid("",t)))}between(t,e,s){return this.min(t,s),this.max(e,s)}items(t,e){const s=t;return s&&this[mt.INDEXES].push(s),s?this.push((({value:t})=>{s[mt.NAME]="";for(let r=0;r<t.length;r++){const{error:n,value:i}=s.validate(t[r],t);if(n)return this.invalid("< "+n+"["+r+"] >",e);t[r]=i}return{value:t}})):this}length(t,e){const s=t;return this.push((({value:t})=>t.length==s?{value:t}:this.invalid(".length("+s+")",e)))}max(t,e){const s=t;return this.push((({value:t})=>t.length<=s?{value:t}:this.invalid(".max("+s+")",e)))}min(t,e){const s=t;return this.push((({value:t})=>t.length>=s?{value:t}:this.invalid(".min("+s+")",e)))}model(){return this[mt.INDEXES].length?this[mt.INDEXES].map((t=>t.model())):this[mt.TYPE]}toString(){return this[mt.INDEXES].length?JSON.stringify(this.model(),null,4):this[mt.TYPE]}}bt=mt.INDEXES;class Rt extends wt{constructor(t){super("boolean"),this.push((({value:e})=>u(e)?{value:e}:this.invalid("",t)))}parse(){return this.unshift((({value:t})=>({value:l(t)?E(t):t})))}}class Ct extends wt{constructor(t){super("date"),this.push((({value:e})=>f(e)&&e.length>=9&&!isNaN(new Date(e).getTime())?{value:e}:this.invalid("",t)))}format(t){const e=t;return this.push((({value:t})=>({value:F(e,new Date(t))})))}parse(){return this.unshift((({value:t})=>({value:new Date(f(t)&&t.length<=10?`${t} 12:00`:t)})))}}class It extends wt{constructor(t){super("number"),this.push((({value:e})=>o(e)?{value:e}:this.invalid("",t)))}between(t,e,s){return this.min(t,s),this.max(e,s)}float(t){return this.push((({value:e})=>h(e)?{value:e}:this.invalid(".float",t)))}integer(t){return this.push((({value:e})=>v(e)?{value:e}:this.invalid(".integer",t)))}max(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>{const n=s({value:t,context:r});return t<=n?{value:t}:this.invalid(`.max(${n})`,e)}))}min(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>{const n=s({value:t,context:r});return t>=n?{value:t}:this.invalid(`.min(${n})`,e)}))}parse(){return this.unshift((({value:t})=>({value:l(t)?parseFloat(t.toString()):t})))}}class Mt extends wt{constructor(t){super("object"),this[St]={},this.push((({value:e})=>d(e)?{value:e}:this.invalid("",t)))}keys(t,e){const s=t;return s&&(this[mt.KEYS]=Object.assign(Object.assign({},this[mt.KEYS]),s)),s?this.push((({value:t})=>{const r=[],n={};return Object.keys(s).forEach((i=>{var a;const u=s[i];u[mt.NAME]=null!==(a=u[mt.SOURCE])&&void 0!==a?a:i;const{error:o,message:h,value:c}=u.validate(t[u[mt.NAME]],n);!e&&h&&(e=h),o&&r.push(o),l(c)&&(n[i]=c)})),r.length?this.invalid("{ "+r.join(", ")+" }",e):{value:n}})):this}model(){const t={},e=Object.keys(this[mt.KEYS]);return e.length&&e.forEach((e=>t[e]=this[mt.KEYS][e].model())),e.length?t:this[mt.TYPE]}parse(t){return this.unshift((({value:e})=>{if(!d(e))try{e=JSON.parse(e)}catch(e){return this.invalid("",t)}return{value:e}}))}toString(){return Object.keys(this[mt.KEYS]).length?JSON.stringify(this.model(),null,4):this[mt.TYPE]}}St=mt.KEYS;class kt extends wt{constructor(t){super("string"),this.push((({value:e})=>f(e)?{value:e}:this.invalid("",t)))}between(t,e,s){return this.min(t,s),this.max(e,s)}email(t){const e=/^[\w-\\.]+@([\w-]+\.)+[\w-]{2,4}$/i;return this.push((({value:s})=>e.test(s)?{value:s}:this.invalid(".email",t)))}length(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>{const n=s({value:t,context:r});return t.length==n?{value:t}:this.invalid(`.length(${n})`,e)}))}lowerCase(){return this.push((({value:t})=>({value:t.toLowerCase()})))}lowerCamelCase(){return this.push((({value:t})=>({value:Z(t)})))}max(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>{const n=s({value:t,context:r});return t.length<=n?{value:t}:this.invalid(`.max(${n})`,e)}))}mask(t){const e=this.fn(t);return this.push((({value:t,context:s})=>({value:ct(e({value:t,context:s}),t)})))}min(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>{const n=s({value:t,context:r});return t.length>=n?{value:t}:this.invalid(`.min(${n})`,e)}))}parse(){return this.unshift((({value:t})=>({value:d(t)?JSON.stringify(t):l(t)?t.toString():t})))}required(t){return this[mt.REQUIRED]=!0,this.push((({value:e})=>e.length?{value:e}:this.invalid(".required",t)))}regex(t,e){return this.push((({value:s})=>t.test(s)?{value:s}:this.invalid(".regex",e)))}replace(t,e){const s=this.fn(t);return this.push((({value:t,context:r})=>({value:t.replace(s({value:t,context:r}),e)})))}trim(){return this.push((({value:t})=>({value:t.trim()})))}upperCase(){return this.push((({value:t})=>({value:t.toUpperCase()})))}upperCamelCase(){return this.push((({value:t})=>({value:ut(t)})))}}class At{static array(t,e){return new Ot(e).items(t)}static boolean(t){return new Rt(t)}static date(t){return new Ct(t)}static number(t){return new It(t)}static object(t,e){return new Mt(e).keys(t)}static ref(t,e){return({context:s})=>s&&l(s[t])?s[t]:e}static string(t){return new kt(t)}test(t,...e){return!f(At.validate(t,...e).error)}testAsync(t,...e){return X(this,void 0,void 0,(function*(){return!f((yield At.validateAsync(t,...e)).error)}))}static validate(t,...e){let s={value:t};for(let t=0;t<e.length;t++)if(s=e[t].validate(s.value),s.error)return{value:s.value,error:s.error};return{value:s.value}}static validateAsync(t,...e){return X(this,void 0,void 0,(function*(){let s={value:t};for(let t=0;t<e.length;t++)if(s=yield e[t].validateAsync(s.value),s.error)return{value:s.value,error:s.error};return{value:s.value}}))}}return t.EventEmitter=class{constructor(){this.events=new Map}on(t,e){const s=this.events.get(t);return s?s.push(e):this.events.set(t,[e]),{dispose:()=>this.off(t,e)}}once(t,e){const s=r=>{e(r),this.off(t,s)};return this.on(t,s),{dispose:()=>this.off(t,s)}}off(t,e){const s=this.events.get(t);if(e){if(s){const t=s.indexOf(e);t>=0&&s.splice(t,1)}}else this.events.set(t,[])}emit(t,e){const s=this.events.get(t);s&&s.forEach((t=>t(e)))}},t.Hash=N,t.RandomString=it,t.Validation=At,t.ValidationBase=wt,t.ValidationKeys=mt,t.allowed=dt,t.cache=()=>{const t=[],e=[];return s=>{let r=t.indexOf(s);return-1==r&&(t.push(s),e.push({}),r=e.length-1),e[r]}},t.camelCase=W,t.chunkArray=(t,e)=>{const s=[];for(let r=0;r<t.length;r+=e)s.push(t.slice(r,r+e));return s},t.clamp=e,t.colorPalette=(t,e)=>S(null!=e?e:k,(e=>0==e?t:e>0?M(t,e):I(t,1- -1*e))),t.compareArray=(t,e)=>t.length===e.length&&t.every(((t,s)=>t===e[s])),t.countArray=t=>{const e={};return t.forEach((t=>{const s=t.toString();e[s]=(e[s]||0)+1})),e},t.cutText=(t,e)=>{if(t.length>e){const s=t.substring(0,e).split(" ");return s.pop(),s.join(" ")+"..."}return t},t.dateFormat=F,t.dateRange=(t,e)=>{const s=new Date(t),r=[];for(;t<e;)s.setDate(s.getDate()+1),r.push(new Date(s));return r},t.debounce=(t,e)=>{let s;const r=()=>{s&&clearTimeout(s)};return{cancel:r,run(...n){r(),s=setTimeout((()=>t(...n)),e)}}},t.decodeHTML=t=>t.replace(G,((t,e)=>tt[e])).replace(/&#(\d+);/gi,((t,e)=>String.fromCharCode(parseInt(e,10)))),t.denied=(t,e)=>dt(Object.keys(e).filter((e=>-1==t.indexOf(e))),e),t.each=(t,e,s)=>a(t)?x(t,e,s):d(t)?b(t,e,s):t,t.encodeHTML=t=>t.replace(/[^0-9A-Za-z ]/g,(t=>"&#"+t.charCodeAt(0)+";")),t.forEachAsync=(t,e,s)=>X(void 0,void 0,void 0,(function*(){yield Promise.allSettled(t.map(((r,n)=>{var i;return null===(i=e.call(s,r,n,t))||void 0===i?void 0:i.catch(z)}))).catch(z)})),t.forEachIndex=x,t.forEachKey=b,t.forEachPage=t=>X(void 0,void 0,void 0,(function*(){var e;let s=!0;const r=()=>s=!0;let n=1;for(;s;)s=!1,yield null===(e=t(n,r))||void 0===e?void 0:e.catch(z),n+=1})),t.forEachSeries=(t,e,s)=>X(void 0,void 0,void 0,(function*(){var r;for(let n=0;n<t.length;n++)yield null===(r=e.call(s,t[n],n,t))||void 0===r?void 0:r.catch(z)})),t.forLoop=(t,e,s)=>{for(let r=1;r<=t&&!1!==e.call(s,r,t);r++);return t},t.hexToRgb=O,t.hslToRgb=(t,e,s)=>{t/=60;const r=(1-Math.abs(2*s-1))*e,n=r*(1-Math.abs(t%2-1));let i=[0,0,0];t<=1?i=[r,n,0]:t<=2?i=[n,r,0]:t<=3?i=[0,r,n]:t<=4?i=[0,n,r]:t<=5?i=[n,0,r]:t<=6&&(i=[r,0,n]);const a=s-.5*r;return[Math.round(255*(i[0]+a)),Math.round(255*(i[1]+a)),Math.round(255*(i[2]+a))]},t.isArray=a,t.isBoolean=u,t.isCharacter=t=>/^[\w]$/.test(t),t.isDate=t=>"date"==i(t),t.isDef=l,t.isDigit=et,t.isEmpty=J,t.isFalse=t=>!B(t),t.isFloat=h,t.isFunction=c,t.isInteger=v,t.isLetter=st,t.isMap=t=>"map"==i(t),t.isNotEmpty=t=>!J(t),t.isNull=t=>null===t,t.isNumber=o,t.isObject=d,t.isPlainObject=p,t.isRegExp=t=>"regexp"==i(t),t.isScalar=t=>-1!=m.indexOf(i(t)),t.isSet=t=>"set"==i(t),t.isSpecialChar=rt,t.isString=f,t.isSymbol=t=>"symbol"==typeof t,t.isTrue=B,t.isUndefined=g,t.lerp=(t,s,r)=>t+(s-t)*e(r,0,1),t.loop=(t,e)=>{let s=!1;const r=()=>X(void 0,void 0,void 0,(function*(){s&&(yield t(),setTimeout(r,e))}));return{start(){s||(s=!0,r())},stop(){s=!1}}},t.lowerCamelCase=Z,t.map=S,t.mask=ct,t.maskMoney=(t,e,s)=>(s++,e=parseInt((e||"0").replace(/\D/g,"")).toString(),vt(t,e.length<s?("0".repeat(s)+e).slice(-1*s):e)),t.maskReverse=vt,t.maskTest=(t,e)=>t.length==ct(t,e).length,t.merge=pt,t.msToString=t=>{const e=[];return H.forEach((s=>{const r=_[s],n=(t-t%r)/r;n&&(t-=n*r,e.push(n.toString()+s))})),e.join(" ")},t.noop=z,t.parseMs=t=>{const e=/(-?(?:\d+)?\.?\d+) *(ms|s|m|h|d|w|y)/gm;let s,r=0;for(;null!==(s=e.exec(t));)s.index===e.lastIndex&&e.lastIndex++,r+=parseFloat(s[1])*_[s[2]]||0;return r},t.parseSize=t=>{if(o(t))return t+"px";const e=(t=>/(-?(?:\d+)?\.?\d+) *(px|%|cm|mm|in|pt|pc|en|ex|ch|rem|vw|vh|vmin|vmax)*/g.exec(t))(t);return e?parseFloat(e[1])+(e[2]||"px"):"0px"},t.random=s,t.randomCase=t=>t.split("").map((t=>Math.random()<.5?t.toUpperCase():t.toLowerCase())).join(""),t.randomElement=t=>t.length?t[s(0,t.length-1)]:null,t.rangeArray=(t,e,s=1)=>Array.from({length:(e-t)/s+1},((e,r)=>t+r*s)),t.rgbToHex=C,t.rgbToHsl=(t,e,s)=>{const[r,n,i]=((...t)=>t.map((t=>t/255)))(t,e,s),a=Math.max(r,n,i),u=Math.min(r,n,i),l=a-u,o=(u+a)/2;return[60*A(l,a,r,n,i),D(l,o),o]},t.shadeColor=I,t.shuffleArray=r,t.shuffleString=nt,t.simpleID=()=>T()+Y(),t.sleep=t=>new Promise((e=>setTimeout(e,t))),t.stringReverse=at,t.tintColor=M,t.toArray=t=>a(t)?t:l(t)?[t]:[],t.toBool=E,t.type=i,t.uniqueArray=t=>t.filter(((t,e,s)=>s.indexOf(t)===e)),t.uniqueID=()=>P()+P()+P()+P(),t.upperCamelCase=ut,t.uuidv4=()=>U()+"-"+Y()+"-4"+T()+"-"+Y()+"-"+(U()+Y()),t}({});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@andrewcaires/utils.js",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.9",
|
|
4
4
|
"description": "JavaScript utility library for web and nodejs development",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs.js",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"@rollup/plugin-commonjs": "^28.0.3",
|
|
48
48
|
"@rollup/plugin-terser": "^0.4.4",
|
|
49
49
|
"@rollup/plugin-typescript": "^12.1.2",
|
|
50
|
-
"@types/node": "^22.15.
|
|
50
|
+
"@types/node": "^22.15.21",
|
|
51
51
|
"eslint": "^9.27.0",
|
|
52
52
|
"rollup": "^4.41.0",
|
|
53
53
|
"rollup-plugin-dts": "^6.2.1",
|