@andrewcaires/utils.js 0.4.1 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +2 -2
- package/dist/index.d.ts +25 -14
- 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.2
|
|
3
3
|
* JavaScript utility library for web and nodejs development
|
|
4
4
|
* (c) 2024 Andrew Caires
|
|
5
5
|
* @license: MIT
|
|
6
6
|
*/
|
|
7
|
-
"use strict";const t=(t,e,s)=>Math.max(e,Math.min(s,t)),e=(t,e)=>Math.floor(Math.random()*(e-t+1)+t),s=t=>{for(let s=t.length-1;s>0;s--){const r=e(0,s);[t[s],t[r]]=[t[r],t[s]]}return t},r={},i=t=>null==t?"null":r[r.toString.call(t)]||"object";["Array","AsyncFunction","Boolean","Date","Function","Map","Number","Object","RegExp","Set","String"].forEach((t=>r["[object "+t+"]"]=t.toLowerCase()));const n=t=>"array"==i(t),a=t=>"boolean"==i(t),o=t=>"null"!=i(t),h=t=>"number"==i(t),u=t=>"function"==typeof t,l=t=>"object"==i(t),p=t=>l(t)&&t.constructor===Object,c=["boolean","number","string"],m=t=>"string"==typeof t,d=t=>void 0===t,x=(t,e,s)=>{for(let r=0;r<t.length&&!1!==e.call(s,t[r],r,t);r++);return t},v=(t,e,s)=>{let r="";const i=Object.keys(t);for(let n=0;n<i.length&&(r=i[n],!1!==e.call(s,t[r],r,t));n++);return t},f=(t,e,s)=>Object.fromEntries(Object.entries(t).map((([r,i])=>[r,e.call(s,i,r,t)]))),y=t=>parseInt(null!=t?t:"0",16)||0,g=t=>{var e;return(null===(e=t.replace(/^#/,"").match(/.{1,2}/g))||void 0===e?void 0:e.map(y))||[]},_=t=>("0"+t.toString(16)).slice(-2),b=(t,e,s)=>"#"+_(t)+_(e)+_(s),w=(e,s)=>{const r=g(e);s=t(s,0,1);const[i,n,a]=r.map((t=>Math.round(t*s)));return b(i,n,a)},k=(e,s)=>{const r=g(e);s=t(s,0,1);const[i,n,a]=r.map((t=>Math.round(t+(255-t)*s)));return b(i,n,a)},S={50:.95,100:.9,200:.75,300:.6,400:.3,500:0,600:-.1,700:-.25,800:-.4,900:-.55,950:-.71},C=(t,e,s,r,i)=>0===t?0:e===s?(r-i)/t%6:e===r?(i-s)/t+2:e===i?(s-r)/t+4:0,j=(t,e)=>0===t?0:t/(1-Math.abs(2*e-1));class M{constructor(t){this.key=this.shuffle(M.dictionary,t,!1)}encrypt(t){return this.shuffle(t,this.key,!1)}decrypt(t){return this.shuffle(t,this.key,!0)}index(t,e,s){return[M.dictionary.indexOf(t[s]),M.dictionary.indexOf(e[s%e.length])]}result(t,e,s){return M.dictionary[(s?t-e+M.dictionary.length:t+e)%M.dictionary.length]}shuffle(t,e,s){let r="";for(let i=0;i<t.length;i++){const[n,a]=this.index(t,e,i);r+=-1===n||-1===a?t[i]:this.result(n,a,s)}return r}}M.dictionary="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";const O=t=>Math.random().toString(16).slice(t),A=()=>O(-3),I=()=>O(-4),E=()=>I()+I(),D=()=>E()+E(),T=t=>("0"+t.toString()).slice(-2),L={"%y":t=>T(t.getFullYear()),"%Y":t=>t.getFullYear().toString(),"%m":t=>T(t.getMonth()+1),"%d":t=>T(t.getDate()),"%H":t=>T(t.getHours()),"%M":t=>T(t.getMinutes()),"%S":t=>T(t.getSeconds())},F=(t,e)=>(e=null!=e?e:new Date,t.replace(/%[yYmdHMS]/g,(t=>L[t]?L[t](e):t.slice(1)))),N=36e5,U=24*N,q={ms:1,s:1e3,m:6e4,h:N,d:U,w:7*U,y:315576e5},H=["y","d","h","m","s","ms"];function R(t,e,s,r){return new(s||(s=Promise))((function(i,n){function a(t){try{h(r.next(t))}catch(t){n(t)}}function o(t){try{h(r.throw(t))}catch(t){n(t)}}function h(t){var e;t.done?i(t.value):(e=t.value,e instanceof s?e:new s((function(t){t(e)}))).then(a,o)}h((r=r.apply(t,e||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const P=()=>{},B=(t,e)=>e(t.toLowerCase().replace(/\W+/g," ")).replace(/\s/g,""),Y=t=>B(t,(t=>t.replace(/\s(\w)/g,(t=>t.toUpperCase())))),z=Y,Z=/&(amp|apos|lt|gt|nbsp|quot);/g,$={amp:"&",apos:"'",lt:"<",gt:">",nbsp:" ",quot:'"'},J=t=>/^[\d]$/.test(t),V=t=>/^[A-Za-z]$/.test(t),W=t=>/^[^\w]$/.test(t),K=t=>s(t.split("")).join("");class G{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 G).chars()}lower(){return this.hasLower=!0,this}static lower(){return(new G).lower()}make(t){let s="";this.hasSpace&&(s+=this._space),this.hasNumbers&&(s+=this._numbers),this.hasSymbols&&(s+=this._symbols),this.hasUpper&&!this.hasChars&&(s+=this._upper),this.hasLower&&!this.hasChars&&(s+=this._lower),this.hasChars&&(s+=this._chars);let r="";if(t&&s.length){s=K(s);for(let i=0;i<t;i++)r+=s.charAt(e(0,s.length-1))}return r}numbers(){return this.hasNumbers=!0,this}static numbers(){return(new G).numbers()}space(){return this.hasSpace=!0,this}static space(){return(new G).space()}symbols(){return this.hasSymbols=!0,this}static symbols(){return(new G).symbols()}upper(){return this.hasUpper=!0,this}static upper(){return(new G).upper()}}const Q=t=>t.split("").reverse().join(""),X=t=>B(t,(t=>t.replace(/(\w)(\w*)/g,((t,e,s)=>e.toUpperCase()+s)))),tt=(t,e)=>e(t.value)?t.value:(t=>(t.maskIndex--,""))(t),et={"#":t=>t.value,0:t=>tt(t,J),9:t=>tt(t,J),A:t=>tt(t,V),Z:t=>tt(t,V),L:t=>tt(t,V).toLowerCase(),U:t=>tt(t,V).toUpperCase(),S:t=>tt(t,W)},st=t=>{t.maskIndex++,t.textIndex++;const{mask:e,maskIndex:s,text:r,textIndex:i}=t;t.key=e[s],t.value=r[i];const{key:n,value:a}=t;return d(n)||d(a)?"":(t=>et[t.key]?et[t.key](t):(t.key!=t.value&&t.textIndex--,t.key))(t)+st(t)},rt=(t,e)=>st({mask:t,maskIndex:-1,text:e,textIndex:-1,key:"",value:""}),it=(t,e)=>Q(rt(Q(t),Q(e))),nt=(t,e)=>t.reduce(((t,s)=>Object.assign(Object.assign({},t),{[s]:e[s]})),{}),at=(t,...e)=>{if(!e.length)return t;const s=e.shift();if(p(t)&&p(s))for(const e in s)p(s[e])?(t[e]||(t=Object.assign(Object.assign({},t),{[e]:{}})),t[e]=at(t[e],s[e])):t=Object.assign(Object.assign({},t),{[e]:s[e]});return at(t,...e)};class ot{constructor(){this.name="",this._error="",this._filter=[],this._type="any",this.rules=[],this.custom=[]}empty(t){return this._value=t,this.unshift((t=>{const e=o(t);return{break:!e,value:e?t:u(this._value)?this._value():this._value}}))}error(t){return this._error=t,this}filter(...t){return this._filter=t,this.unshift((t=>{const e=-1==this._filter.indexOf(t);return{break:!e,value:e?t:void 0}}))}from(t){return this.source=t,this}invalid(t){return{error:this._error?this._error:this.name?this.name+":"+t:t}}parse(){return this.unshift((t=>({value:t})))}push(t){return this.rules.push(t),this}required(){return this.unshift((t=>o(t)?{value:t}:this.invalid("["+this._type+"].required")))}test(t){return!m(this.validate(t).error)}testAsync(t){return R(this,void 0,void 0,(function*(){return!m((yield this.validateAsync(t)).error)}))}unshift(t){return this.rules.unshift(t),this}validate(t){if(this.custom.length)return this.invalid("[async]");let e={value:t};for(let t=0;t<this.rules.length;t++){if(e=this.rules[t](e.value),e.error)return{error:e.error};if(e.break)return{value:e.value}}return{value:e.value}}validateAsync(t){return R(this,void 0,void 0,(function*(){let e=this.validate(t);if(e.error)return{error:e.error};for(let t=0;t<this.custom.length;t++){if(e=yield this.custom[t](e.value),e.error)return{error:e.error};if(e.break)return{value:e.value}}return{value:e.value}}))}}class ht extends ot{constructor(){super(),this._length=0,this._max=0,this._min=0,this._type="array",this.push((t=>{if(n(t)){if(this._items){this._items.name="";for(let e=0;e<t.length;e++){const{error:s,value:r}=this._items.validate(t[e]);if(s)return this.invalid("["+this._type+"]< "+s+"["+e+"] >");t[e]=r}}return{value:t}}return this.invalid("["+this._type+"]")}))}between(t,e){return this.min(t),this.max(e)}items(t){return this._items=t,this}length(t){return this._length=t,this.push((t=>t.length==this._length?{value:t}:this.invalid("["+this._type+"].length("+this._length+")")))}max(t){return this._max=t,this.push((t=>t.length<=this._max?{value:t}:this.invalid("["+this._type+"].max("+this._max+")")))}min(t){return this._min=t,this.push((t=>t.length>=this._min?{value:t}:this.invalid("["+this._type+"].min("+this._min+")")))}}class ut extends ot{constructor(){super(),this._type="boolean",this.push((t=>a(t)?{value:t}:this.invalid("["+this._type+"]")))}parse(){return this.unshift((t=>({value:o(t)?-1!=[1,"1",!0,"true"].indexOf(t):t})))}}class lt extends ot{constructor(){super(),this._type="date",this._format="",this.push((t=>isNaN(new Date(t).getTime())?this.invalid("["+this._type+"]"):{value:t}))}format(t){return this._format=t,this.push((t=>({value:F(this._format,new Date(t))})))}parse(){return this.unshift((t=>(m(t)&&t.length<=10&&(t+=" 12:00"),{value:new Date(t)})))}}class pt extends ot{constructor(){super(),this._max=0,this._min=0,this._type="number",this.push((t=>h(t)?{value:t}:this.invalid("["+this._type+"]")))}between(t,e){return this.min(t),this.max(e)}max(t){return this._max=t,this.push((t=>t<=this._max?{value:t}:this.invalid("["+this._type+"].max("+this._max+")")))}min(t){return this._min=t,this.push((t=>t>=this._min?{value:t}:this.invalid("["+this._type+"].min("+this._min+")")))}parse(){return this.unshift((t=>({value:o(t)?parseFloat(t):t})))}}class ct extends ot{constructor(){super(),this._keys={},this._type="object",this.push((t=>{if(l(t)){const e=[],s={};return Object.keys(this._keys).forEach((r=>{var i;const n=this._keys[r];n.name=null!==(i=n.source)&&void 0!==i?i:r;const{error:a,value:h}=n.validate(t[n.name]);a&&e.push(a),o(h)&&(s[r]=h)})),e.length?this.invalid("["+this._type+"]{ "+e.join(", ")+" }"):{value:s}}return this.invalid("["+this._type+"]")}))}keys(t){return this._keys=t||{},this}parse(){return this.unshift((t=>{if(!l(t))try{t=JSON.parse(t)}catch(t){return this.invalid("["+this._type+"]")}const e=Object.keys(this._keys);return{value:e.length?nt(e,t):t}}))}}class mt extends ot{constructor(){super(),this._length=0,this._max=0,this._min=0,this._type="string",this.push((t=>m(t)?{value:t}:this.invalid("["+this._type+"]")))}between(t,e){return this.min(t),this.max(e)}email(){return this.push((t=>/^[\w-\\.]+@([\w-]+\.)+[\w-]{2,4}$/i.test(t)?{value:t}:this.invalid("["+this._type+"].email")))}length(t){return this._length=t,this.push((t=>t.length==this._length?{value:t}:this.invalid("["+this._type+"].length("+this._length+")")))}lowerCase(){return this.push((t=>({value:t.toLowerCase()})))}lowerCamelCase(){return this.push((t=>({value:Y(t)})))}max(t){return this._max=t,this.push((t=>t.length<=this._max?{value:t}:this.invalid("["+this._type+"].max("+this._max+")")))}mask(t){return this.push((e=>({value:rt(t,e)})))}min(t){return this._min=t,this.push((t=>t.length>=this._min?{value:t}:this.invalid("["+this._type+"].min("+this._min+")")))}parse(){return this.unshift((t=>({value:l(t)?JSON.stringify(t):o(t)?t.toString():t})))}required(){return this.push((t=>t.length?{value:t}:this.invalid("["+this._type+"].required")))}trim(){return this.push((t=>({value:t.trim()})))}upperCase(){return this.push((t=>({value:t.toUpperCase()})))}upperCamelCase(){return this.push((t=>({value:X(t)})))}}class dt{static array(t){return(new ht).items(t)}static boolean(){return new ut}static date(){return new lt}static number(){return new pt}static object(t){return(new ct).keys(t)}static string(){return new mt}test(t,...e){return!m(dt.validate(t,...e).error)}testAsync(t,...e){return R(this,void 0,void 0,(function*(){return!m((yield dt.validateAsync(t,...e)).error)}))}static validate(t,...e){let s={value:t};for(let t=0;t<e.length;t++)if(s=e[t].validate(s.value),s.error)return{error:s.error};return s}static validateAsync(t,...e){return R(this,void 0,void 0,(function*(){let s={value:t};for(let t=0;t<e.length;t++)if(s=yield e[t].validateAsync(s.value),s.error)return{error:s.error};return s}))}}exports.EventEmitter=class{constructor(){this.events=new Map}on(t,e){const s=this.events.get(t);return s?s.push(e):this.events.set(t,[e]),{dispose:()=>this.off(t,e)}}once(t,e){const s=r=>{e(r),this.off(t,s)};return this.on(t,s),{dispose:()=>this.off(t,s)}}off(t,e){const s=this.events.get(t);if(e){if(s){const t=s.indexOf(e);t>=0&&s.splice(t,1)}}else this.events.set(t,[])}emit(t,e){const s=this.events.get(t);s&&s.forEach((t=>t(e)))}},exports.Hash=M,exports.RandomString=G,exports.Validation=dt,exports.ValidationBase=ot,exports.allowed=nt,exports.cache=()=>{const t=[],e=[];return s=>{let r=t.indexOf(s);return-1==r&&(t.push(s),e.push({}),r=e.length-1),e[r]}},exports.camelCase=z,exports.chunkArray=(t,e)=>{const s=[];for(let r=0;r<t.length;r+=e)s.push(t.slice(r,r+e));return s},exports.clamp=t,exports.colorPalette=(t,e)=>f(null!=e?e:S,(e=>0==e?t:e>0?k(t,e):w(t,1- -1*e))),exports.cutText=(t,e)=>{if(t.length>e){const s=t.substring(0,e).split(" ");return s.pop(),s.join(" ")+"..."}return t},exports.dateFormat=F,exports.dateRange=(t,e)=>{const s=new Date(t),r=[];for(;t<e;)s.setDate(s.getDate()+1),r.push(new Date(s));return r},exports.debounce=(t,e)=>{let s;const r=()=>{s&&clearTimeout(s)};return{cancel:r,run(...i){r(),s=setTimeout((()=>t(...i)),e)}}},exports.decodeHTML=t=>t.replace(Z,((t,e)=>$[e])).replace(/&#(\d+);/gi,((t,e)=>String.fromCharCode(parseInt(e,10)))),exports.denied=(t,e)=>nt(Object.keys(e).filter((e=>-1==t.indexOf(e))),e),exports.each=(t,e,s)=>n(t)?x(t,e,s):l(t)?v(t,e,s):t,exports.encodeHTML=t=>t.replace(/[^0-9A-Za-z ]/g,(t=>"&#"+t.charCodeAt(0)+";")),exports.forEachAsync=(t,e,s)=>R(void 0,void 0,void 0,(function*(){yield Promise.allSettled(t.map(((r,i)=>e.call(s,r,i,t)))).catch(P)})),exports.forEachIndex=x,exports.forEachKey=v,exports.forEachSeries=(t,e,s)=>R(void 0,void 0,void 0,(function*(){for(let r=0;r<t.length;r++)yield e.call(s,t[r],r,t).catch(P)})),exports.forLoop=(t,e,s)=>{for(let r=1;r<=t&&!1!==e.call(s,r,t);r++);return t},exports.hexToRgb=g,exports.hslToRgb=(t,e,s)=>{t/=60;const r=(1-Math.abs(2*s-1))*e,i=r*(1-Math.abs(t%2-1));let n=[0,0,0];t<=1?n=[r,i,0]:t<=2?n=[i,r,0]:t<=3?n=[0,r,i]:t<=4?n=[0,i,r]:t<=5?n=[i,0,r]:t<=6&&(n=[r,0,i]);const a=s-.5*r;return[Math.round(255*(n[0]+a)),Math.round(255*(n[1]+a)),Math.round(255*(n[2]+a))]},exports.isArray=n,exports.isBoolean=a,exports.isCharacter=t=>/^[\w]$/.test(t),exports.isDate=t=>"date"==i(t),exports.isDef=o,exports.isDigit=J,exports.isFloat=t=>h(t)&&!!(t%1),exports.isFunction=u,exports.isInteger=t=>h(t)&&!(t%1),exports.isLetter=V,exports.isMap=t=>"map"==i(t),exports.isNull=t=>null===t,exports.isNumber=h,exports.isObject=l,exports.isPlainObject=p,exports.isRegExp=t=>"regexp"==i(t),exports.isScalar=t=>-1!=c.indexOf(i(t)),exports.isSet=t=>"set"==i(t),exports.isSpecialChar=W,exports.isString=m,exports.isSymbol=t=>"symbol"==typeof t,exports.isUndefined=d,exports.lerp=(e,s,r)=>e+(s-e)*t(r,0,1),exports.loop=(t,e)=>{let s=!1;const r=()=>R(void 0,void 0,void 0,(function*(){s&&(yield t(),setTimeout(r,e))}));return{start(){s||(s=!0,r())},stop(){s=!1}}},exports.lowerCamelCase=Y,exports.map=f,exports.mask=rt,exports.maskMoney=(t,e,s)=>(s++,e=parseInt((e||"0").replace(/\W/g,"")).toString(),it(t,e.length<s?("0".repeat(s)+e).slice(-1*s):e)),exports.maskReverse=it,exports.maskTest=(t,e)=>t.length==rt(t,e).length,exports.merge=at,exports.msToString=t=>{const e=[];return H.forEach((s=>{const r=q[s],i=(t-t%r)/r;i&&(t-=i*r,e.push(i.toString()+s))})),e.join(" ")},exports.noop=P,exports.parseMs=t=>{const e=/(-?(?:\d+)?\.?\d+) *(ms|s|m|h|d|w|y)/gm;let s,r=0;for(;null!==(s=e.exec(t));)s.index===e.lastIndex&&e.lastIndex++,r+=parseFloat(s[1])*q[s[2]]||0;return r},exports.parseSize=t=>{if(h(t))return t+"px";const e=(t=>/(-?(?:\d+)?\.?\d+) *(px|%|cm|mm|in|pt|pc|en|ex|ch|rem|vw|vh|vmin|vmax)*/g.exec(t))(t);return e?parseFloat(e[1])+(e[2]||"px"):"0px"},exports.random=e,exports.randomCase=t=>t.split("").map((t=>Math.random()<.5?t.toUpperCase():t.toLowerCase())).join(""),exports.randomElement=t=>t.length?t[e(0,t.length-1)]:null,exports.rangeArray=(t,e,s=1)=>Array.from({length:(e-t)/s+1},((e,r)=>t+r*s)),exports.rgbToHex=b,exports.rgbToHsl=(t,e,s)=>{const[r,i,n]=((...t)=>t.map((t=>t/255)))(t,e,s),a=Math.max(r,i,n),o=Math.min(r,i,n),h=a-o,u=(o+a)/2;return[60*C(h,a,r,i,n),j(h,u),u]},exports.shadeColor=w,exports.shuffleArray=s,exports.shuffleString=K,exports.simpleID=()=>A()+I(),exports.sleep=t=>new Promise((e=>setTimeout(e,t))),exports.stringReverse=Q,exports.tintColor=k,exports.toArray=t=>n(t)?t:o(t)?[t]:[],exports.toBool=t=>"true"===t||"1"===t,exports.type=i,exports.uniqueArray=t=>t.filter(((t,e,s)=>s.indexOf(t)===e)),exports.uniqueID=()=>D()+D()+D()+D(),exports.upperCamelCase=X,exports.uuidv4=()=>E()+"-"+I()+"-4"+A()+"-"+I()+"-"+(E()+I());
|
|
7
|
+
"use strict";const t=(t,e,s)=>Math.max(e,Math.min(s,t)),e=(t,e)=>Math.floor(Math.random()*(e-t+1)+t),s=t=>{for(let s=t.length-1;s>0;s--){const r=e(0,s);[t[s],t[r]]=[t[r],t[s]]}return t},r={},i=t=>null==t?"null":r[r.toString.call(t)]||"object";["Array","AsyncFunction","Boolean","Date","Function","Map","Number","Object","RegExp","Set","String"].forEach((t=>r["[object "+t+"]"]=t.toLowerCase()));const n=t=>"array"==i(t),a=t=>"boolean"==i(t),o=t=>"null"!=i(t),h=t=>"number"==i(t),u=t=>"function"==typeof t,l=t=>"object"==i(t),p=t=>l(t)&&t.constructor===Object,c=["boolean","number","string"],m=t=>"string"==typeof t,x=t=>void 0===t,d=(t,e,s)=>{for(let r=0;r<t.length&&!1!==e.call(s,t[r],r,t);r++);return t},v=(t,e,s)=>{let r="";const i=Object.keys(t);for(let n=0;n<i.length&&(r=i[n],!1!==e.call(s,t[r],r,t));n++);return t},f=(t,e,s)=>Object.fromEntries(Object.entries(t).map((([r,i])=>[r,e.call(s,i,r,t)]))),y=t=>parseInt(null!=t?t:"0",16)||0,g=t=>{var e;return(null===(e=t.replace(/^#/,"").match(/.{1,2}/g))||void 0===e?void 0:e.map(y))||[]},_=t=>("0"+t.toString(16)).slice(-2),b=(t,e,s)=>"#"+_(t)+_(e)+_(s),w=(e,s)=>{const r=g(e);s=t(s,0,1);const[i,n,a]=r.map((t=>Math.round(t*s)));return b(i,n,a)},k=(e,s)=>{const r=g(e);s=t(s,0,1);const[i,n,a]=r.map((t=>Math.round(t+(255-t)*s)));return b(i,n,a)},S={50:.95,100:.9,200:.75,300:.6,400:.3,500:0,600:-.1,700:-.25,800:-.4,900:-.55,950:-.71},C=(t,e,s,r,i)=>0===t?0:e===s?(r-i)/t%6:e===r?(i-s)/t+2:e===i?(s-r)/t+4:0,O=(t,e)=>0===t?0:t/(1-Math.abs(2*e-1));class j{constructor(t){this.key=this.shuffle(j.dictionary,t,!1)}encrypt(t){return this.shuffle(t,this.key,!1)}decrypt(t){return this.shuffle(t,this.key,!0)}index(t,e,s){return[j.dictionary.indexOf(t[s]),j.dictionary.indexOf(e[s%e.length])]}result(t,e,s){return j.dictionary[(s?t-e+j.dictionary.length:t+e)%j.dictionary.length]}shuffle(t,e,s){let r="";for(let i=0;i<t.length;i++){const[n,a]=this.index(t,e,i);r+=-1===n||-1===a?t[i]:this.result(n,a,s)}return r}}j.dictionary="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";const M=t=>Math.random().toString(16).slice(t),A=()=>M(-3),E=()=>M(-4),I=()=>E()+E(),D=()=>I()+I(),T=t=>("0"+t.toString()).slice(-2),L={"%y":t=>T(t.getFullYear()),"%Y":t=>t.getFullYear().toString(),"%m":t=>T(t.getMonth()+1),"%d":t=>T(t.getDate()),"%H":t=>T(t.getHours()),"%M":t=>T(t.getMinutes()),"%S":t=>T(t.getSeconds())},F=(t,e)=>(e=null!=e?e:new Date,t.replace(/%[yYmdHMS]/g,(t=>L[t]?L[t](e):t.slice(1)))),N=36e5,U=24*N,q={ms:1,s:1e3,m:6e4,h:N,d:U,w:7*U,y:315576e5},H=["y","d","h","m","s","ms"];function R(t,e,s,r){return new(s||(s=Promise))((function(i,n){function a(t){try{h(r.next(t))}catch(t){n(t)}}function o(t){try{h(r.throw(t))}catch(t){n(t)}}function h(t){t.done?i(t.value):function(t){return t instanceof s?t:new s((function(e){e(t)}))}(t.value).then(a,o)}h((r=r.apply(t,e||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const P=t=>{var e;return 0==(null!==(e=null==t?void 0:t.length)&&void 0!==e?e:0)},B=["",0,"0",null,!1,void 0],Y=t=>-1==B.indexOf(t),z=()=>{},Z=(t,e)=>e(t.toLowerCase().replace(/\W+/g," ")).replace(/\s/g,""),$=t=>Z(t,(t=>t.replace(/\s(\w)/g,(t=>t.toUpperCase())))),J=$,V=/&(amp|apos|lt|gt|nbsp|quot);/g,W={amp:"&",apos:"'",lt:"<",gt:">",nbsp:" ",quot:'"'},K=t=>/^[\d]$/.test(t),G=t=>/^[A-Za-z]$/.test(t),Q=t=>/^[^\w]$/.test(t),X=t=>s(t.split("")).join("");class tt{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 tt).chars()}lower(){return this.hasLower=!0,this}static lower(){return(new tt).lower()}make(t){let s="";this.hasSpace&&(s+=this._space),this.hasNumbers&&(s+=this._numbers),this.hasSymbols&&(s+=this._symbols),this.hasUpper&&!this.hasChars&&(s+=this._upper),this.hasLower&&!this.hasChars&&(s+=this._lower),this.hasChars&&(s+=this._chars);let r="";if(t&&s.length){s=X(s);for(let i=0;i<t;i++)r+=s.charAt(e(0,s.length-1))}return r}numbers(){return this.hasNumbers=!0,this}static numbers(){return(new tt).numbers()}space(){return this.hasSpace=!0,this}static space(){return(new tt).space()}symbols(){return this.hasSymbols=!0,this}static symbols(){return(new tt).symbols()}upper(){return this.hasUpper=!0,this}static upper(){return(new tt).upper()}}const et=t=>t.split("").reverse().join(""),st=t=>Z(t,(t=>t.replace(/(\w)(\w*)/g,((t,e,s)=>e.toUpperCase()+s)))),rt=(t,e)=>e(t.value)?t.value:(t=>(t.maskIndex--,""))(t),it={"#":t=>t.value,0:t=>rt(t,K),9:t=>rt(t,K),A:t=>rt(t,G),Z:t=>rt(t,G),L:t=>rt(t,G).toLowerCase(),U:t=>rt(t,G).toUpperCase(),S:t=>rt(t,Q)},nt=t=>{t.maskIndex++,t.textIndex++;const{mask:e,maskIndex:s,text:r,textIndex:i}=t;t.key=e[s],t.value=r[i];const{key:n,value:a}=t;return x(n)||x(a)?"":(t=>it[t.key]?it[t.key](t):(t.key!=t.value&&t.textIndex--,t.key))(t)+nt(t)},at=(t,e)=>nt({mask:t,maskIndex:-1,text:e,textIndex:-1,key:"",value:""}),ot=(t,e)=>et(at(et(t),et(e))),ht=(t,e)=>t.reduce(((t,s)=>Object.assign(Object.assign({},t),{[s]:e[s]})),{}),ut=(t,...e)=>{if(!e.length)return t;const s=e.shift();if(p(t)&&p(s))for(const e in s)p(s[e])?(t[e]||(t=Object.assign(Object.assign({},t),{[e]:{}})),t[e]=ut(t[e],s[e])):t=Object.assign(Object.assign({},t),{[e]:s[e]});return ut(t,...e)};class lt{constructor(){this.name="",this._error="",this._filter=[],this._type="any",this.rules=[],this.custom=[]}empty(t){return this._value=t,this.unshift((t=>{const e=o(t);return{break:!e,value:e?t:u(this._value)?this._value():this._value}}))}error(t){return this._error=t,this}filter(...t){return this._filter=t,this.unshift((t=>{const e=-1==this._filter.indexOf(t);return{break:!e,value:e?t:void 0}}))}from(t){return this.source=t,this}invalid(t){return{error:this._error?this._error:this.name?this.name+":"+t:t}}parse(){return this.unshift((t=>({value:t})))}push(t){return this.rules.push(t),this}required(){return this.unshift((t=>o(t)?{value:t}:this.invalid("["+this._type+"].required")))}test(t){return!m(this.validate(t).error)}testAsync(t){return R(this,void 0,void 0,(function*(){return!m((yield this.validateAsync(t)).error)}))}unshift(t){return this.rules.unshift(t),this}validate(t){if(this.custom.length)return this.invalid("[async]");let e={value:t};for(let t=0;t<this.rules.length;t++){if(e=this.rules[t](e.value),e.error)return{error:e.error};if(e.break)return{value:e.value}}return{value:e.value}}validateAsync(t){return R(this,void 0,void 0,(function*(){let e=this.validate(t);if(e.error)return{error:e.error};for(let t=0;t<this.custom.length;t++){if(e=yield this.custom[t](e.value),e.error)return{error:e.error};if(e.break)return{value:e.value}}return{value:e.value}}))}}class pt extends lt{constructor(){super(),this._length=0,this._max=0,this._min=0,this._type="array",this.push((t=>{if(n(t)){if(this._items){this._items.name="";for(let e=0;e<t.length;e++){const{error:s,value:r}=this._items.validate(t[e]);if(s)return this.invalid("["+this._type+"]< "+s+"["+e+"] >");t[e]=r}}return{value:t}}return this.invalid("["+this._type+"]")}))}between(t,e){return this.min(t),this.max(e)}items(t){return this._items=t,this}length(t){return this._length=t,this.push((t=>t.length==this._length?{value:t}:this.invalid("["+this._type+"].length("+this._length+")")))}max(t){return this._max=t,this.push((t=>t.length<=this._max?{value:t}:this.invalid("["+this._type+"].max("+this._max+")")))}min(t){return this._min=t,this.push((t=>t.length>=this._min?{value:t}:this.invalid("["+this._type+"].min("+this._min+")")))}}class ct extends lt{constructor(){super(),this._type="boolean",this.push((t=>a(t)?{value:t}:this.invalid("["+this._type+"]")))}parse(){return this.unshift((t=>({value:o(t)?-1!=[1,"1",!0,"true"].indexOf(t):t})))}}class mt extends lt{constructor(){super(),this._type="date",this._format="",this.push((t=>isNaN(new Date(t).getTime())?this.invalid("["+this._type+"]"):{value:t}))}format(t){return this._format=t,this.push((t=>({value:F(this._format,new Date(t))})))}parse(){return this.unshift((t=>(m(t)&&t.length<=10&&(t+=" 12:00"),{value:new Date(t)})))}}class xt extends lt{constructor(){super(),this._max=0,this._min=0,this._type="number",this.push((t=>h(t)?{value:t}:this.invalid("["+this._type+"]")))}between(t,e){return this.min(t),this.max(e)}max(t){return this._max=t,this.push((t=>t<=this._max?{value:t}:this.invalid("["+this._type+"].max("+this._max+")")))}min(t){return this._min=t,this.push((t=>t>=this._min?{value:t}:this.invalid("["+this._type+"].min("+this._min+")")))}parse(){return this.unshift((t=>({value:o(t)?parseFloat(t):t})))}}class dt extends lt{constructor(){super(),this._keys={},this._type="object",this.push((t=>{if(l(t)){const e=[],s={};return Object.keys(this._keys).forEach((r=>{var i;const n=this._keys[r];n.name=null!==(i=n.source)&&void 0!==i?i:r;const{error:a,value:h}=n.validate(t[n.name]);a&&e.push(a),o(h)&&(s[r]=h)})),e.length?this.invalid("["+this._type+"]{ "+e.join(", ")+" }"):{value:s}}return this.invalid("["+this._type+"]")}))}keys(t){return this._keys=t||{},this}parse(){return this.unshift((t=>{if(!l(t))try{t=JSON.parse(t)}catch(t){return this.invalid("["+this._type+"]")}const e=Object.keys(this._keys);return{value:e.length?ht(e,t):t}}))}}class vt extends lt{constructor(){super(),this._length=0,this._max=0,this._min=0,this._type="string",this.push((t=>m(t)?{value:t}:this.invalid("["+this._type+"]")))}between(t,e){return this.min(t),this.max(e)}email(){return this.push((t=>/^[\w-\\.]+@([\w-]+\.)+[\w-]{2,4}$/i.test(t)?{value:t}:this.invalid("["+this._type+"].email")))}length(t){return this._length=t,this.push((t=>t.length==this._length?{value:t}:this.invalid("["+this._type+"].length("+this._length+")")))}lowerCase(){return this.push((t=>({value:t.toLowerCase()})))}lowerCamelCase(){return this.push((t=>({value:$(t)})))}max(t){return this._max=t,this.push((t=>t.length<=this._max?{value:t}:this.invalid("["+this._type+"].max("+this._max+")")))}mask(t){return this.push((e=>({value:at(t,e)})))}min(t){return this._min=t,this.push((t=>t.length>=this._min?{value:t}:this.invalid("["+this._type+"].min("+this._min+")")))}parse(){return this.unshift((t=>({value:l(t)?JSON.stringify(t):o(t)?t.toString():t})))}required(){return this.push((t=>t.length?{value:t}:this.invalid("["+this._type+"].required")))}trim(){return this.push((t=>({value:t.trim()})))}upperCase(){return this.push((t=>({value:t.toUpperCase()})))}upperCamelCase(){return this.push((t=>({value:st(t)})))}}class ft{static array(t){return(new pt).items(t)}static boolean(){return new ct}static date(){return new mt}static number(){return new xt}static object(t){return(new dt).keys(t)}static string(){return new vt}test(t,...e){return!m(ft.validate(t,...e).error)}testAsync(t,...e){return R(this,void 0,void 0,(function*(){return!m((yield ft.validateAsync(t,...e)).error)}))}static validate(t,...e){let s={value:t};for(let t=0;t<e.length;t++)if(s=e[t].validate(s.value),s.error)return{error:s.error};return s}static validateAsync(t,...e){return R(this,void 0,void 0,(function*(){let s={value:t};for(let t=0;t<e.length;t++)if(s=yield e[t].validateAsync(s.value),s.error)return{error:s.error};return s}))}}exports.EventEmitter=class{constructor(){this.events=new Map}on(t,e){const s=this.events.get(t);return s?s.push(e):this.events.set(t,[e]),{dispose:()=>this.off(t,e)}}once(t,e){const s=r=>{e(r),this.off(t,s)};return this.on(t,s),{dispose:()=>this.off(t,s)}}off(t,e){const s=this.events.get(t);if(e){if(s){const t=s.indexOf(e);t>=0&&s.splice(t,1)}}else this.events.set(t,[])}emit(t,e){const s=this.events.get(t);s&&s.forEach((t=>t(e)))}},exports.Hash=j,exports.RandomString=tt,exports.Validation=ft,exports.ValidationBase=lt,exports.allowed=ht,exports.cache=()=>{const t=[],e=[];return s=>{let r=t.indexOf(s);return-1==r&&(t.push(s),e.push({}),r=e.length-1),e[r]}},exports.camelCase=J,exports.chunkArray=(t,e)=>{const s=[];for(let r=0;r<t.length;r+=e)s.push(t.slice(r,r+e));return s},exports.clamp=t,exports.colorPalette=(t,e)=>f(null!=e?e:S,(e=>0==e?t:e>0?k(t,e):w(t,1- -1*e))),exports.countArray=t=>{const e={};return t.forEach((t=>{const s=t.toString();e[s]=(e[s]||0)+1})),e},exports.cutText=(t,e)=>{if(t.length>e){const s=t.substring(0,e).split(" ");return s.pop(),s.join(" ")+"..."}return t},exports.dateFormat=F,exports.dateRange=(t,e)=>{const s=new Date(t),r=[];for(;t<e;)s.setDate(s.getDate()+1),r.push(new Date(s));return r},exports.debounce=(t,e)=>{let s;const r=()=>{s&&clearTimeout(s)};return{cancel:r,run(...i){r(),s=setTimeout((()=>t(...i)),e)}}},exports.decodeHTML=t=>t.replace(V,((t,e)=>W[e])).replace(/&#(\d+);/gi,((t,e)=>String.fromCharCode(parseInt(e,10)))),exports.denied=(t,e)=>ht(Object.keys(e).filter((e=>-1==t.indexOf(e))),e),exports.each=(t,e,s)=>n(t)?d(t,e,s):l(t)?v(t,e,s):t,exports.encodeHTML=t=>t.replace(/[^0-9A-Za-z ]/g,(t=>"&#"+t.charCodeAt(0)+";")),exports.forEachAsync=(t,e,s)=>R(void 0,void 0,void 0,(function*(){yield Promise.allSettled(t.map(((r,i)=>e.call(s,r,i,t)))).catch(z)})),exports.forEachIndex=d,exports.forEachKey=v,exports.forEachSeries=(t,e,s)=>R(void 0,void 0,void 0,(function*(){for(let r=0;r<t.length;r++)yield e.call(s,t[r],r,t).catch(z)})),exports.forLoop=(t,e,s)=>{for(let r=1;r<=t&&!1!==e.call(s,r,t);r++);return t},exports.hexToRgb=g,exports.hslToRgb=(t,e,s)=>{t/=60;const r=(1-Math.abs(2*s-1))*e,i=r*(1-Math.abs(t%2-1));let n=[0,0,0];t<=1?n=[r,i,0]:t<=2?n=[i,r,0]:t<=3?n=[0,r,i]:t<=4?n=[0,i,r]:t<=5?n=[i,0,r]:t<=6&&(n=[r,0,i]);const a=s-.5*r;return[Math.round(255*(n[0]+a)),Math.round(255*(n[1]+a)),Math.round(255*(n[2]+a))]},exports.isArray=n,exports.isBoolean=a,exports.isCharacter=t=>/^[\w]$/.test(t),exports.isDate=t=>"date"==i(t),exports.isDef=o,exports.isDigit=K,exports.isEmpty=P,exports.isFalse=t=>!Y(t),exports.isFloat=t=>h(t)&&!!(t%1),exports.isFunction=u,exports.isInteger=t=>h(t)&&!(t%1),exports.isLetter=G,exports.isMap=t=>"map"==i(t),exports.isNotEmpty=t=>!P(t),exports.isNull=t=>null===t,exports.isNumber=h,exports.isObject=l,exports.isPlainObject=p,exports.isRegExp=t=>"regexp"==i(t),exports.isScalar=t=>-1!=c.indexOf(i(t)),exports.isSet=t=>"set"==i(t),exports.isSpecialChar=Q,exports.isString=m,exports.isSymbol=t=>"symbol"==typeof t,exports.isTrue=Y,exports.isUndefined=x,exports.lerp=(e,s,r)=>e+(s-e)*t(r,0,1),exports.loop=(t,e)=>{let s=!1;const r=()=>R(void 0,void 0,void 0,(function*(){s&&(yield t(),setTimeout(r,e))}));return{start(){s||(s=!0,r())},stop(){s=!1}}},exports.lowerCamelCase=$,exports.map=f,exports.mask=at,exports.maskMoney=(t,e,s)=>(s++,e=parseInt((e||"0").replace(/\W/g,"")).toString(),ot(t,e.length<s?("0".repeat(s)+e).slice(-1*s):e)),exports.maskReverse=ot,exports.maskTest=(t,e)=>t.length==at(t,e).length,exports.merge=ut,exports.msToString=t=>{const e=[];return H.forEach((s=>{const r=q[s],i=(t-t%r)/r;i&&(t-=i*r,e.push(i.toString()+s))})),e.join(" ")},exports.noop=z,exports.parseMs=t=>{const e=/(-?(?:\d+)?\.?\d+) *(ms|s|m|h|d|w|y)/gm;let s,r=0;for(;null!==(s=e.exec(t));)s.index===e.lastIndex&&e.lastIndex++,r+=parseFloat(s[1])*q[s[2]]||0;return r},exports.parseSize=t=>{if(h(t))return t+"px";const e=(t=>/(-?(?:\d+)?\.?\d+) *(px|%|cm|mm|in|pt|pc|en|ex|ch|rem|vw|vh|vmin|vmax)*/g.exec(t))(t);return e?parseFloat(e[1])+(e[2]||"px"):"0px"},exports.random=e,exports.randomCase=t=>t.split("").map((t=>Math.random()<.5?t.toUpperCase():t.toLowerCase())).join(""),exports.randomElement=t=>t.length?t[e(0,t.length-1)]:null,exports.rangeArray=(t,e,s=1)=>Array.from({length:(e-t)/s+1},((e,r)=>t+r*s)),exports.rgbToHex=b,exports.rgbToHsl=(t,e,s)=>{const[r,i,n]=((...t)=>t.map((t=>t/255)))(t,e,s),a=Math.max(r,i,n),o=Math.min(r,i,n),h=a-o,u=(o+a)/2;return[60*C(h,a,r,i,n),O(h,u),u]},exports.shadeColor=w,exports.shuffleArray=s,exports.shuffleString=X,exports.simpleID=()=>A()+E(),exports.sleep=t=>new Promise((e=>setTimeout(e,t))),exports.stringReverse=et,exports.tintColor=k,exports.toArray=t=>n(t)?t:o(t)?[t]:[],exports.toBool=t=>"true"===t||"1"===t,exports.type=i,exports.uniqueArray=t=>t.filter(((t,e,s)=>s.indexOf(t)===e)),exports.uniqueID=()=>D()+D()+D()+D(),exports.upperCamelCase=st,exports.uuidv4=()=>I()+"-"+E()+"-4"+A()+"-"+E()+"-"+(I()+E());
|
package/dist/index.d.ts
CHANGED
|
@@ -1,23 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @andrewcaires/utils.js v0.4.
|
|
2
|
+
* @andrewcaires/utils.js v0.4.2
|
|
3
3
|
* JavaScript utility library for web and nodejs development
|
|
4
4
|
* (c) 2024 Andrew Caires
|
|
5
5
|
* @license: MIT
|
|
6
6
|
*/
|
|
7
7
|
declare const chunkArray: <T>(arr: Array<T>, length: number) => Array<Array<T>>;
|
|
8
8
|
|
|
9
|
-
declare const randomElement: <T>(arr: Array<T>) => T | null;
|
|
10
|
-
|
|
11
|
-
declare const rangeArray: (start: number, end: number, step?: number) => Array<number>;
|
|
12
|
-
|
|
13
|
-
declare const shuffleArray: <T>(arr: Array<T>) => Array<T>;
|
|
14
|
-
|
|
15
|
-
declare const toArray: (value: any) => Array<any>;
|
|
16
|
-
|
|
17
|
-
declare const uniqueArray: <T>(arr: Array<T>) => Array<T>;
|
|
18
|
-
|
|
19
|
-
declare const toBool: (value: string) => boolean;
|
|
20
|
-
|
|
21
9
|
declare const isArray: (test: any) => test is Array<any>;
|
|
22
10
|
|
|
23
11
|
declare const isBoolean: (test: any) => test is boolean;
|
|
@@ -34,6 +22,7 @@ type TypeArrayAny = TypeArray<any>;
|
|
|
34
22
|
type TypeArrayString = TypeArray<string>;
|
|
35
23
|
type TypeArrayNumber = TypeArray<number>;
|
|
36
24
|
type TypeArrayFunction = TypeArray<TypeCallbackFunction>;
|
|
25
|
+
type TypeKey = number | string | symbol;
|
|
37
26
|
type TypeNullable<T> = T | null;
|
|
38
27
|
type TypeScalar = boolean | number | string;
|
|
39
28
|
type TypeObject<T, K extends keyof any = string> = {
|
|
@@ -80,6 +69,20 @@ declare const isUndefined: (test: any) => test is undefined;
|
|
|
80
69
|
|
|
81
70
|
declare const type: (test: any) => string;
|
|
82
71
|
|
|
72
|
+
declare const countArray: <T extends TypeKey>(arr: Array<T>) => TypeObject<number, string>;
|
|
73
|
+
|
|
74
|
+
declare const randomElement: <T>(arr: Array<T>) => T | null;
|
|
75
|
+
|
|
76
|
+
declare const rangeArray: (start: number, end: number, step?: number) => Array<number>;
|
|
77
|
+
|
|
78
|
+
declare const shuffleArray: <T>(arr: Array<T>) => Array<T>;
|
|
79
|
+
|
|
80
|
+
declare const toArray: (value: any) => Array<any>;
|
|
81
|
+
|
|
82
|
+
declare const uniqueArray: <T>(arr: Array<T>) => Array<T>;
|
|
83
|
+
|
|
84
|
+
declare const toBool: (value: string) => boolean;
|
|
85
|
+
|
|
83
86
|
type CacheCallback = (key: any) => TypeObject<any, string | symbol>;
|
|
84
87
|
|
|
85
88
|
declare const cache: () => CacheCallback;
|
|
@@ -154,6 +157,14 @@ interface ILoopCallbacks {
|
|
|
154
157
|
|
|
155
158
|
declare const loop: (callback: TypeCallbackFunction, ms: number) => ILoopCallbacks;
|
|
156
159
|
|
|
160
|
+
declare const isEmpty: (test: string | Array<any>) => boolean;
|
|
161
|
+
|
|
162
|
+
declare const isFalse: (test?: any) => boolean;
|
|
163
|
+
|
|
164
|
+
declare const isNotEmpty: (test: string | Array<any>) => boolean;
|
|
165
|
+
|
|
166
|
+
declare const isTrue: (test?: any) => boolean;
|
|
167
|
+
|
|
157
168
|
declare const noop: () => void;
|
|
158
169
|
|
|
159
170
|
type EachCallback = TypeCallback<any, string | number, any, any>;
|
|
@@ -371,4 +382,4 @@ declare class Validation {
|
|
|
371
382
|
|
|
372
383
|
type ValidationCallbackAsync = (value: any) => Promise<IValidationResult>;
|
|
373
384
|
|
|
374
|
-
export { type CacheCallback, type EachCallback, type EachValue, type EventCallback, EventEmitter, type EventList, type ForEachCallback, Hash, type IDebounceCallbacks, type IEventDisposable, type ILoopCallbacks, type IValidationResult, RandomString, type TypeArray, type TypeArrayAny, type TypeArrayFunction, type TypeArrayNumber, type TypeArrayString, type TypeCallback, type TypeCallbackArray, type TypeCallbackFunction, type TypeCallbackMap, type TypeCallbackObject, 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, cutText, dateFormat, dateRange, debounce, decodeHTML, denied, each, encodeHTML, forEachAsync, forEachIndex, forEachKey, forEachSeries, forLoop, hexToRgb, hslToRgb, isArray, isBoolean, isCharacter, isDate, isDef, isDigit, isFloat, isFunction, isInteger, isLetter, isMap, isNull, isNumber, isObject, isPlainObject, isRegExp, isScalar, isSet, isSpecialChar, isString, isSymbol, 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 };
|
|
385
|
+
export { type CacheCallback, type EachCallback, type EachValue, type EventCallback, EventEmitter, type EventList, type ForEachCallback, Hash, type IDebounceCallbacks, type IEventDisposable, type ILoopCallbacks, type IValidationResult, 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 };
|
package/dist/index.esm.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @andrewcaires/utils.js v0.4.
|
|
2
|
+
* @andrewcaires/utils.js v0.4.2
|
|
3
3
|
* JavaScript utility library for web and nodejs development
|
|
4
4
|
* (c) 2024 Andrew Caires
|
|
5
5
|
* @license: MIT
|
|
6
6
|
*/
|
|
7
|
-
const t=(t,e)=>{const s=[];for(let r=0;r<t.length;r+=e)s.push(t.slice(r,r+e));return s},e=(t,e,s)=>Math.max(e,Math.min(s,t)),s=(t,s,r)=>t+(s-t)*e(r,0,1),r=(t,e)=>Math.floor(Math.random()*(e-t+1)+t),i=t=>t.length?t[r(0,t.length-1)]:null,n=(t,e,s=1)=>Array.from({length:(e-t)/s+1},((e,r)=>t+r*s)),h=t=>{for(let e=t.length-1;e>0;e--){const s=r(0,e);[t[e],t[s]]=[t[s],t[e]]}return t},a={},u=t=>null==t?"null":a[a.toString.call(t)]||"object";["Array","AsyncFunction","Boolean","Date","Function","Map","Number","Object","RegExp","Set","String"].forEach((t=>a["[object "+t+"]"]=t.toLowerCase()));const l=t=>"array"==u(t),o=t=>"boolean"==u(t),c=t=>"date"==u(t),p=t=>"null"!=u(t),m=t=>"number"==u(t),d=t=>m(t)&&!!(t%1),v=t=>"function"==typeof t,f=t=>m(t)&&!(t%1),y=t=>"map"==u(t),g=t=>null===t,_=t=>"object"==u(t),x=t=>_(t)&&t.constructor===Object,b=t=>"regexp"==u(t),w=["boolean","number","string"],k=t=>-1!=w.indexOf(u(t)),S=t=>"set"==u(t),j=t=>"string"==typeof t,O=t=>"symbol"==typeof t,C=t=>void 0===t,M=t=>l(t)?t:p(t)?[t]:[],A=t=>t.filter(((t,e,s)=>s.indexOf(t)===e)),I=t=>"true"===t||"1"===t,D=()=>{const t=[],e=[];return s=>{let r=t.indexOf(s);return-1==r&&(t.push(s),e.push({}),r=e.length-1),e[r]}},L=(t,e,s)=>{for(let r=0;r<t.length&&!1!==e.call(s,t[r],r,t);r++);return t},U=(t,e,s)=>{let r="";const i=Object.keys(t);for(let n=0;n<i.length&&(r=i[n],!1!==e.call(s,t[r],r,t));n++);return t},E=(t,e,s)=>l(t)?L(t,e,s):_(t)?U(t,e,s):t,N=(t,e,s)=>{for(let r=1;r<=t&&!1!==e.call(s,r,t);r++);return t},F=(t,e,s)=>Object.fromEntries(Object.entries(t).map((([r,i])=>[r,e.call(s,i,r,t)]))),q=t=>parseInt(null!=t?t:"0",16)||0,T=t=>{var e;return(null===(e=t.replace(/^#/,"").match(/.{1,2}/g))||void 0===e?void 0:e.map(q))||[]},Y=t=>("0"+t.toString(16)).slice(-2),H=(t,e,s)=>"#"+Y(t)+Y(e)+Y(s),P=(t,s)=>{const r=T(t);s=e(s,0,1);const[i,n,h]=r.map((t=>Math.round(t*s)));return H(i,n,h)},Z=(t,s)=>{const r=T(t);s=e(s,0,1);const[i,n,h]=r.map((t=>Math.round(t+(255-t)*s)));return H(i,n,h)},$={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)=>F(null!=e?e:$,(e=>0==e?t:e>0?Z(t,e):P(t,1- -1*e))),J=(t,e,s)=>{t/=60;const r=(1-Math.abs(2*s-1))*e,i=r*(1-Math.abs(t%2-1));let n=[0,0,0];t<=1?n=[r,i,0]:t<=2?n=[i,r,0]:t<=3?n=[0,r,i]:t<=4?n=[0,i,r]:t<=5?n=[i,0,r]:t<=6&&(n=[r,0,i]);const h=s-.5*r;return[Math.round(255*(n[0]+h)),Math.round(255*(n[1]+h)),Math.round(255*(n[2]+h))]},W=(t,e,s,r,i)=>0===t?0:e===s?(r-i)/t%6:e===r?(i-s)/t+2:e===i?(s-r)/t+4:0,B=(t,e)=>0===t?0:t/(1-Math.abs(2*e-1)),R=(t,e,s)=>{const[r,i,n]=((...t)=>t.map((t=>t/255)))(t,e,s),h=Math.max(r,i,n),a=Math.min(r,i,n),u=h-a,l=(a+h)/2;return[60*W(u,h,r,i,n),B(u,l),l]};class G{constructor(t){this.key=this.shuffle(G.dictionary,t,!1)}encrypt(t){return this.shuffle(t,this.key,!1)}decrypt(t){return this.shuffle(t,this.key,!0)}index(t,e,s){return[G.dictionary.indexOf(t[s]),G.dictionary.indexOf(e[s%e.length])]}result(t,e,s){return G.dictionary[(s?t-e+G.dictionary.length:t+e)%G.dictionary.length]}shuffle(t,e,s){let r="";for(let i=0;i<t.length;i++){const[n,h]=this.index(t,e,i);r+=-1===n||-1===h?t[i]:this.result(n,h,s)}return r}}G.dictionary="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";const K=t=>Math.random().toString(16).slice(t),Q=()=>K(-3),V=()=>K(-4),X=()=>V()+V(),tt=()=>X()+X(),et=()=>Q()+V(),st=()=>tt()+tt()+tt()+tt(),rt=()=>X()+"-"+V()+"-4"+Q()+"-"+V()+"-"+(X()+V()),it=t=>("0"+t.toString()).slice(-2),nt={"%y":t=>it(t.getFullYear()),"%Y":t=>t.getFullYear().toString(),"%m":t=>it(t.getMonth()+1),"%d":t=>it(t.getDate()),"%H":t=>it(t.getHours()),"%M":t=>it(t.getMinutes()),"%S":t=>it(t.getSeconds())},ht=(t,e)=>(e=null!=e?e:new Date,t.replace(/%[yYmdHMS]/g,(t=>nt[t]?nt[t](e):t.slice(1)))),at=(t,e)=>{const s=new Date(t),r=[];for(;t<e;)s.setDate(s.getDate()+1),r.push(new Date(s));return r},ut=36e5,lt=24*ut,ot={ms:1,s:1e3,m:6e4,h:ut,d:lt,w:7*lt,y:315576e5},ct=["y","d","h","m","s","ms"],pt=t=>{const e=[];return ct.forEach((s=>{const r=ot[s],i=(t-t%r)/r;i&&(t-=i*r,e.push(i.toString()+s))})),e.join(" ")},mt=t=>{const e=/(-?(?:\d+)?\.?\d+) *(ms|s|m|h|d|w|y)/gm;let s,r=0;for(;null!==(s=e.exec(t));)s.index===e.lastIndex&&e.lastIndex++,r+=parseFloat(s[1])*ot[s[2]]||0;return r},dt=(t,e)=>{let s;const r=()=>{s&&clearTimeout(s)};return{cancel:r,run(...i){r(),s=setTimeout((()=>t(...i)),e)}}};class vt{constructor(){this.events=new Map}on(t,e){const s=this.events.get(t);return s?s.push(e):this.events.set(t,[e]),{dispose:()=>this.off(t,e)}}once(t,e){const s=r=>{e(r),this.off(t,s)};return this.on(t,s),{dispose:()=>this.off(t,s)}}off(t,e){const s=this.events.get(t);if(e){if(s){const t=s.indexOf(e);t>=0&&s.splice(t,1)}}else this.events.set(t,[])}emit(t,e){const s=this.events.get(t);s&&s.forEach((t=>t(e)))}}function ft(t,e,s,r){return new(s||(s=Promise))((function(i,n){function h(t){try{u(r.next(t))}catch(t){n(t)}}function a(t){try{u(r.throw(t))}catch(t){n(t)}}function u(t){var e;t.done?i(t.value):(e=t.value,e instanceof s?e:new s((function(t){t(e)}))).then(h,a)}u((r=r.apply(t,e||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const yt=(t,e)=>{let s=!1;const r=()=>ft(void 0,void 0,void 0,(function*(){s&&(yield t(),setTimeout(r,e))}));return{start(){s||(s=!0,r())},stop(){s=!1}}},gt=()=>{},_t=(t,e)=>e(t.toLowerCase().replace(/\W+/g," ")).replace(/\s/g,""),xt=t=>_t(t,(t=>t.replace(/\s(\w)/g,(t=>t.toUpperCase())))),bt=xt,wt=(t,e)=>{if(t.length>e){const s=t.substring(0,e).split(" ");return s.pop(),s.join(" ")+"..."}return t},kt=/&(amp|apos|lt|gt|nbsp|quot);/g,St={amp:"&",apos:"'",lt:"<",gt:">",nbsp:" ",quot:'"'},jt=t=>t.replace(kt,((t,e)=>St[e])).replace(/&#(\d+);/gi,((t,e)=>String.fromCharCode(parseInt(e,10)))),Ot=t=>t.replace(/[^0-9A-Za-z ]/g,(t=>"&#"+t.charCodeAt(0)+";")),Ct=t=>/^[\w]$/.test(t),Mt=t=>/^[\d]$/.test(t),At=t=>/^[A-Za-z]$/.test(t),It=t=>/^[^\w]$/.test(t),Dt=t=>{if(m(t))return t+"px";const e=(t=>/(-?(?:\d+)?\.?\d+) *(px|%|cm|mm|in|pt|pc|en|ex|ch|rem|vw|vh|vmin|vmax)*/g.exec(t))(t);return e?parseFloat(e[1])+(e[2]||"px"):"0px"},Lt=t=>t.split("").map((t=>Math.random()<.5?t.toUpperCase():t.toLowerCase())).join(""),Ut=t=>h(t.split("")).join("");class Et{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 Et).chars()}lower(){return this.hasLower=!0,this}static lower(){return(new Et).lower()}make(t){let e="";this.hasSpace&&(e+=this._space),this.hasNumbers&&(e+=this._numbers),this.hasSymbols&&(e+=this._symbols),this.hasUpper&&!this.hasChars&&(e+=this._upper),this.hasLower&&!this.hasChars&&(e+=this._lower),this.hasChars&&(e+=this._chars);let s="";if(t&&e.length){e=Ut(e);for(let i=0;i<t;i++)s+=e.charAt(r(0,e.length-1))}return s}numbers(){return this.hasNumbers=!0,this}static numbers(){return(new Et).numbers()}space(){return this.hasSpace=!0,this}static space(){return(new Et).space()}symbols(){return this.hasSymbols=!0,this}static symbols(){return(new Et).symbols()}upper(){return this.hasUpper=!0,this}static upper(){return(new Et).upper()}}const Nt=t=>t.split("").reverse().join(""),Ft=t=>_t(t,(t=>t.replace(/(\w)(\w*)/g,((t,e,s)=>e.toUpperCase()+s)))),qt=(t,e)=>e(t.value)?t.value:(t=>(t.maskIndex--,""))(t),Tt={"#":t=>t.value,0:t=>qt(t,Mt),9:t=>qt(t,Mt),A:t=>qt(t,At),Z:t=>qt(t,At),L:t=>qt(t,At).toLowerCase(),U:t=>qt(t,At).toUpperCase(),S:t=>qt(t,It)},Yt=t=>{t.maskIndex++,t.textIndex++;const{mask:e,maskIndex:s,text:r,textIndex:i}=t;t.key=e[s],t.value=r[i];const{key:n,value:h}=t;return C(n)||C(h)?"":(t=>Tt[t.key]?Tt[t.key](t):(t.key!=t.value&&t.textIndex--,t.key))(t)+Yt(t)},Ht=(t,e)=>Yt({mask:t,maskIndex:-1,text:e,textIndex:-1,key:"",value:""}),Pt=(t,e)=>Nt(Ht(Nt(t),Nt(e))),Zt=(t,e,s)=>(s++,e=parseInt((e||"0").replace(/\W/g,"")).toString(),Pt(t,e.length<s?("0".repeat(s)+e).slice(-1*s):e)),$t=(t,e)=>t.length==Ht(t,e).length,zt=(t,e)=>t.reduce(((t,s)=>Object.assign(Object.assign({},t),{[s]:e[s]})),{}),Jt=(t,e)=>zt(Object.keys(e).filter((e=>-1==t.indexOf(e))),e),Wt=(t,...e)=>{if(!e.length)return t;const s=e.shift();if(x(t)&&x(s))for(const e in s)x(s[e])?(t[e]||(t=Object.assign(Object.assign({},t),{[e]:{}})),t[e]=Wt(t[e],s[e])):t=Object.assign(Object.assign({},t),{[e]:s[e]});return Wt(t,...e)},Bt=(t,e,s)=>ft(void 0,void 0,void 0,(function*(){yield Promise.allSettled(t.map(((r,i)=>e.call(s,r,i,t)))).catch(gt)})),Rt=(t,e,s)=>ft(void 0,void 0,void 0,(function*(){for(let r=0;r<t.length;r++)yield e.call(s,t[r],r,t).catch(gt)})),Gt=t=>new Promise((e=>setTimeout(e,t)));class Kt{constructor(){this.name="",this._error="",this._filter=[],this._type="any",this.rules=[],this.custom=[]}empty(t){return this._value=t,this.unshift((t=>{const e=p(t);return{break:!e,value:e?t:v(this._value)?this._value():this._value}}))}error(t){return this._error=t,this}filter(...t){return this._filter=t,this.unshift((t=>{const e=-1==this._filter.indexOf(t);return{break:!e,value:e?t:void 0}}))}from(t){return this.source=t,this}invalid(t){return{error:this._error?this._error:this.name?this.name+":"+t:t}}parse(){return this.unshift((t=>({value:t})))}push(t){return this.rules.push(t),this}required(){return this.unshift((t=>p(t)?{value:t}:this.invalid("["+this._type+"].required")))}test(t){return!j(this.validate(t).error)}testAsync(t){return ft(this,void 0,void 0,(function*(){return!j((yield this.validateAsync(t)).error)}))}unshift(t){return this.rules.unshift(t),this}validate(t){if(this.custom.length)return this.invalid("[async]");let e={value:t};for(let t=0;t<this.rules.length;t++){if(e=this.rules[t](e.value),e.error)return{error:e.error};if(e.break)return{value:e.value}}return{value:e.value}}validateAsync(t){return ft(this,void 0,void 0,(function*(){let e=this.validate(t);if(e.error)return{error:e.error};for(let t=0;t<this.custom.length;t++){if(e=yield this.custom[t](e.value),e.error)return{error:e.error};if(e.break)return{value:e.value}}return{value:e.value}}))}}class Qt extends Kt{constructor(){super(),this._length=0,this._max=0,this._min=0,this._type="array",this.push((t=>{if(l(t)){if(this._items){this._items.name="";for(let e=0;e<t.length;e++){const{error:s,value:r}=this._items.validate(t[e]);if(s)return this.invalid("["+this._type+"]< "+s+"["+e+"] >");t[e]=r}}return{value:t}}return this.invalid("["+this._type+"]")}))}between(t,e){return this.min(t),this.max(e)}items(t){return this._items=t,this}length(t){return this._length=t,this.push((t=>t.length==this._length?{value:t}:this.invalid("["+this._type+"].length("+this._length+")")))}max(t){return this._max=t,this.push((t=>t.length<=this._max?{value:t}:this.invalid("["+this._type+"].max("+this._max+")")))}min(t){return this._min=t,this.push((t=>t.length>=this._min?{value:t}:this.invalid("["+this._type+"].min("+this._min+")")))}}class Vt extends Kt{constructor(){super(),this._type="boolean",this.push((t=>o(t)?{value:t}:this.invalid("["+this._type+"]")))}parse(){return this.unshift((t=>({value:p(t)?-1!=[1,"1",!0,"true"].indexOf(t):t})))}}class Xt extends Kt{constructor(){super(),this._type="date",this._format="",this.push((t=>isNaN(new Date(t).getTime())?this.invalid("["+this._type+"]"):{value:t}))}format(t){return this._format=t,this.push((t=>({value:ht(this._format,new Date(t))})))}parse(){return this.unshift((t=>(j(t)&&t.length<=10&&(t+=" 12:00"),{value:new Date(t)})))}}class te extends Kt{constructor(){super(),this._max=0,this._min=0,this._type="number",this.push((t=>m(t)?{value:t}:this.invalid("["+this._type+"]")))}between(t,e){return this.min(t),this.max(e)}max(t){return this._max=t,this.push((t=>t<=this._max?{value:t}:this.invalid("["+this._type+"].max("+this._max+")")))}min(t){return this._min=t,this.push((t=>t>=this._min?{value:t}:this.invalid("["+this._type+"].min("+this._min+")")))}parse(){return this.unshift((t=>({value:p(t)?parseFloat(t):t})))}}class ee extends Kt{constructor(){super(),this._keys={},this._type="object",this.push((t=>{if(_(t)){const e=[],s={};return Object.keys(this._keys).forEach((r=>{var i;const n=this._keys[r];n.name=null!==(i=n.source)&&void 0!==i?i:r;const{error:h,value:a}=n.validate(t[n.name]);h&&e.push(h),p(a)&&(s[r]=a)})),e.length?this.invalid("["+this._type+"]{ "+e.join(", ")+" }"):{value:s}}return this.invalid("["+this._type+"]")}))}keys(t){return this._keys=t||{},this}parse(){return this.unshift((t=>{if(!_(t))try{t=JSON.parse(t)}catch(t){return this.invalid("["+this._type+"]")}const e=Object.keys(this._keys);return{value:e.length?zt(e,t):t}}))}}class se extends Kt{constructor(){super(),this._length=0,this._max=0,this._min=0,this._type="string",this.push((t=>j(t)?{value:t}:this.invalid("["+this._type+"]")))}between(t,e){return this.min(t),this.max(e)}email(){return this.push((t=>/^[\w-\\.]+@([\w-]+\.)+[\w-]{2,4}$/i.test(t)?{value:t}:this.invalid("["+this._type+"].email")))}length(t){return this._length=t,this.push((t=>t.length==this._length?{value:t}:this.invalid("["+this._type+"].length("+this._length+")")))}lowerCase(){return this.push((t=>({value:t.toLowerCase()})))}lowerCamelCase(){return this.push((t=>({value:xt(t)})))}max(t){return this._max=t,this.push((t=>t.length<=this._max?{value:t}:this.invalid("["+this._type+"].max("+this._max+")")))}mask(t){return this.push((e=>({value:Ht(t,e)})))}min(t){return this._min=t,this.push((t=>t.length>=this._min?{value:t}:this.invalid("["+this._type+"].min("+this._min+")")))}parse(){return this.unshift((t=>({value:_(t)?JSON.stringify(t):p(t)?t.toString():t})))}required(){return this.push((t=>t.length?{value:t}:this.invalid("["+this._type+"].required")))}trim(){return this.push((t=>({value:t.trim()})))}upperCase(){return this.push((t=>({value:t.toUpperCase()})))}upperCamelCase(){return this.push((t=>({value:Ft(t)})))}}class re{static array(t){return(new Qt).items(t)}static boolean(){return new Vt}static date(){return new Xt}static number(){return new te}static object(t){return(new ee).keys(t)}static string(){return new se}test(t,...e){return!j(re.validate(t,...e).error)}testAsync(t,...e){return ft(this,void 0,void 0,(function*(){return!j((yield re.validateAsync(t,...e)).error)}))}static validate(t,...e){let s={value:t};for(let t=0;t<e.length;t++)if(s=e[t].validate(s.value),s.error)return{error:s.error};return s}static validateAsync(t,...e){return ft(this,void 0,void 0,(function*(){let s={value:t};for(let t=0;t<e.length;t++)if(s=yield e[t].validateAsync(s.value),s.error)return{error:s.error};return s}))}}export{vt as EventEmitter,G as Hash,Et as RandomString,re as Validation,Kt as ValidationBase,zt as allowed,D as cache,bt as camelCase,t as chunkArray,e as clamp,z as colorPalette,wt as cutText,ht as dateFormat,at as dateRange,dt as debounce,jt as decodeHTML,Jt as denied,E as each,Ot as encodeHTML,Bt as forEachAsync,L as forEachIndex,U as forEachKey,Rt as forEachSeries,N as forLoop,T as hexToRgb,J as hslToRgb,l as isArray,o as isBoolean,Ct as isCharacter,c as isDate,p as isDef,Mt as isDigit,d as isFloat,v as isFunction,f as isInteger,At as isLetter,y as isMap,g as isNull,m as isNumber,_ as isObject,x as isPlainObject,b as isRegExp,k as isScalar,S as isSet,It as isSpecialChar,j as isString,O as isSymbol,C as isUndefined,s as lerp,yt as loop,xt as lowerCamelCase,F as map,Ht as mask,Zt as maskMoney,Pt as maskReverse,$t as maskTest,Wt as merge,pt as msToString,gt as noop,mt as parseMs,Dt as parseSize,r as random,Lt as randomCase,i as randomElement,n as rangeArray,H as rgbToHex,R as rgbToHsl,P as shadeColor,h as shuffleArray,Ut as shuffleString,et as simpleID,Gt as sleep,Nt as stringReverse,Z as tintColor,M as toArray,I as toBool,u as type,A as uniqueArray,st as uniqueID,Ft as upperCamelCase,rt as uuidv4};
|
|
7
|
+
const t=(t,e)=>{const s=[];for(let r=0;r<t.length;r+=e)s.push(t.slice(r,r+e));return s},e=t=>{const e={};return t.forEach((t=>{const s=t.toString();e[s]=(e[s]||0)+1})),e},s=(t,e,s)=>Math.max(e,Math.min(s,t)),r=(t,e,r)=>t+(e-t)*s(r,0,1),i=(t,e)=>Math.floor(Math.random()*(e-t+1)+t),n=t=>t.length?t[i(0,t.length-1)]:null,h=(t,e,s=1)=>Array.from({length:(e-t)/s+1},((e,r)=>t+r*s)),a=t=>{for(let e=t.length-1;e>0;e--){const s=i(0,e);[t[e],t[s]]=[t[s],t[e]]}return t},u={},l=t=>null==t?"null":u[u.toString.call(t)]||"object";["Array","AsyncFunction","Boolean","Date","Function","Map","Number","Object","RegExp","Set","String"].forEach((t=>u["[object "+t+"]"]=t.toLowerCase()));const o=t=>"array"==l(t),c=t=>"boolean"==l(t),p=t=>"date"==l(t),m=t=>"null"!=l(t),d=t=>"number"==l(t),v=t=>d(t)&&!!(t%1),f=t=>"function"==typeof t,y=t=>d(t)&&!(t%1),g=t=>"map"==l(t),_=t=>null===t,x=t=>"object"==l(t),b=t=>x(t)&&t.constructor===Object,w=t=>"regexp"==l(t),k=["boolean","number","string"],S=t=>-1!=k.indexOf(l(t)),O=t=>"set"==l(t),j=t=>"string"==typeof t,C=t=>"symbol"==typeof t,M=t=>void 0===t,A=t=>o(t)?t:m(t)?[t]:[],I=t=>t.filter(((t,e,s)=>s.indexOf(t)===e)),D=t=>"true"===t||"1"===t,E=()=>{const t=[],e=[];return s=>{let r=t.indexOf(s);return-1==r&&(t.push(s),e.push({}),r=e.length-1),e[r]}},L=(t,e,s)=>{for(let r=0;r<t.length&&!1!==e.call(s,t[r],r,t);r++);return t},U=(t,e,s)=>{let r="";const i=Object.keys(t);for(let n=0;n<i.length&&(r=i[n],!1!==e.call(s,t[r],r,t));n++);return t},N=(t,e,s)=>o(t)?L(t,e,s):x(t)?U(t,e,s):t,F=(t,e,s)=>{for(let r=1;r<=t&&!1!==e.call(s,r,t);r++);return t},q=(t,e,s)=>Object.fromEntries(Object.entries(t).map((([r,i])=>[r,e.call(s,i,r,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,s)=>"#"+H(t)+H(e)+H(s),Z=(t,e)=>{const r=Y(t);e=s(e,0,1);const[i,n,h]=r.map((t=>Math.round(t*e)));return P(i,n,h)},$=(t,e)=>{const r=Y(t);e=s(e,0,1);const[i,n,h]=r.map((t=>Math.round(t+(255-t)*e)));return P(i,n,h)},z={50:.95,100:.9,200:.75,300:.6,400:.3,500:0,600:-.1,700:-.25,800:-.4,900:-.55,950:-.71},J=(t,e)=>q(null!=e?e:z,(e=>0==e?t:e>0?$(t,e):Z(t,1- -1*e))),W=(t,e,s)=>{t/=60;const r=(1-Math.abs(2*s-1))*e,i=r*(1-Math.abs(t%2-1));let n=[0,0,0];t<=1?n=[r,i,0]:t<=2?n=[i,r,0]:t<=3?n=[0,r,i]:t<=4?n=[0,i,r]:t<=5?n=[i,0,r]:t<=6&&(n=[r,0,i]);const h=s-.5*r;return[Math.round(255*(n[0]+h)),Math.round(255*(n[1]+h)),Math.round(255*(n[2]+h))]},B=(t,e,s,r,i)=>0===t?0:e===s?(r-i)/t%6:e===r?(i-s)/t+2:e===i?(s-r)/t+4:0,R=(t,e)=>0===t?0:t/(1-Math.abs(2*e-1)),G=(t,e,s)=>{const[r,i,n]=((...t)=>t.map((t=>t/255)))(t,e,s),h=Math.max(r,i,n),a=Math.min(r,i,n),u=h-a,l=(a+h)/2;return[60*B(u,h,r,i,n),R(u,l),l]};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,s){return[K.dictionary.indexOf(t[s]),K.dictionary.indexOf(e[s%e.length])]}result(t,e,s){return K.dictionary[(s?t-e+K.dictionary.length:t+e)%K.dictionary.length]}shuffle(t,e,s){let r="";for(let i=0;i<t.length;i++){const[n,h]=this.index(t,e,i);r+=-1===n||-1===h?t[i]:this.result(n,h,s)}return r}}K.dictionary="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";const Q=t=>Math.random().toString(16).slice(t),V=()=>Q(-3),X=()=>Q(-4),tt=()=>X()+X(),et=()=>tt()+tt(),st=()=>V()+X(),rt=()=>et()+et()+et()+et(),it=()=>tt()+"-"+X()+"-4"+V()+"-"+X()+"-"+(tt()+X()),nt=t=>("0"+t.toString()).slice(-2),ht={"%y":t=>nt(t.getFullYear()),"%Y":t=>t.getFullYear().toString(),"%m":t=>nt(t.getMonth()+1),"%d":t=>nt(t.getDate()),"%H":t=>nt(t.getHours()),"%M":t=>nt(t.getMinutes()),"%S":t=>nt(t.getSeconds())},at=(t,e)=>(e=null!=e?e:new Date,t.replace(/%[yYmdHMS]/g,(t=>ht[t]?ht[t](e):t.slice(1)))),ut=(t,e)=>{const s=new Date(t),r=[];for(;t<e;)s.setDate(s.getDate()+1),r.push(new Date(s));return r},lt=36e5,ot=24*lt,ct={ms:1,s:1e3,m:6e4,h:lt,d:ot,w:7*ot,y:315576e5},pt=["y","d","h","m","s","ms"],mt=t=>{const e=[];return pt.forEach((s=>{const r=ct[s],i=(t-t%r)/r;i&&(t-=i*r,e.push(i.toString()+s))})),e.join(" ")},dt=t=>{const e=/(-?(?:\d+)?\.?\d+) *(ms|s|m|h|d|w|y)/gm;let s,r=0;for(;null!==(s=e.exec(t));)s.index===e.lastIndex&&e.lastIndex++,r+=parseFloat(s[1])*ct[s[2]]||0;return r},vt=(t,e)=>{let s;const r=()=>{s&&clearTimeout(s)};return{cancel:r,run(...i){r(),s=setTimeout((()=>t(...i)),e)}}};class ft{constructor(){this.events=new Map}on(t,e){const s=this.events.get(t);return s?s.push(e):this.events.set(t,[e]),{dispose:()=>this.off(t,e)}}once(t,e){const s=r=>{e(r),this.off(t,s)};return this.on(t,s),{dispose:()=>this.off(t,s)}}off(t,e){const s=this.events.get(t);if(e){if(s){const t=s.indexOf(e);t>=0&&s.splice(t,1)}}else this.events.set(t,[])}emit(t,e){const s=this.events.get(t);s&&s.forEach((t=>t(e)))}}function yt(t,e,s,r){return new(s||(s=Promise))((function(i,n){function h(t){try{u(r.next(t))}catch(t){n(t)}}function a(t){try{u(r.throw(t))}catch(t){n(t)}}function u(t){t.done?i(t.value):function(t){return t instanceof s?t:new s((function(e){e(t)}))}(t.value).then(h,a)}u((r=r.apply(t,e||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const gt=(t,e)=>{let s=!1;const r=()=>yt(void 0,void 0,void 0,(function*(){s&&(yield t(),setTimeout(r,e))}));return{start(){s||(s=!0,r())},stop(){s=!1}}},_t=t=>{var e;return 0==(null!==(e=null==t?void 0:t.length)&&void 0!==e?e:0)},xt=["",0,"0",null,!1,void 0],bt=t=>-1==xt.indexOf(t),wt=t=>!bt(t),kt=t=>!_t(t),St=()=>{},Ot=(t,e)=>e(t.toLowerCase().replace(/\W+/g," ")).replace(/\s/g,""),jt=t=>Ot(t,(t=>t.replace(/\s(\w)/g,(t=>t.toUpperCase())))),Ct=jt,Mt=(t,e)=>{if(t.length>e){const s=t.substring(0,e).split(" ");return s.pop(),s.join(" ")+"..."}return t},At=/&(amp|apos|lt|gt|nbsp|quot);/g,It={amp:"&",apos:"'",lt:"<",gt:">",nbsp:" ",quot:'"'},Dt=t=>t.replace(At,((t,e)=>It[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),Nt=t=>/^[A-Za-z]$/.test(t),Ft=t=>/^[^\w]$/.test(t),qt=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=>a(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 s="";if(t&&e.length){e=Yt(e);for(let r=0;r<t;r++)s+=e.charAt(i(0,e.length-1))}return s}numbers(){return this.hasNumbers=!0,this}static numbers(){return(new 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=>Ot(t,(t=>t.replace(/(\w)(\w*)/g,((t,e,s)=>e.toUpperCase()+s)))),$t=(t,e)=>e(t.value)?t.value:(t=>(t.maskIndex--,""))(t),zt={"#":t=>t.value,0:t=>$t(t,Ut),9:t=>$t(t,Ut),A:t=>$t(t,Nt),Z:t=>$t(t,Nt),L:t=>$t(t,Nt).toLowerCase(),U:t=>$t(t,Nt).toUpperCase(),S:t=>$t(t,Ft)},Jt=t=>{t.maskIndex++,t.textIndex++;const{mask:e,maskIndex:s,text:r,textIndex:i}=t;t.key=e[s],t.value=r[i];const{key:n,value:h}=t;return M(n)||M(h)?"":(t=>zt[t.key]?zt[t.key](t):(t.key!=t.value&&t.textIndex--,t.key))(t)+Jt(t)},Wt=(t,e)=>Jt({mask:t,maskIndex:-1,text:e,textIndex:-1,key:"",value:""}),Bt=(t,e)=>Pt(Wt(Pt(t),Pt(e))),Rt=(t,e,s)=>(s++,e=parseInt((e||"0").replace(/\W/g,"")).toString(),Bt(t,e.length<s?("0".repeat(s)+e).slice(-1*s):e)),Gt=(t,e)=>t.length==Wt(t,e).length,Kt=(t,e)=>t.reduce(((t,s)=>Object.assign(Object.assign({},t),{[s]:e[s]})),{}),Qt=(t,e)=>Kt(Object.keys(e).filter((e=>-1==t.indexOf(e))),e),Vt=(t,...e)=>{if(!e.length)return t;const s=e.shift();if(b(t)&&b(s))for(const e in s)b(s[e])?(t[e]||(t=Object.assign(Object.assign({},t),{[e]:{}})),t[e]=Vt(t[e],s[e])):t=Object.assign(Object.assign({},t),{[e]:s[e]});return Vt(t,...e)},Xt=(t,e,s)=>yt(void 0,void 0,void 0,(function*(){yield Promise.allSettled(t.map(((r,i)=>e.call(s,r,i,t)))).catch(St)})),te=(t,e,s)=>yt(void 0,void 0,void 0,(function*(){for(let r=0;r<t.length;r++)yield e.call(s,t[r],r,t).catch(St)})),ee=t=>new Promise((e=>setTimeout(e,t)));class se{constructor(){this.name="",this._error="",this._filter=[],this._type="any",this.rules=[],this.custom=[]}empty(t){return this._value=t,this.unshift((t=>{const e=m(t);return{break:!e,value:e?t:f(this._value)?this._value():this._value}}))}error(t){return this._error=t,this}filter(...t){return this._filter=t,this.unshift((t=>{const e=-1==this._filter.indexOf(t);return{break:!e,value:e?t:void 0}}))}from(t){return this.source=t,this}invalid(t){return{error:this._error?this._error:this.name?this.name+":"+t:t}}parse(){return this.unshift((t=>({value:t})))}push(t){return this.rules.push(t),this}required(){return this.unshift((t=>m(t)?{value:t}:this.invalid("["+this._type+"].required")))}test(t){return!j(this.validate(t).error)}testAsync(t){return yt(this,void 0,void 0,(function*(){return!j((yield this.validateAsync(t)).error)}))}unshift(t){return this.rules.unshift(t),this}validate(t){if(this.custom.length)return this.invalid("[async]");let e={value:t};for(let t=0;t<this.rules.length;t++){if(e=this.rules[t](e.value),e.error)return{error:e.error};if(e.break)return{value:e.value}}return{value:e.value}}validateAsync(t){return yt(this,void 0,void 0,(function*(){let e=this.validate(t);if(e.error)return{error:e.error};for(let t=0;t<this.custom.length;t++){if(e=yield this.custom[t](e.value),e.error)return{error:e.error};if(e.break)return{value:e.value}}return{value:e.value}}))}}class re extends se{constructor(){super(),this._length=0,this._max=0,this._min=0,this._type="array",this.push((t=>{if(o(t)){if(this._items){this._items.name="";for(let e=0;e<t.length;e++){const{error:s,value:r}=this._items.validate(t[e]);if(s)return this.invalid("["+this._type+"]< "+s+"["+e+"] >");t[e]=r}}return{value:t}}return this.invalid("["+this._type+"]")}))}between(t,e){return this.min(t),this.max(e)}items(t){return this._items=t,this}length(t){return this._length=t,this.push((t=>t.length==this._length?{value:t}:this.invalid("["+this._type+"].length("+this._length+")")))}max(t){return this._max=t,this.push((t=>t.length<=this._max?{value:t}:this.invalid("["+this._type+"].max("+this._max+")")))}min(t){return this._min=t,this.push((t=>t.length>=this._min?{value:t}:this.invalid("["+this._type+"].min("+this._min+")")))}}class ie extends se{constructor(){super(),this._type="boolean",this.push((t=>c(t)?{value:t}:this.invalid("["+this._type+"]")))}parse(){return this.unshift((t=>({value:m(t)?-1!=[1,"1",!0,"true"].indexOf(t):t})))}}class ne extends se{constructor(){super(),this._type="date",this._format="",this.push((t=>isNaN(new Date(t).getTime())?this.invalid("["+this._type+"]"):{value:t}))}format(t){return this._format=t,this.push((t=>({value:at(this._format,new Date(t))})))}parse(){return this.unshift((t=>(j(t)&&t.length<=10&&(t+=" 12:00"),{value:new Date(t)})))}}class he extends se{constructor(){super(),this._max=0,this._min=0,this._type="number",this.push((t=>d(t)?{value:t}:this.invalid("["+this._type+"]")))}between(t,e){return this.min(t),this.max(e)}max(t){return this._max=t,this.push((t=>t<=this._max?{value:t}:this.invalid("["+this._type+"].max("+this._max+")")))}min(t){return this._min=t,this.push((t=>t>=this._min?{value:t}:this.invalid("["+this._type+"].min("+this._min+")")))}parse(){return this.unshift((t=>({value:m(t)?parseFloat(t):t})))}}class ae extends se{constructor(){super(),this._keys={},this._type="object",this.push((t=>{if(x(t)){const e=[],s={};return Object.keys(this._keys).forEach((r=>{var i;const n=this._keys[r];n.name=null!==(i=n.source)&&void 0!==i?i:r;const{error:h,value:a}=n.validate(t[n.name]);h&&e.push(h),m(a)&&(s[r]=a)})),e.length?this.invalid("["+this._type+"]{ "+e.join(", ")+" }"):{value:s}}return this.invalid("["+this._type+"]")}))}keys(t){return this._keys=t||{},this}parse(){return this.unshift((t=>{if(!x(t))try{t=JSON.parse(t)}catch(t){return this.invalid("["+this._type+"]")}const e=Object.keys(this._keys);return{value:e.length?Kt(e,t):t}}))}}class ue extends se{constructor(){super(),this._length=0,this._max=0,this._min=0,this._type="string",this.push((t=>j(t)?{value:t}:this.invalid("["+this._type+"]")))}between(t,e){return this.min(t),this.max(e)}email(){return this.push((t=>/^[\w-\\.]+@([\w-]+\.)+[\w-]{2,4}$/i.test(t)?{value:t}:this.invalid("["+this._type+"].email")))}length(t){return this._length=t,this.push((t=>t.length==this._length?{value:t}:this.invalid("["+this._type+"].length("+this._length+")")))}lowerCase(){return this.push((t=>({value:t.toLowerCase()})))}lowerCamelCase(){return this.push((t=>({value:jt(t)})))}max(t){return this._max=t,this.push((t=>t.length<=this._max?{value:t}:this.invalid("["+this._type+"].max("+this._max+")")))}mask(t){return this.push((e=>({value:Wt(t,e)})))}min(t){return this._min=t,this.push((t=>t.length>=this._min?{value:t}:this.invalid("["+this._type+"].min("+this._min+")")))}parse(){return this.unshift((t=>({value:x(t)?JSON.stringify(t):m(t)?t.toString():t})))}required(){return this.push((t=>t.length?{value:t}:this.invalid("["+this._type+"].required")))}trim(){return this.push((t=>({value:t.trim()})))}upperCase(){return this.push((t=>({value:t.toUpperCase()})))}upperCamelCase(){return this.push((t=>({value:Zt(t)})))}}class le{static array(t){return(new re).items(t)}static boolean(){return new ie}static date(){return new ne}static number(){return new he}static object(t){return(new ae).keys(t)}static string(){return new ue}test(t,...e){return!j(le.validate(t,...e).error)}testAsync(t,...e){return yt(this,void 0,void 0,(function*(){return!j((yield le.validateAsync(t,...e)).error)}))}static validate(t,...e){let s={value:t};for(let t=0;t<e.length;t++)if(s=e[t].validate(s.value),s.error)return{error:s.error};return s}static validateAsync(t,...e){return yt(this,void 0,void 0,(function*(){let s={value:t};for(let t=0;t<e.length;t++)if(s=yield e[t].validateAsync(s.value),s.error)return{error:s.error};return s}))}}export{ft as EventEmitter,K as Hash,Ht as RandomString,le as Validation,se as ValidationBase,Kt as allowed,E as cache,Ct as camelCase,t as chunkArray,s as clamp,J as colorPalette,e as countArray,Mt as cutText,at as dateFormat,ut as dateRange,vt as debounce,Dt as decodeHTML,Qt as denied,N as each,Et as encodeHTML,Xt as forEachAsync,L as forEachIndex,U as forEachKey,te as forEachSeries,F as forLoop,Y as hexToRgb,W as hslToRgb,o as isArray,c as isBoolean,Lt as isCharacter,p as isDate,m as isDef,Ut as isDigit,_t as isEmpty,wt as isFalse,v as isFloat,f as isFunction,y as isInteger,Nt as isLetter,g as isMap,kt as isNotEmpty,_ as isNull,d as isNumber,x as isObject,b as isPlainObject,w as isRegExp,S as isScalar,O as isSet,Ft as isSpecialChar,j as isString,C as isSymbol,bt as isTrue,M as isUndefined,r as lerp,gt as loop,jt as lowerCamelCase,q as map,Wt as mask,Rt as maskMoney,Bt as maskReverse,Gt as maskTest,Vt as merge,mt as msToString,St as noop,dt as parseMs,qt as parseSize,i as random,Tt as randomCase,n as randomElement,h as rangeArray,P as rgbToHex,G as rgbToHsl,Z as shadeColor,a as shuffleArray,Yt as shuffleString,st as simpleID,ee as sleep,Pt as stringReverse,$ as tintColor,A as toArray,D as toBool,l as type,I as uniqueArray,rt as uniqueID,Zt 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.2
|
|
3
3
|
* JavaScript utility library for web and nodejs development
|
|
4
4
|
* (c) 2024 Andrew Caires
|
|
5
5
|
* @license: MIT
|
|
6
6
|
*/
|
|
7
|
-
var UtilsJS=function(t){"use strict";const e=(t,e,s)=>Math.max(e,Math.min(s,t)),s=(t,e)=>Math.floor(Math.random()*(e-t+1)+t),r=t=>{for(let e=t.length-1;e>0;e--){const r=s(0,e);[t[e],t[r]]=[t[r],t[e]]}return t},i={},n=t=>null==t?"null":i[i.toString.call(t)]||"object";["Array","AsyncFunction","Boolean","Date","Function","Map","Number","Object","RegExp","Set","String"].forEach((t=>i["[object "+t+"]"]=t.toLowerCase()));const a=t=>"array"==n(t),h=t=>"boolean"==n(t),u=t=>"null"!=n(t),l=t=>"number"==n(t),o=t=>"function"==typeof t,c=t=>"object"==n(t),p=t=>c(t)&&t.constructor===Object,m=["boolean","number","string"],d=t=>"string"==typeof t,v=t=>void 0===t,f=(t,e,s)=>{for(let r=0;r<t.length&&!1!==e.call(s,t[r],r,t);r++);return t},y=(t,e,s)=>{let r="";const i=Object.keys(t);for(let n=0;n<i.length&&(r=i[n],!1!==e.call(s,t[r],r,t));n++);return t},g=(t,e,s)=>Object.fromEntries(Object.entries(t).map((([r,i])=>[r,e.call(s,i,r,t)]))),_=t=>parseInt(null!=t?t:"0",16)||0,x=t=>{var e;return(null===(e=t.replace(/^#/,"").match(/.{1,2}/g))||void 0===e?void 0:e.map(_))||[]},b=t=>("0"+t.toString(16)).slice(-2),w=(t,e,s)=>"#"+b(t)+b(e)+b(s),k=(t,s)=>{const r=x(t);s=e(s,0,1);const[i,n,a]=r.map((t=>Math.round(t*s)));return w(i,n,a)},S=(t,s)=>{const r=x(t);s=e(s,0,1);const[i,n,a]=r.map((t=>Math.round(t+(255-t)*s)));return w(i,n,a)},C={50:.95,100:.9,200:.75,300:.6,400:.3,500:0,600:-.1,700:-.25,800:-.4,900:-.55,950:-.71},j=(t,e,s,r,i)=>0===t?0:e===s?(r-i)/t%6:e===r?(i-s)/t+2:e===i?(s-r)/t+4:0,M=(t,e)=>0===t?0:t/(1-Math.abs(2*e-1));class O{constructor(t){this.key=this.shuffle(O.dictionary,t,!1)}encrypt(t){return this.shuffle(t,this.key,!1)}decrypt(t){return this.shuffle(t,this.key,!0)}index(t,e,s){return[O.dictionary.indexOf(t[s]),O.dictionary.indexOf(e[s%e.length])]}result(t,e,s){return O.dictionary[(s?t-e+O.dictionary.length:t+e)%O.dictionary.length]}shuffle(t,e,s){let r="";for(let i=0;i<t.length;i++){const[n,a]=this.index(t,e,i);r+=-1===n||-1===a?t[i]:this.result(n,a,s)}return r}}O.dictionary="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";const A=t=>Math.random().toString(16).slice(t),I=()=>A(-3),E=()=>A(-4),D=()=>E()+E(),T=()=>D()+D(),L=t=>("0"+t.toString()).slice(-2),U={"%y":t=>L(t.getFullYear()),"%Y":t=>t.getFullYear().toString(),"%m":t=>L(t.getMonth()+1),"%d":t=>L(t.getDate()),"%H":t=>L(t.getHours()),"%M":t=>L(t.getMinutes()),"%S":t=>L(t.getSeconds())},F=(t,e)=>(e=null!=e?e:new Date,t.replace(/%[yYmdHMS]/g,(t=>U[t]?U[t](e):t.slice(1)))),N=36e5,q=24*N,H={ms:1,s:1e3,m:6e4,h:N,d:q,w:7*q,y:315576e5},R=["y","d","h","m","s","ms"];function P(t,e,s,r){return new(s||(s=Promise))((function(i,n){function a(t){try{u(r.next(t))}catch(t){n(t)}}function h(t){try{u(r.throw(t))}catch(t){n(t)}}function u(t){var e;t.done?i(t.value):(e=t.value,e instanceof s?e:new s((function(t){t(e)}))).then(a,h)}u((r=r.apply(t,e||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const B=()=>{},Y=(t,e)=>e(t.toLowerCase().replace(/\W+/g," ")).replace(/\s/g,""),z=t=>Y(t,(t=>t.replace(/\s(\w)/g,(t=>t.toUpperCase())))),J=z,Z=/&(amp|apos|lt|gt|nbsp|quot);/g,$={amp:"&",apos:"'",lt:"<",gt:">",nbsp:" ",quot:'"'},V=t=>/^[\d]$/.test(t),W=t=>/^[A-Za-z]$/.test(t),K=t=>/^[^\w]$/.test(t),G=t=>r(t.split("")).join("");class Q{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 Q).chars()}lower(){return this.hasLower=!0,this}static lower(){return(new Q).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=G(e);for(let i=0;i<t;i++)r+=e.charAt(s(0,e.length-1))}return r}numbers(){return this.hasNumbers=!0,this}static numbers(){return(new Q).numbers()}space(){return this.hasSpace=!0,this}static space(){return(new Q).space()}symbols(){return this.hasSymbols=!0,this}static symbols(){return(new Q).symbols()}upper(){return this.hasUpper=!0,this}static upper(){return(new Q).upper()}}const X=t=>t.split("").reverse().join(""),tt=t=>Y(t,(t=>t.replace(/(\w)(\w*)/g,((t,e,s)=>e.toUpperCase()+s)))),et=(t,e)=>e(t.value)?t.value:(t=>(t.maskIndex--,""))(t),st={"#":t=>t.value,0:t=>et(t,V),9:t=>et(t,V),A:t=>et(t,W),Z:t=>et(t,W),L:t=>et(t,W).toLowerCase(),U:t=>et(t,W).toUpperCase(),S:t=>et(t,K)},rt=t=>{t.maskIndex++,t.textIndex++;const{mask:e,maskIndex:s,text:r,textIndex:i}=t;t.key=e[s],t.value=r[i];const{key:n,value:a}=t;return v(n)||v(a)?"":(t=>st[t.key]?st[t.key](t):(t.key!=t.value&&t.textIndex--,t.key))(t)+rt(t)},it=(t,e)=>rt({mask:t,maskIndex:-1,text:e,textIndex:-1,key:"",value:""}),nt=(t,e)=>X(it(X(t),X(e))),at=(t,e)=>t.reduce(((t,s)=>Object.assign(Object.assign({},t),{[s]:e[s]})),{}),ht=(t,...e)=>{if(!e.length)return t;const s=e.shift();if(p(t)&&p(s))for(const e in s)p(s[e])?(t[e]||(t=Object.assign(Object.assign({},t),{[e]:{}})),t[e]=ht(t[e],s[e])):t=Object.assign(Object.assign({},t),{[e]:s[e]});return ht(t,...e)};class ut{constructor(){this.name="",this._error="",this._filter=[],this._type="any",this.rules=[],this.custom=[]}empty(t){return this._value=t,this.unshift((t=>{const e=u(t);return{break:!e,value:e?t:o(this._value)?this._value():this._value}}))}error(t){return this._error=t,this}filter(...t){return this._filter=t,this.unshift((t=>{const e=-1==this._filter.indexOf(t);return{break:!e,value:e?t:void 0}}))}from(t){return this.source=t,this}invalid(t){return{error:this._error?this._error:this.name?this.name+":"+t:t}}parse(){return this.unshift((t=>({value:t})))}push(t){return this.rules.push(t),this}required(){return this.unshift((t=>u(t)?{value:t}:this.invalid("["+this._type+"].required")))}test(t){return!d(this.validate(t).error)}testAsync(t){return P(this,void 0,void 0,(function*(){return!d((yield this.validateAsync(t)).error)}))}unshift(t){return this.rules.unshift(t),this}validate(t){if(this.custom.length)return this.invalid("[async]");let e={value:t};for(let t=0;t<this.rules.length;t++){if(e=this.rules[t](e.value),e.error)return{error:e.error};if(e.break)return{value:e.value}}return{value:e.value}}validateAsync(t){return P(this,void 0,void 0,(function*(){let e=this.validate(t);if(e.error)return{error:e.error};for(let t=0;t<this.custom.length;t++){if(e=yield this.custom[t](e.value),e.error)return{error:e.error};if(e.break)return{value:e.value}}return{value:e.value}}))}}class lt extends ut{constructor(){super(),this._length=0,this._max=0,this._min=0,this._type="array",this.push((t=>{if(a(t)){if(this._items){this._items.name="";for(let e=0;e<t.length;e++){const{error:s,value:r}=this._items.validate(t[e]);if(s)return this.invalid("["+this._type+"]< "+s+"["+e+"] >");t[e]=r}}return{value:t}}return this.invalid("["+this._type+"]")}))}between(t,e){return this.min(t),this.max(e)}items(t){return this._items=t,this}length(t){return this._length=t,this.push((t=>t.length==this._length?{value:t}:this.invalid("["+this._type+"].length("+this._length+")")))}max(t){return this._max=t,this.push((t=>t.length<=this._max?{value:t}:this.invalid("["+this._type+"].max("+this._max+")")))}min(t){return this._min=t,this.push((t=>t.length>=this._min?{value:t}:this.invalid("["+this._type+"].min("+this._min+")")))}}class ot extends ut{constructor(){super(),this._type="boolean",this.push((t=>h(t)?{value:t}:this.invalid("["+this._type+"]")))}parse(){return this.unshift((t=>({value:u(t)?-1!=[1,"1",!0,"true"].indexOf(t):t})))}}class ct extends ut{constructor(){super(),this._type="date",this._format="",this.push((t=>isNaN(new Date(t).getTime())?this.invalid("["+this._type+"]"):{value:t}))}format(t){return this._format=t,this.push((t=>({value:F(this._format,new Date(t))})))}parse(){return this.unshift((t=>(d(t)&&t.length<=10&&(t+=" 12:00"),{value:new Date(t)})))}}class pt extends ut{constructor(){super(),this._max=0,this._min=0,this._type="number",this.push((t=>l(t)?{value:t}:this.invalid("["+this._type+"]")))}between(t,e){return this.min(t),this.max(e)}max(t){return this._max=t,this.push((t=>t<=this._max?{value:t}:this.invalid("["+this._type+"].max("+this._max+")")))}min(t){return this._min=t,this.push((t=>t>=this._min?{value:t}:this.invalid("["+this._type+"].min("+this._min+")")))}parse(){return this.unshift((t=>({value:u(t)?parseFloat(t):t})))}}class mt extends ut{constructor(){super(),this._keys={},this._type="object",this.push((t=>{if(c(t)){const e=[],s={};return Object.keys(this._keys).forEach((r=>{var i;const n=this._keys[r];n.name=null!==(i=n.source)&&void 0!==i?i:r;const{error:a,value:h}=n.validate(t[n.name]);a&&e.push(a),u(h)&&(s[r]=h)})),e.length?this.invalid("["+this._type+"]{ "+e.join(", ")+" }"):{value:s}}return this.invalid("["+this._type+"]")}))}keys(t){return this._keys=t||{},this}parse(){return this.unshift((t=>{if(!c(t))try{t=JSON.parse(t)}catch(t){return this.invalid("["+this._type+"]")}const e=Object.keys(this._keys);return{value:e.length?at(e,t):t}}))}}class dt extends ut{constructor(){super(),this._length=0,this._max=0,this._min=0,this._type="string",this.push((t=>d(t)?{value:t}:this.invalid("["+this._type+"]")))}between(t,e){return this.min(t),this.max(e)}email(){return this.push((t=>/^[\w-\\.]+@([\w-]+\.)+[\w-]{2,4}$/i.test(t)?{value:t}:this.invalid("["+this._type+"].email")))}length(t){return this._length=t,this.push((t=>t.length==this._length?{value:t}:this.invalid("["+this._type+"].length("+this._length+")")))}lowerCase(){return this.push((t=>({value:t.toLowerCase()})))}lowerCamelCase(){return this.push((t=>({value:z(t)})))}max(t){return this._max=t,this.push((t=>t.length<=this._max?{value:t}:this.invalid("["+this._type+"].max("+this._max+")")))}mask(t){return this.push((e=>({value:it(t,e)})))}min(t){return this._min=t,this.push((t=>t.length>=this._min?{value:t}:this.invalid("["+this._type+"].min("+this._min+")")))}parse(){return this.unshift((t=>({value:c(t)?JSON.stringify(t):u(t)?t.toString():t})))}required(){return this.push((t=>t.length?{value:t}:this.invalid("["+this._type+"].required")))}trim(){return this.push((t=>({value:t.trim()})))}upperCase(){return this.push((t=>({value:t.toUpperCase()})))}upperCamelCase(){return this.push((t=>({value:tt(t)})))}}class vt{static array(t){return(new lt).items(t)}static boolean(){return new ot}static date(){return new ct}static number(){return new pt}static object(t){return(new mt).keys(t)}static string(){return new dt}test(t,...e){return!d(vt.validate(t,...e).error)}testAsync(t,...e){return P(this,void 0,void 0,(function*(){return!d((yield vt.validateAsync(t,...e)).error)}))}static validate(t,...e){let s={value:t};for(let t=0;t<e.length;t++)if(s=e[t].validate(s.value),s.error)return{error:s.error};return s}static validateAsync(t,...e){return P(this,void 0,void 0,(function*(){let s={value:t};for(let t=0;t<e.length;t++)if(s=yield e[t].validateAsync(s.value),s.error)return{error:s.error};return s}))}}return t.EventEmitter=class{constructor(){this.events=new Map}on(t,e){const s=this.events.get(t);return s?s.push(e):this.events.set(t,[e]),{dispose:()=>this.off(t,e)}}once(t,e){const s=r=>{e(r),this.off(t,s)};return this.on(t,s),{dispose:()=>this.off(t,s)}}off(t,e){const s=this.events.get(t);if(e){if(s){const t=s.indexOf(e);t>=0&&s.splice(t,1)}}else this.events.set(t,[])}emit(t,e){const s=this.events.get(t);s&&s.forEach((t=>t(e)))}},t.Hash=O,t.RandomString=Q,t.Validation=vt,t.ValidationBase=ut,t.allowed=at,t.cache=()=>{const t=[],e=[];return s=>{let r=t.indexOf(s);return-1==r&&(t.push(s),e.push({}),r=e.length-1),e[r]}},t.camelCase=J,t.chunkArray=(t,e)=>{const s=[];for(let r=0;r<t.length;r+=e)s.push(t.slice(r,r+e));return s},t.clamp=e,t.colorPalette=(t,e)=>g(null!=e?e:C,(e=>0==e?t:e>0?S(t,e):k(t,1- -1*e))),t.cutText=(t,e)=>{if(t.length>e){const s=t.substring(0,e).split(" ");return s.pop(),s.join(" ")+"..."}return t},t.dateFormat=F,t.dateRange=(t,e)=>{const s=new Date(t),r=[];for(;t<e;)s.setDate(s.getDate()+1),r.push(new Date(s));return r},t.debounce=(t,e)=>{let s;const r=()=>{s&&clearTimeout(s)};return{cancel:r,run(...i){r(),s=setTimeout((()=>t(...i)),e)}}},t.decodeHTML=t=>t.replace(Z,((t,e)=>$[e])).replace(/&#(\d+);/gi,((t,e)=>String.fromCharCode(parseInt(e,10)))),t.denied=(t,e)=>at(Object.keys(e).filter((e=>-1==t.indexOf(e))),e),t.each=(t,e,s)=>a(t)?f(t,e,s):c(t)?y(t,e,s):t,t.encodeHTML=t=>t.replace(/[^0-9A-Za-z ]/g,(t=>"&#"+t.charCodeAt(0)+";")),t.forEachAsync=(t,e,s)=>P(void 0,void 0,void 0,(function*(){yield Promise.allSettled(t.map(((r,i)=>e.call(s,r,i,t)))).catch(B)})),t.forEachIndex=f,t.forEachKey=y,t.forEachSeries=(t,e,s)=>P(void 0,void 0,void 0,(function*(){for(let r=0;r<t.length;r++)yield e.call(s,t[r],r,t).catch(B)})),t.forLoop=(t,e,s)=>{for(let r=1;r<=t&&!1!==e.call(s,r,t);r++);return t},t.hexToRgb=x,t.hslToRgb=(t,e,s)=>{t/=60;const r=(1-Math.abs(2*s-1))*e,i=r*(1-Math.abs(t%2-1));let n=[0,0,0];t<=1?n=[r,i,0]:t<=2?n=[i,r,0]:t<=3?n=[0,r,i]:t<=4?n=[0,i,r]:t<=5?n=[i,0,r]:t<=6&&(n=[r,0,i]);const a=s-.5*r;return[Math.round(255*(n[0]+a)),Math.round(255*(n[1]+a)),Math.round(255*(n[2]+a))]},t.isArray=a,t.isBoolean=h,t.isCharacter=t=>/^[\w]$/.test(t),t.isDate=t=>"date"==n(t),t.isDef=u,t.isDigit=V,t.isFloat=t=>l(t)&&!!(t%1),t.isFunction=o,t.isInteger=t=>l(t)&&!(t%1),t.isLetter=W,t.isMap=t=>"map"==n(t),t.isNull=t=>null===t,t.isNumber=l,t.isObject=c,t.isPlainObject=p,t.isRegExp=t=>"regexp"==n(t),t.isScalar=t=>-1!=m.indexOf(n(t)),t.isSet=t=>"set"==n(t),t.isSpecialChar=K,t.isString=d,t.isSymbol=t=>"symbol"==typeof t,t.isUndefined=v,t.lerp=(t,s,r)=>t+(s-t)*e(r,0,1),t.loop=(t,e)=>{let s=!1;const r=()=>P(void 0,void 0,void 0,(function*(){s&&(yield t(),setTimeout(r,e))}));return{start(){s||(s=!0,r())},stop(){s=!1}}},t.lowerCamelCase=z,t.map=g,t.mask=it,t.maskMoney=(t,e,s)=>(s++,e=parseInt((e||"0").replace(/\W/g,"")).toString(),nt(t,e.length<s?("0".repeat(s)+e).slice(-1*s):e)),t.maskReverse=nt,t.maskTest=(t,e)=>t.length==it(t,e).length,t.merge=ht,t.msToString=t=>{const e=[];return R.forEach((s=>{const r=H[s],i=(t-t%r)/r;i&&(t-=i*r,e.push(i.toString()+s))})),e.join(" ")},t.noop=B,t.parseMs=t=>{const e=/(-?(?:\d+)?\.?\d+) *(ms|s|m|h|d|w|y)/gm;let s,r=0;for(;null!==(s=e.exec(t));)s.index===e.lastIndex&&e.lastIndex++,r+=parseFloat(s[1])*H[s[2]]||0;return r},t.parseSize=t=>{if(l(t))return t+"px";const e=(t=>/(-?(?:\d+)?\.?\d+) *(px|%|cm|mm|in|pt|pc|en|ex|ch|rem|vw|vh|vmin|vmax)*/g.exec(t))(t);return e?parseFloat(e[1])+(e[2]||"px"):"0px"},t.random=s,t.randomCase=t=>t.split("").map((t=>Math.random()<.5?t.toUpperCase():t.toLowerCase())).join(""),t.randomElement=t=>t.length?t[s(0,t.length-1)]:null,t.rangeArray=(t,e,s=1)=>Array.from({length:(e-t)/s+1},((e,r)=>t+r*s)),t.rgbToHex=w,t.rgbToHsl=(t,e,s)=>{const[r,i,n]=((...t)=>t.map((t=>t/255)))(t,e,s),a=Math.max(r,i,n),h=Math.min(r,i,n),u=a-h,l=(h+a)/2;return[60*j(u,a,r,i,n),M(u,l),l]},t.shadeColor=k,t.shuffleArray=r,t.shuffleString=G,t.simpleID=()=>I()+E(),t.sleep=t=>new Promise((e=>setTimeout(e,t))),t.stringReverse=X,t.tintColor=S,t.toArray=t=>a(t)?t:u(t)?[t]:[],t.toBool=t=>"true"===t||"1"===t,t.type=n,t.uniqueArray=t=>t.filter(((t,e,s)=>s.indexOf(t)===e)),t.uniqueID=()=>T()+T()+T()+T(),t.upperCamelCase=tt,t.uuidv4=()=>D()+"-"+E()+"-4"+I()+"-"+E()+"-"+(D()+E()),t}({});
|
|
7
|
+
var UtilsJS=function(t){"use strict";const e=(t,e,s)=>Math.max(e,Math.min(s,t)),s=(t,e)=>Math.floor(Math.random()*(e-t+1)+t),r=t=>{for(let e=t.length-1;e>0;e--){const r=s(0,e);[t[e],t[r]]=[t[r],t[e]]}return t},i={},n=t=>null==t?"null":i[i.toString.call(t)]||"object";["Array","AsyncFunction","Boolean","Date","Function","Map","Number","Object","RegExp","Set","String"].forEach((t=>i["[object "+t+"]"]=t.toLowerCase()));const a=t=>"array"==n(t),h=t=>"boolean"==n(t),u=t=>"null"!=n(t),l=t=>"number"==n(t),o=t=>"function"==typeof t,c=t=>"object"==n(t),p=t=>c(t)&&t.constructor===Object,m=["boolean","number","string"],d=t=>"string"==typeof t,v=t=>void 0===t,f=(t,e,s)=>{for(let r=0;r<t.length&&!1!==e.call(s,t[r],r,t);r++);return t},y=(t,e,s)=>{let r="";const i=Object.keys(t);for(let n=0;n<i.length&&(r=i[n],!1!==e.call(s,t[r],r,t));n++);return t},g=(t,e,s)=>Object.fromEntries(Object.entries(t).map((([r,i])=>[r,e.call(s,i,r,t)]))),_=t=>parseInt(null!=t?t:"0",16)||0,x=t=>{var e;return(null===(e=t.replace(/^#/,"").match(/.{1,2}/g))||void 0===e?void 0:e.map(_))||[]},b=t=>("0"+t.toString(16)).slice(-2),w=(t,e,s)=>"#"+b(t)+b(e)+b(s),k=(t,s)=>{const r=x(t);s=e(s,0,1);const[i,n,a]=r.map((t=>Math.round(t*s)));return w(i,n,a)},S=(t,s)=>{const r=x(t);s=e(s,0,1);const[i,n,a]=r.map((t=>Math.round(t+(255-t)*s)));return w(i,n,a)},C={50:.95,100:.9,200:.75,300:.6,400:.3,500:0,600:-.1,700:-.25,800:-.4,900:-.55,950:-.71},O=(t,e,s,r,i)=>0===t?0:e===s?(r-i)/t%6:e===r?(i-s)/t+2:e===i?(s-r)/t+4:0,j=(t,e)=>0===t?0:t/(1-Math.abs(2*e-1));class M{constructor(t){this.key=this.shuffle(M.dictionary,t,!1)}encrypt(t){return this.shuffle(t,this.key,!1)}decrypt(t){return this.shuffle(t,this.key,!0)}index(t,e,s){return[M.dictionary.indexOf(t[s]),M.dictionary.indexOf(e[s%e.length])]}result(t,e,s){return M.dictionary[(s?t-e+M.dictionary.length:t+e)%M.dictionary.length]}shuffle(t,e,s){let r="";for(let i=0;i<t.length;i++){const[n,a]=this.index(t,e,i);r+=-1===n||-1===a?t[i]:this.result(n,a,s)}return r}}M.dictionary="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";const A=t=>Math.random().toString(16).slice(t),E=()=>A(-3),I=()=>A(-4),D=()=>I()+I(),T=()=>D()+D(),L=t=>("0"+t.toString()).slice(-2),F={"%y":t=>L(t.getFullYear()),"%Y":t=>t.getFullYear().toString(),"%m":t=>L(t.getMonth()+1),"%d":t=>L(t.getDate()),"%H":t=>L(t.getHours()),"%M":t=>L(t.getMinutes()),"%S":t=>L(t.getSeconds())},N=(t,e)=>(e=null!=e?e:new Date,t.replace(/%[yYmdHMS]/g,(t=>F[t]?F[t](e):t.slice(1)))),U=36e5,q=24*U,H={ms:1,s:1e3,m:6e4,h:U,d:q,w:7*q,y:315576e5},R=["y","d","h","m","s","ms"];function P(t,e,s,r){return new(s||(s=Promise))((function(i,n){function a(t){try{u(r.next(t))}catch(t){n(t)}}function h(t){try{u(r.throw(t))}catch(t){n(t)}}function u(t){t.done?i(t.value):function(t){return t instanceof s?t:new s((function(e){e(t)}))}(t.value).then(a,h)}u((r=r.apply(t,e||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const B=t=>{var e;return 0==(null!==(e=null==t?void 0:t.length)&&void 0!==e?e:0)},Y=["",0,"0",null,!1,void 0],z=t=>-1==Y.indexOf(t),J=()=>{},Z=(t,e)=>e(t.toLowerCase().replace(/\W+/g," ")).replace(/\s/g,""),$=t=>Z(t,(t=>t.replace(/\s(\w)/g,(t=>t.toUpperCase())))),V=$,W=/&(amp|apos|lt|gt|nbsp|quot);/g,K={amp:"&",apos:"'",lt:"<",gt:">",nbsp:" ",quot:'"'},G=t=>/^[\d]$/.test(t),Q=t=>/^[A-Za-z]$/.test(t),X=t=>/^[^\w]$/.test(t),tt=t=>r(t.split("")).join("");class et{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 et).chars()}lower(){return this.hasLower=!0,this}static lower(){return(new et).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=tt(e);for(let i=0;i<t;i++)r+=e.charAt(s(0,e.length-1))}return r}numbers(){return this.hasNumbers=!0,this}static numbers(){return(new et).numbers()}space(){return this.hasSpace=!0,this}static space(){return(new et).space()}symbols(){return this.hasSymbols=!0,this}static symbols(){return(new et).symbols()}upper(){return this.hasUpper=!0,this}static upper(){return(new et).upper()}}const st=t=>t.split("").reverse().join(""),rt=t=>Z(t,(t=>t.replace(/(\w)(\w*)/g,((t,e,s)=>e.toUpperCase()+s)))),it=(t,e)=>e(t.value)?t.value:(t=>(t.maskIndex--,""))(t),nt={"#":t=>t.value,0:t=>it(t,G),9:t=>it(t,G),A:t=>it(t,Q),Z:t=>it(t,Q),L:t=>it(t,Q).toLowerCase(),U:t=>it(t,Q).toUpperCase(),S:t=>it(t,X)},at=t=>{t.maskIndex++,t.textIndex++;const{mask:e,maskIndex:s,text:r,textIndex:i}=t;t.key=e[s],t.value=r[i];const{key:n,value:a}=t;return v(n)||v(a)?"":(t=>nt[t.key]?nt[t.key](t):(t.key!=t.value&&t.textIndex--,t.key))(t)+at(t)},ht=(t,e)=>at({mask:t,maskIndex:-1,text:e,textIndex:-1,key:"",value:""}),ut=(t,e)=>st(ht(st(t),st(e))),lt=(t,e)=>t.reduce(((t,s)=>Object.assign(Object.assign({},t),{[s]:e[s]})),{}),ot=(t,...e)=>{if(!e.length)return t;const s=e.shift();if(p(t)&&p(s))for(const e in s)p(s[e])?(t[e]||(t=Object.assign(Object.assign({},t),{[e]:{}})),t[e]=ot(t[e],s[e])):t=Object.assign(Object.assign({},t),{[e]:s[e]});return ot(t,...e)};class ct{constructor(){this.name="",this._error="",this._filter=[],this._type="any",this.rules=[],this.custom=[]}empty(t){return this._value=t,this.unshift((t=>{const e=u(t);return{break:!e,value:e?t:o(this._value)?this._value():this._value}}))}error(t){return this._error=t,this}filter(...t){return this._filter=t,this.unshift((t=>{const e=-1==this._filter.indexOf(t);return{break:!e,value:e?t:void 0}}))}from(t){return this.source=t,this}invalid(t){return{error:this._error?this._error:this.name?this.name+":"+t:t}}parse(){return this.unshift((t=>({value:t})))}push(t){return this.rules.push(t),this}required(){return this.unshift((t=>u(t)?{value:t}:this.invalid("["+this._type+"].required")))}test(t){return!d(this.validate(t).error)}testAsync(t){return P(this,void 0,void 0,(function*(){return!d((yield this.validateAsync(t)).error)}))}unshift(t){return this.rules.unshift(t),this}validate(t){if(this.custom.length)return this.invalid("[async]");let e={value:t};for(let t=0;t<this.rules.length;t++){if(e=this.rules[t](e.value),e.error)return{error:e.error};if(e.break)return{value:e.value}}return{value:e.value}}validateAsync(t){return P(this,void 0,void 0,(function*(){let e=this.validate(t);if(e.error)return{error:e.error};for(let t=0;t<this.custom.length;t++){if(e=yield this.custom[t](e.value),e.error)return{error:e.error};if(e.break)return{value:e.value}}return{value:e.value}}))}}class pt extends ct{constructor(){super(),this._length=0,this._max=0,this._min=0,this._type="array",this.push((t=>{if(a(t)){if(this._items){this._items.name="";for(let e=0;e<t.length;e++){const{error:s,value:r}=this._items.validate(t[e]);if(s)return this.invalid("["+this._type+"]< "+s+"["+e+"] >");t[e]=r}}return{value:t}}return this.invalid("["+this._type+"]")}))}between(t,e){return this.min(t),this.max(e)}items(t){return this._items=t,this}length(t){return this._length=t,this.push((t=>t.length==this._length?{value:t}:this.invalid("["+this._type+"].length("+this._length+")")))}max(t){return this._max=t,this.push((t=>t.length<=this._max?{value:t}:this.invalid("["+this._type+"].max("+this._max+")")))}min(t){return this._min=t,this.push((t=>t.length>=this._min?{value:t}:this.invalid("["+this._type+"].min("+this._min+")")))}}class mt extends ct{constructor(){super(),this._type="boolean",this.push((t=>h(t)?{value:t}:this.invalid("["+this._type+"]")))}parse(){return this.unshift((t=>({value:u(t)?-1!=[1,"1",!0,"true"].indexOf(t):t})))}}class dt extends ct{constructor(){super(),this._type="date",this._format="",this.push((t=>isNaN(new Date(t).getTime())?this.invalid("["+this._type+"]"):{value:t}))}format(t){return this._format=t,this.push((t=>({value:N(this._format,new Date(t))})))}parse(){return this.unshift((t=>(d(t)&&t.length<=10&&(t+=" 12:00"),{value:new Date(t)})))}}class vt extends ct{constructor(){super(),this._max=0,this._min=0,this._type="number",this.push((t=>l(t)?{value:t}:this.invalid("["+this._type+"]")))}between(t,e){return this.min(t),this.max(e)}max(t){return this._max=t,this.push((t=>t<=this._max?{value:t}:this.invalid("["+this._type+"].max("+this._max+")")))}min(t){return this._min=t,this.push((t=>t>=this._min?{value:t}:this.invalid("["+this._type+"].min("+this._min+")")))}parse(){return this.unshift((t=>({value:u(t)?parseFloat(t):t})))}}class ft extends ct{constructor(){super(),this._keys={},this._type="object",this.push((t=>{if(c(t)){const e=[],s={};return Object.keys(this._keys).forEach((r=>{var i;const n=this._keys[r];n.name=null!==(i=n.source)&&void 0!==i?i:r;const{error:a,value:h}=n.validate(t[n.name]);a&&e.push(a),u(h)&&(s[r]=h)})),e.length?this.invalid("["+this._type+"]{ "+e.join(", ")+" }"):{value:s}}return this.invalid("["+this._type+"]")}))}keys(t){return this._keys=t||{},this}parse(){return this.unshift((t=>{if(!c(t))try{t=JSON.parse(t)}catch(t){return this.invalid("["+this._type+"]")}const e=Object.keys(this._keys);return{value:e.length?lt(e,t):t}}))}}class yt extends ct{constructor(){super(),this._length=0,this._max=0,this._min=0,this._type="string",this.push((t=>d(t)?{value:t}:this.invalid("["+this._type+"]")))}between(t,e){return this.min(t),this.max(e)}email(){return this.push((t=>/^[\w-\\.]+@([\w-]+\.)+[\w-]{2,4}$/i.test(t)?{value:t}:this.invalid("["+this._type+"].email")))}length(t){return this._length=t,this.push((t=>t.length==this._length?{value:t}:this.invalid("["+this._type+"].length("+this._length+")")))}lowerCase(){return this.push((t=>({value:t.toLowerCase()})))}lowerCamelCase(){return this.push((t=>({value:$(t)})))}max(t){return this._max=t,this.push((t=>t.length<=this._max?{value:t}:this.invalid("["+this._type+"].max("+this._max+")")))}mask(t){return this.push((e=>({value:ht(t,e)})))}min(t){return this._min=t,this.push((t=>t.length>=this._min?{value:t}:this.invalid("["+this._type+"].min("+this._min+")")))}parse(){return this.unshift((t=>({value:c(t)?JSON.stringify(t):u(t)?t.toString():t})))}required(){return this.push((t=>t.length?{value:t}:this.invalid("["+this._type+"].required")))}trim(){return this.push((t=>({value:t.trim()})))}upperCase(){return this.push((t=>({value:t.toUpperCase()})))}upperCamelCase(){return this.push((t=>({value:rt(t)})))}}class gt{static array(t){return(new pt).items(t)}static boolean(){return new mt}static date(){return new dt}static number(){return new vt}static object(t){return(new ft).keys(t)}static string(){return new yt}test(t,...e){return!d(gt.validate(t,...e).error)}testAsync(t,...e){return P(this,void 0,void 0,(function*(){return!d((yield gt.validateAsync(t,...e)).error)}))}static validate(t,...e){let s={value:t};for(let t=0;t<e.length;t++)if(s=e[t].validate(s.value),s.error)return{error:s.error};return s}static validateAsync(t,...e){return P(this,void 0,void 0,(function*(){let s={value:t};for(let t=0;t<e.length;t++)if(s=yield e[t].validateAsync(s.value),s.error)return{error:s.error};return s}))}}return t.EventEmitter=class{constructor(){this.events=new Map}on(t,e){const s=this.events.get(t);return s?s.push(e):this.events.set(t,[e]),{dispose:()=>this.off(t,e)}}once(t,e){const s=r=>{e(r),this.off(t,s)};return this.on(t,s),{dispose:()=>this.off(t,s)}}off(t,e){const s=this.events.get(t);if(e){if(s){const t=s.indexOf(e);t>=0&&s.splice(t,1)}}else this.events.set(t,[])}emit(t,e){const s=this.events.get(t);s&&s.forEach((t=>t(e)))}},t.Hash=M,t.RandomString=et,t.Validation=gt,t.ValidationBase=ct,t.allowed=lt,t.cache=()=>{const t=[],e=[];return s=>{let r=t.indexOf(s);return-1==r&&(t.push(s),e.push({}),r=e.length-1),e[r]}},t.camelCase=V,t.chunkArray=(t,e)=>{const s=[];for(let r=0;r<t.length;r+=e)s.push(t.slice(r,r+e));return s},t.clamp=e,t.colorPalette=(t,e)=>g(null!=e?e:C,(e=>0==e?t:e>0?S(t,e):k(t,1- -1*e))),t.countArray=t=>{const e={};return t.forEach((t=>{const s=t.toString();e[s]=(e[s]||0)+1})),e},t.cutText=(t,e)=>{if(t.length>e){const s=t.substring(0,e).split(" ");return s.pop(),s.join(" ")+"..."}return t},t.dateFormat=N,t.dateRange=(t,e)=>{const s=new Date(t),r=[];for(;t<e;)s.setDate(s.getDate()+1),r.push(new Date(s));return r},t.debounce=(t,e)=>{let s;const r=()=>{s&&clearTimeout(s)};return{cancel:r,run(...i){r(),s=setTimeout((()=>t(...i)),e)}}},t.decodeHTML=t=>t.replace(W,((t,e)=>K[e])).replace(/&#(\d+);/gi,((t,e)=>String.fromCharCode(parseInt(e,10)))),t.denied=(t,e)=>lt(Object.keys(e).filter((e=>-1==t.indexOf(e))),e),t.each=(t,e,s)=>a(t)?f(t,e,s):c(t)?y(t,e,s):t,t.encodeHTML=t=>t.replace(/[^0-9A-Za-z ]/g,(t=>"&#"+t.charCodeAt(0)+";")),t.forEachAsync=(t,e,s)=>P(void 0,void 0,void 0,(function*(){yield Promise.allSettled(t.map(((r,i)=>e.call(s,r,i,t)))).catch(J)})),t.forEachIndex=f,t.forEachKey=y,t.forEachSeries=(t,e,s)=>P(void 0,void 0,void 0,(function*(){for(let r=0;r<t.length;r++)yield e.call(s,t[r],r,t).catch(J)})),t.forLoop=(t,e,s)=>{for(let r=1;r<=t&&!1!==e.call(s,r,t);r++);return t},t.hexToRgb=x,t.hslToRgb=(t,e,s)=>{t/=60;const r=(1-Math.abs(2*s-1))*e,i=r*(1-Math.abs(t%2-1));let n=[0,0,0];t<=1?n=[r,i,0]:t<=2?n=[i,r,0]:t<=3?n=[0,r,i]:t<=4?n=[0,i,r]:t<=5?n=[i,0,r]:t<=6&&(n=[r,0,i]);const a=s-.5*r;return[Math.round(255*(n[0]+a)),Math.round(255*(n[1]+a)),Math.round(255*(n[2]+a))]},t.isArray=a,t.isBoolean=h,t.isCharacter=t=>/^[\w]$/.test(t),t.isDate=t=>"date"==n(t),t.isDef=u,t.isDigit=G,t.isEmpty=B,t.isFalse=t=>!z(t),t.isFloat=t=>l(t)&&!!(t%1),t.isFunction=o,t.isInteger=t=>l(t)&&!(t%1),t.isLetter=Q,t.isMap=t=>"map"==n(t),t.isNotEmpty=t=>!B(t),t.isNull=t=>null===t,t.isNumber=l,t.isObject=c,t.isPlainObject=p,t.isRegExp=t=>"regexp"==n(t),t.isScalar=t=>-1!=m.indexOf(n(t)),t.isSet=t=>"set"==n(t),t.isSpecialChar=X,t.isString=d,t.isSymbol=t=>"symbol"==typeof t,t.isTrue=z,t.isUndefined=v,t.lerp=(t,s,r)=>t+(s-t)*e(r,0,1),t.loop=(t,e)=>{let s=!1;const r=()=>P(void 0,void 0,void 0,(function*(){s&&(yield t(),setTimeout(r,e))}));return{start(){s||(s=!0,r())},stop(){s=!1}}},t.lowerCamelCase=$,t.map=g,t.mask=ht,t.maskMoney=(t,e,s)=>(s++,e=parseInt((e||"0").replace(/\W/g,"")).toString(),ut(t,e.length<s?("0".repeat(s)+e).slice(-1*s):e)),t.maskReverse=ut,t.maskTest=(t,e)=>t.length==ht(t,e).length,t.merge=ot,t.msToString=t=>{const e=[];return R.forEach((s=>{const r=H[s],i=(t-t%r)/r;i&&(t-=i*r,e.push(i.toString()+s))})),e.join(" ")},t.noop=J,t.parseMs=t=>{const e=/(-?(?:\d+)?\.?\d+) *(ms|s|m|h|d|w|y)/gm;let s,r=0;for(;null!==(s=e.exec(t));)s.index===e.lastIndex&&e.lastIndex++,r+=parseFloat(s[1])*H[s[2]]||0;return r},t.parseSize=t=>{if(l(t))return t+"px";const e=(t=>/(-?(?:\d+)?\.?\d+) *(px|%|cm|mm|in|pt|pc|en|ex|ch|rem|vw|vh|vmin|vmax)*/g.exec(t))(t);return e?parseFloat(e[1])+(e[2]||"px"):"0px"},t.random=s,t.randomCase=t=>t.split("").map((t=>Math.random()<.5?t.toUpperCase():t.toLowerCase())).join(""),t.randomElement=t=>t.length?t[s(0,t.length-1)]:null,t.rangeArray=(t,e,s=1)=>Array.from({length:(e-t)/s+1},((e,r)=>t+r*s)),t.rgbToHex=w,t.rgbToHsl=(t,e,s)=>{const[r,i,n]=((...t)=>t.map((t=>t/255)))(t,e,s),a=Math.max(r,i,n),h=Math.min(r,i,n),u=a-h,l=(h+a)/2;return[60*O(u,a,r,i,n),j(u,l),l]},t.shadeColor=k,t.shuffleArray=r,t.shuffleString=tt,t.simpleID=()=>E()+I(),t.sleep=t=>new Promise((e=>setTimeout(e,t))),t.stringReverse=st,t.tintColor=S,t.toArray=t=>a(t)?t:u(t)?[t]:[],t.toBool=t=>"true"===t||"1"===t,t.type=n,t.uniqueArray=t=>t.filter(((t,e,s)=>s.indexOf(t)===e)),t.uniqueID=()=>T()+T()+T()+T(),t.upperCamelCase=rt,t.uuidv4=()=>D()+"-"+I()+"-4"+E()+"-"+I()+"-"+(D()+I()),t}({});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@andrewcaires/utils.js",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "JavaScript utility library for web and nodejs development",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs.js",
|
|
@@ -47,12 +47,12 @@
|
|
|
47
47
|
"@rollup/plugin-commonjs": "^28.0.1",
|
|
48
48
|
"@rollup/plugin-terser": "^0.4.4",
|
|
49
49
|
"@rollup/plugin-typescript": "^12.1.1",
|
|
50
|
-
"@types/node": "^22.
|
|
51
|
-
"eslint": "^9.
|
|
52
|
-
"rollup": "^4.
|
|
50
|
+
"@types/node": "^22.9.1",
|
|
51
|
+
"eslint": "^9.15.0",
|
|
52
|
+
"rollup": "^4.27.3",
|
|
53
53
|
"rollup-plugin-dts": "^6.1.1",
|
|
54
|
-
"tslib": "^2.8.
|
|
55
|
-
"tsx": "^4.19.
|
|
56
|
-
"typescript-eslint": "^8.
|
|
54
|
+
"tslib": "^2.8.1",
|
|
55
|
+
"tsx": "^4.19.2",
|
|
56
|
+
"typescript-eslint": "^8.15.0"
|
|
57
57
|
}
|
|
58
58
|
}
|