@andrewcaires/utils.js 0.2.23 → 0.2.24
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 +7 -6
- package/dist/index.esm.js +2 -2
- package/dist/index.min.js +2 -2
- package/package.json +8 -8
package/dist/index.cjs.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @andrewcaires/utils.js v0.2.
|
|
2
|
+
* @andrewcaires/utils.js v0.2.24
|
|
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 e={},t=e=>"array"==l(e),r=e=>"boolean"==l(e),s=e=>"null"!=l(e),i=e=>"number"==l(e),n=e=>"object"==l(e),a=e=>"string"==l(e),o=e=>void 0===e,l=t=>null==t?"null":e[e.toString.call(t)]||"object";["Array","Boolean","Function","Number","Object","String"].forEach((t=>e["[object "+t+"]"]=t.toLowerCase()));const h=(e,t,r)=>Math.max(t,Math.min(r,e)),u=e=>("0"+e).slice(-2),p=e=>parseInt(e,16)||0,c=(e,t)=>{return(r=p(e)+t,h(r,0,255)).toString(16);var r},v=e=>Math.random().toString(16).slice(e),d=()=>v(-3),x=()=>v(-4),m=()=>x()+x(),f=()=>m()+m(),g=e=>("0"+e.toString()).slice(-2),y={"%y":e=>g(e.getFullYear()),"%Y":e=>e.getFullYear().toString(),"%m":e=>g(e.getMonth()+1),"%d":e=>g(e.getDate()),"%H":e=>g(e.getHours()),"%M":e=>g(e.getMinutes()),"%S":e=>g(e.getSeconds())};function _(e,t,r,s){return new(r||(r=Promise))((function(i,n){function a(e){try{l(s.next(e))}catch(e){n(e)}}function o(e){try{l(s.throw(e))}catch(e){n(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,o)}l((s=s.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const b=(e,t,r)=>{for(let s=0;s<e.length&&!1!==t.call(r,e[s],s,e);s++);return e},k=(e,t,r)=>{let s="";const i=Object.keys(e);for(let n=0;n<i.length&&(s=i[n],!1!==t.call(r,e[s],s,e));n++);return e},w=()=>{},S="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",C=(e,t,r)=>{let s="";for(let i=0;i<e.length;i++){const n=S.indexOf(e[i]),a=S.indexOf(t[i%t.length]);s+=-1===n||-1===a?e[i]:S[(r?n-a+62:n+a)%62]}return s},j=(e,t)=>t(e.toLowerCase().replace(/\W+/g," ")).replace(/\s/g,""),O=e=>/^[\d]$/.test(e),A=e=>/^[A-Za-z]$/.test(e),I=e=>/^[^\w]$/.test(e),M=e=>j(e,(e=>e.replace(/\s(\w)/g,(e=>e.toUpperCase())))),E=M,T=e=>j(e,(e=>e.replace(/(\w)(\w*)/g,((e,t,r)=>t.toUpperCase()+r)))),F=e=>e.split("").reverse().join(""),L=e=>(e.maskIndex--,""),N={"#":({value:e})=>e,0:e=>O(e.value)?e.value:L(e),9:e=>O(e.value)?e.value:L(e),A:e=>A(e.value)?e.value:L(e),Z:e=>A(e.value)?e.value:L(e),L:e=>A(e.value)?e.value.toLowerCase():L(e),U:e=>A(e.value)?e.value.toUpperCase():L(e),S:e=>I(e.value)?e.value:L(e)},D=e=>{e.maskIndex++,e.textIndex++;const{mask:t,maskIndex:r,text:s,textIndex:i}=e;e.key=t[r],e.value=s[i];const{key:n,value:a}=e;return o(n)||o(a)?"":(e=>N[e.key]?N[e.key](e):(e.key!=e.value&&e.textIndex--,e.key))(e)+D(e)},H=(e,t)=>D({mask:e,maskIndex:-1,text:t,textIndex:-1,key:"",value:""}),U=H,q=(e,t)=>F(U(F(e),F(t))),B=36e5,Y=24*B,$={ms:1,s:1e3,m:6e4,h:B,d:Y,w:6048e5,y:315576e5},P=["y","d","h","m","s","ms"],R=(e,t)=>e.reduce(((e,r)=>Object.assign(Object.assign({},e),{[r]:t[r]})),{}),z=(e,...t)=>{if(!t.length)return e;const r=t.shift();if(n(e)&&n(r))for(const t in r)n(r[t])?(e[t]||(e=Object.assign(Object.assign({},e),{[t]:{}})),e[t]=z(e[t],r[t])):e=Object.assign(Object.assign({},e),{[t]:r[t]});return z(e,...t)};class J{constructor(){this.name="",this._error="",this._filter=[],this._type="any",this.rules=[],this.custom=[]}empty(e){return this._value=e,this.unshift((e=>{const t=s(e);return{break:!t,value:t?e:this._value}}))}error(e){return this._error=e,this}filter(...e){return this._filter=e,this.unshift((e=>{const t=-1==this._filter.indexOf(e);return{break:!t,value:t?e:void 0}}))}invalid(e){return{error:this._error?this._error:this.name?this.name+":"+e:e}}parse(){return this.unshift((e=>({value:e})))}push(e){return this.rules.push(e),this}required(){return this.unshift((e=>s(e)?{value:e}:this.invalid("["+this._type+"].required")))}test(e){return!a(this.validate(e).error)}testAsync(e){return _(this,void 0,void 0,(function*(){return!a((yield this.validateAsync(e)).error)}))}unshift(e){return this.rules.unshift(e),this}validate(e){if(this.custom.length)return this.invalid("[async]");let t={value:e};for(let e=0;e<this.rules.length;e++){if(t=this.rules[e](t.value),t.error)return{error:t.error};if(t.break)return{value:t.value}}return{value:t.value}}validateAsync(e){return _(this,void 0,void 0,(function*(){let t=this.validate(e);if(t.error)return{error:t.error};for(let e=0;e<this.custom.length;e++){if(t=yield this.custom[e](t.value),t.error)return{error:t.error};if(t.break)return{value:t.value}}return{value:t.value}}))}}class V extends J{constructor(){super(),this._length=0,this._max=0,this._min=0,this._type="array",this.push((e=>{if(t(e)){if(this._items){this._items.name="";for(let t=0;t<e.length;t++){const{error:r,value:s}=this._items.validate(e[t]);if(r)return this.invalid("["+this._type+"]< "+r+"["+t+"] >");e[t]=s}}return{value:e}}return this.invalid("["+this._type+"]")}))}between(e,t){return this.min(e),this.max(t)}items(e){return this._items=e,this}length(e){return this._length=e,this.push((e=>e.length==this._length?{value:e}:this.invalid("["+this._type+"].length("+this._length+")")))}max(e){return this._max=e,this.push((e=>e.length<=this._max?{value:e}:this.invalid("["+this._type+"].max("+this._max+")")))}min(e){return this._min=e,this.push((e=>e.length>=this._min?{value:e}:this.invalid("["+this._type+"].min("+this._min+")")))}}class W extends J{constructor(){super(),this._type="boolean",this.push((e=>r(e)?{value:e}:this.invalid("["+this._type+"]")))}parse(){return this.unshift((e=>({value:s(e)?-1!=[1,"1",!0,"true"].indexOf(e):e})))}}class Z extends J{constructor(){super(),this._max=0,this._min=0,this._type="number",this.push((e=>i(e)?{value:e}:this.invalid("["+this._type+"]")))}between(e,t){return this.min(e),this.max(t)}max(e){return this._max=e,this.push((e=>e<=this._max?{value:e}:this.invalid("["+this._type+"].max("+this._max+")")))}min(e){return this._min=e,this.push((e=>e>=this._min?{value:e}:this.invalid("["+this._type+"].min("+this._min+")")))}parse(){return this.unshift((e=>({value:s(e)?parseFloat(e):e})))}}class K extends J{constructor(){super(),this._keys={},this._type="object",this.push((e=>{if(n(e)){const t=[],r={};return Object.keys(this._keys).forEach((i=>{const n=this._keys[i];n.name=i;const{error:a,value:o}=n.validate(e[i]);a&&t.push(a),s(o)&&(r[i]=o)})),t.length?this.invalid("["+this._type+"]{ "+t.join(", ")+" }"):{value:r}}return this.invalid("["+this._type+"]")}))}keys(e){return this._keys=e||{},this}parse(){return this.unshift((e=>{if(!n(e))try{e=JSON.parse(e)}catch(e){return this.invalid("["+this._type+"]")}const t=Object.keys(this._keys);return{value:t.length?R(t,e):e}}))}}class G extends J{constructor(){super(),this._length=0,this._max=0,this._min=0,this._type="string",this.push((e=>a(e)?{value:e}:this.invalid("["+this._type+"]")))}between(e,t){return this.min(e),this.max(t)}date(){return this.push((e=>isNaN(new Date(e).getTime())?this.invalid("["+this._type+"].date"):{value:e}))}email(){return this.push((e=>/^[\w-\\.]+@([\w-]+\.)+[\w-]{2,4}$/i.test(e)?{value:e}:this.invalid("["+this._type+"].email")))}length(e){return this._length=e,this.push((e=>e.length==this._length?{value:e}:this.invalid("["+this._type+"].length("+this._length+")")))}lowerCase(){return this.push((e=>({value:e.toLowerCase()})))}lowerCamelCase(){return this.push((e=>({value:M(e)})))}max(e){return this._max=e,this.push((e=>e.length<=this._max?{value:e}:this.invalid("["+this._type+"].max("+this._max+")")))}mask(e){return this.push((t=>({value:H(e,t)})))}min(e){return this._min=e,this.push((e=>e.length>=this._min?{value:e}:this.invalid("["+this._type+"].min("+this._min+")")))}parse(){return this.unshift((e=>({value:n(e)?JSON.stringify(e):s(e)?e.toString():e})))}required(){return this.push((e=>e.length?{value:e}:this.invalid("["+this._type+"].required")))}trim(){return this.push((e=>({value:e.trim()})))}upperCase(){return this.push((e=>({value:e.toUpperCase()})))}upperCamelCase(){return this.push((e=>({value:T(e)})))}}class Q{static array(e){return(new V).items(e)}static boolean(){return new W}static number(){return new Z}static object(e){return(new K).keys(e)}static string(){return new G}test(e,...t){return!a(Q.validate(e,...t).error)}testAsync(e,...t){return _(this,void 0,void 0,(function*(){return!a((yield Q.validateAsync(e,...t)).error)}))}static validate(e,...t){let r={value:e};for(let e=0;e<t.length;e++)if(r=t[e].validate(r.value),r.error)return{error:r.error};return r}static validateAsync(e,...t){return _(this,void 0,void 0,(function*(){let r={value:e};for(let e=0;e<t.length;e++)if(r=yield t[e].validateAsync(r.value),r.error)return{error:r.error};return r}))}}exports.EventEmitter=class{constructor(){this.events=new Map}on(e,t){const r=this.events.get(e);return r?r.push(t):this.events.set(e,[t]),{dispose:()=>this.off(e,t)}}once(e,t){const r=s=>{t(s),this.off(e,r)};return this.on(e,r),{dispose:()=>this.off(e,r)}}off(e,t){const r=this.events.get(e);if(t){if(r){const e=r.indexOf(t);e>=0&&r.splice(e,1)}}else this.events.set(e,[])}emit(e,t){const r=this.events.get(e);r&&r.forEach((e=>e(t)))}},exports.Validation=Q,exports.ValidationBase=J,exports.allowed=R,exports.cache=()=>{const e=[],t=[];return r=>{let s=e.indexOf(r);return-1==s&&(e.push(r),t.push({}),s=t.length-1),t[s]}},exports.camelCase=E,exports.chunkArray=(e,t)=>{const r=[];for(let s=0;s<e.length;s+=t)r.push(e.slice(s,s+t));return r},exports.clamp=h,exports.cutText=(e,t)=>{if(e.length>t){const r=e.substring(0,t).split(" ");return r.pop(),r.join(" ")+"..."}return e},exports.dateFormat=(e,t)=>t.replace(/%[yYmdHMS]/g,(t=>y[t]?y[t](e):t.slice(1))),exports.debounce=(e,t)=>{let r;const s=()=>{r&&clearTimeout(r)};return{cancel:s,run(...i){s(),r=setTimeout((()=>e(...i)),t)}}},exports.decodeHTML=e=>e.replace(/&#(\d+);/g,((e,t)=>String.fromCharCode(t))),exports.denied=(e,t)=>R(Object.keys(t).filter((t=>-1==e.indexOf(t))),t),exports.each=(e,r,s)=>t(e)?b(e,r,s):n(e)?k(e,r,s):null,exports.encodeHTML=e=>e.replace(/[\u00A0-\u9999<>\\&]/g,(e=>"&#"+e.charCodeAt(0)+";")),exports.forEachAsync=(e,t,r)=>_(void 0,void 0,void 0,(function*(){yield Promise.allSettled(e.map(((s,i)=>t.call(r,s,i,e)))).catch(w)})),exports.forEachIndex=b,exports.forEachKey=k,exports.forEachSeries=(e,t,r)=>_(void 0,void 0,void 0,(function*(){for(let s=0;s<e.length;s++)yield t.call(r,e[s],s,e).catch(w)})),exports.forLoop=(e,t,r)=>{for(let s=1;s<=e&&!1!==t.call(r,s,e);s++);return e},exports.hash=e=>(e=C(S,e,!1),{generate:t=>C(t,e,!1),reverse:t=>C(t,e,!0)}),exports.hexToRgb=e=>{var t;return(null===(t=e.replace(/^#/,"").match(/.{1,2}/g))||void 0===t?void 0:t.map((e=>p(e))))||[]},exports.isArray=t,exports.isBoolean=r,exports.isCharacter=e=>/^[\w]$/.test(e),exports.isDef=s,exports.isDigit=O,exports.isFloat=e=>i(e)&&!!(e%1),exports.isFunction=e=>"function"==l(e),exports.isInteger=e=>i(e)&&!(e%1),exports.isLetter=A,exports.isNull=e=>null===e,exports.isNumber=i,exports.isObject=n,exports.isString=a,exports.isSymbol=I,exports.isUndefined=o,exports.lerp=(e,t,r)=>e+(t-e)*h(r,0,1),exports.loop=(e,t)=>{let r=!1;const s=()=>_(void 0,void 0,void 0,(function*(){r&&(yield e(),setTimeout(s,t))}));return{start(){r||(r=!0,s())},stop(){r=!1}}},exports.lowerCamelCase=M,exports.map=(e,t,r)=>{let s="";const i=Object.keys(e);for(let n=0;n<i.length;n++)s=i[n],e[s]=t.call(r,e[s],s,e);return e},exports.mask=H,exports.maskMoney=(e,t,r)=>(r++,t=parseInt((t||"0").replace(/\W/g,"")).toString(),q(e,t.length<r?("0".repeat(r)+t).slice(-1*r):t)),exports.maskReverse=q,exports.maskTest=(e,t)=>e.length==U(e,t).length,exports.merge=z,exports.msToString=e=>{const t=[];return P.forEach((r=>{const s=$[r],i=(e-e%s)/s;i&&(e-=i*s,t.push(i.toString()+r))})),t.join(" ")},exports.noop=w,exports.parseMs=e=>{const t=/(-?(?:\d+)?\.?\d+) *(ms|s|m|h|d|w|y)/gm;let r,s=0;for(;null!==(r=t.exec(e));)r.index===t.lastIndex&&t.lastIndex++,s+=parseFloat(r[1])*$[r[2]]||0;return s},exports.parseSize=e=>{if(i(e))return e+"px";const t=(e=>/(-?(?:\d+)?\.?\d+) *(px|%|cm|mm|in|pt|pc|en|ex|ch|rem|vw|vh|vmin|vmax)*/g.exec(e))(e);return t?parseFloat(t[1])+(t[2]||"px"):"0px"},exports.rangeArray=(e,t,r=1)=>Array.from({length:(t-e)/r+1},((t,s)=>e+s*r)),exports.rgbToHex=(e,t,r)=>"#"+u(e.toString(16))+u(t.toString(16))+u(r.toString(16)),exports.shadeColor=(e,t)=>"#"+e.replace(/^#/,"").replace(/../g,(e=>u(c(e,t)))),exports.shuffleArray=e=>{for(let t=e.length-1;t>0;t--){const r=Math.floor(Math.random()*(t+1));[e[t],e[r]]=[e[r],e[t]]}return e},exports.simpleID=()=>d()+x(),exports.sleep=e=>new Promise((t=>setTimeout(t,e))),exports.stringReverse=F,exports.toArray=e=>t(e)?e:s(e)?[e]:[],exports.toBool=e=>"true"===e||"1"===e,exports.type=l,exports.uniqueID=()=>f()+f()+f()+f(),exports.upperCamelCase=T,exports.uuidv4=()=>m()+"-"+x()+"-4"+d()+"-"+x()+"-"+(m()+x());
|
|
7
|
+
"use strict";const e={},t=e=>"array"==u(e),r=e=>"boolean"==u(e),s=e=>"null"!=u(e),i=e=>"number"==u(e),n=e=>"object"==u(e),a=e=>"string"==u(e),o=e=>(null==e?void 0:e.constructor)===Object,l=e=>void 0===e,u=t=>null==t?"null":e[e.toString.call(t)]||"object";["Array","Boolean","Function","Number","Object","String"].forEach((t=>e["[object "+t+"]"]=t.toLowerCase()));const h=(e,t,r)=>Math.max(t,Math.min(r,e)),p=e=>("0"+e).slice(-2),c=e=>parseInt(e,16)||0,v=(e,t)=>{return(r=c(e)+t,h(r,0,255)).toString(16);var r},d=e=>Math.random().toString(16).slice(e),x=()=>d(-3),m=()=>d(-4),f=()=>m()+m(),g=()=>f()+f(),y=e=>("0"+e.toString()).slice(-2),_={"%y":e=>y(e.getFullYear()),"%Y":e=>e.getFullYear().toString(),"%m":e=>y(e.getMonth()+1),"%d":e=>y(e.getDate()),"%H":e=>y(e.getHours()),"%M":e=>y(e.getMinutes()),"%S":e=>y(e.getSeconds())};function b(e,t,r,s){return new(r||(r=Promise))((function(i,n){function a(e){try{l(s.next(e))}catch(e){n(e)}}function o(e){try{l(s.throw(e))}catch(e){n(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,o)}l((s=s.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const k=(e,t,r)=>{for(let s=0;s<e.length&&!1!==t.call(r,e[s],s,e);s++);return e},w=(e,t,r)=>{let s="";const i=Object.keys(e);for(let n=0;n<i.length&&(s=i[n],!1!==t.call(r,e[s],s,e));n++);return e},S=()=>{},j="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",C=(e,t,r)=>{let s="";for(let i=0;i<e.length;i++){const n=j.indexOf(e[i]),a=j.indexOf(t[i%t.length]);s+=-1===n||-1===a?e[i]:j[(r?n-a+62:n+a)%62]}return s},O=(e,t)=>t(e.toLowerCase().replace(/\W+/g," ")).replace(/\s/g,""),A=e=>/^[\d]$/.test(e),I=e=>/^[A-Za-z]$/.test(e),M=e=>/^[^\w]$/.test(e),E=e=>O(e,(e=>e.replace(/\s(\w)/g,(e=>e.toUpperCase())))),T=E,F=e=>O(e,(e=>e.replace(/(\w)(\w*)/g,((e,t,r)=>t.toUpperCase()+r)))),L=e=>e.split("").reverse().join(""),N=e=>(e.maskIndex--,""),D={"#":({value:e})=>e,0:e=>A(e.value)?e.value:N(e),9:e=>A(e.value)?e.value:N(e),A:e=>I(e.value)?e.value:N(e),Z:e=>I(e.value)?e.value:N(e),L:e=>I(e.value)?e.value.toLowerCase():N(e),U:e=>I(e.value)?e.value.toUpperCase():N(e),S:e=>M(e.value)?e.value:N(e)},H=e=>{e.maskIndex++,e.textIndex++;const{mask:t,maskIndex:r,text:s,textIndex:i}=e;e.key=t[r],e.value=s[i];const{key:n,value:a}=e;return l(n)||l(a)?"":(e=>D[e.key]?D[e.key](e):(e.key!=e.value&&e.textIndex--,e.key))(e)+H(e)},U=(e,t)=>H({mask:e,maskIndex:-1,text:t,textIndex:-1,key:"",value:""}),q=U,B=(e,t)=>L(q(L(e),L(t))),P=36e5,Y=24*P,$={ms:1,s:1e3,m:6e4,h:P,d:Y,w:7*Y,y:315576e5},R=["y","d","h","m","s","ms"],z=(e,t)=>e.reduce(((e,r)=>Object.assign(Object.assign({},e),{[r]:t[r]})),{}),J=(e,...t)=>{if(!t.length)return e;const r=t.shift();if(o(e)&&o(r))for(const t in r)o(r[t])?(e[t]||(e=Object.assign(Object.assign({},e),{[t]:{}})),e[t]=J(e[t],r[t])):e=Object.assign(Object.assign({},e),{[t]:r[t]});return J(e,...t)};class V{constructor(){this.name="",this._error="",this._filter=[],this._type="any",this.rules=[],this.custom=[]}empty(e){return this._value=e,this.unshift((e=>{const t=s(e);return{break:!t,value:t?e:this._value}}))}error(e){return this._error=e,this}filter(...e){return this._filter=e,this.unshift((e=>{const t=-1==this._filter.indexOf(e);return{break:!t,value:t?e:void 0}}))}invalid(e){return{error:this._error?this._error:this.name?this.name+":"+e:e}}parse(){return this.unshift((e=>({value:e})))}push(e){return this.rules.push(e),this}required(){return this.unshift((e=>s(e)?{value:e}:this.invalid("["+this._type+"].required")))}test(e){return!a(this.validate(e).error)}testAsync(e){return b(this,void 0,void 0,(function*(){return!a((yield this.validateAsync(e)).error)}))}unshift(e){return this.rules.unshift(e),this}validate(e){if(this.custom.length)return this.invalid("[async]");let t={value:e};for(let e=0;e<this.rules.length;e++){if(t=this.rules[e](t.value),t.error)return{error:t.error};if(t.break)return{value:t.value}}return{value:t.value}}validateAsync(e){return b(this,void 0,void 0,(function*(){let t=this.validate(e);if(t.error)return{error:t.error};for(let e=0;e<this.custom.length;e++){if(t=yield this.custom[e](t.value),t.error)return{error:t.error};if(t.break)return{value:t.value}}return{value:t.value}}))}}class W extends V{constructor(){super(),this._length=0,this._max=0,this._min=0,this._type="array",this.push((e=>{if(t(e)){if(this._items){this._items.name="";for(let t=0;t<e.length;t++){const{error:r,value:s}=this._items.validate(e[t]);if(r)return this.invalid("["+this._type+"]< "+r+"["+t+"] >");e[t]=s}}return{value:e}}return this.invalid("["+this._type+"]")}))}between(e,t){return this.min(e),this.max(t)}items(e){return this._items=e,this}length(e){return this._length=e,this.push((e=>e.length==this._length?{value:e}:this.invalid("["+this._type+"].length("+this._length+")")))}max(e){return this._max=e,this.push((e=>e.length<=this._max?{value:e}:this.invalid("["+this._type+"].max("+this._max+")")))}min(e){return this._min=e,this.push((e=>e.length>=this._min?{value:e}:this.invalid("["+this._type+"].min("+this._min+")")))}}class Z extends V{constructor(){super(),this._type="boolean",this.push((e=>r(e)?{value:e}:this.invalid("["+this._type+"]")))}parse(){return this.unshift((e=>({value:s(e)?-1!=[1,"1",!0,"true"].indexOf(e):e})))}}class K extends V{constructor(){super(),this._max=0,this._min=0,this._type="number",this.push((e=>i(e)?{value:e}:this.invalid("["+this._type+"]")))}between(e,t){return this.min(e),this.max(t)}max(e){return this._max=e,this.push((e=>e<=this._max?{value:e}:this.invalid("["+this._type+"].max("+this._max+")")))}min(e){return this._min=e,this.push((e=>e>=this._min?{value:e}:this.invalid("["+this._type+"].min("+this._min+")")))}parse(){return this.unshift((e=>({value:s(e)?parseFloat(e):e})))}}class G extends V{constructor(){super(),this._keys={},this._type="object",this.push((e=>{if(n(e)){const t=[],r={};return Object.keys(this._keys).forEach((i=>{const n=this._keys[i];n.name=i;const{error:a,value:o}=n.validate(e[i]);a&&t.push(a),s(o)&&(r[i]=o)})),t.length?this.invalid("["+this._type+"]{ "+t.join(", ")+" }"):{value:r}}return this.invalid("["+this._type+"]")}))}keys(e){return this._keys=e||{},this}parse(){return this.unshift((e=>{if(!n(e))try{e=JSON.parse(e)}catch(e){return this.invalid("["+this._type+"]")}const t=Object.keys(this._keys);return{value:t.length?z(t,e):e}}))}}class Q extends V{constructor(){super(),this._length=0,this._max=0,this._min=0,this._type="string",this.push((e=>a(e)?{value:e}:this.invalid("["+this._type+"]")))}between(e,t){return this.min(e),this.max(t)}date(){return this.push((e=>isNaN(new Date(e).getTime())?this.invalid("["+this._type+"].date"):{value:e}))}email(){return this.push((e=>/^[\w-\\.]+@([\w-]+\.)+[\w-]{2,4}$/i.test(e)?{value:e}:this.invalid("["+this._type+"].email")))}length(e){return this._length=e,this.push((e=>e.length==this._length?{value:e}:this.invalid("["+this._type+"].length("+this._length+")")))}lowerCase(){return this.push((e=>({value:e.toLowerCase()})))}lowerCamelCase(){return this.push((e=>({value:E(e)})))}max(e){return this._max=e,this.push((e=>e.length<=this._max?{value:e}:this.invalid("["+this._type+"].max("+this._max+")")))}mask(e){return this.push((t=>({value:U(e,t)})))}min(e){return this._min=e,this.push((e=>e.length>=this._min?{value:e}:this.invalid("["+this._type+"].min("+this._min+")")))}parse(){return this.unshift((e=>({value:n(e)?JSON.stringify(e):s(e)?e.toString():e})))}required(){return this.push((e=>e.length?{value:e}:this.invalid("["+this._type+"].required")))}trim(){return this.push((e=>({value:e.trim()})))}upperCase(){return this.push((e=>({value:e.toUpperCase()})))}upperCamelCase(){return this.push((e=>({value:F(e)})))}}class X{static array(e){return(new W).items(e)}static boolean(){return new Z}static number(){return new K}static object(e){return(new G).keys(e)}static string(){return new Q}test(e,...t){return!a(X.validate(e,...t).error)}testAsync(e,...t){return b(this,void 0,void 0,(function*(){return!a((yield X.validateAsync(e,...t)).error)}))}static validate(e,...t){let r={value:e};for(let e=0;e<t.length;e++)if(r=t[e].validate(r.value),r.error)return{error:r.error};return r}static validateAsync(e,...t){return b(this,void 0,void 0,(function*(){let r={value:e};for(let e=0;e<t.length;e++)if(r=yield t[e].validateAsync(r.value),r.error)return{error:r.error};return r}))}}exports.EventEmitter=class{constructor(){this.events=new Map}on(e,t){const r=this.events.get(e);return r?r.push(t):this.events.set(e,[t]),{dispose:()=>this.off(e,t)}}once(e,t){const r=s=>{t(s),this.off(e,r)};return this.on(e,r),{dispose:()=>this.off(e,r)}}off(e,t){const r=this.events.get(e);if(t){if(r){const e=r.indexOf(t);e>=0&&r.splice(e,1)}}else this.events.set(e,[])}emit(e,t){const r=this.events.get(e);r&&r.forEach((e=>e(t)))}},exports.Validation=X,exports.ValidationBase=V,exports.allowed=z,exports.cache=()=>{const e=[],t=[];return r=>{let s=e.indexOf(r);return-1==s&&(e.push(r),t.push({}),s=t.length-1),t[s]}},exports.camelCase=T,exports.chunkArray=(e,t)=>{const r=[];for(let s=0;s<e.length;s+=t)r.push(e.slice(s,s+t));return r},exports.clamp=h,exports.cutText=(e,t)=>{if(e.length>t){const r=e.substring(0,t).split(" ");return r.pop(),r.join(" ")+"..."}return e},exports.dateFormat=(e,t)=>t.replace(/%[yYmdHMS]/g,(t=>_[t]?_[t](e):t.slice(1))),exports.debounce=(e,t)=>{let r;const s=()=>{r&&clearTimeout(r)};return{cancel:s,run(...i){s(),r=setTimeout((()=>e(...i)),t)}}},exports.decodeHTML=e=>e.replace(/&#(\d+);/g,((e,t)=>String.fromCharCode(t))),exports.denied=(e,t)=>z(Object.keys(t).filter((t=>-1==e.indexOf(t))),t),exports.each=(e,r,s)=>t(e)?k(e,r,s):n(e)?w(e,r,s):null,exports.encodeHTML=e=>e.replace(/[\u00A0-\u9999<>\\&]/g,(e=>"&#"+e.charCodeAt(0)+";")),exports.forEachAsync=(e,t,r)=>b(void 0,void 0,void 0,(function*(){yield Promise.allSettled(e.map(((s,i)=>t.call(r,s,i,e)))).catch(S)})),exports.forEachIndex=k,exports.forEachKey=w,exports.forEachSeries=(e,t,r)=>b(void 0,void 0,void 0,(function*(){for(let s=0;s<e.length;s++)yield t.call(r,e[s],s,e).catch(S)})),exports.forLoop=(e,t,r)=>{for(let s=1;s<=e&&!1!==t.call(r,s,e);s++);return e},exports.hash=e=>(e=C(j,e,!1),{generate:t=>C(t,e,!1),reverse:t=>C(t,e,!0)}),exports.hexToRgb=e=>{var t;return(null===(t=e.replace(/^#/,"").match(/.{1,2}/g))||void 0===t?void 0:t.map((e=>c(e))))||[]},exports.isArray=t,exports.isBoolean=r,exports.isCharacter=e=>/^[\w]$/.test(e),exports.isDef=s,exports.isDigit=A,exports.isFloat=e=>i(e)&&!!(e%1),exports.isFunction=e=>"function"==u(e),exports.isInteger=e=>i(e)&&!(e%1),exports.isLetter=I,exports.isNull=e=>null===e,exports.isNumber=i,exports.isObject=n,exports.isPlainObject=o,exports.isString=a,exports.isSymbol=M,exports.isUndefined=l,exports.lerp=(e,t,r)=>e+(t-e)*h(r,0,1),exports.loop=(e,t)=>{let r=!1;const s=()=>b(void 0,void 0,void 0,(function*(){r&&(yield e(),setTimeout(s,t))}));return{start(){r||(r=!0,s())},stop(){r=!1}}},exports.lowerCamelCase=E,exports.map=(e,t,r)=>{let s="";const i=Object.keys(e);for(let n=0;n<i.length;n++)s=i[n],e[s]=t.call(r,e[s],s,e);return e},exports.mask=U,exports.maskMoney=(e,t,r)=>(r++,t=parseInt((t||"0").replace(/\W/g,"")).toString(),B(e,t.length<r?("0".repeat(r)+t).slice(-1*r):t)),exports.maskReverse=B,exports.maskTest=(e,t)=>e.length==q(e,t).length,exports.merge=J,exports.msToString=e=>{const t=[];return R.forEach((r=>{const s=$[r],i=(e-e%s)/s;i&&(e-=i*s,t.push(i.toString()+r))})),t.join(" ")},exports.noop=S,exports.parseMs=e=>{const t=/(-?(?:\d+)?\.?\d+) *(ms|s|m|h|d|w|y)/gm;let r,s=0;for(;null!==(r=t.exec(e));)r.index===t.lastIndex&&t.lastIndex++,s+=parseFloat(r[1])*$[r[2]]||0;return s},exports.parseSize=e=>{if(i(e))return e+"px";const t=(e=>/(-?(?:\d+)?\.?\d+) *(px|%|cm|mm|in|pt|pc|en|ex|ch|rem|vw|vh|vmin|vmax)*/g.exec(e))(e);return t?parseFloat(t[1])+(t[2]||"px"):"0px"},exports.rangeArray=(e,t,r=1)=>Array.from({length:(t-e)/r+1},((t,s)=>e+s*r)),exports.rgbToHex=(e,t,r)=>"#"+p(e.toString(16))+p(t.toString(16))+p(r.toString(16)),exports.shadeColor=(e,t)=>"#"+e.replace(/^#/,"").replace(/../g,(e=>p(v(e,t)))),exports.shuffleArray=e=>{for(let t=e.length-1;t>0;t--){const r=Math.floor(Math.random()*(t+1));[e[t],e[r]]=[e[r],e[t]]}return e},exports.simpleID=()=>x()+m(),exports.sleep=e=>new Promise((t=>setTimeout(t,e))),exports.stringReverse=L,exports.toArray=e=>t(e)?e:s(e)?[e]:[],exports.toBool=e=>"true"===e||"1"===e,exports.type=u,exports.uniqueID=()=>g()+g()+g()+g(),exports.upperCamelCase=F,exports.uuidv4=()=>f()+"-"+m()+"-4"+x()+"-"+m()+"-"+(f()+m());
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @andrewcaires/utils.js v0.2.
|
|
2
|
+
* @andrewcaires/utils.js v0.2.24
|
|
3
3
|
* JavaScript utility library for web and nodejs development
|
|
4
4
|
* (c) 2024 Andrew Caires
|
|
5
5
|
* @license: MIT
|
|
6
6
|
*/
|
|
7
|
-
declare const chunkArray: <T>(array: T
|
|
7
|
+
declare const chunkArray: <T>(array: Array<T>, length: number) => Array<Array<T>>;
|
|
8
8
|
declare const rangeArray: (start: number, end: number, step?: number) => number[];
|
|
9
9
|
declare const shuffleArray: (array: Array<any>) => any[];
|
|
10
10
|
declare const toArray: (value: any) => Array<any>;
|
|
@@ -70,7 +70,7 @@ declare class EventEmitter {
|
|
|
70
70
|
type EachCallback = TypeCallback<any, string | number, any, any>;
|
|
71
71
|
type LoopCallback = (index: number, count: number) => any;
|
|
72
72
|
declare const each: (object: any, callback: EachCallback, thisArg?: any) => any;
|
|
73
|
-
declare const forEachIndex: <T>(array: T
|
|
73
|
+
declare const forEachIndex: <T>(array: Array<T>, callback: TypeCallbackArray<T>, thisArg?: any) => Array<T>;
|
|
74
74
|
declare const forEachKey: <T>(object: TypeObject<T>, callback: TypeCallbackObject<T>, thisArg?: any) => TypeObject<T>;
|
|
75
75
|
declare const forLoop: (count: number, callback: LoopCallback, thisArg?: any) => number;
|
|
76
76
|
declare const map: <T>(object: TypeObject<T>, callback: TypeCallbackObject<T>, thisArg?: any) => TypeObject<T>;
|
|
@@ -98,8 +98,8 @@ declare const denied: (denied: Array<string>, target: TypeObjectAny) => TypeObje
|
|
|
98
98
|
declare const merge: (target: TypeObjectAny, ...sources: Array<TypeObjectAny>) => TypeObjectAny;
|
|
99
99
|
|
|
100
100
|
type ForEachCallback<T> = TypeCallback<T, number, Array<T>, Promise<void>>;
|
|
101
|
-
declare const forEachAsync: <T>(array: T
|
|
102
|
-
declare const forEachSeries: <T>(array: T
|
|
101
|
+
declare const forEachAsync: <T>(array: Array<T>, callback: ForEachCallback<T>, thisArg?: any) => Promise<void>;
|
|
102
|
+
declare const forEachSeries: <T>(array: Array<T>, callback: ForEachCallback<T>, thisArg?: any) => Promise<void>;
|
|
103
103
|
declare const sleep: (ms: number) => Promise<void>;
|
|
104
104
|
|
|
105
105
|
declare const parseSize: (size: number | string) => string;
|
|
@@ -126,6 +126,7 @@ declare const isString: (test: any) => test is string;
|
|
|
126
126
|
declare const isFloat: (test: any) => test is number;
|
|
127
127
|
declare const isInteger: (test: any) => test is number;
|
|
128
128
|
declare const isNull: (test: any) => test is null;
|
|
129
|
+
declare const isPlainObject: (test: any) => test is TypeObjectAny;
|
|
129
130
|
declare const isUndefined: (test: any) => test is undefined;
|
|
130
131
|
declare const type: (test: any) => string;
|
|
131
132
|
|
|
@@ -225,4 +226,4 @@ declare class Validation {
|
|
|
225
226
|
static validateAsync(value?: any, ...rules: Array<ValidationBase>): Promise<IValidationResult>;
|
|
226
227
|
}
|
|
227
228
|
|
|
228
|
-
export { type CacheCallback, type EachCallback, type EventCallback, EventEmitter, type EventList, type ForEachCallback, type IDebounceCallbacks, type IEventDisposable, type IHash, type ILoopCallbacks, type IValidationResult, type LoopCallback, type TypeArray, type TypeArrayAny, type TypeArrayFunction, type TypeArrayNumber, type TypeArrayString, type TypeCallback, type TypeCallbackArray, type TypeCallbackFunction, type TypeCallbackMap, type TypeCallbackObject, type TypeObject, type TypeObjectAny, type TypeObjectFunction, type TypeObjectNumber, type TypeObjectString, Validation, ValidationBase, type ValidationCallback, type ValidationCallbackAsync, allowed, cache, camelCase, chunkArray, clamp, cutText, dateFormat, debounce, decodeHTML, denied, each, encodeHTML, forEachAsync, forEachIndex, forEachKey, forEachSeries, forLoop, hash, hexToRgb, isArray, isBoolean, isCharacter, isDef, isDigit, isFloat, isFunction, isInteger, isLetter, isNull, isNumber, isObject, isString, isSymbol, isUndefined, lerp, loop, lowerCamelCase, map, mask, maskMoney, maskReverse, maskTest, merge, msToString, noop, parseMs, parseSize, rangeArray, rgbToHex, shadeColor, shuffleArray, simpleID, sleep, stringReverse, toArray, toBool, type, uniqueID, upperCamelCase, uuidv4 };
|
|
229
|
+
export { type CacheCallback, type EachCallback, type EventCallback, EventEmitter, type EventList, type ForEachCallback, type IDebounceCallbacks, type IEventDisposable, type IHash, type ILoopCallbacks, type IValidationResult, type LoopCallback, type TypeArray, type TypeArrayAny, type TypeArrayFunction, type TypeArrayNumber, type TypeArrayString, type TypeCallback, type TypeCallbackArray, type TypeCallbackFunction, type TypeCallbackMap, type TypeCallbackObject, type TypeObject, type TypeObjectAny, type TypeObjectFunction, type TypeObjectNumber, type TypeObjectString, Validation, ValidationBase, type ValidationCallback, type ValidationCallbackAsync, allowed, cache, camelCase, chunkArray, clamp, cutText, dateFormat, debounce, decodeHTML, denied, each, encodeHTML, forEachAsync, forEachIndex, forEachKey, forEachSeries, forLoop, hash, hexToRgb, isArray, isBoolean, isCharacter, isDef, isDigit, isFloat, isFunction, isInteger, isLetter, isNull, isNumber, isObject, isPlainObject, isString, isSymbol, isUndefined, lerp, loop, lowerCamelCase, map, mask, maskMoney, maskReverse, maskTest, merge, msToString, noop, parseMs, parseSize, rangeArray, rgbToHex, shadeColor, shuffleArray, simpleID, sleep, stringReverse, toArray, toBool, type, uniqueID, upperCamelCase, uuidv4 };
|
package/dist/index.esm.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @andrewcaires/utils.js v0.2.
|
|
2
|
+
* @andrewcaires/utils.js v0.2.24
|
|
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={},e=t=>"array"==v(t),r=t=>"boolean"==v(t),s=t=>"null"!=v(t),i=t=>"function"==v(t),n=t=>"number"==v(t),a=t=>"object"==v(t),h=t=>"string"==v(t),u=t=>n(t)&&!!(t%1),l=t=>n(t)&&!(t%1),o=t=>null===t,c=t=>void 0===t,v=e=>null==e?"null":t[t.toString.call(e)]||"object";["Array","Boolean","Function","Number","Object","String"].forEach((e=>t["[object "+e+"]"]=e.toLowerCase()));const p=(t,e)=>{const r=[];for(let s=0;s<t.length;s+=e)r.push(t.slice(s,s+e));return r},d=(t,e,r=1)=>Array.from({length:(e-t)/r+1},((e,s)=>t+s*r)),m=t=>{for(let e=t.length-1;e>0;e--){const r=Math.floor(Math.random()*(e+1));[t[e],t[r]]=[t[r],t[e]]}return t},f=t=>e(t)?t:s(t)?[t]:[],g=t=>"true"===t||"1"===t,y=()=>{const t=[],e=[];return r=>{let s=t.indexOf(r);return-1==s&&(t.push(r),e.push({}),s=e.length-1),e[s]}},_=(t,e,r)=>Math.max(e,Math.min(r,t)),x=(t,e,r)=>t+(e-t)*_(r,0,1),b=t=>("0"+t).slice(-2),w=t=>parseInt(t,16)||0,k=(t,e)=>{return(r=w(t)+e,_(r,0,255)).toString(16);var r},S=t=>{var e;return(null===(e=t.replace(/^#/,"").match(/.{1,2}/g))||void 0===e?void 0:e.map((t=>w(t))))||[]},j=(t,e,r)=>"#"+b(t.toString(16))+b(e.toString(16))+b(r.toString(16)),O=(t,e)=>"#"+t.replace(/^#/,"").replace(/../g,(t=>b(k(t,e)))),C=t=>Math.random().toString(16).slice(t),A=()=>C(-3),I=()=>C(-4),M=()=>I()+I(),E=()=>M()+M(),F=()=>A()+I(),L=()=>E()+E()+E()+E(),N=()=>M()+"-"+I()+"-4"+A()+"-"+I()+"-"+(M()+I()),T=t=>("0"+t.toString()).slice(-2),U={"%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())},q=(t,e)=>e.replace(/%[yYmdHMS]/g,(e=>U[e]?U[e](t):e.slice(1)));function Y(t,e,r,s){return new(r||(r=Promise))((function(i,n){function a(t){try{u(s.next(t))}catch(t){n(t)}}function h(t){try{u(s.throw(t))}catch(t){n(t)}}function u(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(a,h)}u((s=s.apply(t,e||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const $=(t,e)=>{let r;const s=()=>{r&&clearTimeout(r)};return{cancel:s,run(...i){s(),r=setTimeout((()=>t(...i)),e)}}},H=(t,e)=>{let r=!1;const s=()=>Y(void 0,void 0,void 0,(function*(){r&&(yield t(),setTimeout(s,e))}));return{start(){r||(r=!0,s())},stop(){r=!1}}};class P{constructor(){this.events=new Map}on(t,e){const r=this.events.get(t);return r?r.push(e):this.events.set(t,[e]),{dispose:()=>this.off(t,e)}}once(t,e){const r=s=>{e(s),this.off(t,r)};return this.on(t,r),{dispose:()=>this.off(t,r)}}off(t,e){const r=this.events.get(t);if(e){if(r){const t=r.indexOf(e);t>=0&&r.splice(t,1)}}else this.events.set(t,[])}emit(t,e){const r=this.events.get(t);r&&r.forEach((t=>t(e)))}}const D=(t,r,s)=>e(t)?J(t,r,s):a(t)?W(t,r,s):null,J=(t,e,r)=>{for(let s=0;s<t.length&&!1!==e.call(r,t[s],s,t);s++);return t},W=(t,e,r)=>{let s="";const i=Object.keys(t);for(let n=0;n<i.length&&(s=i[n],!1!==e.call(r,t[s],s,t));n++);return t},Z=(t,e,r)=>{for(let s=1;s<=t&&!1!==e.call(r,s,t);s++);return t},z=(t,e,r)=>{let s="";const i=Object.keys(t);for(let n=0;n<i.length;n++)s=i[n],t[s]=e.call(r,t[s],s,t);return t},B=()=>{},G="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",K=(t,e,r)=>{let s="";for(let i=0;i<t.length;i++){const n=G.indexOf(t[i]),a=G.indexOf(e[i%e.length]);s+=-1===n||-1===a?t[i]:G[(r?n-a+62:n+a)%62]}return s},Q=t=>(t=K(G,t,!1),{generate:e=>K(e,t,!1),reverse:e=>K(e,t,!0)}),R=(t,e)=>{if(t.length>e){const r=t.substring(0,e).split(" ");return r.pop(),r.join(" ")+"..."}return t},V=t=>t.replace(/&#(\d+);/g,((t,e)=>String.fromCharCode(e))),X=t=>t.replace(/[\u00A0-\u9999<>\\&]/g,(t=>"&#"+t.charCodeAt(0)+";")),tt=(t,e)=>e(t.toLowerCase().replace(/\W+/g," ")).replace(/\s/g,""),et=t=>/^[\w]$/.test(t),rt=t=>/^[\d]$/.test(t),st=t=>/^[A-Za-z]$/.test(t),it=t=>/^[^\w]$/.test(t),nt=t=>tt(t,(t=>t.replace(/\s(\w)/g,(t=>t.toUpperCase())))),at=nt,ht=t=>tt(t,(t=>t.replace(/(\w)(\w*)/g,((t,e,r)=>e.toUpperCase()+r)))),ut=t=>t.split("").reverse().join(""),lt=t=>(t.maskIndex--,""),ot={"#":({value:t})=>t,0:t=>rt(t.value)?t.value:lt(t),9:t=>rt(t.value)?t.value:lt(t),A:t=>st(t.value)?t.value:lt(t),Z:t=>st(t.value)?t.value:lt(t),L:t=>st(t.value)?t.value.toLowerCase():lt(t),U:t=>st(t.value)?t.value.toUpperCase():lt(t),S:t=>it(t.value)?t.value:lt(t)},ct=t=>{t.maskIndex++,t.textIndex++;const{mask:e,maskIndex:r,text:s,textIndex:i}=t;t.key=e[r],t.value=s[i];const{key:n,value:a}=t;return c(n)||c(a)?"":(t=>ot[t.key]?ot[t.key](t):(t.key!=t.value&&t.textIndex--,t.key))(t)+ct(t)},vt=(t,e)=>ct({mask:t,maskIndex:-1,text:e,textIndex:-1,key:"",value:""}),pt=(t,e,r)=>(r++,e=parseInt((e||"0").replace(/\W/g,"")).toString(),ft(t,e.length<r?("0".repeat(r)+e).slice(-1*r):e)),dt=vt,mt=(t,e)=>t.length==dt(t,e).length,ft=(t,e)=>ut(dt(ut(t),ut(e))),gt=36e5,yt=24*gt,_t={ms:1,s:1e3,m:6e4,h:gt,d:yt,w:6048e5,y:315576e5},xt=t=>{const e=/(-?(?:\d+)?\.?\d+) *(ms|s|m|h|d|w|y)/gm;let r,s=0;for(;null!==(r=e.exec(t));)r.index===e.lastIndex&&e.lastIndex++,s+=parseFloat(r[1])*_t[r[2]]||0;return s},bt=["y","d","h","m","s","ms"],wt=t=>{const e=[];return bt.forEach((r=>{const s=_t[r],i=(t-t%s)/s;i&&(t-=i*s,e.push(i.toString()+r))})),e.join(" ")},kt=(t,e)=>t.reduce(((t,r)=>Object.assign(Object.assign({},t),{[r]:e[r]})),{}),St=(t,e)=>kt(Object.keys(e).filter((e=>-1==t.indexOf(e))),e),jt=(t,...e)=>{if(!e.length)return t;const r=e.shift();if(a(t)&&a(r))for(const e in r)a(r[e])?(t[e]||(t=Object.assign(Object.assign({},t),{[e]:{}})),t[e]=jt(t[e],r[e])):t=Object.assign(Object.assign({},t),{[e]:r[e]});return jt(t,...e)},Ot=(t,e,r)=>Y(void 0,void 0,void 0,(function*(){yield Promise.allSettled(t.map(((s,i)=>e.call(r,s,i,t)))).catch(B)})),Ct=(t,e,r)=>Y(void 0,void 0,void 0,(function*(){for(let s=0;s<t.length;s++)yield e.call(r,t[s],s,t).catch(B)})),At=t=>new Promise((e=>setTimeout(e,t))),It=t=>{if(n(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"};class Mt{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=s(t);return{break:!e,value:e?t: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}}))}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=>s(t)?{value:t}:this.invalid("["+this._type+"].required")))}test(t){return!h(this.validate(t).error)}testAsync(t){return Y(this,void 0,void 0,(function*(){return!h((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 Y(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 Et extends Mt{constructor(){super(),this._length=0,this._max=0,this._min=0,this._type="array",this.push((t=>{if(e(t)){if(this._items){this._items.name="";for(let e=0;e<t.length;e++){const{error:r,value:s}=this._items.validate(t[e]);if(r)return this.invalid("["+this._type+"]< "+r+"["+e+"] >");t[e]=s}}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 Ft extends Mt{constructor(){super(),this._type="boolean",this.push((t=>r(t)?{value:t}:this.invalid("["+this._type+"]")))}parse(){return this.unshift((t=>({value:s(t)?-1!=[1,"1",!0,"true"].indexOf(t):t})))}}class Lt extends Mt{constructor(){super(),this._max=0,this._min=0,this._type="number",this.push((t=>n(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:s(t)?parseFloat(t):t})))}}class Nt extends Mt{constructor(){super(),this._keys={},this._type="object",this.push((t=>{if(a(t)){const e=[],r={};return Object.keys(this._keys).forEach((i=>{const n=this._keys[i];n.name=i;const{error:a,value:h}=n.validate(t[i]);a&&e.push(a),s(h)&&(r[i]=h)})),e.length?this.invalid("["+this._type+"]{ "+e.join(", ")+" }"):{value:r}}return this.invalid("["+this._type+"]")}))}keys(t){return this._keys=t||{},this}parse(){return this.unshift((t=>{if(!a(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 Tt extends Mt{constructor(){super(),this._length=0,this._max=0,this._min=0,this._type="string",this.push((t=>h(t)?{value:t}:this.invalid("["+this._type+"]")))}between(t,e){return this.min(t),this.max(e)}date(){return this.push((t=>isNaN(new Date(t).getTime())?this.invalid("["+this._type+"].date"):{value:t}))}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:nt(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:vt(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:a(t)?JSON.stringify(t):s(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:ht(t)})))}}class Ut{static array(t){return(new Et).items(t)}static boolean(){return new Ft}static number(){return new Lt}static object(t){return(new Nt).keys(t)}static string(){return new Tt}test(t,...e){return!h(Ut.validate(t,...e).error)}testAsync(t,...e){return Y(this,void 0,void 0,(function*(){return!h((yield Ut.validateAsync(t,...e)).error)}))}static validate(t,...e){let r={value:t};for(let t=0;t<e.length;t++)if(r=e[t].validate(r.value),r.error)return{error:r.error};return r}static validateAsync(t,...e){return Y(this,void 0,void 0,(function*(){let r={value:t};for(let t=0;t<e.length;t++)if(r=yield e[t].validateAsync(r.value),r.error)return{error:r.error};return r}))}}export{P as EventEmitter,Ut as Validation,Mt as ValidationBase,kt as allowed,y as cache,at as camelCase,p as chunkArray,_ as clamp,R as cutText,q as dateFormat,$ as debounce,V as decodeHTML,St as denied,D as each,X as encodeHTML,Ot as forEachAsync,J as forEachIndex,W as forEachKey,Ct as forEachSeries,Z as forLoop,Q as hash,S as hexToRgb,e as isArray,r as isBoolean,et as isCharacter,s as isDef,rt as isDigit,u as isFloat,i as isFunction,l as isInteger,st as isLetter,o as isNull,n as isNumber,a as isObject,h as isString,it as isSymbol,c as isUndefined,x as lerp,H as loop,nt as lowerCamelCase,z as map,vt as mask,pt as maskMoney,ft as maskReverse,mt as maskTest,jt as merge,wt as msToString,B as noop,xt as parseMs,It as parseSize,d as rangeArray,j as rgbToHex,O as shadeColor,m as shuffleArray,F as simpleID,At as sleep,ut as stringReverse,f as toArray,g as toBool,v as type,L as uniqueID,ht as upperCamelCase,N as uuidv4};
|
|
7
|
+
const t={},e=t=>"array"==p(t),r=t=>"boolean"==p(t),s=t=>"null"!=p(t),i=t=>"function"==p(t),n=t=>"number"==p(t),a=t=>"object"==p(t),u=t=>"string"==p(t),h=t=>n(t)&&!!(t%1),l=t=>n(t)&&!(t%1),o=t=>null===t,c=t=>(null==t?void 0:t.constructor)===Object,v=t=>void 0===t,p=e=>null==e?"null":t[t.toString.call(e)]||"object";["Array","Boolean","Function","Number","Object","String"].forEach((e=>t["[object "+e+"]"]=e.toLowerCase()));const d=(t,e)=>{const r=[];for(let s=0;s<t.length;s+=e)r.push(t.slice(s,s+e));return r},m=(t,e,r=1)=>Array.from({length:(e-t)/r+1},((e,s)=>t+s*r)),f=t=>{for(let e=t.length-1;e>0;e--){const r=Math.floor(Math.random()*(e+1));[t[e],t[r]]=[t[r],t[e]]}return t},g=t=>e(t)?t:s(t)?[t]:[],y=t=>"true"===t||"1"===t,_=()=>{const t=[],e=[];return r=>{let s=t.indexOf(r);return-1==s&&(t.push(r),e.push({}),s=e.length-1),e[s]}},x=(t,e,r)=>Math.max(e,Math.min(r,t)),b=(t,e,r)=>t+(e-t)*x(r,0,1),w=t=>("0"+t).slice(-2),k=t=>parseInt(t,16)||0,j=(t,e)=>{return(r=k(t)+e,x(r,0,255)).toString(16);var r},O=t=>{var e;return(null===(e=t.replace(/^#/,"").match(/.{1,2}/g))||void 0===e?void 0:e.map((t=>k(t))))||[]},S=(t,e,r)=>"#"+w(t.toString(16))+w(e.toString(16))+w(r.toString(16)),C=(t,e)=>"#"+t.replace(/^#/,"").replace(/../g,(t=>w(j(t,e)))),A=t=>Math.random().toString(16).slice(t),I=()=>A(-3),M=()=>A(-4),E=()=>M()+M(),F=()=>E()+E(),L=()=>I()+M(),N=()=>F()+F()+F()+F(),T=()=>E()+"-"+M()+"-4"+I()+"-"+M()+"-"+(E()+M()),U=t=>("0"+t.toString()).slice(-2),q={"%y":t=>U(t.getFullYear()),"%Y":t=>t.getFullYear().toString(),"%m":t=>U(t.getMonth()+1),"%d":t=>U(t.getDate()),"%H":t=>U(t.getHours()),"%M":t=>U(t.getMinutes()),"%S":t=>U(t.getSeconds())},Y=(t,e)=>e.replace(/%[yYmdHMS]/g,(e=>q[e]?q[e](t):e.slice(1)));function $(t,e,r,s){return new(r||(r=Promise))((function(i,n){function a(t){try{h(s.next(t))}catch(t){n(t)}}function u(t){try{h(s.throw(t))}catch(t){n(t)}}function h(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(a,u)}h((s=s.apply(t,e||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const H=(t,e)=>{let r;const s=()=>{r&&clearTimeout(r)};return{cancel:s,run(...i){s(),r=setTimeout((()=>t(...i)),e)}}},P=(t,e)=>{let r=!1;const s=()=>$(void 0,void 0,void 0,(function*(){r&&(yield t(),setTimeout(s,e))}));return{start(){r||(r=!0,s())},stop(){r=!1}}};class D{constructor(){this.events=new Map}on(t,e){const r=this.events.get(t);return r?r.push(e):this.events.set(t,[e]),{dispose:()=>this.off(t,e)}}once(t,e){const r=s=>{e(s),this.off(t,r)};return this.on(t,r),{dispose:()=>this.off(t,r)}}off(t,e){const r=this.events.get(t);if(e){if(r){const t=r.indexOf(e);t>=0&&r.splice(t,1)}}else this.events.set(t,[])}emit(t,e){const r=this.events.get(t);r&&r.forEach((t=>t(e)))}}const J=(t,r,s)=>e(t)?W(t,r,s):a(t)?Z(t,r,s):null,W=(t,e,r)=>{for(let s=0;s<t.length&&!1!==e.call(r,t[s],s,t);s++);return t},Z=(t,e,r)=>{let s="";const i=Object.keys(t);for(let n=0;n<i.length&&(s=i[n],!1!==e.call(r,t[s],s,t));n++);return t},z=(t,e,r)=>{for(let s=1;s<=t&&!1!==e.call(r,s,t);s++);return t},B=(t,e,r)=>{let s="";const i=Object.keys(t);for(let n=0;n<i.length;n++)s=i[n],t[s]=e.call(r,t[s],s,t);return t},G=()=>{},K="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",Q=(t,e,r)=>{let s="";for(let i=0;i<t.length;i++){const n=K.indexOf(t[i]),a=K.indexOf(e[i%e.length]);s+=-1===n||-1===a?t[i]:K[(r?n-a+62:n+a)%62]}return s},R=t=>(t=Q(K,t,!1),{generate:e=>Q(e,t,!1),reverse:e=>Q(e,t,!0)}),V=(t,e)=>{if(t.length>e){const r=t.substring(0,e).split(" ");return r.pop(),r.join(" ")+"..."}return t},X=t=>t.replace(/&#(\d+);/g,((t,e)=>String.fromCharCode(e))),tt=t=>t.replace(/[\u00A0-\u9999<>\\&]/g,(t=>"&#"+t.charCodeAt(0)+";")),et=(t,e)=>e(t.toLowerCase().replace(/\W+/g," ")).replace(/\s/g,""),rt=t=>/^[\w]$/.test(t),st=t=>/^[\d]$/.test(t),it=t=>/^[A-Za-z]$/.test(t),nt=t=>/^[^\w]$/.test(t),at=t=>et(t,(t=>t.replace(/\s(\w)/g,(t=>t.toUpperCase())))),ut=at,ht=t=>et(t,(t=>t.replace(/(\w)(\w*)/g,((t,e,r)=>e.toUpperCase()+r)))),lt=t=>t.split("").reverse().join(""),ot=t=>(t.maskIndex--,""),ct={"#":({value:t})=>t,0:t=>st(t.value)?t.value:ot(t),9:t=>st(t.value)?t.value:ot(t),A:t=>it(t.value)?t.value:ot(t),Z:t=>it(t.value)?t.value:ot(t),L:t=>it(t.value)?t.value.toLowerCase():ot(t),U:t=>it(t.value)?t.value.toUpperCase():ot(t),S:t=>nt(t.value)?t.value:ot(t)},vt=t=>{t.maskIndex++,t.textIndex++;const{mask:e,maskIndex:r,text:s,textIndex:i}=t;t.key=e[r],t.value=s[i];const{key:n,value:a}=t;return v(n)||v(a)?"":(t=>ct[t.key]?ct[t.key](t):(t.key!=t.value&&t.textIndex--,t.key))(t)+vt(t)},pt=(t,e)=>vt({mask:t,maskIndex:-1,text:e,textIndex:-1,key:"",value:""}),dt=(t,e,r)=>(r++,e=parseInt((e||"0").replace(/\W/g,"")).toString(),gt(t,e.length<r?("0".repeat(r)+e).slice(-1*r):e)),mt=pt,ft=(t,e)=>t.length==mt(t,e).length,gt=(t,e)=>lt(mt(lt(t),lt(e))),yt=36e5,_t=24*yt,xt={ms:1,s:1e3,m:6e4,h:yt,d:_t,w:7*_t,y:315576e5},bt=t=>{const e=/(-?(?:\d+)?\.?\d+) *(ms|s|m|h|d|w|y)/gm;let r,s=0;for(;null!==(r=e.exec(t));)r.index===e.lastIndex&&e.lastIndex++,s+=parseFloat(r[1])*xt[r[2]]||0;return s},wt=["y","d","h","m","s","ms"],kt=t=>{const e=[];return wt.forEach((r=>{const s=xt[r],i=(t-t%s)/s;i&&(t-=i*s,e.push(i.toString()+r))})),e.join(" ")},jt=(t,e)=>t.reduce(((t,r)=>Object.assign(Object.assign({},t),{[r]:e[r]})),{}),Ot=(t,e)=>jt(Object.keys(e).filter((e=>-1==t.indexOf(e))),e),St=(t,...e)=>{if(!e.length)return t;const r=e.shift();if(c(t)&&c(r))for(const e in r)c(r[e])?(t[e]||(t=Object.assign(Object.assign({},t),{[e]:{}})),t[e]=St(t[e],r[e])):t=Object.assign(Object.assign({},t),{[e]:r[e]});return St(t,...e)},Ct=(t,e,r)=>$(void 0,void 0,void 0,(function*(){yield Promise.allSettled(t.map(((s,i)=>e.call(r,s,i,t)))).catch(G)})),At=(t,e,r)=>$(void 0,void 0,void 0,(function*(){for(let s=0;s<t.length;s++)yield e.call(r,t[s],s,t).catch(G)})),It=t=>new Promise((e=>setTimeout(e,t))),Mt=t=>{if(n(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"};class Et{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=s(t);return{break:!e,value:e?t: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}}))}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=>s(t)?{value:t}:this.invalid("["+this._type+"].required")))}test(t){return!u(this.validate(t).error)}testAsync(t){return $(this,void 0,void 0,(function*(){return!u((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 $(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 Ft extends Et{constructor(){super(),this._length=0,this._max=0,this._min=0,this._type="array",this.push((t=>{if(e(t)){if(this._items){this._items.name="";for(let e=0;e<t.length;e++){const{error:r,value:s}=this._items.validate(t[e]);if(r)return this.invalid("["+this._type+"]< "+r+"["+e+"] >");t[e]=s}}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 Lt extends Et{constructor(){super(),this._type="boolean",this.push((t=>r(t)?{value:t}:this.invalid("["+this._type+"]")))}parse(){return this.unshift((t=>({value:s(t)?-1!=[1,"1",!0,"true"].indexOf(t):t})))}}class Nt extends Et{constructor(){super(),this._max=0,this._min=0,this._type="number",this.push((t=>n(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:s(t)?parseFloat(t):t})))}}class Tt extends Et{constructor(){super(),this._keys={},this._type="object",this.push((t=>{if(a(t)){const e=[],r={};return Object.keys(this._keys).forEach((i=>{const n=this._keys[i];n.name=i;const{error:a,value:u}=n.validate(t[i]);a&&e.push(a),s(u)&&(r[i]=u)})),e.length?this.invalid("["+this._type+"]{ "+e.join(", ")+" }"):{value:r}}return this.invalid("["+this._type+"]")}))}keys(t){return this._keys=t||{},this}parse(){return this.unshift((t=>{if(!a(t))try{t=JSON.parse(t)}catch(t){return this.invalid("["+this._type+"]")}const e=Object.keys(this._keys);return{value:e.length?jt(e,t):t}}))}}class Ut extends Et{constructor(){super(),this._length=0,this._max=0,this._min=0,this._type="string",this.push((t=>u(t)?{value:t}:this.invalid("["+this._type+"]")))}between(t,e){return this.min(t),this.max(e)}date(){return this.push((t=>isNaN(new Date(t).getTime())?this.invalid("["+this._type+"].date"):{value:t}))}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:at(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:pt(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:a(t)?JSON.stringify(t):s(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:ht(t)})))}}class qt{static array(t){return(new Ft).items(t)}static boolean(){return new Lt}static number(){return new Nt}static object(t){return(new Tt).keys(t)}static string(){return new Ut}test(t,...e){return!u(qt.validate(t,...e).error)}testAsync(t,...e){return $(this,void 0,void 0,(function*(){return!u((yield qt.validateAsync(t,...e)).error)}))}static validate(t,...e){let r={value:t};for(let t=0;t<e.length;t++)if(r=e[t].validate(r.value),r.error)return{error:r.error};return r}static validateAsync(t,...e){return $(this,void 0,void 0,(function*(){let r={value:t};for(let t=0;t<e.length;t++)if(r=yield e[t].validateAsync(r.value),r.error)return{error:r.error};return r}))}}export{D as EventEmitter,qt as Validation,Et as ValidationBase,jt as allowed,_ as cache,ut as camelCase,d as chunkArray,x as clamp,V as cutText,Y as dateFormat,H as debounce,X as decodeHTML,Ot as denied,J as each,tt as encodeHTML,Ct as forEachAsync,W as forEachIndex,Z as forEachKey,At as forEachSeries,z as forLoop,R as hash,O as hexToRgb,e as isArray,r as isBoolean,rt as isCharacter,s as isDef,st as isDigit,h as isFloat,i as isFunction,l as isInteger,it as isLetter,o as isNull,n as isNumber,a as isObject,c as isPlainObject,u as isString,nt as isSymbol,v as isUndefined,b as lerp,P as loop,at as lowerCamelCase,B as map,pt as mask,dt as maskMoney,gt as maskReverse,ft as maskTest,St as merge,kt as msToString,G as noop,bt as parseMs,Mt as parseSize,m as rangeArray,S as rgbToHex,C as shadeColor,f as shuffleArray,L as simpleID,It as sleep,lt as stringReverse,g as toArray,y as toBool,p as type,N as uniqueID,ht as upperCamelCase,T as uuidv4};
|
package/dist/index.min.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @andrewcaires/utils.js v0.2.
|
|
2
|
+
* @andrewcaires/utils.js v0.2.24
|
|
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(e){"use strict";const t={},r=e=>"array"==h(e),s=e=>"boolean"==h(e),i=e=>"null"!=h(e),n=e=>"number"==h(e),a=e=>"object"==h(e),l=e=>"string"==h(e),u=e=>void 0===e,h=e=>null==e?"null":t[t.toString.call(e)]||"object";["Array","Boolean","Function","Number","Object","String"].forEach((e=>t["[object "+e+"]"]=e.toLowerCase()));const o=(e,t,r)=>Math.max(t,Math.min(r,e)),c=e=>("0"+e).slice(-2),v=e=>parseInt(e,16)||0,p=(e,t)=>{return(r=v(e)+t,o(r,0,255)).toString(16);var r},d=e=>Math.random().toString(16).slice(e),m=()=>d(-3),f=()=>d(-4),g=()=>f()+f(),y=()=>g()+g(),_=e=>("0"+e.toString()).slice(-2),x={"%y":e=>_(e.getFullYear()),"%Y":e=>e.getFullYear().toString(),"%m":e=>_(e.getMonth()+1),"%d":e=>_(e.getDate()),"%H":e=>_(e.getHours()),"%M":e=>_(e.getMinutes()),"%S":e=>_(e.getSeconds())};function b(e,t,r,s){return new(r||(r=Promise))((function(i,n){function a(e){try{u(s.next(e))}catch(e){n(e)}}function l(e){try{u(s.throw(e))}catch(e){n(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,l)}u((s=s.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const k=(e,t,r)=>{for(let s=0;s<e.length&&!1!==t.call(r,e[s],s,e);s++);return e},w=(e,t,r)=>{let s="";const i=Object.keys(e);for(let n=0;n<i.length&&(s=i[n],!1!==t.call(r,e[s],s,e));n++);return e},S=()=>{},C="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",j=(e,t,r)=>{let s="";for(let i=0;i<e.length;i++){const n=C.indexOf(e[i]),a=C.indexOf(t[i%t.length]);s+=-1===n||-1===a?e[i]:C[(r?n-a+62:n+a)%62]}return s},O=(e,t)=>t(e.toLowerCase().replace(/\W+/g," ")).replace(/\s/g,""),A=e=>/^[\d]$/.test(e),I=e=>/^[A-Za-z]$/.test(e),M=e=>/^[^\w]$/.test(e),E=e=>O(e,(e=>e.replace(/\s(\w)/g,(e=>e.toUpperCase())))),T=E,F=e=>O(e,(e=>e.replace(/(\w)(\w*)/g,((e,t,r)=>t.toUpperCase()+r)))),L=e=>e.split("").reverse().join(""),N=e=>(e.maskIndex--,""),U={"#":({value:e})=>e,0:e=>A(e.value)?e.value:N(e),9:e=>A(e.value)?e.value:N(e),A:e=>I(e.value)?e.value:N(e),Z:e=>I(e.value)?e.value:N(e),L:e=>I(e.value)?e.value.toLowerCase():N(e),U:e=>I(e.value)?e.value.toUpperCase():N(e),S:e=>M(e.value)?e.value:N(e)},D=e=>{e.maskIndex++,e.textIndex++;const{mask:t,maskIndex:r,text:s,textIndex:i}=e;e.key=t[r],e.value=s[i];const{key:n,value:a}=e;return u(n)||u(a)?"":(e=>U[e.key]?U[e.key](e):(e.key!=e.value&&e.textIndex--,e.key))(e)+D(e)},H=(e,t)=>D({mask:e,maskIndex:-1,text:t,textIndex:-1,key:"",value:""}),q=H,B=(e,t)=>L(q(L(e),L(t))),Y=36e5,$=24*Y,J={ms:1,s:1e3,m:6e4,h:Y,d:$,w:6048e5,y:315576e5},P=["y","d","h","m","s","ms"],R=(e,t)=>e.reduce(((e,r)=>Object.assign(Object.assign({},e),{[r]:t[r]})),{}),z=(e,...t)=>{if(!t.length)return e;const r=t.shift();if(a(e)&&a(r))for(const t in r)a(r[t])?(e[t]||(e=Object.assign(Object.assign({},e),{[t]:{}})),e[t]=z(e[t],r[t])):e=Object.assign(Object.assign({},e),{[t]:r[t]});return z(e,...t)};class V{constructor(){this.name="",this._error="",this._filter=[],this._type="any",this.rules=[],this.custom=[]}empty(e){return this._value=e,this.unshift((e=>{const t=i(e);return{break:!t,value:t?e:this._value}}))}error(e){return this._error=e,this}filter(...e){return this._filter=e,this.unshift((e=>{const t=-1==this._filter.indexOf(e);return{break:!t,value:t?e:void 0}}))}invalid(e){return{error:this._error?this._error:this.name?this.name+":"+e:e}}parse(){return this.unshift((e=>({value:e})))}push(e){return this.rules.push(e),this}required(){return this.unshift((e=>i(e)?{value:e}:this.invalid("["+this._type+"].required")))}test(e){return!l(this.validate(e).error)}testAsync(e){return b(this,void 0,void 0,(function*(){return!l((yield this.validateAsync(e)).error)}))}unshift(e){return this.rules.unshift(e),this}validate(e){if(this.custom.length)return this.invalid("[async]");let t={value:e};for(let e=0;e<this.rules.length;e++){if(t=this.rules[e](t.value),t.error)return{error:t.error};if(t.break)return{value:t.value}}return{value:t.value}}validateAsync(e){return b(this,void 0,void 0,(function*(){let t=this.validate(e);if(t.error)return{error:t.error};for(let e=0;e<this.custom.length;e++){if(t=yield this.custom[e](t.value),t.error)return{error:t.error};if(t.break)return{value:t.value}}return{value:t.value}}))}}class W extends V{constructor(){super(),this._length=0,this._max=0,this._min=0,this._type="array",this.push((e=>{if(r(e)){if(this._items){this._items.name="";for(let t=0;t<e.length;t++){const{error:r,value:s}=this._items.validate(e[t]);if(r)return this.invalid("["+this._type+"]< "+r+"["+t+"] >");e[t]=s}}return{value:e}}return this.invalid("["+this._type+"]")}))}between(e,t){return this.min(e),this.max(t)}items(e){return this._items=e,this}length(e){return this._length=e,this.push((e=>e.length==this._length?{value:e}:this.invalid("["+this._type+"].length("+this._length+")")))}max(e){return this._max=e,this.push((e=>e.length<=this._max?{value:e}:this.invalid("["+this._type+"].max("+this._max+")")))}min(e){return this._min=e,this.push((e=>e.length>=this._min?{value:e}:this.invalid("["+this._type+"].min("+this._min+")")))}}class Z extends V{constructor(){super(),this._type="boolean",this.push((e=>s(e)?{value:e}:this.invalid("["+this._type+"]")))}parse(){return this.unshift((e=>({value:i(e)?-1!=[1,"1",!0,"true"].indexOf(e):e})))}}class K extends V{constructor(){super(),this._max=0,this._min=0,this._type="number",this.push((e=>n(e)?{value:e}:this.invalid("["+this._type+"]")))}between(e,t){return this.min(e),this.max(t)}max(e){return this._max=e,this.push((e=>e<=this._max?{value:e}:this.invalid("["+this._type+"].max("+this._max+")")))}min(e){return this._min=e,this.push((e=>e>=this._min?{value:e}:this.invalid("["+this._type+"].min("+this._min+")")))}parse(){return this.unshift((e=>({value:i(e)?parseFloat(e):e})))}}class G extends V{constructor(){super(),this._keys={},this._type="object",this.push((e=>{if(a(e)){const t=[],r={};return Object.keys(this._keys).forEach((s=>{const n=this._keys[s];n.name=s;const{error:a,value:l}=n.validate(e[s]);a&&t.push(a),i(l)&&(r[s]=l)})),t.length?this.invalid("["+this._type+"]{ "+t.join(", ")+" }"):{value:r}}return this.invalid("["+this._type+"]")}))}keys(e){return this._keys=e||{},this}parse(){return this.unshift((e=>{if(!a(e))try{e=JSON.parse(e)}catch(e){return this.invalid("["+this._type+"]")}const t=Object.keys(this._keys);return{value:t.length?R(t,e):e}}))}}class Q extends V{constructor(){super(),this._length=0,this._max=0,this._min=0,this._type="string",this.push((e=>l(e)?{value:e}:this.invalid("["+this._type+"]")))}between(e,t){return this.min(e),this.max(t)}date(){return this.push((e=>isNaN(new Date(e).getTime())?this.invalid("["+this._type+"].date"):{value:e}))}email(){return this.push((e=>/^[\w-\\.]+@([\w-]+\.)+[\w-]{2,4}$/i.test(e)?{value:e}:this.invalid("["+this._type+"].email")))}length(e){return this._length=e,this.push((e=>e.length==this._length?{value:e}:this.invalid("["+this._type+"].length("+this._length+")")))}lowerCase(){return this.push((e=>({value:e.toLowerCase()})))}lowerCamelCase(){return this.push((e=>({value:E(e)})))}max(e){return this._max=e,this.push((e=>e.length<=this._max?{value:e}:this.invalid("["+this._type+"].max("+this._max+")")))}mask(e){return this.push((t=>({value:H(e,t)})))}min(e){return this._min=e,this.push((e=>e.length>=this._min?{value:e}:this.invalid("["+this._type+"].min("+this._min+")")))}parse(){return this.unshift((e=>({value:a(e)?JSON.stringify(e):i(e)?e.toString():e})))}required(){return this.push((e=>e.length?{value:e}:this.invalid("["+this._type+"].required")))}trim(){return this.push((e=>({value:e.trim()})))}upperCase(){return this.push((e=>({value:e.toUpperCase()})))}upperCamelCase(){return this.push((e=>({value:F(e)})))}}class X{static array(e){return(new W).items(e)}static boolean(){return new Z}static number(){return new K}static object(e){return(new G).keys(e)}static string(){return new Q}test(e,...t){return!l(X.validate(e,...t).error)}testAsync(e,...t){return b(this,void 0,void 0,(function*(){return!l((yield X.validateAsync(e,...t)).error)}))}static validate(e,...t){let r={value:e};for(let e=0;e<t.length;e++)if(r=t[e].validate(r.value),r.error)return{error:r.error};return r}static validateAsync(e,...t){return b(this,void 0,void 0,(function*(){let r={value:e};for(let e=0;e<t.length;e++)if(r=yield t[e].validateAsync(r.value),r.error)return{error:r.error};return r}))}}return e.EventEmitter=class{constructor(){this.events=new Map}on(e,t){const r=this.events.get(e);return r?r.push(t):this.events.set(e,[t]),{dispose:()=>this.off(e,t)}}once(e,t){const r=s=>{t(s),this.off(e,r)};return this.on(e,r),{dispose:()=>this.off(e,r)}}off(e,t){const r=this.events.get(e);if(t){if(r){const e=r.indexOf(t);e>=0&&r.splice(e,1)}}else this.events.set(e,[])}emit(e,t){const r=this.events.get(e);r&&r.forEach((e=>e(t)))}},e.Validation=X,e.ValidationBase=V,e.allowed=R,e.cache=()=>{const e=[],t=[];return r=>{let s=e.indexOf(r);return-1==s&&(e.push(r),t.push({}),s=t.length-1),t[s]}},e.camelCase=T,e.chunkArray=(e,t)=>{const r=[];for(let s=0;s<e.length;s+=t)r.push(e.slice(s,s+t));return r},e.clamp=o,e.cutText=(e,t)=>{if(e.length>t){const r=e.substring(0,t).split(" ");return r.pop(),r.join(" ")+"..."}return e},e.dateFormat=(e,t)=>t.replace(/%[yYmdHMS]/g,(t=>x[t]?x[t](e):t.slice(1))),e.debounce=(e,t)=>{let r;const s=()=>{r&&clearTimeout(r)};return{cancel:s,run(...i){s(),r=setTimeout((()=>e(...i)),t)}}},e.decodeHTML=e=>e.replace(/&#(\d+);/g,((e,t)=>String.fromCharCode(t))),e.denied=(e,t)=>R(Object.keys(t).filter((t=>-1==e.indexOf(t))),t),e.each=(e,t,s)=>r(e)?k(e,t,s):a(e)?w(e,t,s):null,e.encodeHTML=e=>e.replace(/[\u00A0-\u9999<>\\&]/g,(e=>"&#"+e.charCodeAt(0)+";")),e.forEachAsync=(e,t,r)=>b(void 0,void 0,void 0,(function*(){yield Promise.allSettled(e.map(((s,i)=>t.call(r,s,i,e)))).catch(S)})),e.forEachIndex=k,e.forEachKey=w,e.forEachSeries=(e,t,r)=>b(void 0,void 0,void 0,(function*(){for(let s=0;s<e.length;s++)yield t.call(r,e[s],s,e).catch(S)})),e.forLoop=(e,t,r)=>{for(let s=1;s<=e&&!1!==t.call(r,s,e);s++);return e},e.hash=e=>(e=j(C,e,!1),{generate:t=>j(t,e,!1),reverse:t=>j(t,e,!0)}),e.hexToRgb=e=>{var t;return(null===(t=e.replace(/^#/,"").match(/.{1,2}/g))||void 0===t?void 0:t.map((e=>v(e))))||[]},e.isArray=r,e.isBoolean=s,e.isCharacter=e=>/^[\w]$/.test(e),e.isDef=i,e.isDigit=A,e.isFloat=e=>n(e)&&!!(e%1),e.isFunction=e=>"function"==h(e),e.isInteger=e=>n(e)&&!(e%1),e.isLetter=I,e.isNull=e=>null===e,e.isNumber=n,e.isObject=a,e.isString=l,e.isSymbol=M,e.isUndefined=u,e.lerp=(e,t,r)=>e+(t-e)*o(r,0,1),e.loop=(e,t)=>{let r=!1;const s=()=>b(void 0,void 0,void 0,(function*(){r&&(yield e(),setTimeout(s,t))}));return{start(){r||(r=!0,s())},stop(){r=!1}}},e.lowerCamelCase=E,e.map=(e,t,r)=>{let s="";const i=Object.keys(e);for(let n=0;n<i.length;n++)s=i[n],e[s]=t.call(r,e[s],s,e);return e},e.mask=H,e.maskMoney=(e,t,r)=>(r++,t=parseInt((t||"0").replace(/\W/g,"")).toString(),B(e,t.length<r?("0".repeat(r)+t).slice(-1*r):t)),e.maskReverse=B,e.maskTest=(e,t)=>e.length==q(e,t).length,e.merge=z,e.msToString=e=>{const t=[];return P.forEach((r=>{const s=J[r],i=(e-e%s)/s;i&&(e-=i*s,t.push(i.toString()+r))})),t.join(" ")},e.noop=S,e.parseMs=e=>{const t=/(-?(?:\d+)?\.?\d+) *(ms|s|m|h|d|w|y)/gm;let r,s=0;for(;null!==(r=t.exec(e));)r.index===t.lastIndex&&t.lastIndex++,s+=parseFloat(r[1])*J[r[2]]||0;return s},e.parseSize=e=>{if(n(e))return e+"px";const t=(e=>/(-?(?:\d+)?\.?\d+) *(px|%|cm|mm|in|pt|pc|en|ex|ch|rem|vw|vh|vmin|vmax)*/g.exec(e))(e);return t?parseFloat(t[1])+(t[2]||"px"):"0px"},e.rangeArray=(e,t,r=1)=>Array.from({length:(t-e)/r+1},((t,s)=>e+s*r)),e.rgbToHex=(e,t,r)=>"#"+c(e.toString(16))+c(t.toString(16))+c(r.toString(16)),e.shadeColor=(e,t)=>"#"+e.replace(/^#/,"").replace(/../g,(e=>c(p(e,t)))),e.shuffleArray=e=>{for(let t=e.length-1;t>0;t--){const r=Math.floor(Math.random()*(t+1));[e[t],e[r]]=[e[r],e[t]]}return e},e.simpleID=()=>m()+f(),e.sleep=e=>new Promise((t=>setTimeout(t,e))),e.stringReverse=L,e.toArray=e=>r(e)?e:i(e)?[e]:[],e.toBool=e=>"true"===e||"1"===e,e.type=h,e.uniqueID=()=>y()+y()+y()+y(),e.upperCamelCase=F,e.uuidv4=()=>g()+"-"+f()+"-4"+m()+"-"+f()+"-"+(g()+f()),e}({});
|
|
7
|
+
var UtilsJS=function(e){"use strict";const t={},r=e=>"array"==o(e),s=e=>"boolean"==o(e),i=e=>"null"!=o(e),n=e=>"number"==o(e),a=e=>"object"==o(e),l=e=>"string"==o(e),u=e=>(null==e?void 0:e.constructor)===Object,h=e=>void 0===e,o=e=>null==e?"null":t[t.toString.call(e)]||"object";["Array","Boolean","Function","Number","Object","String"].forEach((e=>t["[object "+e+"]"]=e.toLowerCase()));const c=(e,t,r)=>Math.max(t,Math.min(r,e)),v=e=>("0"+e).slice(-2),p=e=>parseInt(e,16)||0,d=(e,t)=>{return(r=p(e)+t,c(r,0,255)).toString(16);var r},m=e=>Math.random().toString(16).slice(e),f=()=>m(-3),g=()=>m(-4),y=()=>g()+g(),_=()=>y()+y(),x=e=>("0"+e.toString()).slice(-2),b={"%y":e=>x(e.getFullYear()),"%Y":e=>e.getFullYear().toString(),"%m":e=>x(e.getMonth()+1),"%d":e=>x(e.getDate()),"%H":e=>x(e.getHours()),"%M":e=>x(e.getMinutes()),"%S":e=>x(e.getSeconds())};function k(e,t,r,s){return new(r||(r=Promise))((function(i,n){function a(e){try{u(s.next(e))}catch(e){n(e)}}function l(e){try{u(s.throw(e))}catch(e){n(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,l)}u((s=s.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const w=(e,t,r)=>{for(let s=0;s<e.length&&!1!==t.call(r,e[s],s,e);s++);return e},S=(e,t,r)=>{let s="";const i=Object.keys(e);for(let n=0;n<i.length&&(s=i[n],!1!==t.call(r,e[s],s,e));n++);return e},j=()=>{},C="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",O=(e,t,r)=>{let s="";for(let i=0;i<e.length;i++){const n=C.indexOf(e[i]),a=C.indexOf(t[i%t.length]);s+=-1===n||-1===a?e[i]:C[(r?n-a+62:n+a)%62]}return s},A=(e,t)=>t(e.toLowerCase().replace(/\W+/g," ")).replace(/\s/g,""),I=e=>/^[\d]$/.test(e),M=e=>/^[A-Za-z]$/.test(e),E=e=>/^[^\w]$/.test(e),T=e=>A(e,(e=>e.replace(/\s(\w)/g,(e=>e.toUpperCase())))),F=T,L=e=>A(e,(e=>e.replace(/(\w)(\w*)/g,((e,t,r)=>t.toUpperCase()+r)))),N=e=>e.split("").reverse().join(""),U=e=>(e.maskIndex--,""),D={"#":({value:e})=>e,0:e=>I(e.value)?e.value:U(e),9:e=>I(e.value)?e.value:U(e),A:e=>M(e.value)?e.value:U(e),Z:e=>M(e.value)?e.value:U(e),L:e=>M(e.value)?e.value.toLowerCase():U(e),U:e=>M(e.value)?e.value.toUpperCase():U(e),S:e=>E(e.value)?e.value:U(e)},H=e=>{e.maskIndex++,e.textIndex++;const{mask:t,maskIndex:r,text:s,textIndex:i}=e;e.key=t[r],e.value=s[i];const{key:n,value:a}=e;return h(n)||h(a)?"":(e=>D[e.key]?D[e.key](e):(e.key!=e.value&&e.textIndex--,e.key))(e)+H(e)},q=(e,t)=>H({mask:e,maskIndex:-1,text:t,textIndex:-1,key:"",value:""}),B=q,P=(e,t)=>N(B(N(e),N(t))),Y=36e5,$=24*Y,J={ms:1,s:1e3,m:6e4,h:Y,d:$,w:7*$,y:315576e5},R=["y","d","h","m","s","ms"],z=(e,t)=>e.reduce(((e,r)=>Object.assign(Object.assign({},e),{[r]:t[r]})),{}),V=(e,...t)=>{if(!t.length)return e;const r=t.shift();if(u(e)&&u(r))for(const t in r)u(r[t])?(e[t]||(e=Object.assign(Object.assign({},e),{[t]:{}})),e[t]=V(e[t],r[t])):e=Object.assign(Object.assign({},e),{[t]:r[t]});return V(e,...t)};class W{constructor(){this.name="",this._error="",this._filter=[],this._type="any",this.rules=[],this.custom=[]}empty(e){return this._value=e,this.unshift((e=>{const t=i(e);return{break:!t,value:t?e:this._value}}))}error(e){return this._error=e,this}filter(...e){return this._filter=e,this.unshift((e=>{const t=-1==this._filter.indexOf(e);return{break:!t,value:t?e:void 0}}))}invalid(e){return{error:this._error?this._error:this.name?this.name+":"+e:e}}parse(){return this.unshift((e=>({value:e})))}push(e){return this.rules.push(e),this}required(){return this.unshift((e=>i(e)?{value:e}:this.invalid("["+this._type+"].required")))}test(e){return!l(this.validate(e).error)}testAsync(e){return k(this,void 0,void 0,(function*(){return!l((yield this.validateAsync(e)).error)}))}unshift(e){return this.rules.unshift(e),this}validate(e){if(this.custom.length)return this.invalid("[async]");let t={value:e};for(let e=0;e<this.rules.length;e++){if(t=this.rules[e](t.value),t.error)return{error:t.error};if(t.break)return{value:t.value}}return{value:t.value}}validateAsync(e){return k(this,void 0,void 0,(function*(){let t=this.validate(e);if(t.error)return{error:t.error};for(let e=0;e<this.custom.length;e++){if(t=yield this.custom[e](t.value),t.error)return{error:t.error};if(t.break)return{value:t.value}}return{value:t.value}}))}}class Z extends W{constructor(){super(),this._length=0,this._max=0,this._min=0,this._type="array",this.push((e=>{if(r(e)){if(this._items){this._items.name="";for(let t=0;t<e.length;t++){const{error:r,value:s}=this._items.validate(e[t]);if(r)return this.invalid("["+this._type+"]< "+r+"["+t+"] >");e[t]=s}}return{value:e}}return this.invalid("["+this._type+"]")}))}between(e,t){return this.min(e),this.max(t)}items(e){return this._items=e,this}length(e){return this._length=e,this.push((e=>e.length==this._length?{value:e}:this.invalid("["+this._type+"].length("+this._length+")")))}max(e){return this._max=e,this.push((e=>e.length<=this._max?{value:e}:this.invalid("["+this._type+"].max("+this._max+")")))}min(e){return this._min=e,this.push((e=>e.length>=this._min?{value:e}:this.invalid("["+this._type+"].min("+this._min+")")))}}class K extends W{constructor(){super(),this._type="boolean",this.push((e=>s(e)?{value:e}:this.invalid("["+this._type+"]")))}parse(){return this.unshift((e=>({value:i(e)?-1!=[1,"1",!0,"true"].indexOf(e):e})))}}class G extends W{constructor(){super(),this._max=0,this._min=0,this._type="number",this.push((e=>n(e)?{value:e}:this.invalid("["+this._type+"]")))}between(e,t){return this.min(e),this.max(t)}max(e){return this._max=e,this.push((e=>e<=this._max?{value:e}:this.invalid("["+this._type+"].max("+this._max+")")))}min(e){return this._min=e,this.push((e=>e>=this._min?{value:e}:this.invalid("["+this._type+"].min("+this._min+")")))}parse(){return this.unshift((e=>({value:i(e)?parseFloat(e):e})))}}class Q extends W{constructor(){super(),this._keys={},this._type="object",this.push((e=>{if(a(e)){const t=[],r={};return Object.keys(this._keys).forEach((s=>{const n=this._keys[s];n.name=s;const{error:a,value:l}=n.validate(e[s]);a&&t.push(a),i(l)&&(r[s]=l)})),t.length?this.invalid("["+this._type+"]{ "+t.join(", ")+" }"):{value:r}}return this.invalid("["+this._type+"]")}))}keys(e){return this._keys=e||{},this}parse(){return this.unshift((e=>{if(!a(e))try{e=JSON.parse(e)}catch(e){return this.invalid("["+this._type+"]")}const t=Object.keys(this._keys);return{value:t.length?z(t,e):e}}))}}class X extends W{constructor(){super(),this._length=0,this._max=0,this._min=0,this._type="string",this.push((e=>l(e)?{value:e}:this.invalid("["+this._type+"]")))}between(e,t){return this.min(e),this.max(t)}date(){return this.push((e=>isNaN(new Date(e).getTime())?this.invalid("["+this._type+"].date"):{value:e}))}email(){return this.push((e=>/^[\w-\\.]+@([\w-]+\.)+[\w-]{2,4}$/i.test(e)?{value:e}:this.invalid("["+this._type+"].email")))}length(e){return this._length=e,this.push((e=>e.length==this._length?{value:e}:this.invalid("["+this._type+"].length("+this._length+")")))}lowerCase(){return this.push((e=>({value:e.toLowerCase()})))}lowerCamelCase(){return this.push((e=>({value:T(e)})))}max(e){return this._max=e,this.push((e=>e.length<=this._max?{value:e}:this.invalid("["+this._type+"].max("+this._max+")")))}mask(e){return this.push((t=>({value:q(e,t)})))}min(e){return this._min=e,this.push((e=>e.length>=this._min?{value:e}:this.invalid("["+this._type+"].min("+this._min+")")))}parse(){return this.unshift((e=>({value:a(e)?JSON.stringify(e):i(e)?e.toString():e})))}required(){return this.push((e=>e.length?{value:e}:this.invalid("["+this._type+"].required")))}trim(){return this.push((e=>({value:e.trim()})))}upperCase(){return this.push((e=>({value:e.toUpperCase()})))}upperCamelCase(){return this.push((e=>({value:L(e)})))}}class ee{static array(e){return(new Z).items(e)}static boolean(){return new K}static number(){return new G}static object(e){return(new Q).keys(e)}static string(){return new X}test(e,...t){return!l(ee.validate(e,...t).error)}testAsync(e,...t){return k(this,void 0,void 0,(function*(){return!l((yield ee.validateAsync(e,...t)).error)}))}static validate(e,...t){let r={value:e};for(let e=0;e<t.length;e++)if(r=t[e].validate(r.value),r.error)return{error:r.error};return r}static validateAsync(e,...t){return k(this,void 0,void 0,(function*(){let r={value:e};for(let e=0;e<t.length;e++)if(r=yield t[e].validateAsync(r.value),r.error)return{error:r.error};return r}))}}return e.EventEmitter=class{constructor(){this.events=new Map}on(e,t){const r=this.events.get(e);return r?r.push(t):this.events.set(e,[t]),{dispose:()=>this.off(e,t)}}once(e,t){const r=s=>{t(s),this.off(e,r)};return this.on(e,r),{dispose:()=>this.off(e,r)}}off(e,t){const r=this.events.get(e);if(t){if(r){const e=r.indexOf(t);e>=0&&r.splice(e,1)}}else this.events.set(e,[])}emit(e,t){const r=this.events.get(e);r&&r.forEach((e=>e(t)))}},e.Validation=ee,e.ValidationBase=W,e.allowed=z,e.cache=()=>{const e=[],t=[];return r=>{let s=e.indexOf(r);return-1==s&&(e.push(r),t.push({}),s=t.length-1),t[s]}},e.camelCase=F,e.chunkArray=(e,t)=>{const r=[];for(let s=0;s<e.length;s+=t)r.push(e.slice(s,s+t));return r},e.clamp=c,e.cutText=(e,t)=>{if(e.length>t){const r=e.substring(0,t).split(" ");return r.pop(),r.join(" ")+"..."}return e},e.dateFormat=(e,t)=>t.replace(/%[yYmdHMS]/g,(t=>b[t]?b[t](e):t.slice(1))),e.debounce=(e,t)=>{let r;const s=()=>{r&&clearTimeout(r)};return{cancel:s,run(...i){s(),r=setTimeout((()=>e(...i)),t)}}},e.decodeHTML=e=>e.replace(/&#(\d+);/g,((e,t)=>String.fromCharCode(t))),e.denied=(e,t)=>z(Object.keys(t).filter((t=>-1==e.indexOf(t))),t),e.each=(e,t,s)=>r(e)?w(e,t,s):a(e)?S(e,t,s):null,e.encodeHTML=e=>e.replace(/[\u00A0-\u9999<>\\&]/g,(e=>"&#"+e.charCodeAt(0)+";")),e.forEachAsync=(e,t,r)=>k(void 0,void 0,void 0,(function*(){yield Promise.allSettled(e.map(((s,i)=>t.call(r,s,i,e)))).catch(j)})),e.forEachIndex=w,e.forEachKey=S,e.forEachSeries=(e,t,r)=>k(void 0,void 0,void 0,(function*(){for(let s=0;s<e.length;s++)yield t.call(r,e[s],s,e).catch(j)})),e.forLoop=(e,t,r)=>{for(let s=1;s<=e&&!1!==t.call(r,s,e);s++);return e},e.hash=e=>(e=O(C,e,!1),{generate:t=>O(t,e,!1),reverse:t=>O(t,e,!0)}),e.hexToRgb=e=>{var t;return(null===(t=e.replace(/^#/,"").match(/.{1,2}/g))||void 0===t?void 0:t.map((e=>p(e))))||[]},e.isArray=r,e.isBoolean=s,e.isCharacter=e=>/^[\w]$/.test(e),e.isDef=i,e.isDigit=I,e.isFloat=e=>n(e)&&!!(e%1),e.isFunction=e=>"function"==o(e),e.isInteger=e=>n(e)&&!(e%1),e.isLetter=M,e.isNull=e=>null===e,e.isNumber=n,e.isObject=a,e.isPlainObject=u,e.isString=l,e.isSymbol=E,e.isUndefined=h,e.lerp=(e,t,r)=>e+(t-e)*c(r,0,1),e.loop=(e,t)=>{let r=!1;const s=()=>k(void 0,void 0,void 0,(function*(){r&&(yield e(),setTimeout(s,t))}));return{start(){r||(r=!0,s())},stop(){r=!1}}},e.lowerCamelCase=T,e.map=(e,t,r)=>{let s="";const i=Object.keys(e);for(let n=0;n<i.length;n++)s=i[n],e[s]=t.call(r,e[s],s,e);return e},e.mask=q,e.maskMoney=(e,t,r)=>(r++,t=parseInt((t||"0").replace(/\W/g,"")).toString(),P(e,t.length<r?("0".repeat(r)+t).slice(-1*r):t)),e.maskReverse=P,e.maskTest=(e,t)=>e.length==B(e,t).length,e.merge=V,e.msToString=e=>{const t=[];return R.forEach((r=>{const s=J[r],i=(e-e%s)/s;i&&(e-=i*s,t.push(i.toString()+r))})),t.join(" ")},e.noop=j,e.parseMs=e=>{const t=/(-?(?:\d+)?\.?\d+) *(ms|s|m|h|d|w|y)/gm;let r,s=0;for(;null!==(r=t.exec(e));)r.index===t.lastIndex&&t.lastIndex++,s+=parseFloat(r[1])*J[r[2]]||0;return s},e.parseSize=e=>{if(n(e))return e+"px";const t=(e=>/(-?(?:\d+)?\.?\d+) *(px|%|cm|mm|in|pt|pc|en|ex|ch|rem|vw|vh|vmin|vmax)*/g.exec(e))(e);return t?parseFloat(t[1])+(t[2]||"px"):"0px"},e.rangeArray=(e,t,r=1)=>Array.from({length:(t-e)/r+1},((t,s)=>e+s*r)),e.rgbToHex=(e,t,r)=>"#"+v(e.toString(16))+v(t.toString(16))+v(r.toString(16)),e.shadeColor=(e,t)=>"#"+e.replace(/^#/,"").replace(/../g,(e=>v(d(e,t)))),e.shuffleArray=e=>{for(let t=e.length-1;t>0;t--){const r=Math.floor(Math.random()*(t+1));[e[t],e[r]]=[e[r],e[t]]}return e},e.simpleID=()=>f()+g(),e.sleep=e=>new Promise((t=>setTimeout(t,e))),e.stringReverse=N,e.toArray=e=>r(e)?e:i(e)?[e]:[],e.toBool=e=>"true"===e||"1"===e,e.type=o,e.uniqueID=()=>_()+_()+_()+_(),e.upperCamelCase=L,e.uuidv4=()=>y()+"-"+g()+"-4"+f()+"-"+g()+"-"+(y()+g()),e}({});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@andrewcaires/utils.js",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.24",
|
|
4
4
|
"description": "JavaScript utility library for web and nodejs development",
|
|
5
5
|
"main": "./dist/index.cjs.js",
|
|
6
6
|
"unpkg": "./dist/index.min.js",
|
|
@@ -48,15 +48,15 @@
|
|
|
48
48
|
"@rollup/plugin-commonjs": "^25.0.7",
|
|
49
49
|
"@rollup/plugin-terser": "^0.4.4",
|
|
50
50
|
"@rollup/plugin-typescript": "^11.1.6",
|
|
51
|
-
"@types/jest": "^29.5.
|
|
52
|
-
"@types/node": "^20.
|
|
53
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
54
|
-
"@typescript-eslint/parser": "^
|
|
55
|
-
"eslint": "^8.
|
|
51
|
+
"@types/jest": "^29.5.12",
|
|
52
|
+
"@types/node": "^20.12.7",
|
|
53
|
+
"@typescript-eslint/eslint-plugin": "^7.7.0",
|
|
54
|
+
"@typescript-eslint/parser": "^7.7.0",
|
|
55
|
+
"eslint": "^8.57.0",
|
|
56
56
|
"jest": "^29.7.0",
|
|
57
|
-
"rollup": "^4.
|
|
57
|
+
"rollup": "^4.14.3",
|
|
58
58
|
"rollup-plugin-dts": "^6.1.0",
|
|
59
|
-
"ts-jest": "^29.1.
|
|
59
|
+
"ts-jest": "^29.1.2",
|
|
60
60
|
"ts-node-dev": "^2.0.0",
|
|
61
61
|
"tslib": "^2.6.2"
|
|
62
62
|
}
|