@andrewcaires/utils.js 0.4.4 → 0.4.5
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 +18 -6
- package/dist/index.esm.js +2 -2
- package/dist/index.min.js +2 -2
- package/package.json +7 -7
package/dist/index.cjs.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @andrewcaires/utils.js v0.4.
|
|
2
|
+
* @andrewcaires/utils.js v0.4.5
|
|
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,r)=>Math.max(t,Math.min(r,e)),t=(e,t)=>Math.floor(Math.random()*(t-e+1)+e),r=e=>{for(let r=e.length-1;r>0;r--){const s=t(0,r);[e[r],e[s]]=[e[s],e[r]]}return e},s={},n=e=>null==e?"null":s[s.toString.call(e)]||"object";["Array","AsyncFunction","Boolean","Date","Function","Map","Number","Object","RegExp","Set","String"].forEach((e=>s["[object "+e+"]"]=e.toLowerCase()));const a=e=>"array"==n(e),i=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,r)=>{for(let s=0;s<e.length&&!1!==t.call(r,e[s],s,e);s++);return e},b=(e,t,r)=>{let s="";const n=Object.keys(e);for(let a=0;a<n.length&&(s=n[a],!1!==t.call(r,e[s],s,e));a++);return e},w=(e,t,r)=>Object.fromEntries(Object.entries(e).map((([s,n])=>[s,t.call(r,n,s,e)]))),S=e=>parseInt(null!=e?e:"0",16)||0,C=e=>{var t;return(null===(t=e.replace(/^#/,"").match(/.{1,2}/g))||void 0===t?void 0:t.map(S))||[]},k=e=>("0"+e.toString(16)).slice(-2),O=(e,t,r)=>"#"+k(e)+k(t)+k(r),j=(t,r)=>{const s=C(t);r=e(r,0,1);const[n,a,i]=s.map((e=>Math.round(e*r)));return O(n,a,i)},M=(t,r)=>{const s=C(t);r=e(r,0,1);const[n,a,i]=s.map((e=>Math.round(e+(255-e)*r)));return O(n,a,i)},A={50:.95,100:.9,200:.75,300:.6,400:.3,500:0,600:-.1,700:-.25,800:-.4,900:-.55,950:-.71},E=(e,t,r,s,n)=>0===e?0:t===r?(s-n)/e%6:t===s?(n-r)/e+2:t===n?(r-s)/e+4:0,I=(e,t)=>0===e?0:e/(1-Math.abs(2*t-1));class _{constructor(e){this.key=this.shuffle(_.dictionary,e,!1)}encrypt(e){return this.shuffle(e,this.key,!1)}decrypt(e){return this.shuffle(e,this.key,!0)}index(e,t,r){return[_.dictionary.indexOf(e[r]),_.dictionary.indexOf(t[r%t.length])]}result(e,t,r){return _.dictionary[(r?e-t+_.dictionary.length:e+t)%_.dictionary.length]}shuffle(e,t,r){let s="";for(let n=0;n<e.length;n++){const[a,i]=this.index(e,t,n);s+=-1===a||-1===i?e[n]:this.result(a,i,r)}return s}}_.dictionary="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";const D=e=>Math.random().toString(16).slice(e),T=()=>D(-3),L=()=>D(-4),$=()=>L()+L(),F=()=>$()+$(),N=e=>("0"+e.toString()).slice(-2),q={"%y":e=>N(e.getFullYear()),"%Y":e=>e.getFullYear().toString(),"%m":e=>N(e.getMonth()+1),"%d":e=>N(e.getDate()),"%H":e=>N(e.getHours()),"%M":e=>N(e.getMinutes()),"%S":e=>N(e.getSeconds())},U=(e,t)=>(t=null!=t?t:new Date,e.replace(/%[yYmdHMS]/g,(e=>q[e]?q[e](t):e.slice(1)))),H=36e5,R=24*H,P={ms:1,s:1e3,m:6e4,h:H,d:R,w:7*R,y:315576e5},B=["y","d","h","m","s","ms"];function Y(e,t,r,s){return new(r||(r=Promise))((function(n,a){function i(e){try{u(s.next(e))}catch(e){a(e)}}function o(e){try{u(s.throw(e))}catch(e){a(e)}}function u(e){e.done?n(e.value):function(e){return e instanceof r?e:new r((function(t){t(e)}))}(e.value).then(i,o)}u((s=s.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)},Z=["",0,"0",null,!1,void 0],J=e=>-1==Z.indexOf(e),V=()=>{},K=(e,t,r)=>t(e.toLowerCase().replace(/\W+/g," ")).replace(/\s/g,null!=r?r:""),W=(e,t)=>K(e,(e=>e.replace(/\s(\w)/g,(e=>e.toUpperCase()))),t),G=W,Q=/&(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),re=e=>/^[^\w]$/.test(e),se=e=>r(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 r="";this.hasSpace&&(r+=this._space),this.hasNumbers&&(r+=this._numbers),this.hasSymbols&&(r+=this._symbols),this.hasUpper&&!this.hasChars&&(r+=this._upper),this.hasLower&&!this.hasChars&&(r+=this._lower),this.hasChars&&(r+=this._chars);let s="";if(e&&r.length){r=se(r);for(let n=0;n<e;n++)s+=r.charAt(t(0,r.length-1))}return s}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 ae=e=>e.split("").reverse().join(""),ie=(e,t)=>K(e,(e=>e.replace(/(\w)(\w*)/g,((e,t,r)=>t.toUpperCase()+r))),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,re)},le=e=>{e.maskIndex++,e.textIndex++;const{mask:t,maskIndex:r,text:s,textIndex:n}=e;e.key=t[r],e.value=s[n];const{key:a,value:i}=e;return m(a)||m(i)?"":(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)=>ae(he(ae(e),ae(t))),pe=(e,t)=>e.reduce(((e,r)=>Object.assign(Object.assign({},e),{[r]:t[r]})),{}),ve=(e,...t)=>{if(!t.length)return e;const r=t.shift();if(v(e)&&v(r))for(const t in r)v(r[t])?(e[t]||(e=Object.assign(Object.assign({},e),{[t]:{}})),e[t]=ve(e[t],r[t])):e=Object.assign(Object.assign({},e),{[t]:r[t]});return ve(e,...t)};class xe{constructor(e){this.name="",this._error="",this._type="any",this.rules=[],this.custom=[],this._type=e}empty(e){const t=e;return this.unshift((({value:e})=>{const r=o(e);return{break:!r,value:r?e:h(t)?t():t}}))}equal(e,t){const r=this.fn(e);return this.push((({value:e,context:s})=>{const n=r({value:e,context:s});return e==n?{value:e}:this.invalid(`.equal(${n})`,t)}))}error(e){return d(e)&&(this._error=e),this}filter(...e){const t=e;return this.unshift((({value:e})=>{const r=-1==t.indexOf(e);return{break:!r,value:r?e:void 0}}))}fn(e){return h(e)?e:()=>e}from(e){return this.source=e,this}invalid(e,t){return e=`[${this._type}]${e}`,{error:this._error?this._error:this.name?this.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.unshift((({value:t})=>o(t)?{value:t}:this.invalid(".required",e)))}test(e){return!d(this.validate(e).error)}testAsync(e){return Y(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 r;if(this.custom.length)return this.invalid("[async]");let s={value:e};for(let e=0;e<this.rules.length;e++){if(s=this.rules[e]({value:s.value,context:t}),null===(r=s.error)||void 0===r?void 0:r.length)return Object.assign({error:s.error},s.message?{message:s.message}:{});if(s.break)return{value:s.value}}return{value:s.value}}validateAsync(e,t){return Y(this,void 0,void 0,(function*(){let r=this.validate(e,t);if(r.error)return{error:r.error};for(let e=0;e<this.custom.length;e++){if(r=yield this.custom[e]({value:r.value}),r.error)return{error:r.error};if(r.break)return{value:r.value}}return{value:r.value}}))}}class de extends xe{constructor(e){super("array"),this.push((({value:t})=>a(t)?{value:t}:this.invalid("",e)))}between(e,t,r){return this.min(e,r),this.max(t,r)}items(e,t){const r=e;return r?this.push((({value:e})=>{r.name="";for(let s=0;s<e.length;s++){const{error:n,value:a}=r.validate(e[s],e);if(n)return this.invalid("< "+n+"["+s+"] >",t);e[s]=a}return{value:e}})):this}length(e,t){const r=e;return this.push((({value:e})=>e.length==r?{value:e}:this.invalid(".length("+r+")",t)))}max(e,t){const r=e;return this.push((({value:e})=>e.length<=r?{value:e}:this.invalid(".max("+r+")",t)))}min(e,t){const r=e;return this.push((({value:e})=>e.length>=r?{value:e}:this.invalid(".min("+r+")",t)))}}class me extends xe{constructor(e){super("boolean"),this.push((({value:t})=>i(t)?{value:t}:this.invalid("",e)))}parse(){return this.unshift((({value:e})=>({value:o(e)?g(e):e})))}}class fe extends xe{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:U(t,new Date(e))})))}parse(){return this.unshift((({value:e})=>({value:new Date(d(e)&&e.length<=10?`${e} 12:00`:e)})))}}class ge extends xe{constructor(e){super("number"),this.push((({value:t})=>u(t)?{value:t}:this.invalid("",e)))}between(e,t,r){return this.min(e,r),this.max(t,r)}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 r=this.fn(e);return this.push((({value:e,context:s})=>{const n=r({value:e,context:s});return e<=n?{value:e}:this.invalid(`.max(${n})`,t)}))}min(e,t){const r=this.fn(e);return this.push((({value:e,context:s})=>{const n=r({value:e,context:s});return e>=n?{value:e}:this.invalid(`.min(${n})`,t)}))}parse(){return this.unshift((({value:e})=>({value:o(e)?parseFloat(e.toString()):e})))}}class ye extends xe{constructor(e){super("object"),this.push((({value:t})=>p(t)?{value:t}:this.invalid("",e)))}keys(e,t){const r=e;return r?this.push((({value:e})=>{const s=[],n={};return Object.keys(r).forEach((a=>{var i;const u=r[a];u.name=null!==(i=u.source)&&void 0!==i?i:a;const{error:l,message:h,value:c}=u.validate(e[u.name],n);!t&&h&&(t=h),l&&s.push(l),o(c)&&(n[a]=c)})),s.length?this.invalid("{ "+s.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 be extends xe{constructor(e){super("string"),this.push((({value:t})=>d(t)?{value:t}:this.invalid("",e)))}between(e,t,r){return this.min(e,r),this.max(t,r)}email(e){const t=/^[\w-\\.]+@([\w-]+\.)+[\w-]{2,4}$/i;return this.push((({value:r})=>t.test(r)?{value:r}:this.invalid(".email",e)))}length(e,t){const r=this.fn(e);return this.push((({value:e,context:s})=>{const n=r({value:e,context:s});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 r=this.fn(e);return this.push((({value:e,context:s})=>{const n=r({value:e,context:s});return e.length<=n?{value:e}:this.invalid(`.max(${n})`,t)}))}mask(e){const t=this.fn(e);return this.push((({value:e,context:r})=>({value:he(t({value:e,context:r}),e)})))}min(e,t){const r=this.fn(e);return this.push((({value:e,context:s})=>{const n=r({value:e,context:s});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.push((({value:t})=>t.length?{value:t}:this.invalid(".required",e)))}regex(e,t){return this.push((({value:r})=>e.test(r)?{value:r}:this.invalid(".regex",t)))}replace(e,t){const r=this.fn(e);return this.push((({value:e,context:s})=>({value:e.replace(r({value:e,context:s}),((...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:ie(e)})))}}class we{static array(e,t){return new de(t).items(e)}static boolean(e){return new me(e)}static date(e){return new fe(e)}static number(e){return new ge(e)}static object(e,t){return new ye(t).keys(e)}static ref(e,t){return({context:r})=>r&&o(r[e])?r[e]:t}static string(e){return new be(e)}test(e,...t){return!d(we.validate(e,...t).error)}testAsync(e,...t){return Y(this,void 0,void 0,(function*(){return!d((yield we.validateAsync(e,...t)).error)}))}static validate(e,...t){let r={value:e};for(let e=0;e<t.length;e++)if(r=t[e].validate(r.value),r.error)return{value:r.value,error:r.error};return{value:r.value}}static validateAsync(e,...t){return Y(this,void 0,void 0,(function*(){let r={value:e};for(let e=0;e<t.length;e++)if(r=yield t[e].validateAsync(r.value),r.error)return{value:r.value,error:r.error};return{value:r.value}}))}}exports.EventEmitter=class{constructor(){this.events=new Map}on(e,t){const r=this.events.get(e);return r?r.push(t):this.events.set(e,[t]),{dispose:()=>this.off(e,t)}}once(e,t){const r=s=>{t(s),this.off(e,r)};return this.on(e,r),{dispose:()=>this.off(e,r)}}off(e,t){const r=this.events.get(e);if(t){if(r){const e=r.indexOf(t);e>=0&&r.splice(e,1)}}else this.events.set(e,[])}emit(e,t){const r=this.events.get(e);r&&r.forEach((e=>e(t)))}},exports.Hash=_,exports.RandomString=ne,exports.Validation=we,exports.ValidationBase=xe,exports.allowed=pe,exports.cache=()=>{const e=[],t=[];return r=>{let s=e.indexOf(r);return-1==s&&(e.push(r),t.push({}),s=t.length-1),t[s]}},exports.camelCase=G,exports.chunkArray=(e,t)=>{const r=[];for(let s=0;s<e.length;s+=t)r.push(e.slice(s,s+t));return r},exports.clamp=e,exports.colorPalette=(e,t)=>w(null!=t?t:A,(t=>0==t?e:t>0?M(e,t):j(e,1- -1*t))),exports.countArray=e=>{const t={};return e.forEach((e=>{const r=e.toString();t[r]=(t[r]||0)+1})),t},exports.cutText=(e,t)=>{if(e.length>t){const r=e.substring(0,t).split(" ");return r.pop(),r.join(" ")+"..."}return e},exports.dateFormat=U,exports.dateRange=(e,t)=>{const r=new Date(e),s=[];for(;e<t;)r.setDate(r.getDate()+1),s.push(new Date(r));return s},exports.debounce=(e,t)=>{let r;const s=()=>{r&&clearTimeout(r)};return{cancel:s,run(...n){s(),r=setTimeout((()=>e(...n)),t)}}},exports.decodeHTML=e=>e.replace(Q,((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,r)=>a(e)?y(e,t,r):p(e)?b(e,t,r):e,exports.encodeHTML=e=>e.replace(/[^0-9A-Za-z ]/g,(e=>"&#"+e.charCodeAt(0)+";")),exports.forEachAsync=(e,t,r)=>Y(void 0,void 0,void 0,(function*(){yield Promise.allSettled(e.map(((s,n)=>t.call(r,s,n,e)))).catch(V)})),exports.forEachIndex=y,exports.forEachKey=b,exports.forEachSeries=(e,t,r)=>Y(void 0,void 0,void 0,(function*(){for(let s=0;s<e.length;s++)yield t.call(r,e[s],s,e).catch(V)})),exports.forLoop=(e,t,r)=>{for(let s=1;s<=e&&!1!==t.call(r,s,e);s++);return e},exports.hexToRgb=C,exports.hslToRgb=(e,t,r)=>{e/=60;const s=(1-Math.abs(2*r-1))*t,n=s*(1-Math.abs(e%2-1));let a=[0,0,0];e<=1?a=[s,n,0]:e<=2?a=[n,s,0]:e<=3?a=[0,s,n]:e<=4?a=[0,n,s]:e<=5?a=[n,0,s]:e<=6&&(a=[s,0,n]);const i=r-.5*s;return[Math.round(255*(a[0]+i)),Math.round(255*(a[1]+i)),Math.round(255*(a[2]+i))]},exports.isArray=a,exports.isBoolean=i,exports.isCharacter=e=>/^[\w]$/.test(e),exports.isDate=e=>"date"==n(e),exports.isDef=o,exports.isDigit=ee,exports.isEmpty=z,exports.isFalse=e=>!J(e),exports.isFloat=l,exports.isFunction=h,exports.isInteger=c,exports.isLetter=te,exports.isMap=e=>"map"==n(e),exports.isNotEmpty=e=>!z(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=re,exports.isString=d,exports.isSymbol=e=>"symbol"==typeof e,exports.isTrue=J,exports.isUndefined=m,exports.lerp=(t,r,s)=>t+(r-t)*e(s,0,1),exports.loop=(e,t)=>{let r=!1;const s=()=>Y(void 0,void 0,void 0,(function*(){r&&(yield e(),setTimeout(s,t))}));return{start(){r||(r=!0,s())},stop(){r=!1}}},exports.lowerCamelCase=W,exports.map=w,exports.mask=he,exports.maskMoney=(e,t,r)=>(r++,t=parseInt((t||"0").replace(/\D/g,"")).toString(),ce(e,t.length<r?("0".repeat(r)+t).slice(-1*r):t)),exports.maskReverse=ce,exports.maskTest=(e,t)=>e.length==he(e,t).length,exports.merge=ve,exports.msToString=e=>{const t=[];return B.forEach((r=>{const s=P[r],n=(e-e%s)/s;n&&(e-=n*s,t.push(n.toString()+r))})),t.join(" ")},exports.noop=V,exports.parseMs=e=>{const t=/(-?(?:\d+)?\.?\d+) *(ms|s|m|h|d|w|y)/gm;let r,s=0;for(;null!==(r=t.exec(e));)r.index===t.lastIndex&&t.lastIndex++,s+=parseFloat(r[1])*P[r[2]]||0;return s},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,r=1)=>Array.from({length:(t-e)/r+1},((t,s)=>e+s*r)),exports.rgbToHex=O,exports.rgbToHsl=(e,t,r)=>{const[s,n,a]=((...e)=>e.map((e=>e/255)))(e,t,r),i=Math.max(s,n,a),o=Math.min(s,n,a),u=i-o,l=(o+i)/2;return[60*E(u,i,s,n,a),I(u,l),l]},exports.shadeColor=j,exports.shuffleArray=r,exports.shuffleString=se,exports.simpleID=()=>T()+L(),exports.sleep=e=>new Promise((t=>setTimeout(t,e))),exports.stringReverse=ae,exports.tintColor=M,exports.toArray=e=>a(e)?e:o(e)?[e]:[],exports.toBool=g,exports.type=n,exports.uniqueArray=e=>e.filter(((e,t,r)=>r.indexOf(e)===t)),exports.uniqueID=()=>F()+F()+F()+F(),exports.upperCamelCase=ie,exports.uuidv4=()=>$()+"-"+L()+"-4"+T()+"-"+L()+"-"+($()+L());
|
|
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))||[]},C=e=>("0"+e.toString(16)).slice(-2),O=(e,t,s)=>"#"+C(e)+C(t)+C(s),R=(t,s)=>{const r=S(t);s=e(s,0,1);const[n,i,a]=r.map((e=>Math.round(e*s)));return O(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 O(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=(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,I=(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 B(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 Q=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){const t=e;return this.unshift((({value:e})=>{const s=o(e);return{break:!s,value:s?e:h(t)?t():t}}))}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{break:!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 B(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.break)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.break)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 Ce 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 Oe 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 Re 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.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 Ce(e)}static object(e,t){return new Oe(t).keys(e)}static ref(e,t){return({context:s})=>s&&o(s[e])?s[e]:t}static string(e){return new Re(e)}test(e,...t){return!d(Me.validate(e,...t).error)}testAsync(e,...t){return B(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 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}}))}}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:k,(t=>0==t?e:t>0?M(e,t):R(e,1- -1*t))),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)=>B(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)=>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)})),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=Q,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=>!Q(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=()=>B(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=O,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*A(u,a,r,n,i),I(u,l),l]},exports.shadeColor=R,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());
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @andrewcaires/utils.js v0.4.
|
|
2
|
+
* @andrewcaires/utils.js v0.4.5
|
|
3
3
|
* JavaScript utility library for web and nodejs development
|
|
4
4
|
* (c) 2025 Andrew Caires
|
|
5
5
|
* @license: MIT
|
|
@@ -269,14 +269,26 @@ declare const upperCamelCase: (str: string, space?: string) => string;
|
|
|
269
269
|
|
|
270
270
|
type ValidationCallback<T = any> = (value: IValidationInput<T>) => IValidationOutput<T>;
|
|
271
271
|
|
|
272
|
+
declare class ValidationKeys {
|
|
273
|
+
static readonly DESCRIPTION: unique symbol;
|
|
274
|
+
static readonly ERROR: unique symbol;
|
|
275
|
+
static readonly NAME: unique symbol;
|
|
276
|
+
static readonly REQUIRED: unique symbol;
|
|
277
|
+
static readonly SOURCE: unique symbol;
|
|
278
|
+
static readonly TYPE: unique symbol;
|
|
279
|
+
}
|
|
280
|
+
|
|
272
281
|
declare class ValidationBase<T = any> {
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
282
|
+
[ValidationKeys.NAME]: string;
|
|
283
|
+
[ValidationKeys.DESCRIPTION]: string;
|
|
284
|
+
[ValidationKeys.SOURCE]?: string;
|
|
285
|
+
[ValidationKeys.ERROR]: string;
|
|
286
|
+
[ValidationKeys.TYPE]: string;
|
|
287
|
+
[ValidationKeys.REQUIRED]: boolean;
|
|
277
288
|
private rules;
|
|
278
289
|
private custom;
|
|
279
290
|
constructor(type: string);
|
|
291
|
+
description(value: string): this;
|
|
280
292
|
empty(value?: T | TypeCallbackFunction<T>): this;
|
|
281
293
|
equal(value: T | IValidationFunction<T>, message?: string): this;
|
|
282
294
|
error(value?: string): this;
|
|
@@ -380,4 +392,4 @@ declare class Validation {
|
|
|
380
392
|
|
|
381
393
|
type ValidationCallbackAsync<T = any> = (value: IValidationInput<T>) => Promise<IValidationOutput<T>>;
|
|
382
394
|
|
|
383
|
-
export { type CacheCallback, type EachCallback, type EachValue, type EventCallback, EventEmitter, type EventList, type ForEachCallback, Hash, type IDebounceCallbacks, type IEventDisposable, type ILoopCallbacks, type IValidationFunction, type IValidationInput, type IValidationOutput, RandomString, type TypeArray, type TypeArrayAny, type TypeArrayFunction, type TypeArrayNumber, type TypeArrayString, type TypeCallback, type TypeCallbackArray, type TypeCallbackFunction, type TypeCallbackMap, type TypeCallbackObject, type TypeKey, type TypeNullable, type TypeObject, type TypeObjectAny, type TypeObjectBoolean, type TypeObjectFunction, type TypeObjectNullable, type TypeObjectNumber, type TypeObjectString, type TypeScalar, Validation, ValidationBase, type ValidationCallback, type ValidationCallbackAsync, allowed, cache, camelCase, chunkArray, clamp, colorPalette, 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 };
|
|
395
|
+
export { type CacheCallback, type EachCallback, type EachValue, type EventCallback, EventEmitter, type EventList, type ForEachCallback, Hash, type IDebounceCallbacks, type IEventDisposable, type ILoopCallbacks, type IValidationFunction, type IValidationInput, type IValidationOutput, RandomString, type TypeArray, type TypeArrayAny, type TypeArrayFunction, type TypeArrayNumber, type TypeArrayString, type TypeCallback, type TypeCallbackArray, type TypeCallbackFunction, type TypeCallbackMap, type TypeCallbackObject, type TypeKey, type TypeNullable, type TypeObject, type TypeObjectAny, type TypeObjectBoolean, type TypeObjectFunction, type TypeObjectNullable, type TypeObjectNumber, type TypeObjectString, type TypeScalar, Validation, ValidationBase, type ValidationCallback, type ValidationCallbackAsync, ValidationKeys, allowed, cache, camelCase, chunkArray, clamp, colorPalette, 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 };
|
package/dist/index.esm.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @andrewcaires/utils.js v0.4.
|
|
2
|
+
* @andrewcaires/utils.js v0.4.5
|
|
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 r=[];for(let s=0;s<t.length;s+=e)r.push(t.slice(s,s+e));return r},e=t=>{const e={};return t.forEach((t=>{const r=t.toString();e[r]=(e[r]||0)+1})),e},r=(t,e,r)=>Math.max(e,Math.min(r,t)),s=(t,e,s)=>t+(e-t)*r(s,0,1),n=(t,e)=>Math.floor(Math.random()*(e-t+1)+t),i=t=>t.length?t[n(0,t.length-1)]:null,a=(t,e,r=1)=>Array.from({length:(e-t)/r+1},((e,s)=>t+s*r)),u=t=>{for(let e=t.length-1;e>0;e--){const r=n(0,e);[t[e],t[r]]=[t[r],t[e]]}return t},l={},o=t=>null==t?"null":l[l.toString.call(t)]||"object";["Array","AsyncFunction","Boolean","Date","Function","Map","Number","Object","RegExp","Set","String"].forEach((t=>l["[object "+t+"]"]=t.toLowerCase()));const h=t=>"array"==o(t),c=t=>"boolean"==o(t),v=t=>"date"==o(t),p=t=>"null"!=o(t),d=t=>"number"==o(t),f=t=>d(t)&&!!(t%1),m=t=>"function"==typeof t,g=t=>d(t)&&!(t%1),x=t=>"map"==o(t),y=t=>null===t,b=t=>"object"==o(t),w=t=>b(t)&&t.constructor===Object,S=t=>"regexp"==o(t),k=["boolean","number","string"],O=t=>-1!=k.indexOf(o(t)),j=t=>"set"==o(t),C=t=>"string"==typeof t,M=t=>"symbol"==typeof t,_=t=>void 0===t,A=t=>h(t)?t:p(t)?[t]:[],I=t=>t.filter(((t,e,r)=>r.indexOf(t)===e)),$=[1,"1",!0,"true"],D=t=>-1!=$.indexOf(t),E=()=>{const t=[],e=[];return r=>{let s=t.indexOf(r);return-1==s&&(t.push(r),e.push({}),s=e.length-1),e[s]}},L=(t,e,r)=>{for(let s=0;s<t.length&&!1!==e.call(r,t[s],s,t);s++);return t},U=(t,e,r)=>{let s="";const n=Object.keys(t);for(let i=0;i<n.length&&(s=n[i],!1!==e.call(r,t[s],s,t));i++);return t},q=(t,e,r)=>h(t)?L(t,e,r):b(t)?U(t,e,r):t,N=(t,e,r)=>{for(let s=1;s<=t&&!1!==e.call(r,s,t);s++);return t},F=(t,e,r)=>Object.fromEntries(Object.entries(t).map((([s,n])=>[s,e.call(r,n,s,t)]))),T=t=>parseInt(null!=t?t:"0",16)||0,Y=t=>{var e;return(null===(e=t.replace(/^#/,"").match(/.{1,2}/g))||void 0===e?void 0:e.map(T))||[]},H=t=>("0"+t.toString(16)).slice(-2),P=(t,e,r)=>"#"+H(t)+H(e)+H(r),Z=(t,e)=>{const s=Y(t);e=r(e,0,1);const[n,i,a]=s.map((t=>Math.round(t*e)));return P(n,i,a)},z=(t,e)=>{const s=Y(t);e=r(e,0,1);const[n,i,a]=s.map((t=>Math.round(t+(255-t)*e)));return P(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},B=(t,e)=>F(null!=e?e:J,(e=>0==e?t:e>0?z(t,e):Z(t,1- -1*e))),R=(t,e,r)=>{t/=60;const s=(1-Math.abs(2*r-1))*e,n=s*(1-Math.abs(t%2-1));let i=[0,0,0];t<=1?i=[s,n,0]:t<=2?i=[n,s,0]:t<=3?i=[0,s,n]:t<=4?i=[0,n,s]:t<=5?i=[n,0,s]:t<=6&&(i=[s,0,n]);const a=r-.5*s;return[Math.round(255*(i[0]+a)),Math.round(255*(i[1]+a)),Math.round(255*(i[2]+a))]},W=(t,e,r,s,n)=>0===t?0:e===r?(s-n)/t%6:e===s?(n-r)/t+2:e===n?(r-s)/t+4:0,G=(t,e)=>0===t?0:t/(1-Math.abs(2*e-1)),K=(t,e,r)=>{const[s,n,i]=((...t)=>t.map((t=>t/255)))(t,e,r),a=Math.max(s,n,i),u=Math.min(s,n,i),l=a-u,o=(u+a)/2;return[60*W(l,a,s,n,i),G(l,o),o]};class Q{constructor(t){this.key=this.shuffle(Q.dictionary,t,!1)}encrypt(t){return this.shuffle(t,this.key,!1)}decrypt(t){return this.shuffle(t,this.key,!0)}index(t,e,r){return[Q.dictionary.indexOf(t[r]),Q.dictionary.indexOf(e[r%e.length])]}result(t,e,r){return Q.dictionary[(r?t-e+Q.dictionary.length:t+e)%Q.dictionary.length]}shuffle(t,e,r){let s="";for(let n=0;n<t.length;n++){const[i,a]=this.index(t,e,n);s+=-1===i||-1===a?t[n]:this.result(i,a,r)}return s}}Q.dictionary="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";const V=t=>Math.random().toString(16).slice(t),X=()=>V(-3),tt=()=>V(-4),et=()=>tt()+tt(),rt=()=>et()+et(),st=()=>X()+tt(),nt=()=>rt()+rt()+rt()+rt(),it=()=>et()+"-"+tt()+"-4"+X()+"-"+tt()+"-"+(et()+tt()),at=t=>("0"+t.toString()).slice(-2),ut={"%y":t=>at(t.getFullYear()),"%Y":t=>t.getFullYear().toString(),"%m":t=>at(t.getMonth()+1),"%d":t=>at(t.getDate()),"%H":t=>at(t.getHours()),"%M":t=>at(t.getMinutes()),"%S":t=>at(t.getSeconds())},lt=(t,e)=>(e=null!=e?e:new Date,t.replace(/%[yYmdHMS]/g,(t=>ut[t]?ut[t](e):t.slice(1)))),ot=(t,e)=>{const r=new Date(t),s=[];for(;t<e;)r.setDate(r.getDate()+1),s.push(new Date(r));return s},ht=36e5,ct=24*ht,vt={ms:1,s:1e3,m:6e4,h:ht,d:ct,w:7*ct,y:315576e5},pt=["y","d","h","m","s","ms"],dt=t=>{const e=[];return pt.forEach((r=>{const s=vt[r],n=(t-t%s)/s;n&&(t-=n*s,e.push(n.toString()+r))})),e.join(" ")},ft=t=>{const e=/(-?(?:\d+)?\.?\d+) *(ms|s|m|h|d|w|y)/gm;let r,s=0;for(;null!==(r=e.exec(t));)r.index===e.lastIndex&&e.lastIndex++,s+=parseFloat(r[1])*vt[r[2]]||0;return s},mt=(t,e)=>{let r;const s=()=>{r&&clearTimeout(r)};return{cancel:s,run(...n){s(),r=setTimeout((()=>t(...n)),e)}}};class gt{constructor(){this.events=new Map}on(t,e){const r=this.events.get(t);return r?r.push(e):this.events.set(t,[e]),{dispose:()=>this.off(t,e)}}once(t,e){const r=s=>{e(s),this.off(t,r)};return this.on(t,r),{dispose:()=>this.off(t,r)}}off(t,e){const r=this.events.get(t);if(e){if(r){const t=r.indexOf(e);t>=0&&r.splice(t,1)}}else this.events.set(t,[])}emit(t,e){const r=this.events.get(t);r&&r.forEach((t=>t(e)))}}function xt(t,e,r,s){return new(r||(r=Promise))((function(n,i){function a(t){try{l(s.next(t))}catch(t){i(t)}}function u(t){try{l(s.throw(t))}catch(t){i(t)}}function l(t){t.done?n(t.value):function(t){return t instanceof r?t:new r((function(e){e(t)}))}(t.value).then(a,u)}l((s=s.apply(t,e||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const yt=(t,e)=>{let r=!1;const s=()=>xt(void 0,void 0,void 0,(function*(){r&&(yield t(),setTimeout(s,e))}));return{start(){r||(r=!0,s())},stop(){r=!1}}},bt=t=>{var e;return 0==(null!==(e=null==t?void 0:t.length)&&void 0!==e?e:0)},wt=["",0,"0",null,!1,void 0],St=t=>-1==wt.indexOf(t),kt=t=>!St(t),Ot=t=>!bt(t),jt=()=>{},Ct=(t,e,r)=>e(t.toLowerCase().replace(/\W+/g," ")).replace(/\s/g,null!=r?r:""),Mt=(t,e)=>Ct(t,(t=>t.replace(/\s(\w)/g,(t=>t.toUpperCase()))),e),_t=Mt,At=(t,e)=>{if(t.length>e){const r=t.substring(0,e).split(" ");return r.pop(),r.join(" ")+"..."}return t},It=/&(amp|apos|lt|gt|nbsp|quot);/g,$t={amp:"&",apos:"'",lt:"<",gt:">",nbsp:" ",quot:'"'},Dt=t=>t.replace(It,((t,e)=>$t[e])).replace(/&#(\d+);/gi,((t,e)=>String.fromCharCode(parseInt(e,10)))),Et=t=>t.replace(/[^0-9A-Za-z ]/g,(t=>"&#"+t.charCodeAt(0)+";")),Lt=t=>/^[\w]$/.test(t),Ut=t=>/^[\d]$/.test(t),qt=t=>/^[A-Za-z]$/.test(t),Nt=t=>/^[^\w]$/.test(t),Ft=t=>{if(d(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"},Tt=t=>t.split("").map((t=>Math.random()<.5?t.toUpperCase():t.toLowerCase())).join(""),Yt=t=>u(t.split("")).join("");class Ht{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 Ht).chars()}lower(){return this.hasLower=!0,this}static lower(){return(new Ht).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=Yt(e);for(let s=0;s<t;s++)r+=e.charAt(n(0,e.length-1))}return r}numbers(){return this.hasNumbers=!0,this}static numbers(){return(new Ht).numbers()}space(){return this.hasSpace=!0,this}static space(){return(new Ht).space()}symbols(){return this.hasSymbols=!0,this}static symbols(){return(new Ht).symbols()}upper(){return this.hasUpper=!0,this}static upper(){return(new Ht).upper()}}const Pt=t=>t.split("").reverse().join(""),Zt=(t,e)=>Ct(t,(t=>t.replace(/(\w)(\w*)/g,((t,e,r)=>e.toUpperCase()+r))),e),zt=(t,e)=>e(t.value)?t.value:(t=>(t.maskIndex--,""))(t),Jt={"#":t=>t.value,0:t=>zt(t,Ut),9:t=>zt(t,Ut),A:t=>zt(t,qt),Z:t=>zt(t,qt),L:t=>zt(t,qt).toLowerCase(),U:t=>zt(t,qt).toUpperCase(),S:t=>zt(t,Nt)},Bt=t=>{t.maskIndex++,t.textIndex++;const{mask:e,maskIndex:r,text:s,textIndex:n}=t;t.key=e[r],t.value=s[n];const{key:i,value:a}=t;return _(i)||_(a)?"":(t=>Jt[t.key]?Jt[t.key](t):(t.key!=t.value&&t.textIndex--,t.key))(t)+Bt(t)},Rt=(t,e)=>Bt({mask:t,maskIndex:-1,text:e,textIndex:-1,key:"",value:""}),Wt=(t,e)=>Pt(Rt(Pt(t),Pt(e))),Gt=(t,e,r)=>(r++,e=parseInt((e||"0").replace(/\D/g,"")).toString(),Wt(t,e.length<r?("0".repeat(r)+e).slice(-1*r):e)),Kt=(t,e)=>t.length==Rt(t,e).length,Qt=(t,e)=>t.reduce(((t,r)=>Object.assign(Object.assign({},t),{[r]:e[r]})),{}),Vt=(t,e)=>Qt(Object.keys(e).filter((e=>-1==t.indexOf(e))),e),Xt=(t,...e)=>{if(!e.length)return t;const r=e.shift();if(w(t)&&w(r))for(const e in r)w(r[e])?(t[e]||(t=Object.assign(Object.assign({},t),{[e]:{}})),t[e]=Xt(t[e],r[e])):t=Object.assign(Object.assign({},t),{[e]:r[e]});return Xt(t,...e)},te=(t,e,r)=>xt(void 0,void 0,void 0,(function*(){yield Promise.allSettled(t.map(((s,n)=>e.call(r,s,n,t)))).catch(jt)})),ee=(t,e,r)=>xt(void 0,void 0,void 0,(function*(){for(let s=0;s<t.length;s++)yield e.call(r,t[s],s,t).catch(jt)})),re=t=>new Promise((e=>setTimeout(e,t)));class se{constructor(t){this.name="",this._error="",this._type="any",this.rules=[],this.custom=[],this._type=t}empty(t){const e=t;return this.unshift((({value:t})=>{const r=p(t);return{break:!r,value:r?t:m(e)?e():e}}))}equal(t,e){const r=this.fn(t);return this.push((({value:t,context:s})=>{const n=r({value:t,context:s});return t==n?{value:t}:this.invalid(`.equal(${n})`,e)}))}error(t){return C(t)&&(this._error=t),this}filter(...t){const e=t;return this.unshift((({value:t})=>{const r=-1==e.indexOf(t);return{break:!r,value:r?t:void 0}}))}fn(t){return m(t)?t:()=>t}from(t){return this.source=t,this}invalid(t,e){return t=`[${this._type}]${t}`,{error:this._error?this._error:this.name?this.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.unshift((({value:e})=>p(e)?{value:e}:this.invalid(".required",t)))}test(t){return!C(this.validate(t).error)}testAsync(t){return xt(this,void 0,void 0,(function*(){return!C((yield this.validateAsync(t)).error)}))}unshift(t){return this.rules.unshift(t),this}validate(t,e){var r;if(this.custom.length)return this.invalid("[async]");let s={value:t};for(let t=0;t<this.rules.length;t++){if(s=this.rules[t]({value:s.value,context:e}),null===(r=s.error)||void 0===r?void 0:r.length)return Object.assign({error:s.error},s.message?{message:s.message}:{});if(s.break)return{value:s.value}}return{value:s.value}}validateAsync(t,e){return xt(this,void 0,void 0,(function*(){let r=this.validate(t,e);if(r.error)return{error:r.error};for(let t=0;t<this.custom.length;t++){if(r=yield this.custom[t]({value:r.value}),r.error)return{error:r.error};if(r.break)return{value:r.value}}return{value:r.value}}))}}class ne extends se{constructor(t){super("array"),this.push((({value:e})=>h(e)?{value:e}:this.invalid("",t)))}between(t,e,r){return this.min(t,r),this.max(e,r)}items(t,e){const r=t;return r?this.push((({value:t})=>{r.name="";for(let s=0;s<t.length;s++){const{error:n,value:i}=r.validate(t[s],t);if(n)return this.invalid("< "+n+"["+s+"] >",e);t[s]=i}return{value:t}})):this}length(t,e){const r=t;return this.push((({value:t})=>t.length==r?{value:t}:this.invalid(".length("+r+")",e)))}max(t,e){const r=t;return this.push((({value:t})=>t.length<=r?{value:t}:this.invalid(".max("+r+")",e)))}min(t,e){const r=t;return this.push((({value:t})=>t.length>=r?{value:t}:this.invalid(".min("+r+")",e)))}}class ie extends se{constructor(t){super("boolean"),this.push((({value:e})=>c(e)?{value:e}:this.invalid("",t)))}parse(){return this.unshift((({value:t})=>({value:p(t)?D(t):t})))}}class ae extends se{constructor(t){super("date"),this.push((({value:e})=>C(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:lt(e,new Date(t))})))}parse(){return this.unshift((({value:t})=>({value:new Date(C(t)&&t.length<=10?`${t} 12:00`:t)})))}}class ue extends se{constructor(t){super("number"),this.push((({value:e})=>d(e)?{value:e}:this.invalid("",t)))}between(t,e,r){return this.min(t,r),this.max(e,r)}float(t){return this.push((({value:e})=>f(e)?{value:e}:this.invalid(".float",t)))}integer(t){return this.push((({value:e})=>g(e)?{value:e}:this.invalid(".integer",t)))}max(t,e){const r=this.fn(t);return this.push((({value:t,context:s})=>{const n=r({value:t,context:s});return t<=n?{value:t}:this.invalid(`.max(${n})`,e)}))}min(t,e){const r=this.fn(t);return this.push((({value:t,context:s})=>{const n=r({value:t,context:s});return t>=n?{value:t}:this.invalid(`.min(${n})`,e)}))}parse(){return this.unshift((({value:t})=>({value:p(t)?parseFloat(t.toString()):t})))}}class le extends se{constructor(t){super("object"),this.push((({value:e})=>b(e)?{value:e}:this.invalid("",t)))}keys(t,e){const r=t;return r?this.push((({value:t})=>{const s=[],n={};return Object.keys(r).forEach((i=>{var a;const u=r[i];u.name=null!==(a=u.source)&&void 0!==a?a:i;const{error:l,message:o,value:h}=u.validate(t[u.name],n);!e&&o&&(e=o),l&&s.push(l),p(h)&&(n[i]=h)})),s.length?this.invalid("{ "+s.join(", ")+" }",e):{value:n}})):this}parse(t){return this.unshift((({value:e})=>{if(!b(e))try{e=JSON.parse(e)}catch(e){return this.invalid("",t)}return{value:e}}))}}class oe extends se{constructor(t){super("string"),this.push((({value:e})=>C(e)?{value:e}:this.invalid("",t)))}between(t,e,r){return this.min(t,r),this.max(e,r)}email(t){const e=/^[\w-\\.]+@([\w-]+\.)+[\w-]{2,4}$/i;return this.push((({value:r})=>e.test(r)?{value:r}:this.invalid(".email",t)))}length(t,e){const r=this.fn(t);return this.push((({value:t,context:s})=>{const n=r({value:t,context:s});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 r=this.fn(t);return this.push((({value:t,context:s})=>{const n=r({value:t,context:s});return t.length<=n?{value:t}:this.invalid(`.max(${n})`,e)}))}mask(t){const e=this.fn(t);return this.push((({value:t,context:r})=>({value:Rt(e({value:t,context:r}),t)})))}min(t,e){const r=this.fn(t);return this.push((({value:t,context:s})=>{const n=r({value:t,context:s});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.push((({value:e})=>e.length?{value:e}:this.invalid(".required",t)))}regex(t,e){return this.push((({value:r})=>t.test(r)?{value:r}:this.invalid(".regex",e)))}replace(t,e){const r=this.fn(t);return this.push((({value:t,context:s})=>({value:t.replace(r({value:t,context:s}),((...t)=>m(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:Zt(t)})))}}class he{static array(t,e){return new ne(e).items(t)}static boolean(t){return new ie(t)}static date(t){return new ae(t)}static number(t){return new ue(t)}static object(t,e){return new le(e).keys(t)}static ref(t,e){return({context:r})=>r&&p(r[t])?r[t]:e}static string(t){return new oe(t)}test(t,...e){return!C(he.validate(t,...e).error)}testAsync(t,...e){return xt(this,void 0,void 0,(function*(){return!C((yield he.validateAsync(t,...e)).error)}))}static validate(t,...e){let r={value:t};for(let t=0;t<e.length;t++)if(r=e[t].validate(r.value),r.error)return{value:r.value,error:r.error};return{value:r.value}}static validateAsync(t,...e){return xt(this,void 0,void 0,(function*(){let r={value:t};for(let t=0;t<e.length;t++)if(r=yield e[t].validateAsync(r.value),r.error)return{value:r.value,error:r.error};return{value:r.value}}))}}export{gt as EventEmitter,Q as Hash,Ht as RandomString,he as Validation,se as ValidationBase,Qt as allowed,E as cache,_t as camelCase,t as chunkArray,r as clamp,B as colorPalette,e as countArray,At as cutText,lt as dateFormat,ot as dateRange,mt as debounce,Dt as decodeHTML,Vt as denied,q as each,Et as encodeHTML,te as forEachAsync,L as forEachIndex,U as forEachKey,ee as forEachSeries,N as forLoop,Y as hexToRgb,R as hslToRgb,h as isArray,c as isBoolean,Lt as isCharacter,v as isDate,p as isDef,Ut as isDigit,bt as isEmpty,kt as isFalse,f as isFloat,m as isFunction,g as isInteger,qt as isLetter,x as isMap,Ot as isNotEmpty,y as isNull,d as isNumber,b as isObject,w as isPlainObject,S as isRegExp,O as isScalar,j as isSet,Nt as isSpecialChar,C as isString,M as isSymbol,St as isTrue,_ as isUndefined,s as lerp,yt as loop,Mt as lowerCamelCase,F as map,Rt as mask,Gt as maskMoney,Wt as maskReverse,Kt as maskTest,Xt as merge,dt as msToString,jt as noop,ft as parseMs,Ft as parseSize,n as random,Tt as randomCase,i as randomElement,a as rangeArray,P as rgbToHex,K as rgbToHsl,Z as shadeColor,u as shuffleArray,Yt as shuffleString,st as simpleID,re as sleep,Pt as stringReverse,z as tintColor,A as toArray,D as toBool,o as type,I as uniqueArray,nt as uniqueID,Zt as upperCamelCase,it as uuidv4};
|
|
7
|
+
const t=(t,e)=>{const r=[];for(let s=0;s<t.length;s+=e)r.push(t.slice(s,s+e));return r},e=t=>{const e={};return t.forEach((t=>{const r=t.toString();e[r]=(e[r]||0)+1})),e},r=(t,e,r)=>Math.max(e,Math.min(r,t)),s=(t,e,s)=>t+(e-t)*r(s,0,1),n=(t,e)=>Math.floor(Math.random()*(e-t+1)+t),i=t=>t.length?t[n(0,t.length-1)]:null,a=(t,e,r=1)=>Array.from({length:(e-t)/r+1},((e,s)=>t+s*r)),u=t=>{for(let e=t.length-1;e>0;e--){const r=n(0,e);[t[e],t[r]]=[t[r],t[e]]}return t},l={},h=t=>null==t?"null":l[l.toString.call(t)]||"object";["Array","AsyncFunction","Boolean","Date","Function","Map","Number","Object","RegExp","Set","String"].forEach((t=>l["[object "+t+"]"]=t.toLowerCase()));const o=t=>"array"==h(t),c=t=>"boolean"==h(t),v=t=>"date"==h(t),p=t=>"null"!=h(t),d=t=>"number"==h(t),f=t=>d(t)&&!!(t%1),m=t=>"function"==typeof t,g=t=>d(t)&&!(t%1),x=t=>"map"==h(t),y=t=>null===t,b=t=>"object"==h(t),w=t=>b(t)&&t.constructor===Object,E=t=>"regexp"==h(t),S=["boolean","number","string"],O=t=>-1!=S.indexOf(h(t)),R=t=>"set"==h(t),C=t=>"string"==typeof t,M=t=>"symbol"==typeof t,k=t=>void 0===t,j=t=>o(t)?t:p(t)?[t]:[],I=t=>t.filter(((t,e,r)=>r.indexOf(t)===e)),A=[1,"1",!0,"true"],N=t=>-1!=A.indexOf(t),D=()=>{const t=[],e=[];return r=>{let s=t.indexOf(r);return-1==s&&(t.push(r),e.push({}),s=e.length-1),e[s]}},U=(t,e,r)=>{for(let s=0;s<t.length&&!1!==e.call(r,t[s],s,t);s++);return t},T=(t,e,r)=>{let s="";const n=Object.keys(t);for(let i=0;i<n.length&&(s=n[i],!1!==e.call(r,t[s],s,t));i++);return t},P=(t,e,r)=>o(t)?U(t,e,r):b(t)?T(t,e,r):t,$=(t,e,r)=>{for(let s=1;s<=t&&!1!==e.call(r,s,t);s++);return t},_=(t,e,r)=>Object.fromEntries(Object.entries(t).map((([s,n])=>[s,e.call(r,n,s,t)]))),L=t=>parseInt(null!=t?t:"0",16)||0,Y=t=>{var e;return(null===(e=t.replace(/^#/,"").match(/.{1,2}/g))||void 0===e?void 0:e.map(L))||[]},q=t=>("0"+t.toString(16)).slice(-2),F=(t,e,r)=>"#"+q(t)+q(e)+q(r),Q=(t,e)=>{const s=Y(t);e=r(e,0,1);const[n,i,a]=s.map((t=>Math.round(t*e)));return F(n,i,a)},H=(t,e)=>{const s=Y(t);e=r(e,0,1);const[n,i,a]=s.map((t=>Math.round(t+(255-t)*e)));return F(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},z=(t,e)=>_(null!=e?e:Z,(e=>0==e?t:e>0?H(t,e):Q(t,1- -1*e))),J=(t,e,r)=>{t/=60;const s=(1-Math.abs(2*r-1))*e,n=s*(1-Math.abs(t%2-1));let i=[0,0,0];t<=1?i=[s,n,0]:t<=2?i=[n,s,0]:t<=3?i=[0,s,n]:t<=4?i=[0,n,s]:t<=5?i=[n,0,s]:t<=6&&(i=[s,0,n]);const a=r-.5*s;return[Math.round(255*(i[0]+a)),Math.round(255*(i[1]+a)),Math.round(255*(i[2]+a))]},B=(t,e,r,s,n)=>0===t?0:e===r?(s-n)/t%6:e===s?(n-r)/t+2:e===n?(r-s)/t+4:0,W=(t,e)=>0===t?0:t/(1-Math.abs(2*e-1)),G=(t,e,r)=>{const[s,n,i]=((...t)=>t.map((t=>t/255)))(t,e,r),a=Math.max(s,n,i),u=Math.min(s,n,i),l=a-u,h=(u+a)/2;return[60*B(l,a,s,n,i),W(l,h),h]};class K{constructor(t){this.key=this.shuffle(K.dictionary,t,!1)}encrypt(t){return this.shuffle(t,this.key,!1)}decrypt(t){return this.shuffle(t,this.key,!0)}index(t,e,r){return[K.dictionary.indexOf(t[r]),K.dictionary.indexOf(e[r%e.length])]}result(t,e,r){return K.dictionary[(r?t-e+K.dictionary.length:t+e)%K.dictionary.length]}shuffle(t,e,r){let s="";for(let n=0;n<t.length;n++){const[i,a]=this.index(t,e,n);s+=-1===i||-1===a?t[n]:this.result(i,a,r)}return s}}K.dictionary="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";const V=t=>Math.random().toString(16).slice(t),X=()=>V(-3),tt=()=>V(-4),et=()=>tt()+tt(),rt=()=>et()+et(),st=()=>X()+tt(),nt=()=>rt()+rt()+rt()+rt(),it=()=>et()+"-"+tt()+"-4"+X()+"-"+tt()+"-"+(et()+tt()),at=t=>("0"+t.toString()).slice(-2),ut={"%y":t=>at(t.getFullYear()),"%Y":t=>t.getFullYear().toString(),"%m":t=>at(t.getMonth()+1),"%d":t=>at(t.getDate()),"%H":t=>at(t.getHours()),"%M":t=>at(t.getMinutes()),"%S":t=>at(t.getSeconds())},lt=(t,e)=>(e=null!=e?e:new Date,t.replace(/%[yYmdHMS]/g,(t=>ut[t]?ut[t](e):t.slice(1)))),ht=(t,e)=>{const r=new Date(t),s=[];for(;t<e;)r.setDate(r.getDate()+1),s.push(new Date(r));return s},ot=36e5,ct=24*ot,vt={ms:1,s:1e3,m:6e4,h:ot,d:ct,w:7*ct,y:315576e5},pt=["y","d","h","m","s","ms"],dt=t=>{const e=[];return pt.forEach((r=>{const s=vt[r],n=(t-t%s)/s;n&&(t-=n*s,e.push(n.toString()+r))})),e.join(" ")},ft=t=>{const e=/(-?(?:\d+)?\.?\d+) *(ms|s|m|h|d|w|y)/gm;let r,s=0;for(;null!==(r=e.exec(t));)r.index===e.lastIndex&&e.lastIndex++,s+=parseFloat(r[1])*vt[r[2]]||0;return s},mt=(t,e)=>{let r;const s=()=>{r&&clearTimeout(r)};return{cancel:s,run(...n){s(),r=setTimeout((()=>t(...n)),e)}}};class gt{constructor(){this.events=new Map}on(t,e){const r=this.events.get(t);return r?r.push(e):this.events.set(t,[e]),{dispose:()=>this.off(t,e)}}once(t,e){const r=s=>{e(s),this.off(t,r)};return this.on(t,r),{dispose:()=>this.off(t,r)}}off(t,e){const r=this.events.get(t);if(e){if(r){const t=r.indexOf(e);t>=0&&r.splice(t,1)}}else this.events.set(t,[])}emit(t,e){const r=this.events.get(t);r&&r.forEach((t=>t(e)))}}function xt(t,e,r,s){return new(r||(r=Promise))((function(n,i){function a(t){try{l(s.next(t))}catch(t){i(t)}}function u(t){try{l(s.throw(t))}catch(t){i(t)}}function l(t){t.done?n(t.value):function(t){return t instanceof r?t:new r((function(e){e(t)}))}(t.value).then(a,u)}l((s=s.apply(t,e||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const yt=(t,e)=>{let r=!1;const s=()=>xt(void 0,void 0,void 0,(function*(){r&&(yield t(),setTimeout(s,e))}));return{start(){r||(r=!0,s())},stop(){r=!1}}},bt=t=>{var e;return 0==(null!==(e=null==t?void 0:t.length)&&void 0!==e?e:0)},wt=["",0,"0",null,!1,void 0],Et=t=>-1==wt.indexOf(t),St=t=>!Et(t),Ot=t=>!bt(t),Rt=()=>{},Ct=(t,e,r)=>e(t.toLowerCase().replace(/\W+/g," ")).replace(/\s/g,null!=r?r:""),Mt=(t,e)=>Ct(t,(t=>t.replace(/\s(\w)/g,(t=>t.toUpperCase()))),e),kt=Mt,jt=(t,e)=>{if(t.length>e){const r=t.substring(0,e).split(" ");return r.pop(),r.join(" ")+"..."}return t},It=/&(amp|apos|lt|gt|nbsp|quot);/g,At={amp:"&",apos:"'",lt:"<",gt:">",nbsp:" ",quot:'"'},Nt=t=>t.replace(It,((t,e)=>At[e])).replace(/&#(\d+);/gi,((t,e)=>String.fromCharCode(parseInt(e,10)))),Dt=t=>t.replace(/[^0-9A-Za-z ]/g,(t=>"&#"+t.charCodeAt(0)+";")),Ut=t=>/^[\w]$/.test(t),Tt=t=>/^[\d]$/.test(t),Pt=t=>/^[A-Za-z]$/.test(t),$t=t=>/^[^\w]$/.test(t),_t=t=>{if(d(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(""),Yt=t=>u(t.split("")).join("");class qt{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 qt).chars()}lower(){return this.hasLower=!0,this}static lower(){return(new qt).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=Yt(e);for(let s=0;s<t;s++)r+=e.charAt(n(0,e.length-1))}return r}numbers(){return this.hasNumbers=!0,this}static numbers(){return(new qt).numbers()}space(){return this.hasSpace=!0,this}static space(){return(new qt).space()}symbols(){return this.hasSymbols=!0,this}static symbols(){return(new qt).symbols()}upper(){return this.hasUpper=!0,this}static upper(){return(new qt).upper()}}const Ft=t=>t.split("").reverse().join(""),Qt=(t,e)=>Ct(t,(t=>t.replace(/(\w)(\w*)/g,((t,e,r)=>e.toUpperCase()+r))),e),Ht=(t,e)=>e(t.value)?t.value:(t=>(t.maskIndex--,""))(t),Zt={"#":t=>t.value,0:t=>Ht(t,Tt),9:t=>Ht(t,Tt),A:t=>Ht(t,Pt),Z:t=>Ht(t,Pt),L:t=>Ht(t,Pt).toLowerCase(),U:t=>Ht(t,Pt).toUpperCase(),S:t=>Ht(t,$t)},zt=t=>{t.maskIndex++,t.textIndex++;const{mask:e,maskIndex:r,text:s,textIndex:n}=t;t.key=e[r],t.value=s[n];const{key:i,value:a}=t;return k(i)||k(a)?"":(t=>Zt[t.key]?Zt[t.key](t):(t.key!=t.value&&t.textIndex--,t.key))(t)+zt(t)},Jt=(t,e)=>zt({mask:t,maskIndex:-1,text:e,textIndex:-1,key:"",value:""}),Bt=(t,e)=>Ft(Jt(Ft(t),Ft(e))),Wt=(t,e,r)=>(r++,e=parseInt((e||"0").replace(/\D/g,"")).toString(),Bt(t,e.length<r?("0".repeat(r)+e).slice(-1*r):e)),Gt=(t,e)=>t.length==Jt(t,e).length,Kt=(t,e)=>t.reduce(((t,r)=>Object.assign(Object.assign({},t),{[r]:e[r]})),{}),Vt=(t,e)=>Kt(Object.keys(e).filter((e=>-1==t.indexOf(e))),e),Xt=(t,...e)=>{if(!e.length)return t;const r=e.shift();if(w(t)&&w(r))for(const e in r)w(r[e])?(t[e]||(t=Object.assign(Object.assign({},t),{[e]:{}})),t[e]=Xt(t[e],r[e])):t=Object.assign(Object.assign({},t),{[e]:r[e]});return Xt(t,...e)},te=(t,e,r)=>xt(void 0,void 0,void 0,(function*(){yield Promise.allSettled(t.map(((s,n)=>e.call(r,s,n,t)))).catch(Rt)})),ee=(t,e,r)=>xt(void 0,void 0,void 0,(function*(){for(let s=0;s<t.length;s++)yield e.call(r,t[s],s,t).catch(Rt)})),re=t=>new Promise((e=>setTimeout(e,t)));class se{}var ne,ie,ae,ue,le;se.DESCRIPTION=Symbol("DESCRIPTION"),se.ERROR=Symbol("ERROR"),se.NAME=Symbol("NAME"),se.REQUIRED=Symbol("REQUIRED"),se.SOURCE=Symbol("SOURCE"),se.TYPE=Symbol("TYPE");class he{constructor(t){this[ne]="",this[ie]="",this[ae]="",this[ue]="any",this[le]=!1,this.rules=[],this.custom=[],this[se.TYPE]=t}description(t){return this[se.DESCRIPTION]=t,this}empty(t){const e=t;return this.unshift((({value:t})=>{const r=p(t);return{break:!r,value:r?t:m(e)?e():e}}))}equal(t,e){const r=this.fn(t);return this.push((({value:t,context:s})=>{const n=r({value:t,context:s});return t==n?{value:t}:this.invalid(`.equal(${n})`,e)}))}error(t){return C(t)&&(this[se.ERROR]=t),this}filter(...t){const e=t;return this.unshift((({value:t})=>{const r=-1==e.indexOf(t);return{break:!r,value:r?t:void 0}}))}fn(t){return m(t)?t:()=>t}from(t){return this[se.SOURCE]=t,this}invalid(t,e){return t=`[${this[se.TYPE]}]${t}`,{error:this[se.ERROR]?this[se.ERROR]:this[se.NAME]?this[se.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[se.REQUIRED]=!0,this.unshift((({value:e})=>p(e)?{value:e}:this.invalid(".required",t)))}test(t){return!C(this.validate(t).error)}testAsync(t){return xt(this,void 0,void 0,(function*(){return!C((yield this.validateAsync(t)).error)}))}unshift(t){return this.rules.unshift(t),this}validate(t,e){var r;if(this.custom.length)return this.invalid("[async]");let s={value:t};for(let t=0;t<this.rules.length;t++){if(s=this.rules[t]({value:s.value,context:e}),null===(r=s.error)||void 0===r?void 0:r.length)return Object.assign({error:s.error},s.message?{message:s.message}:{});if(s.break)return{value:s.value}}return{value:s.value}}validateAsync(t,e){return xt(this,void 0,void 0,(function*(){let r=this.validate(t,e);if(r.error)return{error:r.error};for(let t=0;t<this.custom.length;t++){if(r=yield this.custom[t]({value:r.value}),r.error)return{error:r.error};if(r.break)return{value:r.value}}return{value:r.value}}))}}ne=se.NAME,ie=se.DESCRIPTION,se.SOURCE,ae=se.ERROR,ue=se.TYPE,le=se.REQUIRED;class oe extends he{constructor(t){super("array"),this.push((({value:e})=>o(e)?{value:e}:this.invalid("",t)))}between(t,e,r){return this.min(t,r),this.max(e,r)}items(t,e){const r=t;return r?this.push((({value:t})=>{r[se.NAME]="";for(let s=0;s<t.length;s++){const{error:n,value:i}=r.validate(t[s],t);if(n)return this.invalid("< "+n+"["+s+"] >",e);t[s]=i}return{value:t}})):this}length(t,e){const r=t;return this.push((({value:t})=>t.length==r?{value:t}:this.invalid(".length("+r+")",e)))}max(t,e){const r=t;return this.push((({value:t})=>t.length<=r?{value:t}:this.invalid(".max("+r+")",e)))}min(t,e){const r=t;return this.push((({value:t})=>t.length>=r?{value:t}:this.invalid(".min("+r+")",e)))}}class ce extends he{constructor(t){super("boolean"),this.push((({value:e})=>c(e)?{value:e}:this.invalid("",t)))}parse(){return this.unshift((({value:t})=>({value:p(t)?N(t):t})))}}class ve extends he{constructor(t){super("date"),this.push((({value:e})=>C(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:lt(e,new Date(t))})))}parse(){return this.unshift((({value:t})=>({value:new Date(C(t)&&t.length<=10?`${t} 12:00`:t)})))}}class pe extends he{constructor(t){super("number"),this.push((({value:e})=>d(e)?{value:e}:this.invalid("",t)))}between(t,e,r){return this.min(t,r),this.max(e,r)}float(t){return this.push((({value:e})=>f(e)?{value:e}:this.invalid(".float",t)))}integer(t){return this.push((({value:e})=>g(e)?{value:e}:this.invalid(".integer",t)))}max(t,e){const r=this.fn(t);return this.push((({value:t,context:s})=>{const n=r({value:t,context:s});return t<=n?{value:t}:this.invalid(`.max(${n})`,e)}))}min(t,e){const r=this.fn(t);return this.push((({value:t,context:s})=>{const n=r({value:t,context:s});return t>=n?{value:t}:this.invalid(`.min(${n})`,e)}))}parse(){return this.unshift((({value:t})=>({value:p(t)?parseFloat(t.toString()):t})))}}class de extends he{constructor(t){super("object"),this.push((({value:e})=>b(e)?{value:e}:this.invalid("",t)))}keys(t,e){const r=t;return r?this.push((({value:t})=>{const s=[],n={};return Object.keys(r).forEach((i=>{var a;const u=r[i];u[se.NAME]=null!==(a=u[se.SOURCE])&&void 0!==a?a:i;const{error:l,message:h,value:o}=u.validate(t[u[se.NAME]],n);!e&&h&&(e=h),l&&s.push(l),p(o)&&(n[i]=o)})),s.length?this.invalid("{ "+s.join(", ")+" }",e):{value:n}})):this}parse(t){return this.unshift((({value:e})=>{if(!b(e))try{e=JSON.parse(e)}catch(e){return this.invalid("",t)}return{value:e}}))}}class fe extends he{constructor(t){super("string"),this.push((({value:e})=>C(e)?{value:e}:this.invalid("",t)))}between(t,e,r){return this.min(t,r),this.max(e,r)}email(t){const e=/^[\w-\\.]+@([\w-]+\.)+[\w-]{2,4}$/i;return this.push((({value:r})=>e.test(r)?{value:r}:this.invalid(".email",t)))}length(t,e){const r=this.fn(t);return this.push((({value:t,context:s})=>{const n=r({value:t,context:s});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 r=this.fn(t);return this.push((({value:t,context:s})=>{const n=r({value:t,context:s});return t.length<=n?{value:t}:this.invalid(`.max(${n})`,e)}))}mask(t){const e=this.fn(t);return this.push((({value:t,context:r})=>({value:Jt(e({value:t,context:r}),t)})))}min(t,e){const r=this.fn(t);return this.push((({value:t,context:s})=>{const n=r({value:t,context:s});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.push((({value:e})=>e.length?{value:e}:this.invalid(".required",t)))}regex(t,e){return this.push((({value:r})=>t.test(r)?{value:r}:this.invalid(".regex",e)))}replace(t,e){const r=this.fn(t);return this.push((({value:t,context:s})=>({value:t.replace(r({value:t,context:s}),((...t)=>m(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:Qt(t)})))}}class me{static array(t,e){return new oe(e).items(t)}static boolean(t){return new ce(t)}static date(t){return new ve(t)}static number(t){return new pe(t)}static object(t,e){return new de(e).keys(t)}static ref(t,e){return({context:r})=>r&&p(r[t])?r[t]:e}static string(t){return new fe(t)}test(t,...e){return!C(me.validate(t,...e).error)}testAsync(t,...e){return xt(this,void 0,void 0,(function*(){return!C((yield me.validateAsync(t,...e)).error)}))}static validate(t,...e){let r={value:t};for(let t=0;t<e.length;t++)if(r=e[t].validate(r.value),r.error)return{value:r.value,error:r.error};return{value:r.value}}static validateAsync(t,...e){return xt(this,void 0,void 0,(function*(){let r={value:t};for(let t=0;t<e.length;t++)if(r=yield e[t].validateAsync(r.value),r.error)return{value:r.value,error:r.error};return{value:r.value}}))}}export{gt as EventEmitter,K as Hash,qt as RandomString,me as Validation,he as ValidationBase,se as ValidationKeys,Kt as allowed,D as cache,kt as camelCase,t as chunkArray,r as clamp,z as colorPalette,e as countArray,jt as cutText,lt as dateFormat,ht as dateRange,mt as debounce,Nt as decodeHTML,Vt as denied,P as each,Dt as encodeHTML,te as forEachAsync,U as forEachIndex,T as forEachKey,ee as forEachSeries,$ as forLoop,Y as hexToRgb,J as hslToRgb,o as isArray,c as isBoolean,Ut as isCharacter,v as isDate,p as isDef,Tt as isDigit,bt as isEmpty,St as isFalse,f as isFloat,m as isFunction,g as isInteger,Pt as isLetter,x as isMap,Ot as isNotEmpty,y as isNull,d as isNumber,b as isObject,w as isPlainObject,E as isRegExp,O as isScalar,R as isSet,$t as isSpecialChar,C as isString,M as isSymbol,Et as isTrue,k as isUndefined,s as lerp,yt as loop,Mt as lowerCamelCase,_ as map,Jt as mask,Wt as maskMoney,Bt as maskReverse,Gt as maskTest,Xt as merge,dt as msToString,Rt as noop,ft as parseMs,_t as parseSize,n as random,Lt as randomCase,i as randomElement,a as rangeArray,F as rgbToHex,G as rgbToHsl,Q as shadeColor,u as shuffleArray,Yt as shuffleString,st as simpleID,re as sleep,Ft as stringReverse,H as tintColor,j as toArray,N as toBool,h as type,I as uniqueArray,nt as uniqueID,Qt as upperCamelCase,it 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.5
|
|
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,r)=>Math.max(t,Math.min(r,e)),r=(e,t)=>Math.floor(Math.random()*(t-e+1)+e),s=e=>{for(let t=e.length-1;t>0;t--){const s=r(0,t);[e[t],e[s]]=[e[s],e[t]]}return e},n={},a=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 i=e=>"array"==a(e),u=e=>"boolean"==a(e),l=e=>"null"!=a(e),o=e=>"number"==a(e),h=e=>o(e)&&!!(e%1),c=e=>"function"==typeof e,v=e=>o(e)&&!(e%1),p=e=>"object"==a(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,r)=>{for(let s=0;s<e.length&&!1!==t.call(r,e[s],s,e);s++);return e},w=(e,t,r)=>{let s="";const n=Object.keys(e);for(let a=0;a<n.length&&(s=n[a],!1!==t.call(r,e[s],s,e));a++);return e},S=(e,t,r)=>Object.fromEntries(Object.entries(e).map((([s,n])=>[s,t.call(r,n,s,e)]))),C=e=>parseInt(null!=e?e:"0",16)||0,k=e=>{var t;return(null===(t=e.replace(/^#/,"").match(/.{1,2}/g))||void 0===t?void 0:t.map(C))||[]},O=e=>("0"+e.toString(16)).slice(-2),j=(e,t,r)=>"#"+O(e)+O(t)+O(r),M=(e,r)=>{const s=k(e);r=t(r,0,1);const[n,a,i]=s.map((e=>Math.round(e*r)));return j(n,a,i)},A=(e,r)=>{const s=k(e);r=t(r,0,1);const[n,a,i]=s.map((e=>Math.round(e+(255-e)*r)));return j(n,a,i)},E={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,r,s,n)=>0===e?0:t===r?(s-n)/e%6:t===s?(n-r)/e+2:t===n?(r-s)/e+4:0,_=(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,r){return[D.dictionary.indexOf(e[r]),D.dictionary.indexOf(t[r%t.length])]}result(e,t,r){return D.dictionary[(r?e-t+D.dictionary.length:e+t)%D.dictionary.length]}shuffle(e,t,r){let s="";for(let n=0;n<e.length;n++){const[a,i]=this.index(e,t,n);s+=-1===a||-1===i?e[n]:this.result(a,i,r)}return s}}D.dictionary="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";const T=e=>Math.random().toString(16).slice(e),L=()=>T(-3),$=()=>T(-4),F=()=>$()+$(),N=()=>F()+F(),U=e=>("0"+e.toString()).slice(-2),q={"%y":e=>U(e.getFullYear()),"%Y":e=>e.getFullYear().toString(),"%m":e=>U(e.getMonth()+1),"%d":e=>U(e.getDate()),"%H":e=>U(e.getHours()),"%M":e=>U(e.getMinutes()),"%S":e=>U(e.getSeconds())},H=(e,t)=>(t=null!=t?t:new Date,e.replace(/%[yYmdHMS]/g,(e=>q[e]?q[e](t):e.slice(1)))),R=36e5,P=24*R,B={ms:1,s:1e3,m:6e4,h:R,d:P,w:7*P,y:315576e5},Y=["y","d","h","m","s","ms"];function z(e,t,r,s){return new(r||(r=Promise))((function(n,a){function i(e){try{l(s.next(e))}catch(e){a(e)}}function u(e){try{l(s.throw(e))}catch(e){a(e)}}function l(e){e.done?n(e.value):function(e){return e instanceof r?e:new r((function(t){t(e)}))}(e.value).then(i,u)}l((s=s.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const J=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),K=()=>{},W=(e,t,r)=>t(e.toLowerCase().replace(/\W+/g," ")).replace(/\s/g,null!=r?r:""),G=(e,t)=>W(e,(e=>e.replace(/\s(\w)/g,(e=>e.toUpperCase()))),t),Q=G,X=/&(amp|apos|lt|gt|nbsp|quot);/g,ee={amp:"&",apos:"'",lt:"<",gt:">",nbsp:" ",quot:'"'},te=e=>/^[\d]$/.test(e),re=e=>/^[A-Za-z]$/.test(e),se=e=>/^[^\w]$/.test(e),ne=e=>s(e.split("")).join("");class ae{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 ae).chars()}lower(){return this.hasLower=!0,this}static lower(){return(new ae).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 s="";if(e&&t.length){t=ne(t);for(let n=0;n<e;n++)s+=t.charAt(r(0,t.length-1))}return s}numbers(){return this.hasNumbers=!0,this}static numbers(){return(new ae).numbers()}space(){return this.hasSpace=!0,this}static space(){return(new ae).space()}symbols(){return this.hasSymbols=!0,this}static symbols(){return(new ae).symbols()}upper(){return this.hasUpper=!0,this}static upper(){return(new ae).upper()}}const ie=e=>e.split("").reverse().join(""),ue=(e,t)=>W(e,(e=>e.replace(/(\w)(\w*)/g,((e,t,r)=>t.toUpperCase()+r))),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,re),Z:e=>le(e,re),L:e=>le(e,re).toLowerCase(),U:e=>le(e,re).toUpperCase(),S:e=>le(e,se)},he=e=>{e.maskIndex++,e.textIndex++;const{mask:t,maskIndex:r,text:s,textIndex:n}=e;e.key=t[r],e.value=s[n];const{key:a,value:i}=e;return g(a)||g(i)?"":(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)=>ie(ce(ie(e),ie(t))),pe=(e,t)=>e.reduce(((e,r)=>Object.assign(Object.assign({},e),{[r]:t[r]})),{}),de=(e,...t)=>{if(!t.length)return e;const r=t.shift();if(d(e)&&d(r))for(const t in r)d(r[t])?(e[t]||(e=Object.assign(Object.assign({},e),{[t]:{}})),e[t]=de(e[t],r[t])):e=Object.assign(Object.assign({},e),{[t]:r[t]});return de(e,...t)};class me{constructor(e){this.name="",this._error="",this._type="any",this.rules=[],this.custom=[],this._type=e}empty(e){const t=e;return this.unshift((({value:e})=>{const r=l(e);return{break:!r,value:r?e:c(t)?t():t}}))}equal(e,t){const r=this.fn(e);return this.push((({value:e,context:s})=>{const n=r({value:e,context:s});return e==n?{value:e}:this.invalid(`.equal(${n})`,t)}))}error(e){return f(e)&&(this._error=e),this}filter(...e){const t=e;return this.unshift((({value:e})=>{const r=-1==t.indexOf(e);return{break:!r,value:r?e:void 0}}))}fn(e){return c(e)?e:()=>e}from(e){return this.source=e,this}invalid(e,t){return e=`[${this._type}]${e}`,{error:this._error?this._error:this.name?this.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.unshift((({value:t})=>l(t)?{value:t}:this.invalid(".required",e)))}test(e){return!f(this.validate(e).error)}testAsync(e){return z(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 r;if(this.custom.length)return this.invalid("[async]");let s={value:e};for(let e=0;e<this.rules.length;e++){if(s=this.rules[e]({value:s.value,context:t}),null===(r=s.error)||void 0===r?void 0:r.length)return Object.assign({error:s.error},s.message?{message:s.message}:{});if(s.break)return{value:s.value}}return{value:s.value}}validateAsync(e,t){return z(this,void 0,void 0,(function*(){let r=this.validate(e,t);if(r.error)return{error:r.error};for(let e=0;e<this.custom.length;e++){if(r=yield this.custom[e]({value:r.value}),r.error)return{error:r.error};if(r.break)return{value:r.value}}return{value:r.value}}))}}class fe extends me{constructor(e){super("array"),this.push((({value:t})=>i(t)?{value:t}:this.invalid("",e)))}between(e,t,r){return this.min(e,r),this.max(t,r)}items(e,t){const r=e;return r?this.push((({value:e})=>{r.name="";for(let s=0;s<e.length;s++){const{error:n,value:a}=r.validate(e[s],e);if(n)return this.invalid("< "+n+"["+s+"] >",t);e[s]=a}return{value:e}})):this}length(e,t){const r=e;return this.push((({value:e})=>e.length==r?{value:e}:this.invalid(".length("+r+")",t)))}max(e,t){const r=e;return this.push((({value:e})=>e.length<=r?{value:e}:this.invalid(".max("+r+")",t)))}min(e,t){const r=e;return this.push((({value:e})=>e.length>=r?{value:e}:this.invalid(".min("+r+")",t)))}}class ge extends me{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 ye extends me{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:H(t,new Date(e))})))}parse(){return this.unshift((({value:e})=>({value:new Date(f(e)&&e.length<=10?`${e} 12:00`:e)})))}}class xe extends me{constructor(e){super("number"),this.push((({value:t})=>o(t)?{value:t}:this.invalid("",e)))}between(e,t,r){return this.min(e,r),this.max(t,r)}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 r=this.fn(e);return this.push((({value:e,context:s})=>{const n=r({value:e,context:s});return e<=n?{value:e}:this.invalid(`.max(${n})`,t)}))}min(e,t){const r=this.fn(e);return this.push((({value:e,context:s})=>{const n=r({value:e,context:s});return e>=n?{value:e}:this.invalid(`.min(${n})`,t)}))}parse(){return this.unshift((({value:e})=>({value:l(e)?parseFloat(e.toString()):e})))}}class be extends me{constructor(e){super("object"),this.push((({value:t})=>p(t)?{value:t}:this.invalid("",e)))}keys(e,t){const r=e;return r?this.push((({value:e})=>{const s=[],n={};return Object.keys(r).forEach((a=>{var i;const u=r[a];u.name=null!==(i=u.source)&&void 0!==i?i:a;const{error:o,message:h,value:c}=u.validate(e[u.name],n);!t&&h&&(t=h),o&&s.push(o),l(c)&&(n[a]=c)})),s.length?this.invalid("{ "+s.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 we extends me{constructor(e){super("string"),this.push((({value:t})=>f(t)?{value:t}:this.invalid("",e)))}between(e,t,r){return this.min(e,r),this.max(t,r)}email(e){const t=/^[\w-\\.]+@([\w-]+\.)+[\w-]{2,4}$/i;return this.push((({value:r})=>t.test(r)?{value:r}:this.invalid(".email",e)))}length(e,t){const r=this.fn(e);return this.push((({value:e,context:s})=>{const n=r({value:e,context:s});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:G(e)})))}max(e,t){const r=this.fn(e);return this.push((({value:e,context:s})=>{const n=r({value:e,context:s});return e.length<=n?{value:e}:this.invalid(`.max(${n})`,t)}))}mask(e){const t=this.fn(e);return this.push((({value:e,context:r})=>({value:ce(t({value:e,context:r}),e)})))}min(e,t){const r=this.fn(e);return this.push((({value:e,context:s})=>{const n=r({value:e,context:s});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.push((({value:t})=>t.length?{value:t}:this.invalid(".required",e)))}regex(e,t){return this.push((({value:r})=>e.test(r)?{value:r}:this.invalid(".regex",t)))}replace(e,t){const r=this.fn(e);return this.push((({value:e,context:s})=>({value:e.replace(r({value:e,context:s}),((...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 Se{static array(e,t){return new fe(t).items(e)}static boolean(e){return new ge(e)}static date(e){return new ye(e)}static number(e){return new xe(e)}static object(e,t){return new be(t).keys(e)}static ref(e,t){return({context:r})=>r&&l(r[e])?r[e]:t}static string(e){return new we(e)}test(e,...t){return!f(Se.validate(e,...t).error)}testAsync(e,...t){return z(this,void 0,void 0,(function*(){return!f((yield Se.validateAsync(e,...t)).error)}))}static validate(e,...t){let r={value:e};for(let e=0;e<t.length;e++)if(r=t[e].validate(r.value),r.error)return{value:r.value,error:r.error};return{value:r.value}}static validateAsync(e,...t){return z(this,void 0,void 0,(function*(){let r={value:e};for(let e=0;e<t.length;e++)if(r=yield t[e].validateAsync(r.value),r.error)return{value:r.value,error:r.error};return{value:r.value}}))}}return e.EventEmitter=class{constructor(){this.events=new Map}on(e,t){const r=this.events.get(e);return r?r.push(t):this.events.set(e,[t]),{dispose:()=>this.off(e,t)}}once(e,t){const r=s=>{t(s),this.off(e,r)};return this.on(e,r),{dispose:()=>this.off(e,r)}}off(e,t){const r=this.events.get(e);if(t){if(r){const e=r.indexOf(t);e>=0&&r.splice(e,1)}}else this.events.set(e,[])}emit(e,t){const r=this.events.get(e);r&&r.forEach((e=>e(t)))}},e.Hash=D,e.RandomString=ae,e.Validation=Se,e.ValidationBase=me,e.allowed=pe,e.cache=()=>{const e=[],t=[];return r=>{let s=e.indexOf(r);return-1==s&&(e.push(r),t.push({}),s=t.length-1),t[s]}},e.camelCase=Q,e.chunkArray=(e,t)=>{const r=[];for(let s=0;s<e.length;s+=t)r.push(e.slice(s,s+t));return r},e.clamp=t,e.colorPalette=(e,t)=>S(null!=t?t:E,(t=>0==t?e:t>0?A(e,t):M(e,1- -1*t))),e.countArray=e=>{const t={};return e.forEach((e=>{const r=e.toString();t[r]=(t[r]||0)+1})),t},e.cutText=(e,t)=>{if(e.length>t){const r=e.substring(0,t).split(" ");return r.pop(),r.join(" ")+"..."}return e},e.dateFormat=H,e.dateRange=(e,t)=>{const r=new Date(e),s=[];for(;e<t;)r.setDate(r.getDate()+1),s.push(new Date(r));return s},e.debounce=(e,t)=>{let r;const s=()=>{r&&clearTimeout(r)};return{cancel:s,run(...n){s(),r=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,r)=>i(e)?b(e,t,r):p(e)?w(e,t,r):e,e.encodeHTML=e=>e.replace(/[^0-9A-Za-z ]/g,(e=>"&#"+e.charCodeAt(0)+";")),e.forEachAsync=(e,t,r)=>z(void 0,void 0,void 0,(function*(){yield Promise.allSettled(e.map(((s,n)=>t.call(r,s,n,e)))).catch(K)})),e.forEachIndex=b,e.forEachKey=w,e.forEachSeries=(e,t,r)=>z(void 0,void 0,void 0,(function*(){for(let s=0;s<e.length;s++)yield t.call(r,e[s],s,e).catch(K)})),e.forLoop=(e,t,r)=>{for(let s=1;s<=e&&!1!==t.call(r,s,e);s++);return e},e.hexToRgb=k,e.hslToRgb=(e,t,r)=>{e/=60;const s=(1-Math.abs(2*r-1))*t,n=s*(1-Math.abs(e%2-1));let a=[0,0,0];e<=1?a=[s,n,0]:e<=2?a=[n,s,0]:e<=3?a=[0,s,n]:e<=4?a=[0,n,s]:e<=5?a=[n,0,s]:e<=6&&(a=[s,0,n]);const i=r-.5*s;return[Math.round(255*(a[0]+i)),Math.round(255*(a[1]+i)),Math.round(255*(a[2]+i))]},e.isArray=i,e.isBoolean=u,e.isCharacter=e=>/^[\w]$/.test(e),e.isDate=e=>"date"==a(e),e.isDef=l,e.isDigit=te,e.isEmpty=J,e.isFalse=e=>!V(e),e.isFloat=h,e.isFunction=c,e.isInteger=v,e.isLetter=re,e.isMap=e=>"map"==a(e),e.isNotEmpty=e=>!J(e),e.isNull=e=>null===e,e.isNumber=o,e.isObject=p,e.isPlainObject=d,e.isRegExp=e=>"regexp"==a(e),e.isScalar=e=>-1!=m.indexOf(a(e)),e.isSet=e=>"set"==a(e),e.isSpecialChar=se,e.isString=f,e.isSymbol=e=>"symbol"==typeof e,e.isTrue=V,e.isUndefined=g,e.lerp=(e,r,s)=>e+(r-e)*t(s,0,1),e.loop=(e,t)=>{let r=!1;const s=()=>z(void 0,void 0,void 0,(function*(){r&&(yield e(),setTimeout(s,t))}));return{start(){r||(r=!0,s())},stop(){r=!1}}},e.lowerCamelCase=G,e.map=S,e.mask=ce,e.maskMoney=(e,t,r)=>(r++,t=parseInt((t||"0").replace(/\D/g,"")).toString(),ve(e,t.length<r?("0".repeat(r)+t).slice(-1*r):t)),e.maskReverse=ve,e.maskTest=(e,t)=>e.length==ce(e,t).length,e.merge=de,e.msToString=e=>{const t=[];return Y.forEach((r=>{const s=B[r],n=(e-e%s)/s;n&&(e-=n*s,t.push(n.toString()+r))})),t.join(" ")},e.noop=K,e.parseMs=e=>{const t=/(-?(?:\d+)?\.?\d+) *(ms|s|m|h|d|w|y)/gm;let r,s=0;for(;null!==(r=t.exec(e));)r.index===t.lastIndex&&t.lastIndex++,s+=parseFloat(r[1])*B[r[2]]||0;return s},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=r,e.randomCase=e=>e.split("").map((e=>Math.random()<.5?e.toUpperCase():e.toLowerCase())).join(""),e.randomElement=e=>e.length?e[r(0,e.length-1)]:null,e.rangeArray=(e,t,r=1)=>Array.from({length:(t-e)/r+1},((t,s)=>e+s*r)),e.rgbToHex=j,e.rgbToHsl=(e,t,r)=>{const[s,n,a]=((...e)=>e.map((e=>e/255)))(e,t,r),i=Math.max(s,n,a),u=Math.min(s,n,a),l=i-u,o=(u+i)/2;return[60*I(l,i,s,n,a),_(l,o),o]},e.shadeColor=M,e.shuffleArray=s,e.shuffleString=ne,e.simpleID=()=>L()+$(),e.sleep=e=>new Promise((t=>setTimeout(t,e))),e.stringReverse=ie,e.tintColor=A,e.toArray=e=>i(e)?e:l(e)?[e]:[],e.toBool=x,e.type=a,e.uniqueArray=e=>e.filter(((e,t,r)=>r.indexOf(e)===t)),e.uniqueID=()=>N()+N()+N()+N(),e.upperCamelCase=ue,e.uuidv4=()=>F()+"-"+$()+"-4"+L()+"-"+$()+"-"+(F()+$()),e}({});
|
|
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,C=e=>{var t;return(null===(t=e.replace(/^#/,"").match(/.{1,2}/g))||void 0===t?void 0:t.map(S))||[]},O=e=>("0"+e.toString(16)).slice(-2),R=(e,t,s)=>"#"+O(e)+O(t)+O(s),M=(e,s)=>{const r=C(e);s=t(s,0,1);const[n,i,a]=r.map((e=>Math.round(e*s)));return R(n,i,a)},k=(e,s)=>{const r=C(e);s=t(s,0,1);const[n,i,a]=r.map((e=>Math.round(e+(255-e)*s)));return R(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,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},B=["y","d","h","m","s","ms"];function Q(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){const t=e;return this.unshift((({value:e})=>{const s=l(e);return{break:!s,value:s?e:c(t)?t():t}}))}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{break:!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 Q(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.break)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.break)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 Ce 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 Oe 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 Re 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.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 ke{static array(e,t){return new we(t).items(e)}static boolean(e){return new Se(e)}static date(e){return new Ce(e)}static number(e){return new Oe(e)}static object(e,t){return new Re(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(ke.validate(e,...t).error)}testAsync(e,...t){return Q(this,void 0,void 0,(function*(){return!f((yield ke.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}}))}}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=ke,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:A,(t=>0==t?e:t>0?k(e,t):M(e,1- -1*t))),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)=>Q(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)=>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)})),e.forLoop=(e,t,s)=>{for(let r=1;r<=e&&!1!==t.call(s,r,e);r++);return e},e.hexToRgb=C,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=()=>Q(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 B.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=R,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*I(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=k,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}({});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@andrewcaires/utils.js",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.5",
|
|
4
4
|
"description": "JavaScript utility library for web and nodejs development",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs.js",
|
|
@@ -44,15 +44,15 @@
|
|
|
44
44
|
},
|
|
45
45
|
"homepage": "https://github.com/andrewcaires/npm/tree/main/utils.js#readme",
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@rollup/plugin-commonjs": "^28.0.
|
|
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.13.
|
|
51
|
-
"eslint": "^9.
|
|
52
|
-
"rollup": "^4.
|
|
50
|
+
"@types/node": "^22.13.10",
|
|
51
|
+
"eslint": "^9.22.0",
|
|
52
|
+
"rollup": "^4.35.0",
|
|
53
53
|
"rollup-plugin-dts": "^6.1.1",
|
|
54
54
|
"tslib": "^2.8.1",
|
|
55
|
-
"tsx": "^4.19.
|
|
56
|
-
"typescript-eslint": "^8.
|
|
55
|
+
"tsx": "^4.19.3",
|
|
56
|
+
"typescript-eslint": "^8.26.0"
|
|
57
57
|
}
|
|
58
58
|
}
|