@ztimson/utils 0.14.9 → 0.14.10
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 +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +178 -178
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(c,g){typeof exports=="object"&&typeof module<"u"?g(exports):typeof define=="function"&&define.amd?define(["exports"],g):(c=typeof globalThis<"u"?globalThis:c||self,g(c.utils={}))})(this,function(c){"use strict";var Mt=Object.defineProperty;var vt=(c,g,B)=>g in c?Mt(c,g,{enumerable:!0,configurable:!0,writable:!0,value:B}):c[g]=B;var l=(c,g,B)=>(vt(c,typeof g!="symbol"?g+"":g,B),B);function g(n,e=!1){if(n==null)throw new Error("Cannot clean a NULL value");return Array.isArray(n)?n=n.filter(t=>t!=null):Object.entries(n).forEach(([t,r])=>{(e&&r===void 0||!e&&r==null)&&delete n[t]}),n}function B(n){return JSON.parse(JSON.stringify(n))}function H(n,...e){return e.forEach(t=>{for(const r in t)t[r]&&typeof t[r]=="object"&&!Array.isArray(t[r])?(n[r]||(n[r]={}),H(n[r],t[r])):n[r]=t[r]}),n}function O(n,e,t){if(!(n==null||!e))return e.split(/[.[\]]/g).filter(r=>r.length).reduce((r,o,i,s)=>{if((o[0]=='"'||o[0]=="'")&&(o=o.slice(1,-1)),!(r!=null&&r.hasOwnProperty(o))){if(t==null)return;r[o]={}}return t!==void 0&&i==s.length-1?r[o]=t:r[o]},n)}function Y(n,e,t={}){if(typeof n=="object"&&!Array.isArray(n)){for(const r of Object.keys(n)){const o=e?e+"."+r:r;typeof n[r]=="object"?Y(n[r],o,t):t[o]=n[r]}return t}}function j(n,e,t=!1){if(n==null)return t;if(Array.isArray(e))return e.findIndex((o,i)=>!j(n[i],e[i],t))==-1;const r=typeof e;return r!=typeof n?!1:r=="object"?Object.keys(e).find(o=>!j(n[o],e[o],t))==null:r=="function"?n.toString()==e.toString():n==e}function S(n,e){const t=typeof n,r=typeof e;return t!="object"||n==null||r!="object"||e==null?t=="function"&&r=="function"?n.toString()==e.toString():n===e:Object.keys(n).length!=Object.keys(e).length?!1:Object.keys(n).every(i=>S(n[i],e[i]))}function rt(n,e){e.forEach(t=>{Object.getOwnPropertyNames(t.prototype).forEach(r=>{Object.defineProperty(n.prototype,r,Object.getOwnPropertyDescriptor(t.prototype,r)||Object.create(null))})})}function ot(n,e){let t=[];return JSON.parse(JSON.stringify(n,(r,o)=>{if(typeof o=="object"&&o!==null){if(t.includes(o))return;t.push(o)}return o},e))}function it(n,e){return n.indexOf(e)===-1&&n.push(e),n}function st(n,e){return z([...n.filter(t=>!e.includes(r=>S(t,r))),...e.filter(t=>!n.includes(r=>S(t,r)))])}function ct(n){return function(e,t){const r=O(e,n),o=O(t,n);return typeof r!="string"||typeof o!="string"?1:r.toLowerCase().localeCompare(o.toLowerCase())}}function W(n,e=[]){return n.forEach(t=>Array.isArray(t)?W(t,e):e.push(t)),e}function at(n,e=!1){return function(t,r){const o=O(t,n),i=O(r,n);return typeof o=="number"&&typeof i=="number"?(e?-1:1)*(o-i):o>i?e?-1:1:o<i?e?1:-1:0}}function ut(n,e){return t=>S(t[n],e)}function z(n){for(let e=n.length-1;e>=0;e--)n.slice(0,e).find(t=>S(t,n[e]))&&n.splice(e,1);return n}function lt(n){return Array.isArray(n)?n:[n]}class C extends Array{get size(){return this.length}constructor(e=[]){super(),e!=null&&e.forEach&&e.forEach(t=>this.add(t))}add(e){this.has(e)||this.push(e)}delete(e){const t=this.indexOf(e);t!=-1&&this.slice(t,1)}difference(e){return new C(this.reduce((t,r)=>(e.has(r)||t.push(r),t),[]))}has(e){return this.indexOf(e)!=-1}intersection(e){return new C(this.reduce((t,r)=>(e.has(r)&&t.push(r),t),[]))}isDisjointFrom(e){return this.intersection(e).size==0}isSubsetOf(e){return this.findIndex(t=>!e.has(t))==-1}isSuperset(e){return e.findIndex(t=>!this.has(t))==-1}symmetricDifference(e){return new C([...this.difference(e),...e.difference(this)])}union(e){return new C([...this,...e])}}class A extends Promise{constructor(t){super((r,o)=>t(i=>r(i),i=>o(i),i=>this.progress=i));l(this,"listeners",[]);l(this,"_progress",0)}get progress(){return this._progress}set progress(t){t!=this._progress&&(this._progress=t,this.listeners.forEach(r=>r(t)))}static from(t){return t instanceof A?t:new A((r,o)=>t.then((...i)=>r(...i)).catch((...i)=>o(...i)))}from(t){const r=A.from(t);return this.onProgress(o=>r.progress=o),r}onProgress(t){return this.listeners.push(t),this}then(t,r){const o=super.then(t,r);return this.from(o)}catch(t){return this.from(super.catch(t))}finally(t){return this.from(super.finally(t))}}function J(n,e){const t=document.createElement("a");t.href=n,t.download=e,document.body.appendChild(t),t.click(),document.body.removeChild(t)}function ft(n,e){const t=URL.createObjectURL(n);J(t,e),URL.revokeObjectURL(t)}function ht(n={}){return new Promise(e=>{const t=document.createElement("input");t.type="file",t.accept=n.accept||"*",t.style.display="none",t.multiple=!!n.multiple,t.onblur=t.onchange=async()=>{e(Array.from(t.files)),t.remove()},document.body.appendChild(t),t.click()})}function dt(n){return new A((e,t,r)=>{const o=new XMLHttpRequest,i=new FormData;n.files.forEach(s=>i.append("file",s)),o.withCredentials=!!n.withCredentials,o.upload.addEventListener("progress",s=>s.lengthComputable?r(s.loaded/s.total):null),o.upload.addEventListener("load",s=>e(s)),o.upload.addEventListener("error",s=>t(s)),o.open("POST",n.url),Object.entries(n.headers||{}).forEach(([s,E])=>o.setRequestHeader(s,E)),o.send(i)})}class k{constructor(){l(this,"listeners",{})}static emit(e,...t){(this.listeners["*"]||[]).forEach(r=>r(e,...t)),(this.listeners[e.toString()]||[]).forEach(r=>r(...t))}static off(e,t){const r=e.toString();this.listeners[r]=(this.listeners[r]||[]).filter(o=>o===t)}static on(e,t){var o;const r=e.toString();return this.listeners[r]||(this.listeners[r]=[]),(o=this.listeners[r])==null||o.push(t),()=>this.off(e,t)}static once(e,t){return new Promise(r=>{const o=this.on(e,(...i)=>{r(i.length==1?i[0]:i),t&&t(...i),o()})})}emit(e,...t){(this.listeners["*"]||[]).forEach(r=>r(e,...t)),(this.listeners[e]||[]).forEach(r=>r(...t))}off(e,t){this.listeners[e]=(this.listeners[e]||[]).filter(r=>r===t)}on(e,t){var r;return this.listeners[e]||(this.listeners[e]=[]),(r=this.listeners[e])==null||r.push(t),()=>this.off(e,t)}once(e,t){return new Promise(r=>{const o=this.on(e,(...i)=>{r(i.length==1?i[0]:i),t&&t(...i),o()})})}}l(k,"listeners",{});class R extends Error{constructor(t,r){super(t);l(this,"_code");r!=null&&(this._code=r)}get code(){return this._code||this.constructor.code}set code(t){this._code=t}static from(t){const r=Number(t.statusCode)??Number(t.code),o=new this(t.message||t.toString());return Object.assign(o,{stack:t.stack,...t,code:r??void 0})}static instanceof(t){return t.constructor.code!=null}toString(){return this.message||super.toString()}}l(R,"code",500);class x extends R{constructor(e="Bad Request"){super(e)}static instanceof(e){return e.constructor.code==this.code}}l(x,"code",400);class V extends R{constructor(e="Unauthorized"){super(e)}static instanceof(e){return e.constructor.code==this.code}}l(V,"code",401);class K extends R{constructor(e="Forbidden"){super(e)}static instanceof(e){return e.constructor.code==this.code}}l(K,"code",403);class Z extends R{constructor(e="Not Found"){super(e)}static instanceof(e){return e.constructor.code==this.code}}l(Z,"code",404);class X extends R{constructor(e="Internal Server Error"){super(e)}static instanceof(e){return e.constructor.code==this.code}}l(X,"code",500);const p=class p{constructor(e={}){l(this,"interceptors",{});l(this,"headers",{});l(this,"url");this.url=e.url??null,this.headers=e.headers||{},e.interceptors&&e.interceptors.forEach(t=>p.addInterceptor(t))}static addInterceptor(e){const t=Object.keys(p.interceptors).length.toString();return p.interceptors[t]=e,()=>{p.interceptors[t]=null}}addInterceptor(e){const t=Object.keys(this.interceptors).length.toString();return this.interceptors[t]=e,()=>{this.interceptors[t]=null}}request(e={}){var o;if(!this.url&&!e.url)throw new Error("URL needs to be set");let t=((o=e.url)!=null&&o.startsWith("http")?e.url:(this.url||"")+(e.url||"")).replace(/([^:]\/)\/+/g,"$1");if(e.fragment&&(t.includes("#")?t.replace(/#.*(\?|\n)/g,(i,s)=>`#${e.fragment}${s}`):t+="#"+e.fragment),e.query){const i=Array.isArray(e.query)?e.query:Object.keys(e.query).map(s=>({key:s,value:e.query[s]}));t+=(t.includes("?")?"&":"?")+i.map(s=>`${s.key}=${s.value}`).join("&")}const r=g({"Content-Type":e.body?e.body instanceof FormData?"multipart/form-data":"application/json":void 0,...p.headers,...this.headers,...e.headers});return typeof e.body=="object"&&e.body!=null&&r["Content-Type"]=="application/json"&&(e.body=JSON.stringify(e.body)),new A((i,s,E)=>{fetch(t,{headers:r,method:e.method||(e.body?"POST":"GET"),body:e.body}).then(async a=>{var et,nt;for(let u of[...Object.values(p.interceptors),...Object.values(this.interceptors)])await new Promise($=>u(a,()=>$()));const D=a.headers.get("Content-Length"),v=D?parseInt(D,10):0;let tt=0;const F=(et=a.body)==null?void 0:et.getReader(),Gt=new ReadableStream({start(u){function $(){F==null||F.read().then(T=>{if(T.done)return u.close();tt+=T.value.byteLength,E(tt/v),u.enqueue(T.value),$()}).catch(T=>u.error(T))}$()}}),b=new Response(Gt);if(a.blob=b.blob,a.formData=b.formData,a.json=b.json,a.text=b.text,e.decode!==!1){const u=(nt=a.headers.get("Content-Type"))==null?void 0:nt.toLowerCase();u!=null&&u.includes("application")?a.data=await b.blob():u!=null&&u.includes("form")?a.data=await b.formData():u!=null&&u.includes("json")?a.data=await b.json():u!=null&&u.includes("text")&&(a.data=await b.text())}a.ok?i(a):s(a)})})}};l(p,"interceptors",{}),l(p,"headers",{});let P=p;const L={CLEAR:"\x1B[0m",BRIGHT:"\x1B[1m",DIM:"\x1B[2m",UNDERSCORE:"\x1B[4m",BLINK:"\x1B[5m",REVERSE:"\x1B[7m",HIDDEN:"\x1B[8m"},N={BLACK:"\x1B[30m",RED:"\x1B[31m",GREEN:"\x1B[32m",YELLOW:"\x1B[33m",BLUE:"\x1B[34m",MAGENTA:"\x1B[35m",CYAN:"\x1B[36m",LIGHT_GREY:"\x1B[37m",GREY:"\x1B[90m",LIGHT_RED:"\x1B[91m",LIGHT_GREEN:"\x1B[92m",LIGHT_YELLOW:"\x1B[93m",LIGHT_BLUE:"\x1B[94m",LIGHT_MAGENTA:"\x1B[95m",LIGHT_CYAN:"\x1B[96m",WHITE:"\x1B[97m"},yt={BLACK:"\x1B[40m",RED:"\x1B[41m",GREEN:"\x1B[42m",YELLOW:"\x1B[43m",BLUE:"\x1B[44m",MAGENTA:"\x1B[45m",CYAN:"\x1B[46m",WHITE:"\x1B[47m",GREY:"\x1B[100m"};var Q=(n=>(n[n.ERROR=0]="ERROR",n[n.WARN=1]="WARN",n[n.INFO=2]="INFO",n[n.LOG=3]="LOG",n[n.DEBUG=4]="DEBUG",n))(Q||{});const m=class m extends k{constructor(e){super(),this.namespace=e}pad(e,t,r,o=!1){const i=e.toString(),s=t-i.length;if(s<=0)return i;const E=Array(~~(s/r.length)).fill(r).join("");return o?i+E:E+i}format(...e){const t=new Date;return`${`${t.getFullYear()}-${t.getMonth()+1}-${t.getDate()} ${this.pad(t.getHours().toString(),2,"0")}:${this.pad(t.getMinutes().toString(),2,"0")}:${this.pad(t.getSeconds().toString(),2,"0")}.${this.pad(t.getMilliseconds().toString(),3,"0",!0)}`}${this.namespace?` [${this.namespace}]`:""} ${e.join(" ")}`}debug(...e){if(m.LOG_LEVEL<4)return;const t=this.format(...e);m.emit(4,t),console.debug(N.LIGHT_GREY+t+L.CLEAR)}log(...e){if(m.LOG_LEVEL<3)return;const t=this.format(...e);m.emit(3,t),console.log(L.CLEAR+t)}info(...e){if(m.LOG_LEVEL<2)return;const t=this.format(...e);m.emit(2,t),console.info(N.BLUE+t+L.CLEAR)}warn(...e){if(m.LOG_LEVEL<1)return;const t=this.format(...e);m.emit(1,t),console.warn(N.YELLOW+t+L.CLEAR)}error(...e){if(m.LOG_LEVEL<0)return;const t=this.format(...e);m.emit(0,t),console.error(N.RED+t+L.CLEAR)}};l(m,"LOG_LEVEL",4);let U=m;function gt(n){const e=(E,a)=>a<1e-7?E:e(a,~~(E%a)),t=n.toString().length-2;let r=Math.pow(10,t),o=n*r;const i=e(o,r);o=~~(o/i),r=~~(r/i);const s=~~(o/r);return o-=s*r,`${s?s+" ":""}${~~o}/${~~r}`}function mt(n){let e=n.split(" ");const t=e.length==2?Number(e[0]):0;return e=e.pop().split("/"),t+Number(e[0])/Number(e[1])}function Et(n,e){return n.length-n.replaceAll(e,"").length}function pt(n){return Array(n).fill(null).map(()=>Math.round(Math.random()*15).toString(16)).join("")}const q="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",G="0123456789",M="~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/",wt=q+G+M;function bt(n){const e=/(\+?1)?.*?(\d{3}).*?(\d{3}).*?(\d{4})/g.exec(n);if(!e)throw new Error(`Number cannot be parsed: ${n}`);return`${e[1]??""} (${e[2]}) ${e[3]}-${e[4]}`.trim()}function Bt(n,e,t){return`${n.slice(0,t)}${e}${n.slice(t+1)}`}function At(n,e,t,r=!0){const o=n.toString(),i=e-o.length;if(i<=0)return o;const s=Array(~~(i/t.length)).fill(t).join("");return r?s+o:o+s}function Rt(n,e=wt){return Array(n).fill(null).map(()=>{const t=~~(Math.random()*e.length);return e[t]}).join("")}function St(n,e=!1,t=!1,r=!1){if(!e&&!t&&!r)throw new Error("Must enable at least one: letters, numbers, symbols");return Array(n).fill(null).map(()=>{let o;do{const i=~~(Math.random()*3);e&&i==0?o=q[~~(Math.random()*q.length)]:t&&i==1?o=G[~~(Math.random()*G.length)]:r&&i==2&&(o=M[~~(Math.random()*M.length)])}while(!o);return o}).join("")}function Ct(n,e){if(typeof e=="string"&&(e=new RegExp(e,"g")),!e.global)throw new TypeError("Regular expression must be global.");let t=[],r;for(;(r=e.exec(n))!==null;)t.push(r);return t}function _(n){var e=Lt(Nt(Tt(Ot(n),8*n.length)));return e.toLowerCase()}function Lt(n){for(var e,t="0123456789ABCDEF",r="",o=0;o<n.length;o++)e=n.charCodeAt(o),r+=t.charAt(e>>>4&15)+t.charAt(15&e);return r}function Ot(n){for(var e=Array(n.length>>2),t=0;t<e.length;t++)e[t]=0;for(t=0;t<8*n.length;t+=8)e[t>>5]|=(255&n.charCodeAt(t/8))<<t%32;return e}function Nt(n){for(var e="",t=0;t<32*n.length;t+=8)e+=String.fromCharCode(n[t>>5]>>>t%32&255);return e}function Tt(n,e){n[e>>5]|=128<<e%32,n[14+(e+64>>>9<<4)]=e;for(var t=1732584193,r=-271733879,o=-1732584194,i=271733878,s=0;s<n.length;s+=16){var E=t,a=r,D=o,v=i;r=y(r=y(r=y(r=y(r=d(r=d(r=d(r=d(r=h(r=h(r=h(r=h(r=f(r=f(r=f(r=f(r,o=f(o,i=f(i,t=f(t,r,o,i,n[s+0],7,-680876936),r,o,n[s+1],12,-389564586),t,r,n[s+2],17,606105819),i,t,n[s+3],22,-1044525330),o=f(o,i=f(i,t=f(t,r,o,i,n[s+4],7,-176418897),r,o,n[s+5],12,1200080426),t,r,n[s+6],17,-1473231341),i,t,n[s+7],22,-45705983),o=f(o,i=f(i,t=f(t,r,o,i,n[s+8],7,1770035416),r,o,n[s+9],12,-1958414417),t,r,n[s+10],17,-42063),i,t,n[s+11],22,-1990404162),o=f(o,i=f(i,t=f(t,r,o,i,n[s+12],7,1804603682),r,o,n[s+13],12,-40341101),t,r,n[s+14],17,-1502002290),i,t,n[s+15],22,1236535329),o=h(o,i=h(i,t=h(t,r,o,i,n[s+1],5,-165796510),r,o,n[s+6],9,-1069501632),t,r,n[s+11],14,643717713),i,t,n[s+0],20,-373897302),o=h(o,i=h(i,t=h(t,r,o,i,n[s+5],5,-701558691),r,o,n[s+10],9,38016083),t,r,n[s+15],14,-660478335),i,t,n[s+4],20,-405537848),o=h(o,i=h(i,t=h(t,r,o,i,n[s+9],5,568446438),r,o,n[s+14],9,-1019803690),t,r,n[s+3],14,-187363961),i,t,n[s+8],20,1163531501),o=h(o,i=h(i,t=h(t,r,o,i,n[s+13],5,-1444681467),r,o,n[s+2],9,-51403784),t,r,n[s+7],14,1735328473),i,t,n[s+12],20,-1926607734),o=d(o,i=d(i,t=d(t,r,o,i,n[s+5],4,-378558),r,o,n[s+8],11,-2022574463),t,r,n[s+11],16,1839030562),i,t,n[s+14],23,-35309556),o=d(o,i=d(i,t=d(t,r,o,i,n[s+1],4,-1530992060),r,o,n[s+4],11,1272893353),t,r,n[s+7],16,-155497632),i,t,n[s+10],23,-1094730640),o=d(o,i=d(i,t=d(t,r,o,i,n[s+13],4,681279174),r,o,n[s+0],11,-358537222),t,r,n[s+3],16,-722521979),i,t,n[s+6],23,76029189),o=d(o,i=d(i,t=d(t,r,o,i,n[s+9],4,-640364487),r,o,n[s+12],11,-421815835),t,r,n[s+15],16,530742520),i,t,n[s+2],23,-995338651),o=y(o,i=y(i,t=y(t,r,o,i,n[s+0],6,-198630844),r,o,n[s+7],10,1126891415),t,r,n[s+14],15,-1416354905),i,t,n[s+5],21,-57434055),o=y(o,i=y(i,t=y(t,r,o,i,n[s+12],6,1700485571),r,o,n[s+3],10,-1894986606),t,r,n[s+10],15,-1051523),i,t,n[s+1],21,-2054922799),o=y(o,i=y(i,t=y(t,r,o,i,n[s+8],6,1873313359),r,o,n[s+15],10,-30611744),t,r,n[s+6],15,-1560198380),i,t,n[s+13],21,1309151649),o=y(o,i=y(i,t=y(t,r,o,i,n[s+4],6,-145523070),r,o,n[s+11],10,-1120210379),t,r,n[s+2],15,718787259),i,t,n[s+9],21,-343485551),t=w(t,E),r=w(r,a),o=w(o,D),i=w(i,v)}return Array(t,r,o,i)}function I(n,e,t,r,o,i){return w(It(w(w(e,n),w(r,i)),o),t)}function f(n,e,t,r,o,i,s){return I(e&t|~e&r,n,e,o,i,s)}function h(n,e,t,r,o,i,s){return I(e&r|t&~r,n,e,o,i,s)}function d(n,e,t,r,o,i,s){return I(e^t^r,n,e,o,i,s)}function y(n,e,t,r,o,i,s){return I(t^(e|~r),n,e,o,i,s)}function w(n,e){var t=(65535&n)+(65535&e);return(n>>16)+(e>>16)+(t>>16)<<16|65535&t}function It(n,e){return n<<e|n>>>32-e}function Dt(n){return/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/.test(n)}function $t(n){return Object.entries(n).map(([e,t])=>encodeURIComponent(e)+"="+encodeURIComponent(t)).join("&")}function jt(n,e="mp"){return n?`https://www.gravatar.com/avatar/${_(n)}?d=${e}`:""}function kt(n){const e=new RegExp("(?:(?<protocol>[\\w\\d]+)\\:\\/\\/)?(?:(?<user>.+)\\@)?(?<host>(?<domain>[^:\\/\\?#@\\n]+)(?:\\:(?<port>\\d*))?)(?<path>\\/.*?)?(?:\\?(?<query>.*?))?(?:#(?<fragment>.*?))?$","gm").exec(n),t=(e==null?void 0:e.groups)??{},r=t.domain.split(".");if(t.port!=null&&(t.port=Number(t.port)),r.length>2&&(t.domain=r.splice(-2,2).join("."),t.subdomain=r.join(".")),t.query){const o=t.query.split("&"),i={};o.forEach(s=>{const[E,a]=s.split("=");i[E]=a}),t.query=i}return t}function Pt(n){return(n instanceof Date?n.getTime():n)-new Date().getTime()}function Ut(n){return new Promise(e=>setTimeout(e,n))}function qt(n){const e=n instanceof Date?n:new Date(n);return new Intl.DateTimeFormat("en-us",{weekday:"long",month:"short",day:"numeric",hour:"numeric",minute:"numeric",hour12:!0}).format(e)}c.ASet=C,c.BadRequestError=x,c.CliBackground=yt,c.CliEffects=L,c.CliForeground=N,c.CustomError=R,c.ForbiddenError=K,c.Http=P,c.InternalServerError=X,c.LOG_LEVEL=Q,c.Logger=U,c.NotFoundError=Z,c.PromiseProgress=A,c.TypedEmitter=k,c.UnauthorizedError=V,c.addUnique=it,c.arrayDiff=st,c.caseInsensitiveSort=ct,c.clean=g,c.countChars=Et,c.createHex=pt,c.dec2Frac=gt,c.deepCopy=B,c.deepMerge=H,c.dotNotation=O,c.download=J,c.downloadBlob=ft,c.fileBrowser=ht,c.findByProp=ut,c.flattenArr=W,c.flattenObj=Y,c.formEncode=$t,c.formatDate=qt,c.formatPhoneNumber=bt,c.fracToDec=mt,c.gravatar=jt,c.includes=j,c.insertAt=Bt,c.isEqual=S,c.makeArray=lt,c.makeUnique=z,c.matchAll=Ct,c.md5=_,c.mixin=rt,c.pad=At,c.randomString=Rt,c.randomStringBuilder=St,c.sanitizedJSON=ot,c.sleep=Ut,c.sortByProp=at,c.timeUntil=Pt,c.uploadWithProgress=dt,c.urlParser=kt,c.validateEmail=Dt,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(c,g){typeof exports=="object"&&typeof module<"u"?g(exports):typeof define=="function"&&define.amd?define(["exports"],g):(c=typeof globalThis<"u"?globalThis:c||self,g(c.utils={}))})(this,function(c){"use strict";var Gt=Object.defineProperty;var Mt=(c,g,B)=>g in c?Gt(c,g,{enumerable:!0,configurable:!0,writable:!0,value:B}):c[g]=B;var l=(c,g,B)=>(Mt(c,typeof g!="symbol"?g+"":g,B),B);function g(n,e=!1){if(n==null)throw new Error("Cannot clean a NULL value");return Array.isArray(n)?n=n.filter(t=>t!=null):Object.entries(n).forEach(([t,r])=>{(e&&r===void 0||!e&&r==null)&&delete n[t]}),n}function B(n){return JSON.parse(JSON.stringify(n))}function F(n,...e){return e.forEach(t=>{for(const r in t)t[r]&&typeof t[r]=="object"&&!Array.isArray(t[r])?(n[r]||(n[r]={}),F(n[r],t[r])):n[r]=t[r]}),n}function L(n,e,t){if(!(n==null||!e))return e.split(/[.[\]]/g).filter(r=>r.length).reduce((r,o,i,s)=>{if((o[0]=='"'||o[0]=="'")&&(o=o.slice(1,-1)),!(r!=null&&r.hasOwnProperty(o))){if(t==null)return;r[o]={}}return t!==void 0&&i==s.length-1?r[o]=t:r[o]},n)}function H(n,e,t={}){if(typeof n=="object"&&!Array.isArray(n)){for(const r of Object.keys(n)){const o=e?e+"."+r:r;typeof n[r]=="object"?H(n[r],o,t):t[o]=n[r]}return t}}function D(n,e,t=!1){if(n==null)return t;if(Array.isArray(e))return e.findIndex((o,i)=>!D(n[i],e[i],t))==-1;const r=typeof e;return r!=typeof n?!1:r=="object"?Object.keys(e).find(o=>!D(n[o],e[o],t))==null:r=="function"?n.toString()==e.toString():n==e}function R(n,e){const t=typeof n,r=typeof e;return t!="object"||n==null||r!="object"||e==null?t=="function"&&r=="function"?n.toString()==e.toString():n===e:Object.keys(n).length!=Object.keys(e).length?!1:Object.keys(n).every(i=>R(n[i],e[i]))}function nt(n,e){e.forEach(t=>{Object.getOwnPropertyNames(t.prototype).forEach(r=>{Object.defineProperty(n.prototype,r,Object.getOwnPropertyDescriptor(t.prototype,r)||Object.create(null))})})}function rt(n,e){let t=[];return JSON.parse(JSON.stringify(n,(r,o)=>{if(typeof o=="object"&&o!==null){if(t.includes(o))return;t.push(o)}return o},e))}function ot(n,e){return n.indexOf(e)===-1&&n.push(e),n}function it(n,e){return W([...n.filter(t=>!e.includes(r=>R(t,r))),...e.filter(t=>!n.includes(r=>R(t,r)))])}function st(n){return function(e,t){const r=L(e,n),o=L(t,n);return typeof r!="string"||typeof o!="string"?1:r.toLowerCase().localeCompare(o.toLowerCase())}}function Y(n,e=[]){return n.forEach(t=>Array.isArray(t)?Y(t,e):e.push(t)),e}function ct(n,e=!1){return function(t,r){const o=L(t,n),i=L(r,n);return typeof o=="number"&&typeof i=="number"?(e?-1:1)*(o-i):o>i?e?-1:1:o<i?e?1:-1:0}}function at(n,e){return t=>R(t[n],e)}function W(n){for(let e=n.length-1;e>=0;e--)n.slice(0,e).find(t=>R(t,n[e]))&&n.splice(e,1);return n}function ut(n){return Array.isArray(n)?n:[n]}class S extends Array{get size(){return this.length}constructor(e=[]){super(),e!=null&&e.forEach&&e.forEach(t=>this.add(t))}add(e){this.has(e)||this.push(e)}delete(e){const t=this.indexOf(e);t!=-1&&this.slice(t,1)}difference(e){return new S(this.reduce((t,r)=>(e.has(r)||t.push(r),t),[]))}has(e){return this.indexOf(e)!=-1}intersection(e){return new S(this.reduce((t,r)=>(e.has(r)&&t.push(r),t),[]))}isDisjointFrom(e){return this.intersection(e).size==0}isSubsetOf(e){return this.findIndex(t=>!e.has(t))==-1}isSuperset(e){return e.findIndex(t=>!this.has(t))==-1}symmetricDifference(e){return new S([...this.difference(e),...e.difference(this)])}union(e){return new S([...this,...e])}}class A extends Promise{constructor(t){super((r,o)=>t(i=>r(i),i=>o(i),i=>this.progress=i));l(this,"listeners",[]);l(this,"_progress",0)}get progress(){return this._progress}set progress(t){t!=this._progress&&(this._progress=t,this.listeners.forEach(r=>r(t)))}static from(t){return t instanceof A?t:new A((r,o)=>t.then((...i)=>r(...i)).catch((...i)=>o(...i)))}from(t){const r=A.from(t);return this.onProgress(o=>r.progress=o),r}onProgress(t){return this.listeners.push(t),this}then(t,r){const o=super.then(t,r);return this.from(o)}catch(t){return this.from(super.catch(t))}finally(t){return this.from(super.finally(t))}}function z(n,e){const t=document.createElement("a");t.href=n,t.download=e,document.body.appendChild(t),t.click(),document.body.removeChild(t)}function lt(n,e){const t=URL.createObjectURL(n);z(t,e),URL.revokeObjectURL(t)}function ft(n={}){return new Promise(e=>{const t=document.createElement("input");t.type="file",t.accept=n.accept||"*",t.style.display="none",t.multiple=!!n.multiple,t.onblur=t.onchange=async()=>{e(Array.from(t.files)),t.remove()},document.body.appendChild(t),t.click()})}function ht(n){return new A((e,t,r)=>{const o=new XMLHttpRequest,i=new FormData;n.files.forEach(s=>i.append("file",s)),o.withCredentials=!!n.withCredentials,o.upload.addEventListener("progress",s=>s.lengthComputable?r(s.loaded/s.total):null),o.upload.addEventListener("load",s=>e(s)),o.upload.addEventListener("error",s=>t(s)),o.open("POST",n.url),Object.entries(n.headers||{}).forEach(([s,E])=>o.setRequestHeader(s,E)),o.send(i)})}class j{constructor(){l(this,"listeners",{})}static emit(e,...t){(this.listeners["*"]||[]).forEach(r=>r(e,...t)),(this.listeners[e.toString()]||[]).forEach(r=>r(...t))}static off(e,t){const r=e.toString();this.listeners[r]=(this.listeners[r]||[]).filter(o=>o===t)}static on(e,t){var o;const r=e.toString();return this.listeners[r]||(this.listeners[r]=[]),(o=this.listeners[r])==null||o.push(t),()=>this.off(e,t)}static once(e,t){return new Promise(r=>{const o=this.on(e,(...i)=>{r(i.length==1?i[0]:i),t&&t(...i),o()})})}emit(e,...t){(this.listeners["*"]||[]).forEach(r=>r(e,...t)),(this.listeners[e]||[]).forEach(r=>r(...t))}off(e,t){this.listeners[e]=(this.listeners[e]||[]).filter(r=>r===t)}on(e,t){var r;return this.listeners[e]||(this.listeners[e]=[]),(r=this.listeners[e])==null||r.push(t),()=>this.off(e,t)}once(e,t){return new Promise(r=>{const o=this.on(e,(...i)=>{r(i.length==1?i[0]:i),t&&t(...i),o()})})}}l(j,"listeners",{});class b extends Error{constructor(t,r){super(t);l(this,"_code");r!=null&&(this._code=r)}get code(){return this._code||this.constructor.code}set code(t){this._code=t}static from(t){const r=Number(t.statusCode)??Number(t.code),o=new this(t.message||t.toString());return Object.assign(o,{stack:t.stack,...t,code:r??void 0})}static instanceof(t){return t.constructor.code!=null}toString(){return this.message||super.toString()}}l(b,"code",500);class J extends b{constructor(e="Bad Request"){super(e)}static instanceof(e){return e.constructor.code==this.code}}l(J,"code",400);class x extends b{constructor(e="Unauthorized"){super(e)}static instanceof(e){return e.constructor.code==this.code}}l(x,"code",401);class V extends b{constructor(e="Forbidden"){super(e)}static instanceof(e){return e.constructor.code==this.code}}l(V,"code",403);class K extends b{constructor(e="Not Found"){super(e)}static instanceof(e){return e.constructor.code==this.code}}l(K,"code",404);class Z extends b{constructor(e="Internal Server Error"){super(e)}static instanceof(e){return e.constructor.code==this.code}}l(Z,"code",500);const p=class p{constructor(e={}){l(this,"interceptors",{});l(this,"headers",{});l(this,"url");this.url=e.url??null,this.headers=e.headers||{},e.interceptors&&e.interceptors.forEach(t=>p.addInterceptor(t))}static addInterceptor(e){const t=Object.keys(p.interceptors).length.toString();return p.interceptors[t]=e,()=>{p.interceptors[t]=null}}addInterceptor(e){const t=Object.keys(this.interceptors).length.toString();return this.interceptors[t]=e,()=>{this.interceptors[t]=null}}request(e={}){var o;if(!this.url&&!e.url)throw new Error("URL needs to be set");let t=((o=e.url)!=null&&o.startsWith("http")?e.url:(this.url||"")+(e.url||"")).replace(/([^:]\/)\/+/g,"$1");if(e.fragment&&(t.includes("#")?t.replace(/#.*(\?|\n)/g,(i,s)=>`#${e.fragment}${s}`):t+="#"+e.fragment),e.query){const i=Array.isArray(e.query)?e.query:Object.keys(e.query).map(s=>({key:s,value:e.query[s]}));t+=(t.includes("?")?"&":"?")+i.map(s=>`${s.key}=${s.value}`).join("&")}const r=g({"Content-Type":e.body?e.body instanceof FormData?"multipart/form-data":"application/json":void 0,...p.headers,...this.headers,...e.headers});return typeof e.body=="object"&&e.body!=null&&r["Content-Type"]=="application/json"&&(e.body=JSON.stringify(e.body)),new A((i,s,E)=>{fetch(t,{headers:r,method:e.method||(e.body?"POST":"GET"),body:e.body}).then(async a=>{var tt,et;for(let u of[...Object.values(p.interceptors),...Object.values(this.interceptors)])await new Promise($=>u(a,()=>$()));const I=a.headers.get("Content-Length"),M=I?parseInt(I,10):0;let _=0;const v=(tt=a.body)==null?void 0:tt.getReader(),qt=new ReadableStream({start(u){function $(){v==null||v.read().then(N=>{if(N.done)return u.close();_+=N.value.byteLength,E(_/M),u.enqueue(N.value),$()}).catch(N=>u.error(N))}$()}});if(a.data=new Response(qt),e.decode!==!1){const u=(et=a.headers.get("Content-Type"))==null?void 0:et.toLowerCase();u!=null&&u.includes("application")?a.data=await a.data.blob():u!=null&&u.includes("form")?a.data=await a.data.formData():u!=null&&u.includes("json")?a.data=await a.data.json():u!=null&&u.includes("text")&&(a.data=await a.data.text())}a.ok?i(a):s(a)})})}};l(p,"interceptors",{}),l(p,"headers",{});let k=p;const C={CLEAR:"\x1B[0m",BRIGHT:"\x1B[1m",DIM:"\x1B[2m",UNDERSCORE:"\x1B[4m",BLINK:"\x1B[5m",REVERSE:"\x1B[7m",HIDDEN:"\x1B[8m"},O={BLACK:"\x1B[30m",RED:"\x1B[31m",GREEN:"\x1B[32m",YELLOW:"\x1B[33m",BLUE:"\x1B[34m",MAGENTA:"\x1B[35m",CYAN:"\x1B[36m",LIGHT_GREY:"\x1B[37m",GREY:"\x1B[90m",LIGHT_RED:"\x1B[91m",LIGHT_GREEN:"\x1B[92m",LIGHT_YELLOW:"\x1B[93m",LIGHT_BLUE:"\x1B[94m",LIGHT_MAGENTA:"\x1B[95m",LIGHT_CYAN:"\x1B[96m",WHITE:"\x1B[97m"},dt={BLACK:"\x1B[40m",RED:"\x1B[41m",GREEN:"\x1B[42m",YELLOW:"\x1B[43m",BLUE:"\x1B[44m",MAGENTA:"\x1B[45m",CYAN:"\x1B[46m",WHITE:"\x1B[47m",GREY:"\x1B[100m"};var X=(n=>(n[n.ERROR=0]="ERROR",n[n.WARN=1]="WARN",n[n.INFO=2]="INFO",n[n.LOG=3]="LOG",n[n.DEBUG=4]="DEBUG",n))(X||{});const m=class m extends j{constructor(e){super(),this.namespace=e}pad(e,t,r,o=!1){const i=e.toString(),s=t-i.length;if(s<=0)return i;const E=Array(~~(s/r.length)).fill(r).join("");return o?i+E:E+i}format(...e){const t=new Date;return`${`${t.getFullYear()}-${t.getMonth()+1}-${t.getDate()} ${this.pad(t.getHours().toString(),2,"0")}:${this.pad(t.getMinutes().toString(),2,"0")}:${this.pad(t.getSeconds().toString(),2,"0")}.${this.pad(t.getMilliseconds().toString(),3,"0",!0)}`}${this.namespace?` [${this.namespace}]`:""} ${e.join(" ")}`}debug(...e){if(m.LOG_LEVEL<4)return;const t=this.format(...e);m.emit(4,t),console.debug(O.LIGHT_GREY+t+C.CLEAR)}log(...e){if(m.LOG_LEVEL<3)return;const t=this.format(...e);m.emit(3,t),console.log(C.CLEAR+t)}info(...e){if(m.LOG_LEVEL<2)return;const t=this.format(...e);m.emit(2,t),console.info(O.BLUE+t+C.CLEAR)}warn(...e){if(m.LOG_LEVEL<1)return;const t=this.format(...e);m.emit(1,t),console.warn(O.YELLOW+t+C.CLEAR)}error(...e){if(m.LOG_LEVEL<0)return;const t=this.format(...e);m.emit(0,t),console.error(O.RED+t+C.CLEAR)}};l(m,"LOG_LEVEL",4);let P=m;function yt(n){const e=(E,a)=>a<1e-7?E:e(a,~~(E%a)),t=n.toString().length-2;let r=Math.pow(10,t),o=n*r;const i=e(o,r);o=~~(o/i),r=~~(r/i);const s=~~(o/r);return o-=s*r,`${s?s+" ":""}${~~o}/${~~r}`}function gt(n){let e=n.split(" ");const t=e.length==2?Number(e[0]):0;return e=e.pop().split("/"),t+Number(e[0])/Number(e[1])}function mt(n,e){return n.length-n.replaceAll(e,"").length}function Et(n){return Array(n).fill(null).map(()=>Math.round(Math.random()*15).toString(16)).join("")}const U="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",q="0123456789",G="~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/",pt=U+q+G;function wt(n){const e=/(\+?1)?.*?(\d{3}).*?(\d{3}).*?(\d{4})/g.exec(n);if(!e)throw new Error(`Number cannot be parsed: ${n}`);return`${e[1]??""} (${e[2]}) ${e[3]}-${e[4]}`.trim()}function Bt(n,e,t){return`${n.slice(0,t)}${e}${n.slice(t+1)}`}function At(n,e,t,r=!0){const o=n.toString(),i=e-o.length;if(i<=0)return o;const s=Array(~~(i/t.length)).fill(t).join("");return r?s+o:o+s}function bt(n,e=pt){return Array(n).fill(null).map(()=>{const t=~~(Math.random()*e.length);return e[t]}).join("")}function Rt(n,e=!1,t=!1,r=!1){if(!e&&!t&&!r)throw new Error("Must enable at least one: letters, numbers, symbols");return Array(n).fill(null).map(()=>{let o;do{const i=~~(Math.random()*3);e&&i==0?o=U[~~(Math.random()*U.length)]:t&&i==1?o=q[~~(Math.random()*q.length)]:r&&i==2&&(o=G[~~(Math.random()*G.length)])}while(!o);return o}).join("")}function St(n,e){if(typeof e=="string"&&(e=new RegExp(e,"g")),!e.global)throw new TypeError("Regular expression must be global.");let t=[],r;for(;(r=e.exec(n))!==null;)t.push(r);return t}function Q(n){var e=Ct(Ot(Nt(Lt(n),8*n.length)));return e.toLowerCase()}function Ct(n){for(var e,t="0123456789ABCDEF",r="",o=0;o<n.length;o++)e=n.charCodeAt(o),r+=t.charAt(e>>>4&15)+t.charAt(15&e);return r}function Lt(n){for(var e=Array(n.length>>2),t=0;t<e.length;t++)e[t]=0;for(t=0;t<8*n.length;t+=8)e[t>>5]|=(255&n.charCodeAt(t/8))<<t%32;return e}function Ot(n){for(var e="",t=0;t<32*n.length;t+=8)e+=String.fromCharCode(n[t>>5]>>>t%32&255);return e}function Nt(n,e){n[e>>5]|=128<<e%32,n[14+(e+64>>>9<<4)]=e;for(var t=1732584193,r=-271733879,o=-1732584194,i=271733878,s=0;s<n.length;s+=16){var E=t,a=r,I=o,M=i;r=y(r=y(r=y(r=y(r=d(r=d(r=d(r=d(r=h(r=h(r=h(r=h(r=f(r=f(r=f(r=f(r,o=f(o,i=f(i,t=f(t,r,o,i,n[s+0],7,-680876936),r,o,n[s+1],12,-389564586),t,r,n[s+2],17,606105819),i,t,n[s+3],22,-1044525330),o=f(o,i=f(i,t=f(t,r,o,i,n[s+4],7,-176418897),r,o,n[s+5],12,1200080426),t,r,n[s+6],17,-1473231341),i,t,n[s+7],22,-45705983),o=f(o,i=f(i,t=f(t,r,o,i,n[s+8],7,1770035416),r,o,n[s+9],12,-1958414417),t,r,n[s+10],17,-42063),i,t,n[s+11],22,-1990404162),o=f(o,i=f(i,t=f(t,r,o,i,n[s+12],7,1804603682),r,o,n[s+13],12,-40341101),t,r,n[s+14],17,-1502002290),i,t,n[s+15],22,1236535329),o=h(o,i=h(i,t=h(t,r,o,i,n[s+1],5,-165796510),r,o,n[s+6],9,-1069501632),t,r,n[s+11],14,643717713),i,t,n[s+0],20,-373897302),o=h(o,i=h(i,t=h(t,r,o,i,n[s+5],5,-701558691),r,o,n[s+10],9,38016083),t,r,n[s+15],14,-660478335),i,t,n[s+4],20,-405537848),o=h(o,i=h(i,t=h(t,r,o,i,n[s+9],5,568446438),r,o,n[s+14],9,-1019803690),t,r,n[s+3],14,-187363961),i,t,n[s+8],20,1163531501),o=h(o,i=h(i,t=h(t,r,o,i,n[s+13],5,-1444681467),r,o,n[s+2],9,-51403784),t,r,n[s+7],14,1735328473),i,t,n[s+12],20,-1926607734),o=d(o,i=d(i,t=d(t,r,o,i,n[s+5],4,-378558),r,o,n[s+8],11,-2022574463),t,r,n[s+11],16,1839030562),i,t,n[s+14],23,-35309556),o=d(o,i=d(i,t=d(t,r,o,i,n[s+1],4,-1530992060),r,o,n[s+4],11,1272893353),t,r,n[s+7],16,-155497632),i,t,n[s+10],23,-1094730640),o=d(o,i=d(i,t=d(t,r,o,i,n[s+13],4,681279174),r,o,n[s+0],11,-358537222),t,r,n[s+3],16,-722521979),i,t,n[s+6],23,76029189),o=d(o,i=d(i,t=d(t,r,o,i,n[s+9],4,-640364487),r,o,n[s+12],11,-421815835),t,r,n[s+15],16,530742520),i,t,n[s+2],23,-995338651),o=y(o,i=y(i,t=y(t,r,o,i,n[s+0],6,-198630844),r,o,n[s+7],10,1126891415),t,r,n[s+14],15,-1416354905),i,t,n[s+5],21,-57434055),o=y(o,i=y(i,t=y(t,r,o,i,n[s+12],6,1700485571),r,o,n[s+3],10,-1894986606),t,r,n[s+10],15,-1051523),i,t,n[s+1],21,-2054922799),o=y(o,i=y(i,t=y(t,r,o,i,n[s+8],6,1873313359),r,o,n[s+15],10,-30611744),t,r,n[s+6],15,-1560198380),i,t,n[s+13],21,1309151649),o=y(o,i=y(i,t=y(t,r,o,i,n[s+4],6,-145523070),r,o,n[s+11],10,-1120210379),t,r,n[s+2],15,718787259),i,t,n[s+9],21,-343485551),t=w(t,E),r=w(r,a),o=w(o,I),i=w(i,M)}return Array(t,r,o,i)}function T(n,e,t,r,o,i){return w(Tt(w(w(e,n),w(r,i)),o),t)}function f(n,e,t,r,o,i,s){return T(e&t|~e&r,n,e,o,i,s)}function h(n,e,t,r,o,i,s){return T(e&r|t&~r,n,e,o,i,s)}function d(n,e,t,r,o,i,s){return T(e^t^r,n,e,o,i,s)}function y(n,e,t,r,o,i,s){return T(t^(e|~r),n,e,o,i,s)}function w(n,e){var t=(65535&n)+(65535&e);return(n>>16)+(e>>16)+(t>>16)<<16|65535&t}function Tt(n,e){return n<<e|n>>>32-e}function It(n){return/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/.test(n)}function $t(n){return Object.entries(n).map(([e,t])=>encodeURIComponent(e)+"="+encodeURIComponent(t)).join("&")}function Dt(n,e="mp"){return n?`https://www.gravatar.com/avatar/${Q(n)}?d=${e}`:""}function jt(n){const e=new RegExp("(?:(?<protocol>[\\w\\d]+)\\:\\/\\/)?(?:(?<user>.+)\\@)?(?<host>(?<domain>[^:\\/\\?#@\\n]+)(?:\\:(?<port>\\d*))?)(?<path>\\/.*?)?(?:\\?(?<query>.*?))?(?:#(?<fragment>.*?))?$","gm").exec(n),t=(e==null?void 0:e.groups)??{},r=t.domain.split(".");if(t.port!=null&&(t.port=Number(t.port)),r.length>2&&(t.domain=r.splice(-2,2).join("."),t.subdomain=r.join(".")),t.query){const o=t.query.split("&"),i={};o.forEach(s=>{const[E,a]=s.split("=");i[E]=a}),t.query=i}return t}function kt(n){return(n instanceof Date?n.getTime():n)-new Date().getTime()}function Pt(n){return new Promise(e=>setTimeout(e,n))}function Ut(n){const e=n instanceof Date?n:new Date(n);return new Intl.DateTimeFormat("en-us",{weekday:"long",month:"short",day:"numeric",hour:"numeric",minute:"numeric",hour12:!0}).format(e)}c.ASet=S,c.BadRequestError=J,c.CliBackground=dt,c.CliEffects=C,c.CliForeground=O,c.CustomError=b,c.ForbiddenError=V,c.Http=k,c.InternalServerError=Z,c.LOG_LEVEL=X,c.Logger=P,c.NotFoundError=K,c.PromiseProgress=A,c.TypedEmitter=j,c.UnauthorizedError=x,c.addUnique=ot,c.arrayDiff=it,c.caseInsensitiveSort=st,c.clean=g,c.countChars=mt,c.createHex=Et,c.dec2Frac=yt,c.deepCopy=B,c.deepMerge=F,c.dotNotation=L,c.download=z,c.downloadBlob=lt,c.fileBrowser=ft,c.findByProp=at,c.flattenArr=Y,c.flattenObj=H,c.formEncode=$t,c.formatDate=Ut,c.formatPhoneNumber=wt,c.fracToDec=gt,c.gravatar=Dt,c.includes=D,c.insertAt=Bt,c.isEqual=R,c.makeArray=ut,c.makeUnique=W,c.matchAll=St,c.md5=Q,c.mixin=nt,c.pad=At,c.randomString=bt,c.randomStringBuilder=Rt,c.sanitizedJSON=rt,c.sleep=Pt,c.sortByProp=ct,c.timeUntil=kt,c.uploadWithProgress=ht,c.urlParser=jt,c.validateEmail=It,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})});
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/objects.ts","../src/array.ts","../src/aset.ts","../src/promise-progress.ts","../src/files.ts","../src/emitter.ts","../src/errors.ts","../src/http.ts","../src/logger.ts","../src/math.ts","../src/string.ts","../src/misc.ts","../src/time.ts"],"sourcesContent":["/**\r\n * Removes any null values from an object in-place\r\n *\r\n * @example\r\n * ```ts\r\n * let test = {a: 0, b: false, c: null, d: 'abc'}\r\n * console.log(clean(test)); // Output: {a: 0, b: false, d: 'abc'}\r\n * ```\r\n *\r\n * @param {T} obj Object reference that will be cleaned\r\n * @param undefinedOnly Ignore null values\r\n * @returns {Partial<T>} Cleaned object\r\n */\r\nexport function clean<T>(obj: T, undefinedOnly = false): Partial<T> {\r\n\tif(obj == null) throw new Error(\"Cannot clean a NULL value\");\r\n\tif(Array.isArray(obj)) {\r\n\t\tobj = <any>obj.filter(o => o != null);\r\n\t} else {\r\n\t\tObject.entries(obj).forEach(([key, value]) => {\r\n\t\t\tif((undefinedOnly && value === undefined) || (!undefinedOnly && value == null)) delete (<any>obj)[key];\r\n\t\t});\r\n\t}\r\n\treturn <any>obj;\r\n}\r\n\r\n/**\r\n * Create a deep copy of an object (vs. a shallow copy of references)\r\n *\r\n * Should be replaced by `structuredClone` once released.\r\n *\r\n * @param {T} value Object to copy\r\n * @returns {T} Type\r\n */\r\nexport function deepCopy<T>(value: T): T {\r\n\treturn JSON.parse(JSON.stringify(value));\r\n}\r\n\r\n/**\r\n * Merge any number of objects into the target\r\n *\r\n * @param target Destination of all properties\r\n * @param sources Objects that will copied into target\r\n * @return {any} The des\r\n */\r\nexport function deepMerge<T>(target: any, ...sources: any[]): T {\r\n\tsources.forEach(s => {\r\n\t\tfor(const key in s) {\r\n\t\t\tif(s[key] && typeof s[key] == 'object' && !Array.isArray(s[key])) {\r\n\t\t\t\tif(!target[key]) target[key] = {};\r\n\t\t\t\tdeepMerge(target[key], s[key]);\r\n\t\t\t} else {\r\n\t\t\t\ttarget[key] = s[key];\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\treturn target;\r\n}\r\n\r\n/**\r\n * Get/set a property of an object using dot notation\r\n *\r\n * @example\r\n * ```ts\r\n * // Get a value\r\n * const name = dotNotation<string>(person, 'firstName');\r\n * const familyCarMake = dotNotation(family, 'cars[0].make');\r\n * // Set a value\r\n * dotNotation(family, 'cars[0].make', 'toyota');\r\n * ```\r\n *\r\n * @type T Return type\r\n * @param {Object} obj source object to search\r\n * @param {string} prop property name (Dot notation & indexing allowed)\r\n * @param {any} set Set object property to value, omit to fetch value instead\r\n * @return {T} property value\r\n */\r\nexport function dotNotation<T>(obj: any, prop: string, set: T): T;\r\nexport function dotNotation<T>(obj: any, prop: string): T | undefined;\r\nexport function dotNotation<T>(obj: any, prop: string, set?: T): T | undefined {\r\n\tif(obj == null || !prop) return undefined;\r\n\t// Split property string by '.' or [index]\r\n\treturn <T>prop.split(/[.[\\]]/g).filter(prop => prop.length).reduce((obj, prop, i, arr) => {\r\n\t\tif(prop[0] == '\"' || prop[0] == \"'\") prop = prop.slice(1, -1); // Take quotes out\r\n\t\tif(!obj?.hasOwnProperty(prop)) {\r\n\t\t\tif(set == undefined) return undefined;\r\n\t\t\tobj[prop] = {};\r\n\t\t}\r\n\t\tif(set !== undefined && i == arr.length - 1)\r\n\t\t\treturn obj[prop] = set;\r\n\t\treturn obj[prop];\r\n\t}, obj);\r\n}\r\n\r\n/**\r\n * Recursively flatten a nested object, while maintaining key structure.\r\n *\r\n * @example\r\n * ```ts\r\n * const car = {honda: {model: \"Civic\"}};\r\n * console.log(flattenObj(car)); //Output {honda.model: \"Civic\"}\r\n * ```\r\n *\r\n * @param obj - Object to flatten\r\n * @param parent - Recursively check if key is a parent key or not\r\n * @param result - Result\r\n * @returns {object} - Flattened object\r\n */\r\nexport function flattenObj(obj: any, parent?: any, result: any = {}) {\r\n\tif(typeof obj === \"object\" && !Array.isArray(obj)) {\r\n\t\tfor(const key of Object.keys(obj)) {\r\n\t\t\tconst propName = parent ? parent + '.' + key : key;\r\n\t\t\tif(typeof obj[key] === 'object') {\r\n\t\t\t\tflattenObj(obj[key], propName, result);\r\n\t\t\t} else {\r\n\t\t\t\tresult[propName] = obj[key];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n}\r\n\r\n/**\r\n * Check that an object has the following values\r\n *\r\n * @example\r\n * ```ts\r\n * const test = {a: 2, b: 2};\r\n * includes(test, {a: 1}); // true\r\n * includes(test, {b: 1, c: 3}); // false\r\n * ```\r\n *\r\n * @param target Object to search\r\n * @param values Criteria to check against\r\n * @param allowMissing Only check the keys that are available on the target\r\n * @returns {boolean} Does target include all the values\r\n */\r\nexport function includes(target: any, values: any, allowMissing = false): boolean {\r\n\tif(target == undefined) return allowMissing;\r\n\tif(Array.isArray(values)) return values.findIndex((e: any, i: number) => !includes(target[i], values[i], allowMissing)) == -1;\r\n\tconst type = typeof values;\r\n\tif(type != typeof target) return false;\r\n\tif(type == 'object') {\r\n\t\treturn Object.keys(values).find(key => !includes(target[key], values[key], allowMissing)) == null;\r\n\t}\r\n\tif(type == 'function') return target.toString() == values.toString();\r\n\treturn target == values;\r\n}\r\n\r\n/**\r\n * Deep check if two objects are equal\r\n *\r\n * @param {any} a - first item to compare\r\n * @param {any} b - second item to compare\r\n * @returns {boolean} True if they match\r\n */\r\nexport function isEqual(a: any, b: any): boolean {\r\n\tconst ta = typeof a, tb = typeof b;\r\n\tif((ta != 'object' || a == null) || (tb != 'object' || b == null))\r\n\t\treturn ta == 'function' && tb == 'function' ? a.toString() == b.toString() : a === b;\r\n\tconst keys = Object.keys(a);\r\n\tif(keys.length != Object.keys(b).length) return false;\r\n\treturn Object.keys(a).every(key => isEqual(a[key], b[key]));\r\n}\r\n\r\nexport function mixin(target: any, constructors: any[]) {\r\n\tconstructors.forEach(c => {\r\n\t\tObject.getOwnPropertyNames(c.prototype).forEach((name) => {\r\n\t\t\tObject.defineProperty(\r\n\t\t\t\ttarget.prototype,\r\n\t\t\t\tname,\r\n\t\t\t\tObject.getOwnPropertyDescriptor(c.prototype, name) ||\r\n\t\t\t\tObject.create(null)\r\n\t\t\t);\r\n\t\t});\r\n\t});\r\n}\r\n\r\nexport function sanitizedJSON(obj: any, space?: number) {\r\n\tlet cache: any[] = [];\r\n\treturn JSON.parse(JSON.stringify(obj, (key, value) => {\r\n\t\tif (typeof value === 'object' && value !== null) {\r\n\t\t\tif (cache.includes(value)) return;\r\n\t\t\tcache.push(value);\r\n\t\t}\r\n\t\treturn value;\r\n\t}, space));\r\n}\r\n","import {dotNotation, isEqual} from './objects';\n\nexport function addUnique<T>(array: T[], el: T): T[] {\n\tif(array.indexOf(el) === -1) array.push(el);\n\treturn array;\n}\n\nexport function arrayDiff(a: any[], b: any[]): any[] {\n\treturn makeUnique([\n\t\t...a.filter(v1 => !b.includes((v2: any) => isEqual(v1, v2))),\n\t\t...b.filter(v1 => !a.includes((v2: any) => isEqual(v1, v2))),\n\t]);\n}\n\n/**\n * Provides a shorthand for sorting arrays of complex objects by a string property\n *\n * @example\n * ```ts\n * let arr = [{a: 'Apple', b: 123}, {a: 'Carrot', b: 789}, {a: 'banana', b: 456}];\n * arr.sort(caseInsensitiveSort('a'));\n * ```\n *\n * @param {string} prop - Name of property to use, supports dot notation\n * @returns {(a, b) => (number)} - Function to handle sort (Meant to be passed to Array.prototype.sort or used in sortFn)\n */\nexport function caseInsensitiveSort(prop: string) {\n\treturn function (a: any, b: any) {\n\t\tconst aVal = dotNotation<string>(a, prop);\n\t\tconst bVal = dotNotation<string>(b, prop);\n\t\tif(typeof aVal !== 'string' || typeof bVal !== 'string') return 1;\n\t\treturn aVal.toLowerCase().localeCompare(bVal.toLowerCase());\n\t};\n}\n\n/**\n * Recursively flatten nested arrays\n *\n * @example\n * ```ts\n * const arr = [\n * {label: null, url: '/'},\n * {label: 'Model Admin', url: '/model-admin'},\n * [\n * {label: 'Elements', url: '/model-admin/elements'},\n * {label: 'Example', url: null}\n * ]\n * ];\n *\n * console.log(flattenArr(arr));\n * // Output:\n * [\n * {label: null, url: '/'},\n * {label: 'Model Admin', url: '/model-admin'},\n * {label: 'Elements', url: '/model-admin/elements'},\n * {label: 'Example', url: null}\n * ]\n * ```\n *\n * @param {any[]} arr - n-dimensional array\n * @param {any[]} result - Internal use only -- Keeps track of recursion\n * @returns {any[]} - Flattened array\n */\nexport function flattenArr(arr: any[], result: any[] = []): any[] {\n\tarr.forEach(el => Array.isArray(el) ? flattenArr(el, result) : result.push(el));\n\treturn result;\n}\n\n/**\n * Provides a shorthand for sorting arrays of complex objects\n *\n * @example\n * ```ts\n * let arr = [{a: {b: 2}}, {a: {b: 3}}, {a: {b: 1}}];\n * arr.sort(sortByProp('a.b'));\n * ```\n *\n * @param {string} prop - Name of property to use, supports dot notation\n * @param {boolean} reverse - Reverse the order of the sort\n * @returns {(a, b) => (number)} - Function to handle sort (Meant to be passed to Array.prototype.sort)\n */\nexport function sortByProp(prop: string, reverse = false) {\n\treturn function (a: any, b: any) {\n\t\tconst aVal = dotNotation<any>(a, prop);\n\t\tconst bVal = dotNotation<any>(b, prop);\n\t\tif(typeof aVal == 'number' && typeof bVal == 'number')\n\t\t\treturn (reverse ? -1 : 1) * (aVal - bVal);\n\t\tif(aVal > bVal) return reverse ? -1 : 1;\n\t\tif(aVal < bVal) return reverse ? 1 : -1;\n\t\treturn 0;\n\t};\n}\n\nexport function findByProp(prop: string, value: any) {\n\treturn (v: any) => isEqual(v[prop], value);\n}\n\nexport function makeUnique(arr: any[]) {\n\tfor(let i = arr.length - 1; i >= 0; i--) {\n\t\tif(arr.slice(0, i).find(n => isEqual(n, arr[i]))) arr.splice(i, 1);\n\t}\n\treturn arr;\n}\n\n/**\n * Make sure value is an array, if it isn't wrap it in one.\n * @param {T[] | T} value Value that should be an array\n * @returns {T[]} Value in an array\n */\nexport function makeArray<T>(value: T | T[]): T[] {\n\treturn Array.isArray(value) ? value : [value];\n}\n","export class ASet<T> extends Array {\n\tget size() {\n\t\treturn this.length;\n\t}\n\n\tconstructor(elements: T[] = []) {\n\t\tsuper();\n\t\tif(!!elements?.['forEach'])\n\t\t\telements.forEach(el => this.add(el));\n\t}\n\n\tadd(el: T) {\n\t\tif(!this.has(el)) this.push(el);\n\t}\n\n\tdelete(el: T) {\n\t\tconst index = this.indexOf(el);\n\t\tif(index != -1) this.slice(index, 1);\n\t}\n\n\tdifference(set: ASet<T>) {\n\t\treturn new ASet<T>(this.reduce((acc, el) => {\n\t\t\tif(!set.has(el)) acc.push(el);\n\t\t\treturn acc;\n\t\t}, []));\n\t}\n\n\thas(el: T) {\n\t\treturn this.indexOf(el) != -1;\n\t}\n\n\tintersection(set: ASet<T>) {\n\t\treturn new ASet<T>(this.reduce((acc, el) => {\n\t\t\tif(set.has(el)) acc.push(el);\n\t\t\treturn acc;\n\t\t}, []));\n\t}\n\n\tisDisjointFrom(set: ASet<T>) {\n\t\treturn this.intersection(set).size == 0;\n\t}\n\n\tisSubsetOf(set: ASet<T>) {\n\t\treturn this.findIndex(el => !set.has(el)) == -1;\n\t}\n\n\tisSuperset(set: ASet<T>) {\n\t\treturn set.findIndex(el => !this.has(el)) == -1;\n\t}\n\n\tsymmetricDifference(set: ASet<T>) {\n\t\treturn new ASet([...this.difference(set), ...set.difference(this)]);\n\t}\n\n\tunion(set: ASet<T> | Array<T>) {\n\t\treturn new ASet([...this, ...set]);\n\t}\n}\n","export type ProgressCallback = (progress: number) => any;\n\nexport class PromiseProgress<T> extends Promise<T> {\n\tprivate listeners: ProgressCallback[] = [];\n\n\tprivate _progress = 0;\n\tget progress() { return this._progress; }\n\tset progress(p: number) {\n\t\tif(p == this._progress) return;\n\t\tthis._progress = p;\n\t\tthis.listeners.forEach(l => l(p));\n\t}\n\n\tconstructor(executor: (resolve: (value: T) => any, reject: (reason: any) => void, progress: (progress: number) => any) => void) {\n\t\tsuper((resolve, reject) => executor(\n\t\t\t(value: T) => resolve(value),\n\t\t\t(reason: any) => reject(reason),\n\t\t\t(progress: number) => this.progress = progress,\n\t\t));\n\t}\n\n\tstatic from<T>(promise: Promise<T>): PromiseProgress<T> {\n\t\tif(promise instanceof PromiseProgress) return promise;\n\t\treturn new PromiseProgress<T>((res, rej) => promise\n\t\t\t.then((...args) => res(...args))\n\t\t\t.catch((...args) => rej(...args)));\n\t}\n\n\tprivate from(promise: Promise<T>): PromiseProgress<T> {\n\t\tconst newPromise = PromiseProgress.from(promise);\n\t\tthis.onProgress(p => newPromise.progress = p);\n\t\treturn newPromise;\n\t}\n\n\tonProgress(callback: ProgressCallback) {\n\t\tthis.listeners.push(callback);\n\t\treturn this;\n\t}\n\n\tthen(res?: (v: T) => any, rej?: (err: any) => any): PromiseProgress<any> {\n\t\tconst resp = super.then(res, rej);\n\t\treturn this.from(resp);\n\t}\n\n\tcatch(rej?: (err: any) => any): PromiseProgress<any> {\n\t\treturn this.from(super.catch(rej));\n\t}\n\n\tfinally(res?: () => any): PromiseProgress<any> {\n\t\treturn this.from(super.finally(res));\n\t}\n}\n","import {PromiseProgress} from './promise-progress';\n\nexport function download(href: any, name: string) {\n\tconst a = document.createElement('a');\n\ta.href = href;\n\ta.download = name;\n\tdocument.body.appendChild(a);\n\ta.click();\n\tdocument.body.removeChild(a);\n}\n\nexport function downloadBlob(blob: Blob, name: string) {\n\tconst url = URL.createObjectURL(blob);\n\tdownload(url, name);\n\tURL.revokeObjectURL(url);\n}\n\nexport function fileBrowser(options: {accept?: string, multiple?: boolean} = {}): Promise<File[]> {\n\treturn new Promise(res => {\n\t\tconst input = document.createElement('input');\n\t\tinput.type = 'file';\n\t\tinput.accept = options.accept || '*';\n\t\tinput.style.display='none';\n\t\tinput.multiple = !!options.multiple;\n\t\tinput.onblur = input.onchange = async () => {\n\t\t\tres(Array.from(<any>input.files));\n\t\t\tinput.remove();\n\t\t}\n\t\tdocument.body.appendChild(input);\n\t\tinput.click();\n\t});\n}\n\nexport function uploadWithProgress<T>(options: {\n\turl: string;\n\tfiles: File[];\n\theaders?: {[key: string]: string};\n\twithCredentials?: boolean;\n}): PromiseProgress<T> {\n\treturn new PromiseProgress<T>((res, rej, prog) => {\n\t\tconst xhr = new XMLHttpRequest();\n\t\tconst formData = new FormData();\n\t\toptions.files.forEach(f => formData.append('file', f));\n\n\t\txhr.withCredentials = !!options.withCredentials\n\t\txhr.upload.addEventListener('progress', (event) => event.lengthComputable ? prog(event.loaded / event.total) : null);\n\t\txhr.upload.addEventListener('load', (resp) => res(<any>resp));\n\t\txhr.upload.addEventListener('error', (err) => rej(err));\n\n\t\txhr.open('POST', options.url);\n\t\tObject.entries(options.headers || {}).forEach(([key, value]) => xhr.setRequestHeader(key, value));\n\t\txhr.send(formData);\n\t});\n}\n","export type Listener = (...args: any[]) => any;\r\nexport type TypedEvents = {[k in string | symbol]: Listener} & {'*': (event: string, ...args: any[]) => any};\r\n\r\nexport class TypedEmitter<T extends TypedEvents = TypedEvents> {\r\n\tprivate static listeners: {[key: string]: Listener[]} = {};\r\n\r\n\tprivate listeners: { [key in keyof T]?: Listener[] } = {};\r\n\r\n\tstatic emit(event: any, ...args: any[]) {\r\n\t\t(this.listeners['*'] || []).forEach(l => l(event, ...args));\r\n\t\t(this.listeners[event.toString()] || []).forEach(l => l(...args));\r\n\t};\r\n\r\n\tstatic off(event: any, listener: Listener) {\r\n\t\tconst e = event.toString();\r\n\t\tthis.listeners[e] = (this.listeners[e] || []).filter(l => l === listener);\r\n\t}\r\n\r\n\tstatic on(event: any, listener: Listener) {\r\n\t\tconst e = event.toString();\r\n\t\tif(!this.listeners[e]) this.listeners[e] = [];\r\n\t\tthis.listeners[e]?.push(listener);\r\n\t\treturn () => this.off(event, listener);\r\n\t}\r\n\r\n\tstatic once(event: any, listener?: Listener): Promise<any> {\r\n\t\treturn new Promise(res => {\r\n\t\t\tconst unsubscribe = this.on(event, <any>((...args: any) => {\r\n\t\t\t\tres(args.length == 1 ? args[0] : args);\r\n\t\t\t\tif(listener) listener(...args);\r\n\t\t\t\tunsubscribe();\r\n\t\t\t}));\r\n\t\t});\r\n\t}\r\n\r\n\temit<K extends keyof T>(event: K, ...args: Parameters<T[K]>) {\r\n\t\t(this.listeners['*'] || []).forEach(l => l(event, ...args));\r\n\t\t(this.listeners[event] || []).forEach(l => l(...args));\r\n\t};\r\n\r\n\toff<K extends keyof T = string>(event: K, listener: T[K]) {\r\n\t\tthis.listeners[event] = (this.listeners[event] || []).filter(l => l === listener);\r\n\t}\r\n\r\n\ton<K extends keyof T = string>(event: K, listener: T[K]) {\r\n\t\tif(!this.listeners[event]) this.listeners[event] = [];\r\n\t\tthis.listeners[event]?.push(listener);\r\n\t\treturn () => this.off(event, listener);\r\n\t}\r\n\r\n\tonce<K extends keyof T = string>(event: K, listener?: T[K]): Promise<any> {\r\n\t\treturn new Promise(res => {\r\n\t\t\tconst unsubscribe = this.on(event, <any>((...args: any) => {\r\n\t\t\t\tres(args.length == 1 ? args[0] : args);\r\n\t\t\t\tif(listener) listener(...args);\r\n\t\t\t\tunsubscribe();\r\n\t\t\t}));\r\n\t\t});\r\n\t}\r\n}\r\n","export class CustomError extends Error {\r\n\tstatic code = 500;\r\n\r\n\tprivate _code?: number;\r\n\tget code(): number { return this._code || (<any>this).constructor.code; }\r\n\tset code(c: number) { this._code = c; }\r\n\r\n\tconstructor(message?: string, code?: number) {\r\n\t\tsuper(message);\r\n\t\tif(code != null) this._code = code;\r\n\t}\r\n\r\n\tstatic from(err: Error): CustomError {\r\n\t\tconst code = Number((<any>err).statusCode) ?? Number((<any>err).code);\r\n\t\tconst newErr = new this(err.message || err.toString());\r\n\t\treturn Object.assign(newErr, {\r\n\t\t\tstack: err.stack,\r\n\t\t\t...err,\r\n\t\t\tcode: code ?? undefined\r\n\t\t});\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code != undefined;\r\n\t}\r\n\r\n\ttoString() {\r\n\t\treturn this.message || super.toString();\r\n\t}\r\n}\r\n\r\nexport class BadRequestError extends CustomError {\r\n\tstatic code = 400;\r\n\r\n\tconstructor(message: string = 'Bad Request') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class UnauthorizedError extends CustomError {\r\n\tstatic code = 401;\r\n\r\n\tconstructor(message: string = 'Unauthorized') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class ForbiddenError extends CustomError {\r\n\tstatic code = 403;\r\n\r\n\tconstructor(message: string = 'Forbidden') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class NotFoundError extends CustomError {\r\n\tstatic code = 404;\r\n\r\n\tconstructor(message: string = 'Not Found') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class InternalServerError extends CustomError {\r\n\tstatic code = 500;\r\n\r\n\tconstructor(message: string = 'Internal Server Error') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n","import {clean} from './objects';\nimport {PromiseProgress} from './promise-progress';\n\nexport type DecodedResponse<T> = Response & {data: T | null}\n\nexport type HttpInterceptor = (response: Response, next: () => void) => void;\n\nexport type HttpRequestOptions = {\n\tbody?: any;\n\tdecode?: boolean;\n\tfragment?: string;\n\theaders?: {[key: string | symbol]: string | null | undefined};\n\tmethod?: 'GET' | 'POST' | 'PATCH' | 'DELETE';\n\tquery?: {key: string, value: string}[] | {[key: string]: string};\n\turl?: string;\n\t[key: string]: any;\n}\n\nexport type HttpDefaults = {\n\theaders?: {[key: string | symbol]: string | null | undefined};\n\tinterceptors?: HttpInterceptor[];\n\turl?: string;\n}\n\nexport class Http {\n\tprivate static interceptors: {[key: string]: HttpInterceptor} = {};\n\n\tstatic headers: {[key: string]: string | null | undefined} = {};\n\n\tprivate interceptors: {[key: string]: HttpInterceptor} = {}\n\n\theaders: {[key: string]: string | null | undefined} = {}\n\turl!: string | null;\n\n\tconstructor(defaults: HttpDefaults = {}) {\n\t\tthis.url = defaults.url ?? null;\n\t\tthis.headers = defaults.headers || {};\n\t\tif(defaults.interceptors) {\n\t\t\tdefaults.interceptors.forEach(i => Http.addInterceptor(i));\n\t\t}\n\t}\n\n\tstatic addInterceptor(fn: HttpInterceptor): () => void {\n\t\tconst key = Object.keys(Http.interceptors).length.toString();\n\t\tHttp.interceptors[key] = fn;\n\t\treturn () => { Http.interceptors[key] = <any>null; }\n\t}\n\n\taddInterceptor(fn: HttpInterceptor): () => void {\n\t\tconst key = Object.keys(this.interceptors).length.toString();\n\t\tthis.interceptors[key] = fn;\n\t\treturn () => { this.interceptors[key] = <any>null; }\n\t}\n\n\trequest<T>(opts: HttpRequestOptions = {}): PromiseProgress<DecodedResponse<T>> {\n\t\tif(!this.url && !opts.url) throw new Error('URL needs to be set');\n\t\tlet url = (opts.url?.startsWith('http') ? opts.url : (this.url || '') + (opts.url || '')).replace(/([^:]\\/)\\/+/g, '$1');\n\t\tif(opts.fragment) url.includes('#') ? url.replace(/#.*(\\?|\\n)/g, (match, arg1) => `#${opts.fragment}${arg1}`) : url += '#' + opts.fragment;\n\t\tif(opts.query) {\n\t\t\tconst q = Array.isArray(opts.query) ? opts.query :\n\t\t\t\tObject.keys(opts.query).map(k => ({key: k, value: (<any>opts.query)[k]}))\n\t\t\turl += (url.includes('?') ? '&' : '?') + q.map(q => `${q.key}=${q.value}`).join('&');\n\t\t}\n\n\t\t// Prep headers\n\t\tconst headers = <any>clean({\n\t\t\t'Content-Type': !opts.body ? undefined : (opts.body instanceof FormData ? 'multipart/form-data' : 'application/json'),\n\t\t\t...Http.headers,\n\t\t\t...this.headers,\n\t\t\t...opts.headers\n\t\t});\n\n\t\tif(typeof opts.body == 'object' && opts.body != null && headers['Content-Type'] == 'application/json')\n\t\t\topts.body = JSON.stringify(opts.body);\n\n\t\t// Send request\n\t\treturn new PromiseProgress((res, rej, prog) => {\n\t\t\tfetch(url, {\n\t\t\t\theaders,\n\t\t\t\tmethod: opts.method || (opts.body ? 'POST' : 'GET'),\n\t\t\t\tbody: opts.body\n\t\t\t}).then(async (resp: any) => {\n\t\t\t\tfor(let fn of [...Object.values(Http.interceptors), ...Object.values(this.interceptors)]) {\n\t\t\t\t\tawait new Promise<void>(res => fn(resp, () => res()));\n\t\t\t\t}\n\n\t\t\t\tconst contentLength = resp.headers.get('Content-Length');\n\t\t\t\tconst total = contentLength ? parseInt(contentLength, 10) : 0;\n\t\t\t\tlet loaded = 0;\n\n\t\t\t\tconst reader = resp.body?.getReader();\n\t\t\t\tconst stream = new ReadableStream({\n\t\t\t\t\tstart(controller) {\n\t\t\t\t\t\tfunction push() {\n\t\t\t\t\t\t\treader?.read().then((event: any) => {\n\t\t\t\t\t\t\t\tif(event.done) return controller.close();\n\t\t\t\t\t\t\t\tloaded += event.value.byteLength;\n\t\t\t\t\t\t\t\tprog(loaded / total);\n\t\t\t\t\t\t\t\tcontroller.enqueue(event.value);\n\t\t\t\t\t\t\t\tpush();\n\t\t\t\t\t\t\t}).catch((error: any) => controller.error(error));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpush();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tconst data = new Response(stream);\n\t\t\t\tresp.blob = data.blob;\n\t\t\t\tresp.formData = data.formData;\n\t\t\t\tresp.json = data.json;\n\t\t\t\tresp.text = data.text;\n\n\t\t\t\tif(opts.decode !== false) {\n\t\t\t\t\tconst content = resp.headers.get('Content-Type')?.toLowerCase();\n\t\t\t\t\tif(content?.includes('application')) resp.data = <T>await data.blob();\n\t\t\t\t\telse if(content?.includes('form')) resp.data = <T>await data.formData();\n\t\t\t\t\telse if(content?.includes('json')) resp.data = <T>await data.json();\n\t\t\t\t\telse if(content?.includes('text')) resp.data = <T>await data.text();\n\t\t\t\t}\n\n\t\t\t\tif(resp.ok) res(resp);\n\t\t\t\telse rej(resp);\n\t\t\t})\n\t\t});\n\t}\n}\n","import {TypedEmitter, TypedEvents} from './emitter';\r\n\r\nexport const CliEffects = {\r\n\tCLEAR: \"\\x1b[0m\",\r\n\tBRIGHT: \"\\x1b[1m\",\r\n\tDIM: \"\\x1b[2m\",\r\n\tUNDERSCORE: \"\\x1b[4m\",\r\n\tBLINK: \"\\x1b[5m\",\r\n\tREVERSE: \"\\x1b[7m\",\r\n\tHIDDEN: \"\\x1b[8m\",\r\n}\r\n\r\nexport const CliForeground = {\r\n\tBLACK: '\\x1b[30m',\r\n\tRED: '\\x1b[31m',\r\n\tGREEN: '\\x1b[32m',\r\n\tYELLOW: '\\x1b[33m',\r\n\tBLUE: '\\x1b[34m',\r\n\tMAGENTA: '\\x1b[35m',\r\n\tCYAN: '\\x1b[36m',\r\n\tLIGHT_GREY: '\\x1b[37m',\r\n\tGREY: '\\x1b[90m',\r\n\tLIGHT_RED: '\\x1b[91m',\r\n\tLIGHT_GREEN: '\\x1b[92m',\r\n\tLIGHT_YELLOW: '\\x1b[93m',\r\n\tLIGHT_BLUE: '\\x1b[94m',\r\n\tLIGHT_MAGENTA: '\\x1b[95m',\r\n\tLIGHT_CYAN: '\\x1b[96m',\r\n\tWHITE: '\\x1b[97m',\r\n}\r\n\r\nexport const CliBackground = {\r\n\tBLACK: \"\\x1b[40m\",\r\n\tRED: \"\\x1b[41m\",\r\n\tGREEN: \"\\x1b[42m\",\r\n\tYELLOW: \"\\x1b[43m\",\r\n\tBLUE: \"\\x1b[44m\",\r\n\tMAGENTA: \"\\x1b[45m\",\r\n\tCYAN: \"\\x1b[46m\",\r\n\tWHITE: \"\\x1b[47m\",\r\n\tGREY: \"\\x1b[100m\",\r\n}\r\n\r\nexport enum LOG_LEVEL {\r\n\tERROR = 0,\r\n\tWARN = 1,\r\n\tINFO = 2,\r\n\tLOG = 3,\r\n\tDEBUG = 4,\r\n}\r\n\r\nexport type LoggerEvents = TypedEvents & {\r\n\t'ERROR': (...args: any[]) => any;\r\n\t'WARN': (...args: any[]) => any;\r\n\t'INFO': (...args: any[]) => any;\r\n\t'LOG': (...args: any[]) => any;\r\n\t'DEBUG': (...args: any[]) => any;\r\n};\r\n\r\nexport class Logger extends TypedEmitter<LoggerEvents> {\r\n\tstatic LOG_LEVEL: LOG_LEVEL = LOG_LEVEL.DEBUG;\r\n\r\n\tconstructor(public readonly namespace?: string) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tprivate pad(text: any, length: number, char: string, end = false) {\r\n\t\tconst t = text.toString();\r\n\t\tconst l = length - t.length;\r\n\t\tif(l <= 0) return t;\r\n\t\tconst padding = Array(~~(l / char.length)).fill(char).join('');\r\n\t\treturn !end ? padding + t : t + padding;\r\n\t}\r\n\r\n\tprivate format(...text: string[]): string {\r\n\t\tconst now = new Date();\r\n\t\tconst timestamp = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()} ${this.pad(now.getHours().toString(), 2, '0')}:${this.pad(now.getMinutes().toString(), 2, '0')}:${this.pad(now.getSeconds().toString(), 2, '0')}.${this.pad(now.getMilliseconds().toString(), 3, '0', true)}`;\r\n\t\treturn `${timestamp}${this.namespace ? ` [${this.namespace}]` : ''} ${text.join(' ')}`;\r\n\t}\r\n\r\n\tdebug(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.DEBUG) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.DEBUG, str);\r\n\t\tconsole.debug(CliForeground.LIGHT_GREY + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\tlog(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.LOG) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.LOG, str);\r\n\t\tconsole.log(CliEffects.CLEAR + str);\r\n\t}\r\n\r\n\tinfo(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.INFO) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.INFO, str);\r\n\t\tconsole.info(CliForeground.BLUE + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\twarn(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.WARN) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.WARN, str);\r\n\t\tconsole.warn(CliForeground.YELLOW + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\terror(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.ERROR) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.ERROR, str);\r\n\t\tconsole.error(CliForeground.RED + str + CliEffects.CLEAR);\r\n\t}\r\n}\r\n","/**\n * Convert decimal number to fraction\n *\n * @example\n * ```js\n * dec2Frac(1.25) // Outputs: \"1 1/4\"\n * ```\n *\n * @param {number} num Number to convert\n * @return {string} Fraction with remainder\n */\nexport function dec2Frac(num: number) {\n\tconst gcd = (a: number, b: number): number => {\n\t\tif (b < 0.0000001) return a;\n\t\treturn gcd(b, ~~(a % b));\n\t};\n\n\tconst len = num.toString().length - 2;\n\tlet denominator = Math.pow(10, len);\n\tlet numerator = num * denominator;\n\tconst divisor = gcd(numerator, denominator);\n\tnumerator = ~~(numerator / divisor);\n\tdenominator = ~~(denominator / divisor)\n\tconst remainder = ~~(numerator / denominator);\n\tnumerator -= remainder * denominator;\n\treturn `${remainder ? remainder + ' ' : ''}${~~(numerator)}/${~~(denominator)}`;\n}\n\n/**\n * Convert fraction to decimal number\n *\n * @example\n * ```js\n * fracToDec('1 1/4') // Outputs: 1.25\n * ```\n *\n * @param {string} frac Fraction to convert\n * @return {number} Faction as a decimal\n */\nexport function fracToDec(frac: string) {\n\tlet split = frac.split(' ');\n\tconst whole = split.length == 2 ? Number(split[0]) : 0;\n\tsplit = (<string>split.pop()).split('/');\n\treturn whole + (Number(split[0]) / Number(split[1]));\n}\n","export function countChars(text: string, pattern: RegExp) {\r\n\treturn text.length - text.replaceAll(pattern, '').length;\r\n}\r\n\r\nexport function createHex(length: number) {\r\n\treturn Array(length).fill(null).map(() => Math.round(Math.random() * 0xF).toString(16)).join('');\r\n}\r\n\r\n/**\r\n * String of all letters\r\n *\r\n */\r\nconst LETTER_LIST = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\r\n\r\n/**\r\n * String of all numbers\r\n *\r\n */\r\nconst NUMBER_LIST = '0123456789';\r\n\r\n/**\r\n * String of all symbols\r\n */\r\nconst SYMBOL_LIST = '~`!@#$%^&*()_-+={[}]|\\\\:;\"\\'<,>.?/';\r\n\r\n/**\r\n * String of all letters, numbers & symbols\r\n */\r\nconst CHAR_LIST = LETTER_LIST + NUMBER_LIST + SYMBOL_LIST;\r\n\r\nexport function formatPhoneNumber(number: string) {\r\n\tconst parts = /(\\+?1)?.*?(\\d{3}).*?(\\d{3}).*?(\\d{4})/g.exec(number);\r\n\tif(!parts) throw new Error(`Number cannot be parsed: ${number}`);\r\n\treturn `${parts[1] ?? ''} (${parts[2]}) ${parts[3]}-${parts[4]}`.trim();\r\n}\r\n\r\n/**\r\n * Insert a string into another string at a given position\r\n *\r\n * @example\r\n * ```\r\n * console.log(insertAt('Hello world!', ' glorious', 5);\r\n * // Output: Hello glorious world!\r\n * ```\r\n *\r\n * @param {string} target - Parent string you want to modify\r\n * @param {string} str - Value that will be injected to parent\r\n * @param {number} index - Position to inject string at\r\n * @returns {string} - New string\r\n */\r\nexport function insertAt(target: string, str: string, index: number): String {\r\n\treturn `${target.slice(0, index)}${str}${target.slice(index + 1)}`;\r\n}\r\n\r\nexport function pad(text: any, length: number, char: string, start = true) {\r\n\tconst t = text.toString();\r\n\tconst l = length - t.length;\r\n\tif(l <= 0) return t;\r\n\tconst padding = Array(~~(l / char.length)).fill(char).join('');\r\n\treturn start ? padding + t : t + padding;\r\n}\r\n\r\n/**\r\n * Generate a string of random characters.\r\n *\r\n * @example\r\n * ```ts\r\n * const random = randomString();\r\n * const randomByte = randomString(8, \"01\")\r\n * ```\r\n *\r\n * @param {number} length - length of generated string\r\n * @param {string} pool - character pool to generate string from\r\n * @return {string} generated string\r\n */\r\nexport function randomString(length: number, pool: string = CHAR_LIST): string {\r\n\treturn Array(length).fill(null).map(() => {\r\n\t\tconst n = ~~(Math.random() * pool.length);\r\n\t\treturn pool[n];\r\n\t}).join('');\r\n}\r\n\r\n/**\r\n * Generate a random string with fine control over letters, numbers & symbols\r\n *\r\n * @example\r\n * ```ts\r\n * const randomLetter = randomString(1, true);\r\n * const randomChar = randomString(1, true, true, true);\r\n * ```\r\n *\r\n * @param {number} length - length of generated string\r\n * @param {boolean} letters - Add letters to pool\r\n * @param {boolean} numbers - Add numbers to pool\r\n * @param {boolean} symbols - Add symbols to pool\r\n * @return {string} generated string\r\n */\r\nexport function randomStringBuilder(length: number, letters = false, numbers = false, symbols = false): string {\r\n\tif(!letters && !numbers && !symbols) throw new Error('Must enable at least one: letters, numbers, symbols');\r\n\treturn Array(length).fill(null).map(() => {\r\n\t\tlet c;\r\n\t\tdo {\r\n\t\t\tconst type = ~~(Math.random() * 3);\r\n\t\t\tif(letters && type == 0) {\r\n\t\t\t\tc = LETTER_LIST[~~(Math.random() * LETTER_LIST.length)];\r\n\t\t\t} else if(numbers && type == 1) {\r\n\t\t\t\tc = NUMBER_LIST[~~(Math.random() * NUMBER_LIST.length)];\r\n\t\t\t} else if(symbols && type == 2) {\r\n\t\t\t\tc = SYMBOL_LIST[~~(Math.random() * SYMBOL_LIST.length)];\r\n\t\t\t}\r\n\t\t} while(!c);\r\n\t\treturn c;\r\n\t}).join('');\r\n}\r\n\r\n/**\r\n * Find all substrings that match a given pattern.\r\n *\r\n * Roughly based on `String.prototype.matchAll`.\r\n *\r\n * @param {string} value - String to search.\r\n * @param {RegExp | string} regex - Regular expression to match.\r\n * @return {RegExpExecArray[]} Found matches.\r\n */\r\nexport function matchAll(value: string, regex: RegExp | string): RegExpExecArray[] {\r\n\tif(typeof regex === 'string') {\r\n\t\tregex = new RegExp(regex, 'g');\r\n\t}\r\n\r\n\t// https://stackoverflow.com/a/60290199\r\n\tif(!regex.global) {\r\n\t\tthrow new TypeError('Regular expression must be global.');\r\n\t}\r\n\r\n\tlet ret: RegExpExecArray[] = [];\r\n\tlet match: RegExpExecArray | null;\r\n\twhile((match = regex.exec(value)) !== null) {\r\n\t\tret.push(match);\r\n\t}\r\n\r\n\treturn ret;\r\n}\r\n\r\n/**\r\n * Create MD5 hash using native javascript\r\n * @param d String to hash\r\n * @returns {string} Hashed string\r\n */\r\nexport function md5(d: string) {\r\n\tvar r = M(V(Y(X(d),8*d.length)));return r.toLowerCase()};\r\n\tfunction M(d:any){for(var _,m=\"0123456789ABCDEF\",f=\"\",r=0;r<d.length;r++)_=d.charCodeAt(r),f+=m.charAt(_>>>4&15)+m.charAt(15&_);return f}\r\n\tfunction X(d:any){for(var _=Array(d.length>>2),m=0;m<_.length;m++)_[m]=0;for(m=0;m<8*d.length;m+=8)_[m>>5]|=(255&d.charCodeAt(m/8))<<m%32;return _}\r\n\tfunction V(d:any){for(var _=\"\",m=0;m<32*d.length;m+=8)_+=String.fromCharCode(d[m>>5]>>>m%32&255);return _}\r\n\tfunction Y(d:any,_:any){d[_>>5]|=128<<_%32,d[14+(_+64>>>9<<4)]=_;for(var m=1732584193,f=-271733879,r=-1732584194,i=271733878,n=0;n<d.length;n+=16){var h=m,t=f,g=r,e=i;f=md5_ii(f=md5_ii(f=md5_ii(f=md5_ii(f=md5_hh(f=md5_hh(f=md5_hh(f=md5_hh(f=md5_gg(f=md5_gg(f=md5_gg(f=md5_gg(f=md5_ff(f=md5_ff(f=md5_ff(f=md5_ff(f,r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+0],7,-680876936),f,r,d[n+1],12,-389564586),m,f,d[n+2],17,606105819),i,m,d[n+3],22,-1044525330),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+4],7,-176418897),f,r,d[n+5],12,1200080426),m,f,d[n+6],17,-1473231341),i,m,d[n+7],22,-45705983),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+8],7,1770035416),f,r,d[n+9],12,-1958414417),m,f,d[n+10],17,-42063),i,m,d[n+11],22,-1990404162),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+12],7,1804603682),f,r,d[n+13],12,-40341101),m,f,d[n+14],17,-1502002290),i,m,d[n+15],22,1236535329),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+1],5,-165796510),f,r,d[n+6],9,-1069501632),m,f,d[n+11],14,643717713),i,m,d[n+0],20,-373897302),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+5],5,-701558691),f,r,d[n+10],9,38016083),m,f,d[n+15],14,-660478335),i,m,d[n+4],20,-405537848),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+9],5,568446438),f,r,d[n+14],9,-1019803690),m,f,d[n+3],14,-187363961),i,m,d[n+8],20,1163531501),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+13],5,-1444681467),f,r,d[n+2],9,-51403784),m,f,d[n+7],14,1735328473),i,m,d[n+12],20,-1926607734),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+5],4,-378558),f,r,d[n+8],11,-2022574463),m,f,d[n+11],16,1839030562),i,m,d[n+14],23,-35309556),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+1],4,-1530992060),f,r,d[n+4],11,1272893353),m,f,d[n+7],16,-155497632),i,m,d[n+10],23,-1094730640),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+13],4,681279174),f,r,d[n+0],11,-358537222),m,f,d[n+3],16,-722521979),i,m,d[n+6],23,76029189),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+9],4,-640364487),f,r,d[n+12],11,-421815835),m,f,d[n+15],16,530742520),i,m,d[n+2],23,-995338651),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+0],6,-198630844),f,r,d[n+7],10,1126891415),m,f,d[n+14],15,-1416354905),i,m,d[n+5],21,-57434055),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+12],6,1700485571),f,r,d[n+3],10,-1894986606),m,f,d[n+10],15,-1051523),i,m,d[n+1],21,-2054922799),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+8],6,1873313359),f,r,d[n+15],10,-30611744),m,f,d[n+6],15,-1560198380),i,m,d[n+13],21,1309151649),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+4],6,-145523070),f,r,d[n+11],10,-1120210379),m,f,d[n+2],15,718787259),i,m,d[n+9],21,-343485551),m=safe_add(m,h),f=safe_add(f,t),r=safe_add(r,g),i=safe_add(i,e)}return Array(m,f,r,i)}\r\n\tfunction md5_cmn(d:any,_:any,m:any,f:any,r:any,i:any){return safe_add(bit_rol(safe_add(safe_add(_,d),safe_add(f,i)),r),m)}\r\n\tfunction md5_ff(d:any,_:any,m:any,f:any,r:any,i:any,n:any){return md5_cmn(_&m|~_&f,d,_,r,i,n)}\r\n\tfunction md5_gg(d:any,_:any,m:any,f:any,r:any,i:any,n:any){return md5_cmn(_&f|m&~f,d,_,r,i,n)}\r\n\tfunction md5_hh(d:any,_:any,m:any,f:any,r:any,i:any,n:any){return md5_cmn(_^m^f,d,_,r,i,n)}\r\n\tfunction md5_ii(d:any,_:any,m:any,f:any,r:any,i:any,n:any){return md5_cmn(m^(_|~f),d,_,r,i,n)}\r\n\tfunction safe_add(d:any,_:any){var m=(65535&d)+(65535&_);return(d>>16)+(_>>16)+(m>>16)<<16|65535&m}\r\n\tfunction bit_rol(d:any,_:any){return d<<_|d>>>32-_\r\n}\r\n\r\n/**\r\n * Check if email is valid\r\n *\r\n * @param {string} email - Target\r\n * @returns {boolean} - Follows format\r\n */\r\nexport function validateEmail(email: string) {\r\n\treturn /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/.test(email);\r\n}\r\n","import {md5} from './string';\r\n\r\n/**\r\n * Convert data into a form encoded format.\r\n *\r\n * @param {any} data - data to convert\r\n * @returns {string} - Ecodeded form data\r\n */\r\nexport function formEncode(data: any): string {\r\n\treturn Object.entries(data).map(([key, value]) =>\r\n\t\tencodeURIComponent(key) + '=' + encodeURIComponent(<any>value)\r\n\t).join('&');\r\n}\r\n\r\n/**\r\n * Get profile image from Gravatar\r\n *\r\n * @param {string} email Account email address\r\n * @param {string} def Default image, can be a link or '404', see: https://docs.gravatar.com/general/images/\r\n * @returns {string} Gravatar URL\r\n */\r\nexport function gravatar(email: string, def='mp') {\r\n\tif(!email) return '';\r\n\treturn `https://www.gravatar.com/avatar/${md5(email)}?d=${def}`;\r\n}\r\n\r\n/** Parts of a URL */\r\nexport type ParsedUrl = {\r\n\tprotocol?: string,\r\n\tsubdomain?: string,\r\n\tdomain: string,\r\n\thost: string,\r\n\tport?: number,\r\n\tpath?: string,\r\n\tquery?: {[name: string]: string}\r\n\tfragment?: string\r\n}\r\n\r\n/**\r\n *\r\n * @param {string} url\r\n * @returns {RegExpExecArray}\r\n */\r\nexport function urlParser(url: string): ParsedUrl {\r\n\tconst processed = new RegExp(\r\n\t\t'(?:(?<protocol>[\\\\w\\\\d]+)\\\\:\\\\/\\\\/)?(?:(?<user>.+)\\\\@)?(?<host>(?<domain>[^:\\\\/\\\\?#@\\\\n]+)(?:\\\\:(?<port>\\\\d*))?)(?<path>\\\\/.*?)?(?:\\\\?(?<query>.*?))?(?:#(?<fragment>.*?))?$',\r\n\t\t'gm').exec(url);\r\n\tconst groups: ParsedUrl = <any>processed?.groups ?? {};\r\n\tconst domains = groups.domain.split('.');\r\n\tif(groups['port'] != null) groups.port = Number(groups.port);\r\n\tif(domains.length > 2) {\r\n\t\tgroups.domain = domains.splice(-2, 2).join('.');\r\n\t\tgroups.subdomain = domains.join('.');\r\n\t}\r\n\tif(groups.query) {\r\n\t\tconst split = (<any>groups.query).split('&'), query: any = {};\r\n\t\tsplit.forEach((q: any) => {\r\n\t\t\tconst [key, val] = q.split('=');\r\n\t\t\tquery[key] = val;\r\n\t\t});\r\n\t\tgroups.query = query;\r\n\t}\r\n\treturn groups;\r\n}\r\n","/**\r\n * Calculate the number of milliseconds until date/time\r\n *\r\n * @param {Date | number} date - Target\r\n * @returns {number} - Number of milliseconds until target\r\n */\r\nexport function timeUntil(date: Date | number): number {\r\n\treturn (date instanceof Date ? date.getTime() : date) - (new Date()).getTime();\r\n}\r\n\r\n/**\r\n * Use in conjunction with `await` to pause an async script\r\n *\r\n * @example\r\n * ```ts\r\n * async () => {\r\n * ...\r\n * await sleep(1000) // Pause for 1 second\r\n *\t ...\r\n * }\r\n * ```\r\n *\r\n * @param {number} ms - Time to pause for in milliseconds\r\n * @returns {Promise<unknown>} - Resolves promise when it's time to resume\r\n */\r\nexport function sleep(ms: number) {\r\n\treturn new Promise(res => setTimeout(res, ms));\r\n}\r\n\r\nexport function formatDate(date: Date | number | string) {\r\n\tconst d = date instanceof Date ? date : new Date(date);\r\n\treturn new Intl.DateTimeFormat(\"en-us\", {\r\n\t\tweekday: \"long\",\r\n\t\tmonth: \"short\",\r\n\t\tday: \"numeric\",\r\n\t\thour: \"numeric\",\r\n\t\tminute: \"numeric\",\r\n\t\thour12: true\r\n\t}).format(d);\r\n}\r\n"],"names":["clean","obj","undefinedOnly","o","key","value","deepCopy","deepMerge","target","sources","s","dotNotation","prop","set","arr","flattenObj","parent","result","propName","includes","values","allowMissing","e","type","isEqual","a","b","ta","tb","mixin","constructors","c","name","sanitizedJSON","space","cache","addUnique","array","el","arrayDiff","makeUnique","v1","v2","caseInsensitiveSort","aVal","bVal","flattenArr","sortByProp","reverse","findByProp","v","i","n","makeArray","ASet","elements","index","acc","PromiseProgress","executor","resolve","reject","reason","progress","__publicField","p","l","promise","res","rej","args","newPromise","callback","resp","download","href","downloadBlob","blob","url","fileBrowser","options","input","uploadWithProgress","prog","xhr","formData","f","event","err","TypedEmitter","listener","_a","unsubscribe","CustomError","message","code","newErr","BadRequestError","UnauthorizedError","ForbiddenError","NotFoundError","InternalServerError","_Http","defaults","fn","opts","match","arg1","q","k","headers","contentLength","total","loaded","reader","stream","controller","push","error","data","content","_b","Http","CliEffects","CliForeground","CliBackground","LOG_LEVEL","_Logger","namespace","text","length","char","end","t","padding","now","str","Logger","dec2Frac","num","gcd","len","denominator","numerator","divisor","remainder","fracToDec","frac","split","whole","countChars","pattern","createHex","LETTER_LIST","NUMBER_LIST","SYMBOL_LIST","CHAR_LIST","formatPhoneNumber","number","parts","insertAt","pad","start","randomString","pool","randomStringBuilder","letters","numbers","symbols","matchAll","regex","ret","md5","d","r","M","V","Y","X","_","m","h","g","md5_ii","md5_hh","md5_gg","md5_ff","safe_add","md5_cmn","bit_rol","validateEmail","email","formEncode","gravatar","def","urlParser","processed","groups","domains","query","val","timeUntil","date","sleep","ms","formatDate"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/objects.ts","../src/array.ts","../src/aset.ts","../src/promise-progress.ts","../src/files.ts","../src/emitter.ts","../src/errors.ts","../src/http.ts","../src/logger.ts","../src/math.ts","../src/string.ts","../src/misc.ts","../src/time.ts"],"sourcesContent":["/**\r\n * Removes any null values from an object in-place\r\n *\r\n * @example\r\n * ```ts\r\n * let test = {a: 0, b: false, c: null, d: 'abc'}\r\n * console.log(clean(test)); // Output: {a: 0, b: false, d: 'abc'}\r\n * ```\r\n *\r\n * @param {T} obj Object reference that will be cleaned\r\n * @param undefinedOnly Ignore null values\r\n * @returns {Partial<T>} Cleaned object\r\n */\r\nexport function clean<T>(obj: T, undefinedOnly = false): Partial<T> {\r\n\tif(obj == null) throw new Error(\"Cannot clean a NULL value\");\r\n\tif(Array.isArray(obj)) {\r\n\t\tobj = <any>obj.filter(o => o != null);\r\n\t} else {\r\n\t\tObject.entries(obj).forEach(([key, value]) => {\r\n\t\t\tif((undefinedOnly && value === undefined) || (!undefinedOnly && value == null)) delete (<any>obj)[key];\r\n\t\t});\r\n\t}\r\n\treturn <any>obj;\r\n}\r\n\r\n/**\r\n * Create a deep copy of an object (vs. a shallow copy of references)\r\n *\r\n * Should be replaced by `structuredClone` once released.\r\n *\r\n * @param {T} value Object to copy\r\n * @returns {T} Type\r\n */\r\nexport function deepCopy<T>(value: T): T {\r\n\treturn JSON.parse(JSON.stringify(value));\r\n}\r\n\r\n/**\r\n * Merge any number of objects into the target\r\n *\r\n * @param target Destination of all properties\r\n * @param sources Objects that will copied into target\r\n * @return {any} The des\r\n */\r\nexport function deepMerge<T>(target: any, ...sources: any[]): T {\r\n\tsources.forEach(s => {\r\n\t\tfor(const key in s) {\r\n\t\t\tif(s[key] && typeof s[key] == 'object' && !Array.isArray(s[key])) {\r\n\t\t\t\tif(!target[key]) target[key] = {};\r\n\t\t\t\tdeepMerge(target[key], s[key]);\r\n\t\t\t} else {\r\n\t\t\t\ttarget[key] = s[key];\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\treturn target;\r\n}\r\n\r\n/**\r\n * Get/set a property of an object using dot notation\r\n *\r\n * @example\r\n * ```ts\r\n * // Get a value\r\n * const name = dotNotation<string>(person, 'firstName');\r\n * const familyCarMake = dotNotation(family, 'cars[0].make');\r\n * // Set a value\r\n * dotNotation(family, 'cars[0].make', 'toyota');\r\n * ```\r\n *\r\n * @type T Return type\r\n * @param {Object} obj source object to search\r\n * @param {string} prop property name (Dot notation & indexing allowed)\r\n * @param {any} set Set object property to value, omit to fetch value instead\r\n * @return {T} property value\r\n */\r\nexport function dotNotation<T>(obj: any, prop: string, set: T): T;\r\nexport function dotNotation<T>(obj: any, prop: string): T | undefined;\r\nexport function dotNotation<T>(obj: any, prop: string, set?: T): T | undefined {\r\n\tif(obj == null || !prop) return undefined;\r\n\t// Split property string by '.' or [index]\r\n\treturn <T>prop.split(/[.[\\]]/g).filter(prop => prop.length).reduce((obj, prop, i, arr) => {\r\n\t\tif(prop[0] == '\"' || prop[0] == \"'\") prop = prop.slice(1, -1); // Take quotes out\r\n\t\tif(!obj?.hasOwnProperty(prop)) {\r\n\t\t\tif(set == undefined) return undefined;\r\n\t\t\tobj[prop] = {};\r\n\t\t}\r\n\t\tif(set !== undefined && i == arr.length - 1)\r\n\t\t\treturn obj[prop] = set;\r\n\t\treturn obj[prop];\r\n\t}, obj);\r\n}\r\n\r\n/**\r\n * Recursively flatten a nested object, while maintaining key structure.\r\n *\r\n * @example\r\n * ```ts\r\n * const car = {honda: {model: \"Civic\"}};\r\n * console.log(flattenObj(car)); //Output {honda.model: \"Civic\"}\r\n * ```\r\n *\r\n * @param obj - Object to flatten\r\n * @param parent - Recursively check if key is a parent key or not\r\n * @param result - Result\r\n * @returns {object} - Flattened object\r\n */\r\nexport function flattenObj(obj: any, parent?: any, result: any = {}) {\r\n\tif(typeof obj === \"object\" && !Array.isArray(obj)) {\r\n\t\tfor(const key of Object.keys(obj)) {\r\n\t\t\tconst propName = parent ? parent + '.' + key : key;\r\n\t\t\tif(typeof obj[key] === 'object') {\r\n\t\t\t\tflattenObj(obj[key], propName, result);\r\n\t\t\t} else {\r\n\t\t\t\tresult[propName] = obj[key];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n}\r\n\r\n/**\r\n * Check that an object has the following values\r\n *\r\n * @example\r\n * ```ts\r\n * const test = {a: 2, b: 2};\r\n * includes(test, {a: 1}); // true\r\n * includes(test, {b: 1, c: 3}); // false\r\n * ```\r\n *\r\n * @param target Object to search\r\n * @param values Criteria to check against\r\n * @param allowMissing Only check the keys that are available on the target\r\n * @returns {boolean} Does target include all the values\r\n */\r\nexport function includes(target: any, values: any, allowMissing = false): boolean {\r\n\tif(target == undefined) return allowMissing;\r\n\tif(Array.isArray(values)) return values.findIndex((e: any, i: number) => !includes(target[i], values[i], allowMissing)) == -1;\r\n\tconst type = typeof values;\r\n\tif(type != typeof target) return false;\r\n\tif(type == 'object') {\r\n\t\treturn Object.keys(values).find(key => !includes(target[key], values[key], allowMissing)) == null;\r\n\t}\r\n\tif(type == 'function') return target.toString() == values.toString();\r\n\treturn target == values;\r\n}\r\n\r\n/**\r\n * Deep check if two objects are equal\r\n *\r\n * @param {any} a - first item to compare\r\n * @param {any} b - second item to compare\r\n * @returns {boolean} True if they match\r\n */\r\nexport function isEqual(a: any, b: any): boolean {\r\n\tconst ta = typeof a, tb = typeof b;\r\n\tif((ta != 'object' || a == null) || (tb != 'object' || b == null))\r\n\t\treturn ta == 'function' && tb == 'function' ? a.toString() == b.toString() : a === b;\r\n\tconst keys = Object.keys(a);\r\n\tif(keys.length != Object.keys(b).length) return false;\r\n\treturn Object.keys(a).every(key => isEqual(a[key], b[key]));\r\n}\r\n\r\nexport function mixin(target: any, constructors: any[]) {\r\n\tconstructors.forEach(c => {\r\n\t\tObject.getOwnPropertyNames(c.prototype).forEach((name) => {\r\n\t\t\tObject.defineProperty(\r\n\t\t\t\ttarget.prototype,\r\n\t\t\t\tname,\r\n\t\t\t\tObject.getOwnPropertyDescriptor(c.prototype, name) ||\r\n\t\t\t\tObject.create(null)\r\n\t\t\t);\r\n\t\t});\r\n\t});\r\n}\r\n\r\nexport function sanitizedJSON(obj: any, space?: number) {\r\n\tlet cache: any[] = [];\r\n\treturn JSON.parse(JSON.stringify(obj, (key, value) => {\r\n\t\tif (typeof value === 'object' && value !== null) {\r\n\t\t\tif (cache.includes(value)) return;\r\n\t\t\tcache.push(value);\r\n\t\t}\r\n\t\treturn value;\r\n\t}, space));\r\n}\r\n","import {dotNotation, isEqual} from './objects';\n\nexport function addUnique<T>(array: T[], el: T): T[] {\n\tif(array.indexOf(el) === -1) array.push(el);\n\treturn array;\n}\n\nexport function arrayDiff(a: any[], b: any[]): any[] {\n\treturn makeUnique([\n\t\t...a.filter(v1 => !b.includes((v2: any) => isEqual(v1, v2))),\n\t\t...b.filter(v1 => !a.includes((v2: any) => isEqual(v1, v2))),\n\t]);\n}\n\n/**\n * Provides a shorthand for sorting arrays of complex objects by a string property\n *\n * @example\n * ```ts\n * let arr = [{a: 'Apple', b: 123}, {a: 'Carrot', b: 789}, {a: 'banana', b: 456}];\n * arr.sort(caseInsensitiveSort('a'));\n * ```\n *\n * @param {string} prop - Name of property to use, supports dot notation\n * @returns {(a, b) => (number)} - Function to handle sort (Meant to be passed to Array.prototype.sort or used in sortFn)\n */\nexport function caseInsensitiveSort(prop: string) {\n\treturn function (a: any, b: any) {\n\t\tconst aVal = dotNotation<string>(a, prop);\n\t\tconst bVal = dotNotation<string>(b, prop);\n\t\tif(typeof aVal !== 'string' || typeof bVal !== 'string') return 1;\n\t\treturn aVal.toLowerCase().localeCompare(bVal.toLowerCase());\n\t};\n}\n\n/**\n * Recursively flatten nested arrays\n *\n * @example\n * ```ts\n * const arr = [\n * {label: null, url: '/'},\n * {label: 'Model Admin', url: '/model-admin'},\n * [\n * {label: 'Elements', url: '/model-admin/elements'},\n * {label: 'Example', url: null}\n * ]\n * ];\n *\n * console.log(flattenArr(arr));\n * // Output:\n * [\n * {label: null, url: '/'},\n * {label: 'Model Admin', url: '/model-admin'},\n * {label: 'Elements', url: '/model-admin/elements'},\n * {label: 'Example', url: null}\n * ]\n * ```\n *\n * @param {any[]} arr - n-dimensional array\n * @param {any[]} result - Internal use only -- Keeps track of recursion\n * @returns {any[]} - Flattened array\n */\nexport function flattenArr(arr: any[], result: any[] = []): any[] {\n\tarr.forEach(el => Array.isArray(el) ? flattenArr(el, result) : result.push(el));\n\treturn result;\n}\n\n/**\n * Provides a shorthand for sorting arrays of complex objects\n *\n * @example\n * ```ts\n * let arr = [{a: {b: 2}}, {a: {b: 3}}, {a: {b: 1}}];\n * arr.sort(sortByProp('a.b'));\n * ```\n *\n * @param {string} prop - Name of property to use, supports dot notation\n * @param {boolean} reverse - Reverse the order of the sort\n * @returns {(a, b) => (number)} - Function to handle sort (Meant to be passed to Array.prototype.sort)\n */\nexport function sortByProp(prop: string, reverse = false) {\n\treturn function (a: any, b: any) {\n\t\tconst aVal = dotNotation<any>(a, prop);\n\t\tconst bVal = dotNotation<any>(b, prop);\n\t\tif(typeof aVal == 'number' && typeof bVal == 'number')\n\t\t\treturn (reverse ? -1 : 1) * (aVal - bVal);\n\t\tif(aVal > bVal) return reverse ? -1 : 1;\n\t\tif(aVal < bVal) return reverse ? 1 : -1;\n\t\treturn 0;\n\t};\n}\n\nexport function findByProp(prop: string, value: any) {\n\treturn (v: any) => isEqual(v[prop], value);\n}\n\nexport function makeUnique(arr: any[]) {\n\tfor(let i = arr.length - 1; i >= 0; i--) {\n\t\tif(arr.slice(0, i).find(n => isEqual(n, arr[i]))) arr.splice(i, 1);\n\t}\n\treturn arr;\n}\n\n/**\n * Make sure value is an array, if it isn't wrap it in one.\n * @param {T[] | T} value Value that should be an array\n * @returns {T[]} Value in an array\n */\nexport function makeArray<T>(value: T | T[]): T[] {\n\treturn Array.isArray(value) ? value : [value];\n}\n","export class ASet<T> extends Array {\n\tget size() {\n\t\treturn this.length;\n\t}\n\n\tconstructor(elements: T[] = []) {\n\t\tsuper();\n\t\tif(!!elements?.['forEach'])\n\t\t\telements.forEach(el => this.add(el));\n\t}\n\n\tadd(el: T) {\n\t\tif(!this.has(el)) this.push(el);\n\t}\n\n\tdelete(el: T) {\n\t\tconst index = this.indexOf(el);\n\t\tif(index != -1) this.slice(index, 1);\n\t}\n\n\tdifference(set: ASet<T>) {\n\t\treturn new ASet<T>(this.reduce((acc, el) => {\n\t\t\tif(!set.has(el)) acc.push(el);\n\t\t\treturn acc;\n\t\t}, []));\n\t}\n\n\thas(el: T) {\n\t\treturn this.indexOf(el) != -1;\n\t}\n\n\tintersection(set: ASet<T>) {\n\t\treturn new ASet<T>(this.reduce((acc, el) => {\n\t\t\tif(set.has(el)) acc.push(el);\n\t\t\treturn acc;\n\t\t}, []));\n\t}\n\n\tisDisjointFrom(set: ASet<T>) {\n\t\treturn this.intersection(set).size == 0;\n\t}\n\n\tisSubsetOf(set: ASet<T>) {\n\t\treturn this.findIndex(el => !set.has(el)) == -1;\n\t}\n\n\tisSuperset(set: ASet<T>) {\n\t\treturn set.findIndex(el => !this.has(el)) == -1;\n\t}\n\n\tsymmetricDifference(set: ASet<T>) {\n\t\treturn new ASet([...this.difference(set), ...set.difference(this)]);\n\t}\n\n\tunion(set: ASet<T> | Array<T>) {\n\t\treturn new ASet([...this, ...set]);\n\t}\n}\n","export type ProgressCallback = (progress: number) => any;\n\nexport class PromiseProgress<T> extends Promise<T> {\n\tprivate listeners: ProgressCallback[] = [];\n\n\tprivate _progress = 0;\n\tget progress() { return this._progress; }\n\tset progress(p: number) {\n\t\tif(p == this._progress) return;\n\t\tthis._progress = p;\n\t\tthis.listeners.forEach(l => l(p));\n\t}\n\n\tconstructor(executor: (resolve: (value: T) => any, reject: (reason: any) => void, progress: (progress: number) => any) => void) {\n\t\tsuper((resolve, reject) => executor(\n\t\t\t(value: T) => resolve(value),\n\t\t\t(reason: any) => reject(reason),\n\t\t\t(progress: number) => this.progress = progress,\n\t\t));\n\t}\n\n\tstatic from<T>(promise: Promise<T>): PromiseProgress<T> {\n\t\tif(promise instanceof PromiseProgress) return promise;\n\t\treturn new PromiseProgress<T>((res, rej) => promise\n\t\t\t.then((...args) => res(...args))\n\t\t\t.catch((...args) => rej(...args)));\n\t}\n\n\tprivate from(promise: Promise<T>): PromiseProgress<T> {\n\t\tconst newPromise = PromiseProgress.from(promise);\n\t\tthis.onProgress(p => newPromise.progress = p);\n\t\treturn newPromise;\n\t}\n\n\tonProgress(callback: ProgressCallback) {\n\t\tthis.listeners.push(callback);\n\t\treturn this;\n\t}\n\n\tthen(res?: (v: T) => any, rej?: (err: any) => any): PromiseProgress<any> {\n\t\tconst resp = super.then(res, rej);\n\t\treturn this.from(resp);\n\t}\n\n\tcatch(rej?: (err: any) => any): PromiseProgress<any> {\n\t\treturn this.from(super.catch(rej));\n\t}\n\n\tfinally(res?: () => any): PromiseProgress<any> {\n\t\treturn this.from(super.finally(res));\n\t}\n}\n","import {PromiseProgress} from './promise-progress';\n\nexport function download(href: any, name: string) {\n\tconst a = document.createElement('a');\n\ta.href = href;\n\ta.download = name;\n\tdocument.body.appendChild(a);\n\ta.click();\n\tdocument.body.removeChild(a);\n}\n\nexport function downloadBlob(blob: Blob, name: string) {\n\tconst url = URL.createObjectURL(blob);\n\tdownload(url, name);\n\tURL.revokeObjectURL(url);\n}\n\nexport function fileBrowser(options: {accept?: string, multiple?: boolean} = {}): Promise<File[]> {\n\treturn new Promise(res => {\n\t\tconst input = document.createElement('input');\n\t\tinput.type = 'file';\n\t\tinput.accept = options.accept || '*';\n\t\tinput.style.display='none';\n\t\tinput.multiple = !!options.multiple;\n\t\tinput.onblur = input.onchange = async () => {\n\t\t\tres(Array.from(<any>input.files));\n\t\t\tinput.remove();\n\t\t}\n\t\tdocument.body.appendChild(input);\n\t\tinput.click();\n\t});\n}\n\nexport function uploadWithProgress<T>(options: {\n\turl: string;\n\tfiles: File[];\n\theaders?: {[key: string]: string};\n\twithCredentials?: boolean;\n}): PromiseProgress<T> {\n\treturn new PromiseProgress<T>((res, rej, prog) => {\n\t\tconst xhr = new XMLHttpRequest();\n\t\tconst formData = new FormData();\n\t\toptions.files.forEach(f => formData.append('file', f));\n\n\t\txhr.withCredentials = !!options.withCredentials\n\t\txhr.upload.addEventListener('progress', (event) => event.lengthComputable ? prog(event.loaded / event.total) : null);\n\t\txhr.upload.addEventListener('load', (resp) => res(<any>resp));\n\t\txhr.upload.addEventListener('error', (err) => rej(err));\n\n\t\txhr.open('POST', options.url);\n\t\tObject.entries(options.headers || {}).forEach(([key, value]) => xhr.setRequestHeader(key, value));\n\t\txhr.send(formData);\n\t});\n}\n","export type Listener = (...args: any[]) => any;\r\nexport type TypedEvents = {[k in string | symbol]: Listener} & {'*': (event: string, ...args: any[]) => any};\r\n\r\nexport class TypedEmitter<T extends TypedEvents = TypedEvents> {\r\n\tprivate static listeners: {[key: string]: Listener[]} = {};\r\n\r\n\tprivate listeners: { [key in keyof T]?: Listener[] } = {};\r\n\r\n\tstatic emit(event: any, ...args: any[]) {\r\n\t\t(this.listeners['*'] || []).forEach(l => l(event, ...args));\r\n\t\t(this.listeners[event.toString()] || []).forEach(l => l(...args));\r\n\t};\r\n\r\n\tstatic off(event: any, listener: Listener) {\r\n\t\tconst e = event.toString();\r\n\t\tthis.listeners[e] = (this.listeners[e] || []).filter(l => l === listener);\r\n\t}\r\n\r\n\tstatic on(event: any, listener: Listener) {\r\n\t\tconst e = event.toString();\r\n\t\tif(!this.listeners[e]) this.listeners[e] = [];\r\n\t\tthis.listeners[e]?.push(listener);\r\n\t\treturn () => this.off(event, listener);\r\n\t}\r\n\r\n\tstatic once(event: any, listener?: Listener): Promise<any> {\r\n\t\treturn new Promise(res => {\r\n\t\t\tconst unsubscribe = this.on(event, <any>((...args: any) => {\r\n\t\t\t\tres(args.length == 1 ? args[0] : args);\r\n\t\t\t\tif(listener) listener(...args);\r\n\t\t\t\tunsubscribe();\r\n\t\t\t}));\r\n\t\t});\r\n\t}\r\n\r\n\temit<K extends keyof T>(event: K, ...args: Parameters<T[K]>) {\r\n\t\t(this.listeners['*'] || []).forEach(l => l(event, ...args));\r\n\t\t(this.listeners[event] || []).forEach(l => l(...args));\r\n\t};\r\n\r\n\toff<K extends keyof T = string>(event: K, listener: T[K]) {\r\n\t\tthis.listeners[event] = (this.listeners[event] || []).filter(l => l === listener);\r\n\t}\r\n\r\n\ton<K extends keyof T = string>(event: K, listener: T[K]) {\r\n\t\tif(!this.listeners[event]) this.listeners[event] = [];\r\n\t\tthis.listeners[event]?.push(listener);\r\n\t\treturn () => this.off(event, listener);\r\n\t}\r\n\r\n\tonce<K extends keyof T = string>(event: K, listener?: T[K]): Promise<any> {\r\n\t\treturn new Promise(res => {\r\n\t\t\tconst unsubscribe = this.on(event, <any>((...args: any) => {\r\n\t\t\t\tres(args.length == 1 ? args[0] : args);\r\n\t\t\t\tif(listener) listener(...args);\r\n\t\t\t\tunsubscribe();\r\n\t\t\t}));\r\n\t\t});\r\n\t}\r\n}\r\n","export class CustomError extends Error {\r\n\tstatic code = 500;\r\n\r\n\tprivate _code?: number;\r\n\tget code(): number { return this._code || (<any>this).constructor.code; }\r\n\tset code(c: number) { this._code = c; }\r\n\r\n\tconstructor(message?: string, code?: number) {\r\n\t\tsuper(message);\r\n\t\tif(code != null) this._code = code;\r\n\t}\r\n\r\n\tstatic from(err: Error): CustomError {\r\n\t\tconst code = Number((<any>err).statusCode) ?? Number((<any>err).code);\r\n\t\tconst newErr = new this(err.message || err.toString());\r\n\t\treturn Object.assign(newErr, {\r\n\t\t\tstack: err.stack,\r\n\t\t\t...err,\r\n\t\t\tcode: code ?? undefined\r\n\t\t});\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code != undefined;\r\n\t}\r\n\r\n\ttoString() {\r\n\t\treturn this.message || super.toString();\r\n\t}\r\n}\r\n\r\nexport class BadRequestError extends CustomError {\r\n\tstatic code = 400;\r\n\r\n\tconstructor(message: string = 'Bad Request') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class UnauthorizedError extends CustomError {\r\n\tstatic code = 401;\r\n\r\n\tconstructor(message: string = 'Unauthorized') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class ForbiddenError extends CustomError {\r\n\tstatic code = 403;\r\n\r\n\tconstructor(message: string = 'Forbidden') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class NotFoundError extends CustomError {\r\n\tstatic code = 404;\r\n\r\n\tconstructor(message: string = 'Not Found') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class InternalServerError extends CustomError {\r\n\tstatic code = 500;\r\n\r\n\tconstructor(message: string = 'Internal Server Error') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n","import {clean} from './objects';\nimport {PromiseProgress} from './promise-progress';\n\nexport type DecodedResponse<T> = Response & {data: T | null}\n\nexport type HttpInterceptor = (response: Response, next: () => void) => void;\n\nexport type HttpRequestOptions = {\n\tbody?: any;\n\tdecode?: boolean;\n\tfragment?: string;\n\theaders?: {[key: string | symbol]: string | null | undefined};\n\tmethod?: 'GET' | 'POST' | 'PATCH' | 'DELETE';\n\tquery?: {key: string, value: string}[] | {[key: string]: string};\n\turl?: string;\n\t[key: string]: any;\n}\n\nexport type HttpDefaults = {\n\theaders?: {[key: string | symbol]: string | null | undefined};\n\tinterceptors?: HttpInterceptor[];\n\turl?: string;\n}\n\nexport class Http {\n\tprivate static interceptors: {[key: string]: HttpInterceptor} = {};\n\n\tstatic headers: {[key: string]: string | null | undefined} = {};\n\n\tprivate interceptors: {[key: string]: HttpInterceptor} = {}\n\n\theaders: {[key: string]: string | null | undefined} = {}\n\turl!: string | null;\n\n\tconstructor(defaults: HttpDefaults = {}) {\n\t\tthis.url = defaults.url ?? null;\n\t\tthis.headers = defaults.headers || {};\n\t\tif(defaults.interceptors) {\n\t\t\tdefaults.interceptors.forEach(i => Http.addInterceptor(i));\n\t\t}\n\t}\n\n\tstatic addInterceptor(fn: HttpInterceptor): () => void {\n\t\tconst key = Object.keys(Http.interceptors).length.toString();\n\t\tHttp.interceptors[key] = fn;\n\t\treturn () => { Http.interceptors[key] = <any>null; }\n\t}\n\n\taddInterceptor(fn: HttpInterceptor): () => void {\n\t\tconst key = Object.keys(this.interceptors).length.toString();\n\t\tthis.interceptors[key] = fn;\n\t\treturn () => { this.interceptors[key] = <any>null; }\n\t}\n\n\trequest<T>(opts: HttpRequestOptions = {}): PromiseProgress<DecodedResponse<T>> {\n\t\tif(!this.url && !opts.url) throw new Error('URL needs to be set');\n\t\tlet url = (opts.url?.startsWith('http') ? opts.url : (this.url || '') + (opts.url || '')).replace(/([^:]\\/)\\/+/g, '$1');\n\t\tif(opts.fragment) url.includes('#') ? url.replace(/#.*(\\?|\\n)/g, (match, arg1) => `#${opts.fragment}${arg1}`) : url += '#' + opts.fragment;\n\t\tif(opts.query) {\n\t\t\tconst q = Array.isArray(opts.query) ? opts.query :\n\t\t\t\tObject.keys(opts.query).map(k => ({key: k, value: (<any>opts.query)[k]}))\n\t\t\turl += (url.includes('?') ? '&' : '?') + q.map(q => `${q.key}=${q.value}`).join('&');\n\t\t}\n\n\t\t// Prep headers\n\t\tconst headers = <any>clean({\n\t\t\t'Content-Type': !opts.body ? undefined : (opts.body instanceof FormData ? 'multipart/form-data' : 'application/json'),\n\t\t\t...Http.headers,\n\t\t\t...this.headers,\n\t\t\t...opts.headers\n\t\t});\n\n\t\tif(typeof opts.body == 'object' && opts.body != null && headers['Content-Type'] == 'application/json')\n\t\t\topts.body = JSON.stringify(opts.body);\n\n\t\t// Send request\n\t\treturn new PromiseProgress((res, rej, prog) => {\n\t\t\tfetch(url, {\n\t\t\t\theaders,\n\t\t\t\tmethod: opts.method || (opts.body ? 'POST' : 'GET'),\n\t\t\t\tbody: opts.body\n\t\t\t}).then(async (resp: any) => {\n\t\t\t\tfor(let fn of [...Object.values(Http.interceptors), ...Object.values(this.interceptors)]) {\n\t\t\t\t\tawait new Promise<void>(res => fn(resp, () => res()));\n\t\t\t\t}\n\n\t\t\t\tconst contentLength = resp.headers.get('Content-Length');\n\t\t\t\tconst total = contentLength ? parseInt(contentLength, 10) : 0;\n\t\t\t\tlet loaded = 0;\n\n\t\t\t\tconst reader = resp.body?.getReader();\n\t\t\t\tconst stream = new ReadableStream({\n\t\t\t\t\tstart(controller) {\n\t\t\t\t\t\tfunction push() {\n\t\t\t\t\t\t\treader?.read().then((event: any) => {\n\t\t\t\t\t\t\t\tif(event.done) return controller.close();\n\t\t\t\t\t\t\t\tloaded += event.value.byteLength;\n\t\t\t\t\t\t\t\tprog(loaded / total);\n\t\t\t\t\t\t\t\tcontroller.enqueue(event.value);\n\t\t\t\t\t\t\t\tpush();\n\t\t\t\t\t\t\t}).catch((error: any) => controller.error(error));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpush();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tresp.data = new Response(stream);\n\t\t\t\tif(opts.decode !== false) {\n\t\t\t\t\tconst content = resp.headers.get('Content-Type')?.toLowerCase();\n\t\t\t\t\tif(content?.includes('application')) resp.data = <T>await resp.data.blob();\n\t\t\t\t\telse if(content?.includes('form')) resp.data = <T>await resp.data.formData();\n\t\t\t\t\telse if(content?.includes('json')) resp.data = <T>await resp.data.json();\n\t\t\t\t\telse if(content?.includes('text')) resp.data = <T>await resp.data.text();\n\t\t\t\t}\n\n\t\t\t\tif(resp.ok) res(resp);\n\t\t\t\telse rej(resp);\n\t\t\t})\n\t\t});\n\t}\n}\n","import {TypedEmitter, TypedEvents} from './emitter';\r\n\r\nexport const CliEffects = {\r\n\tCLEAR: \"\\x1b[0m\",\r\n\tBRIGHT: \"\\x1b[1m\",\r\n\tDIM: \"\\x1b[2m\",\r\n\tUNDERSCORE: \"\\x1b[4m\",\r\n\tBLINK: \"\\x1b[5m\",\r\n\tREVERSE: \"\\x1b[7m\",\r\n\tHIDDEN: \"\\x1b[8m\",\r\n}\r\n\r\nexport const CliForeground = {\r\n\tBLACK: '\\x1b[30m',\r\n\tRED: '\\x1b[31m',\r\n\tGREEN: '\\x1b[32m',\r\n\tYELLOW: '\\x1b[33m',\r\n\tBLUE: '\\x1b[34m',\r\n\tMAGENTA: '\\x1b[35m',\r\n\tCYAN: '\\x1b[36m',\r\n\tLIGHT_GREY: '\\x1b[37m',\r\n\tGREY: '\\x1b[90m',\r\n\tLIGHT_RED: '\\x1b[91m',\r\n\tLIGHT_GREEN: '\\x1b[92m',\r\n\tLIGHT_YELLOW: '\\x1b[93m',\r\n\tLIGHT_BLUE: '\\x1b[94m',\r\n\tLIGHT_MAGENTA: '\\x1b[95m',\r\n\tLIGHT_CYAN: '\\x1b[96m',\r\n\tWHITE: '\\x1b[97m',\r\n}\r\n\r\nexport const CliBackground = {\r\n\tBLACK: \"\\x1b[40m\",\r\n\tRED: \"\\x1b[41m\",\r\n\tGREEN: \"\\x1b[42m\",\r\n\tYELLOW: \"\\x1b[43m\",\r\n\tBLUE: \"\\x1b[44m\",\r\n\tMAGENTA: \"\\x1b[45m\",\r\n\tCYAN: \"\\x1b[46m\",\r\n\tWHITE: \"\\x1b[47m\",\r\n\tGREY: \"\\x1b[100m\",\r\n}\r\n\r\nexport enum LOG_LEVEL {\r\n\tERROR = 0,\r\n\tWARN = 1,\r\n\tINFO = 2,\r\n\tLOG = 3,\r\n\tDEBUG = 4,\r\n}\r\n\r\nexport type LoggerEvents = TypedEvents & {\r\n\t'ERROR': (...args: any[]) => any;\r\n\t'WARN': (...args: any[]) => any;\r\n\t'INFO': (...args: any[]) => any;\r\n\t'LOG': (...args: any[]) => any;\r\n\t'DEBUG': (...args: any[]) => any;\r\n};\r\n\r\nexport class Logger extends TypedEmitter<LoggerEvents> {\r\n\tstatic LOG_LEVEL: LOG_LEVEL = LOG_LEVEL.DEBUG;\r\n\r\n\tconstructor(public readonly namespace?: string) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tprivate pad(text: any, length: number, char: string, end = false) {\r\n\t\tconst t = text.toString();\r\n\t\tconst l = length - t.length;\r\n\t\tif(l <= 0) return t;\r\n\t\tconst padding = Array(~~(l / char.length)).fill(char).join('');\r\n\t\treturn !end ? padding + t : t + padding;\r\n\t}\r\n\r\n\tprivate format(...text: string[]): string {\r\n\t\tconst now = new Date();\r\n\t\tconst timestamp = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()} ${this.pad(now.getHours().toString(), 2, '0')}:${this.pad(now.getMinutes().toString(), 2, '0')}:${this.pad(now.getSeconds().toString(), 2, '0')}.${this.pad(now.getMilliseconds().toString(), 3, '0', true)}`;\r\n\t\treturn `${timestamp}${this.namespace ? ` [${this.namespace}]` : ''} ${text.join(' ')}`;\r\n\t}\r\n\r\n\tdebug(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.DEBUG) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.DEBUG, str);\r\n\t\tconsole.debug(CliForeground.LIGHT_GREY + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\tlog(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.LOG) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.LOG, str);\r\n\t\tconsole.log(CliEffects.CLEAR + str);\r\n\t}\r\n\r\n\tinfo(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.INFO) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.INFO, str);\r\n\t\tconsole.info(CliForeground.BLUE + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\twarn(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.WARN) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.WARN, str);\r\n\t\tconsole.warn(CliForeground.YELLOW + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\terror(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.ERROR) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.ERROR, str);\r\n\t\tconsole.error(CliForeground.RED + str + CliEffects.CLEAR);\r\n\t}\r\n}\r\n","/**\n * Convert decimal number to fraction\n *\n * @example\n * ```js\n * dec2Frac(1.25) // Outputs: \"1 1/4\"\n * ```\n *\n * @param {number} num Number to convert\n * @return {string} Fraction with remainder\n */\nexport function dec2Frac(num: number) {\n\tconst gcd = (a: number, b: number): number => {\n\t\tif (b < 0.0000001) return a;\n\t\treturn gcd(b, ~~(a % b));\n\t};\n\n\tconst len = num.toString().length - 2;\n\tlet denominator = Math.pow(10, len);\n\tlet numerator = num * denominator;\n\tconst divisor = gcd(numerator, denominator);\n\tnumerator = ~~(numerator / divisor);\n\tdenominator = ~~(denominator / divisor)\n\tconst remainder = ~~(numerator / denominator);\n\tnumerator -= remainder * denominator;\n\treturn `${remainder ? remainder + ' ' : ''}${~~(numerator)}/${~~(denominator)}`;\n}\n\n/**\n * Convert fraction to decimal number\n *\n * @example\n * ```js\n * fracToDec('1 1/4') // Outputs: 1.25\n * ```\n *\n * @param {string} frac Fraction to convert\n * @return {number} Faction as a decimal\n */\nexport function fracToDec(frac: string) {\n\tlet split = frac.split(' ');\n\tconst whole = split.length == 2 ? Number(split[0]) : 0;\n\tsplit = (<string>split.pop()).split('/');\n\treturn whole + (Number(split[0]) / Number(split[1]));\n}\n","export function countChars(text: string, pattern: RegExp) {\r\n\treturn text.length - text.replaceAll(pattern, '').length;\r\n}\r\n\r\nexport function createHex(length: number) {\r\n\treturn Array(length).fill(null).map(() => Math.round(Math.random() * 0xF).toString(16)).join('');\r\n}\r\n\r\n/**\r\n * String of all letters\r\n *\r\n */\r\nconst LETTER_LIST = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\r\n\r\n/**\r\n * String of all numbers\r\n *\r\n */\r\nconst NUMBER_LIST = '0123456789';\r\n\r\n/**\r\n * String of all symbols\r\n */\r\nconst SYMBOL_LIST = '~`!@#$%^&*()_-+={[}]|\\\\:;\"\\'<,>.?/';\r\n\r\n/**\r\n * String of all letters, numbers & symbols\r\n */\r\nconst CHAR_LIST = LETTER_LIST + NUMBER_LIST + SYMBOL_LIST;\r\n\r\nexport function formatPhoneNumber(number: string) {\r\n\tconst parts = /(\\+?1)?.*?(\\d{3}).*?(\\d{3}).*?(\\d{4})/g.exec(number);\r\n\tif(!parts) throw new Error(`Number cannot be parsed: ${number}`);\r\n\treturn `${parts[1] ?? ''} (${parts[2]}) ${parts[3]}-${parts[4]}`.trim();\r\n}\r\n\r\n/**\r\n * Insert a string into another string at a given position\r\n *\r\n * @example\r\n * ```\r\n * console.log(insertAt('Hello world!', ' glorious', 5);\r\n * // Output: Hello glorious world!\r\n * ```\r\n *\r\n * @param {string} target - Parent string you want to modify\r\n * @param {string} str - Value that will be injected to parent\r\n * @param {number} index - Position to inject string at\r\n * @returns {string} - New string\r\n */\r\nexport function insertAt(target: string, str: string, index: number): String {\r\n\treturn `${target.slice(0, index)}${str}${target.slice(index + 1)}`;\r\n}\r\n\r\nexport function pad(text: any, length: number, char: string, start = true) {\r\n\tconst t = text.toString();\r\n\tconst l = length - t.length;\r\n\tif(l <= 0) return t;\r\n\tconst padding = Array(~~(l / char.length)).fill(char).join('');\r\n\treturn start ? padding + t : t + padding;\r\n}\r\n\r\n/**\r\n * Generate a string of random characters.\r\n *\r\n * @example\r\n * ```ts\r\n * const random = randomString();\r\n * const randomByte = randomString(8, \"01\")\r\n * ```\r\n *\r\n * @param {number} length - length of generated string\r\n * @param {string} pool - character pool to generate string from\r\n * @return {string} generated string\r\n */\r\nexport function randomString(length: number, pool: string = CHAR_LIST): string {\r\n\treturn Array(length).fill(null).map(() => {\r\n\t\tconst n = ~~(Math.random() * pool.length);\r\n\t\treturn pool[n];\r\n\t}).join('');\r\n}\r\n\r\n/**\r\n * Generate a random string with fine control over letters, numbers & symbols\r\n *\r\n * @example\r\n * ```ts\r\n * const randomLetter = randomString(1, true);\r\n * const randomChar = randomString(1, true, true, true);\r\n * ```\r\n *\r\n * @param {number} length - length of generated string\r\n * @param {boolean} letters - Add letters to pool\r\n * @param {boolean} numbers - Add numbers to pool\r\n * @param {boolean} symbols - Add symbols to pool\r\n * @return {string} generated string\r\n */\r\nexport function randomStringBuilder(length: number, letters = false, numbers = false, symbols = false): string {\r\n\tif(!letters && !numbers && !symbols) throw new Error('Must enable at least one: letters, numbers, symbols');\r\n\treturn Array(length).fill(null).map(() => {\r\n\t\tlet c;\r\n\t\tdo {\r\n\t\t\tconst type = ~~(Math.random() * 3);\r\n\t\t\tif(letters && type == 0) {\r\n\t\t\t\tc = LETTER_LIST[~~(Math.random() * LETTER_LIST.length)];\r\n\t\t\t} else if(numbers && type == 1) {\r\n\t\t\t\tc = NUMBER_LIST[~~(Math.random() * NUMBER_LIST.length)];\r\n\t\t\t} else if(symbols && type == 2) {\r\n\t\t\t\tc = SYMBOL_LIST[~~(Math.random() * SYMBOL_LIST.length)];\r\n\t\t\t}\r\n\t\t} while(!c);\r\n\t\treturn c;\r\n\t}).join('');\r\n}\r\n\r\n/**\r\n * Find all substrings that match a given pattern.\r\n *\r\n * Roughly based on `String.prototype.matchAll`.\r\n *\r\n * @param {string} value - String to search.\r\n * @param {RegExp | string} regex - Regular expression to match.\r\n * @return {RegExpExecArray[]} Found matches.\r\n */\r\nexport function matchAll(value: string, regex: RegExp | string): RegExpExecArray[] {\r\n\tif(typeof regex === 'string') {\r\n\t\tregex = new RegExp(regex, 'g');\r\n\t}\r\n\r\n\t// https://stackoverflow.com/a/60290199\r\n\tif(!regex.global) {\r\n\t\tthrow new TypeError('Regular expression must be global.');\r\n\t}\r\n\r\n\tlet ret: RegExpExecArray[] = [];\r\n\tlet match: RegExpExecArray | null;\r\n\twhile((match = regex.exec(value)) !== null) {\r\n\t\tret.push(match);\r\n\t}\r\n\r\n\treturn ret;\r\n}\r\n\r\n/**\r\n * Create MD5 hash using native javascript\r\n * @param d String to hash\r\n * @returns {string} Hashed string\r\n */\r\nexport function md5(d: string) {\r\n\tvar r = M(V(Y(X(d),8*d.length)));return r.toLowerCase()};\r\n\tfunction M(d:any){for(var _,m=\"0123456789ABCDEF\",f=\"\",r=0;r<d.length;r++)_=d.charCodeAt(r),f+=m.charAt(_>>>4&15)+m.charAt(15&_);return f}\r\n\tfunction X(d:any){for(var _=Array(d.length>>2),m=0;m<_.length;m++)_[m]=0;for(m=0;m<8*d.length;m+=8)_[m>>5]|=(255&d.charCodeAt(m/8))<<m%32;return _}\r\n\tfunction V(d:any){for(var _=\"\",m=0;m<32*d.length;m+=8)_+=String.fromCharCode(d[m>>5]>>>m%32&255);return _}\r\n\tfunction Y(d:any,_:any){d[_>>5]|=128<<_%32,d[14+(_+64>>>9<<4)]=_;for(var m=1732584193,f=-271733879,r=-1732584194,i=271733878,n=0;n<d.length;n+=16){var h=m,t=f,g=r,e=i;f=md5_ii(f=md5_ii(f=md5_ii(f=md5_ii(f=md5_hh(f=md5_hh(f=md5_hh(f=md5_hh(f=md5_gg(f=md5_gg(f=md5_gg(f=md5_gg(f=md5_ff(f=md5_ff(f=md5_ff(f=md5_ff(f,r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+0],7,-680876936),f,r,d[n+1],12,-389564586),m,f,d[n+2],17,606105819),i,m,d[n+3],22,-1044525330),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+4],7,-176418897),f,r,d[n+5],12,1200080426),m,f,d[n+6],17,-1473231341),i,m,d[n+7],22,-45705983),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+8],7,1770035416),f,r,d[n+9],12,-1958414417),m,f,d[n+10],17,-42063),i,m,d[n+11],22,-1990404162),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+12],7,1804603682),f,r,d[n+13],12,-40341101),m,f,d[n+14],17,-1502002290),i,m,d[n+15],22,1236535329),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+1],5,-165796510),f,r,d[n+6],9,-1069501632),m,f,d[n+11],14,643717713),i,m,d[n+0],20,-373897302),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+5],5,-701558691),f,r,d[n+10],9,38016083),m,f,d[n+15],14,-660478335),i,m,d[n+4],20,-405537848),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+9],5,568446438),f,r,d[n+14],9,-1019803690),m,f,d[n+3],14,-187363961),i,m,d[n+8],20,1163531501),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+13],5,-1444681467),f,r,d[n+2],9,-51403784),m,f,d[n+7],14,1735328473),i,m,d[n+12],20,-1926607734),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+5],4,-378558),f,r,d[n+8],11,-2022574463),m,f,d[n+11],16,1839030562),i,m,d[n+14],23,-35309556),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+1],4,-1530992060),f,r,d[n+4],11,1272893353),m,f,d[n+7],16,-155497632),i,m,d[n+10],23,-1094730640),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+13],4,681279174),f,r,d[n+0],11,-358537222),m,f,d[n+3],16,-722521979),i,m,d[n+6],23,76029189),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+9],4,-640364487),f,r,d[n+12],11,-421815835),m,f,d[n+15],16,530742520),i,m,d[n+2],23,-995338651),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+0],6,-198630844),f,r,d[n+7],10,1126891415),m,f,d[n+14],15,-1416354905),i,m,d[n+5],21,-57434055),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+12],6,1700485571),f,r,d[n+3],10,-1894986606),m,f,d[n+10],15,-1051523),i,m,d[n+1],21,-2054922799),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+8],6,1873313359),f,r,d[n+15],10,-30611744),m,f,d[n+6],15,-1560198380),i,m,d[n+13],21,1309151649),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+4],6,-145523070),f,r,d[n+11],10,-1120210379),m,f,d[n+2],15,718787259),i,m,d[n+9],21,-343485551),m=safe_add(m,h),f=safe_add(f,t),r=safe_add(r,g),i=safe_add(i,e)}return Array(m,f,r,i)}\r\n\tfunction md5_cmn(d:any,_:any,m:any,f:any,r:any,i:any){return safe_add(bit_rol(safe_add(safe_add(_,d),safe_add(f,i)),r),m)}\r\n\tfunction md5_ff(d:any,_:any,m:any,f:any,r:any,i:any,n:any){return md5_cmn(_&m|~_&f,d,_,r,i,n)}\r\n\tfunction md5_gg(d:any,_:any,m:any,f:any,r:any,i:any,n:any){return md5_cmn(_&f|m&~f,d,_,r,i,n)}\r\n\tfunction md5_hh(d:any,_:any,m:any,f:any,r:any,i:any,n:any){return md5_cmn(_^m^f,d,_,r,i,n)}\r\n\tfunction md5_ii(d:any,_:any,m:any,f:any,r:any,i:any,n:any){return md5_cmn(m^(_|~f),d,_,r,i,n)}\r\n\tfunction safe_add(d:any,_:any){var m=(65535&d)+(65535&_);return(d>>16)+(_>>16)+(m>>16)<<16|65535&m}\r\n\tfunction bit_rol(d:any,_:any){return d<<_|d>>>32-_\r\n}\r\n\r\n/**\r\n * Check if email is valid\r\n *\r\n * @param {string} email - Target\r\n * @returns {boolean} - Follows format\r\n */\r\nexport function validateEmail(email: string) {\r\n\treturn /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/.test(email);\r\n}\r\n","import {md5} from './string';\r\n\r\n/**\r\n * Convert data into a form encoded format.\r\n *\r\n * @param {any} data - data to convert\r\n * @returns {string} - Ecodeded form data\r\n */\r\nexport function formEncode(data: any): string {\r\n\treturn Object.entries(data).map(([key, value]) =>\r\n\t\tencodeURIComponent(key) + '=' + encodeURIComponent(<any>value)\r\n\t).join('&');\r\n}\r\n\r\n/**\r\n * Get profile image from Gravatar\r\n *\r\n * @param {string} email Account email address\r\n * @param {string} def Default image, can be a link or '404', see: https://docs.gravatar.com/general/images/\r\n * @returns {string} Gravatar URL\r\n */\r\nexport function gravatar(email: string, def='mp') {\r\n\tif(!email) return '';\r\n\treturn `https://www.gravatar.com/avatar/${md5(email)}?d=${def}`;\r\n}\r\n\r\n/** Parts of a URL */\r\nexport type ParsedUrl = {\r\n\tprotocol?: string,\r\n\tsubdomain?: string,\r\n\tdomain: string,\r\n\thost: string,\r\n\tport?: number,\r\n\tpath?: string,\r\n\tquery?: {[name: string]: string}\r\n\tfragment?: string\r\n}\r\n\r\n/**\r\n *\r\n * @param {string} url\r\n * @returns {RegExpExecArray}\r\n */\r\nexport function urlParser(url: string): ParsedUrl {\r\n\tconst processed = new RegExp(\r\n\t\t'(?:(?<protocol>[\\\\w\\\\d]+)\\\\:\\\\/\\\\/)?(?:(?<user>.+)\\\\@)?(?<host>(?<domain>[^:\\\\/\\\\?#@\\\\n]+)(?:\\\\:(?<port>\\\\d*))?)(?<path>\\\\/.*?)?(?:\\\\?(?<query>.*?))?(?:#(?<fragment>.*?))?$',\r\n\t\t'gm').exec(url);\r\n\tconst groups: ParsedUrl = <any>processed?.groups ?? {};\r\n\tconst domains = groups.domain.split('.');\r\n\tif(groups['port'] != null) groups.port = Number(groups.port);\r\n\tif(domains.length > 2) {\r\n\t\tgroups.domain = domains.splice(-2, 2).join('.');\r\n\t\tgroups.subdomain = domains.join('.');\r\n\t}\r\n\tif(groups.query) {\r\n\t\tconst split = (<any>groups.query).split('&'), query: any = {};\r\n\t\tsplit.forEach((q: any) => {\r\n\t\t\tconst [key, val] = q.split('=');\r\n\t\t\tquery[key] = val;\r\n\t\t});\r\n\t\tgroups.query = query;\r\n\t}\r\n\treturn groups;\r\n}\r\n","/**\r\n * Calculate the number of milliseconds until date/time\r\n *\r\n * @param {Date | number} date - Target\r\n * @returns {number} - Number of milliseconds until target\r\n */\r\nexport function timeUntil(date: Date | number): number {\r\n\treturn (date instanceof Date ? date.getTime() : date) - (new Date()).getTime();\r\n}\r\n\r\n/**\r\n * Use in conjunction with `await` to pause an async script\r\n *\r\n * @example\r\n * ```ts\r\n * async () => {\r\n * ...\r\n * await sleep(1000) // Pause for 1 second\r\n *\t ...\r\n * }\r\n * ```\r\n *\r\n * @param {number} ms - Time to pause for in milliseconds\r\n * @returns {Promise<unknown>} - Resolves promise when it's time to resume\r\n */\r\nexport function sleep(ms: number) {\r\n\treturn new Promise(res => setTimeout(res, ms));\r\n}\r\n\r\nexport function formatDate(date: Date | number | string) {\r\n\tconst d = date instanceof Date ? date : new Date(date);\r\n\treturn new Intl.DateTimeFormat(\"en-us\", {\r\n\t\tweekday: \"long\",\r\n\t\tmonth: \"short\",\r\n\t\tday: \"numeric\",\r\n\t\thour: \"numeric\",\r\n\t\tminute: \"numeric\",\r\n\t\thour12: true\r\n\t}).format(d);\r\n}\r\n"],"names":["clean","obj","undefinedOnly","o","key","value","deepCopy","deepMerge","target","sources","s","dotNotation","prop","set","arr","flattenObj","parent","result","propName","includes","values","allowMissing","e","type","isEqual","a","b","ta","tb","mixin","constructors","c","name","sanitizedJSON","space","cache","addUnique","array","el","arrayDiff","makeUnique","v1","v2","caseInsensitiveSort","aVal","bVal","flattenArr","sortByProp","reverse","findByProp","v","i","n","makeArray","ASet","elements","index","acc","PromiseProgress","executor","resolve","reject","reason","progress","__publicField","p","l","promise","res","rej","args","newPromise","callback","resp","download","href","downloadBlob","blob","url","fileBrowser","options","input","uploadWithProgress","prog","xhr","formData","f","event","err","TypedEmitter","listener","_a","unsubscribe","CustomError","message","code","newErr","BadRequestError","UnauthorizedError","ForbiddenError","NotFoundError","InternalServerError","_Http","defaults","fn","opts","match","arg1","q","k","headers","contentLength","total","loaded","reader","stream","controller","push","error","content","_b","Http","CliEffects","CliForeground","CliBackground","LOG_LEVEL","_Logger","namespace","text","length","char","end","t","padding","now","str","Logger","dec2Frac","num","gcd","len","denominator","numerator","divisor","remainder","fracToDec","frac","split","whole","countChars","pattern","createHex","LETTER_LIST","NUMBER_LIST","SYMBOL_LIST","CHAR_LIST","formatPhoneNumber","number","parts","insertAt","pad","start","randomString","pool","randomStringBuilder","letters","numbers","symbols","matchAll","regex","ret","md5","d","r","M","V","Y","X","_","m","h","g","md5_ii","md5_hh","md5_gg","md5_ff","safe_add","md5_cmn","bit_rol","validateEmail","email","formEncode","data","gravatar","def","urlParser","processed","groups","domains","query","val","timeUntil","date","sleep","ms","formatDate"],"mappings":"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"}
|