@ztimson/utils 0.10.2 → 0.10.3

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/utils.cjs CHANGED
@@ -1,2 +1,2 @@
1
- (function(c,d){typeof exports=="object"&&typeof module<"u"?d(exports):typeof define=="function"&&define.amd?define(["exports"],d):(c=typeof globalThis<"u"?globalThis:c||self,d(c.utils={}))})(this,function(c){"use strict";var bt=Object.defineProperty;var Rt=(c,d,p)=>d in c?bt(c,d,{enumerable:!0,configurable:!0,writable:!0,value:p}):c[d]=p;var u=(c,d,p)=>(Rt(c,typeof d!="symbol"?d+"":d,p),p);function d(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 p(n){return JSON.parse(JSON.stringify(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 v(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"?v(n[r],o,t):t[o]=n[r]}return t}}function T(n,e,t=!1){if(n==null)return t;if(Array.isArray(e))return e.findIndex((o,i)=>!T(n[i],e[i],t))==-1;const r=typeof e;return r!=typeof n?!1:r=="object"?Object.keys(e).find(o=>!T(n[o],e[o],t))==null:r=="function"?n.toString()==e.toString():n==e}function A(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=>A(n[i],e[i]))}function z(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 J(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 V(n,e){return n.indexOf(e)===-1&&n.push(e),n}function K(n,e){return Y([...n.filter(t=>!e.includes(r=>A(t,r))),...e.filter(t=>!n.includes(r=>A(t,r)))])}function Z(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 H(n,e=[]){return n.forEach(t=>Array.isArray(t)?H(t,e):e.push(t)),e}function Q(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 X(n,e){return t=>A(t[n],e)}function Y(n){for(let e=n.length-1;e>=0;e--)n.slice(0,e).find(t=>A(t,n[e]))&&n.splice(e,1);return n}function _(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])}}function tt(n,e){const t=document.createElement("a");t.href=n,t.download=e,document.body.appendChild(t),t.click(),document.body.removeChild(t)}class L{constructor(){u(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()})})}}u(L,"listeners",{});class w extends Error{constructor(t,r){super(t);u(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()}}u(w,"code",500);class I extends w{constructor(e="Bad Request"){super(e)}static instanceof(e){return e.constructor.code==this.code}}u(I,"code",400);class D extends w{constructor(e="Unauthorized"){super(e)}static instanceof(e){return e.constructor.code==this.code}}u(D,"code",401);class $ extends w{constructor(e="Forbidden"){super(e)}static instanceof(e){return e.constructor.code==this.code}}u($,"code",403);class k extends w{constructor(e="Not Found"){super(e)}static instanceof(e){return e.constructor.code==this.code}}u(k,"code",404);class P extends w{constructor(e="Internal Server Error"){super(e)}static instanceof(e){return e.constructor.code==this.code}}u(P,"code",500);const C={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"},et={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 W=(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))(W||{});const g=class g extends L{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 y=Array(~~(s/r.length)).fill(r).join("");return o?i+y:y+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(g.LOG_LEVEL<4)return;const t=this.format(...e);g.emit(4,t),console.debug(N.LIGHT_GREY+t+C.CLEAR)}log(...e){if(g.LOG_LEVEL<3)return;const t=this.format(...e);g.emit(3,t),console.log(C.CLEAR+t)}info(...e){if(g.LOG_LEVEL<2)return;const t=this.format(...e);g.emit(2,t),console.info(N.BLUE+t+C.CLEAR)}warn(...e){if(g.LOG_LEVEL<1)return;const t=this.format(...e);g.emit(1,t),console.warn(N.YELLOW+t+C.CLEAR)}error(...e){if(g.LOG_LEVEL<0)return;const t=this.format(...e);g.emit(0,t),console.error(N.RED+t+C.CLEAR)}};u(g,"LOG_LEVEL",4);let G=g;function nt(n){const e=(y,m)=>m<1e-7?y:e(m,~~(y%m)),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 rt(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 ot(n,e){return n.length-n.replaceAll(e,"").length}function it(n){return Array(n).fill(null).map(()=>Math.round(Math.random()*15).toString(16)).join("")}const j="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",U="0123456789",M="~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/",st=j+U+M;function ct(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 ut(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 lt(n,e=st){return Array(n).fill(null).map(()=>{const t=~~(Math.random()*e.length);return e[t]}).join("")}function ht(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=j[~~(Math.random()*j.length)]:t&&i==1?o=U[~~(Math.random()*U.length)]:r&&i==2&&(o=M[~~(Math.random()*M.length)])}while(!o);return o}).join("")}function ft(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 x(n){var e=dt(yt(Et(gt(n),8*n.length)));return e.toLowerCase()}function dt(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 gt(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 yt(n){for(var e="",t=0;t<32*n.length;t+=8)e+=String.fromCharCode(n[t>>5]>>>t%32&255);return e}function Et(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 y=t,m=r,F=o,q=i;r=f(r=f(r=f(r=f(r=h(r=h(r=h(r=h(r=l(r=l(r=l(r=l(r=a(r=a(r=a(r=a(r,o=a(o,i=a(i,t=a(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=a(o,i=a(i,t=a(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=a(o,i=a(i,t=a(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=a(o,i=a(i,t=a(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=l(o,i=l(i,t=l(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=l(o,i=l(i,t=l(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=l(o,i=l(i,t=l(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=l(o,i=l(i,t=l(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=h(o,i=h(i,t=h(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=h(o,i=h(i,t=h(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=h(o,i=h(i,t=h(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=h(o,i=h(i,t=h(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=f(o,i=f(i,t=f(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=f(o,i=f(i,t=f(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=f(o,i=f(i,t=f(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=f(o,i=f(i,t=f(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=B(t,y),r=B(r,m),o=B(o,F),i=B(i,q)}return Array(t,r,o,i)}function b(n,e,t,r,o,i){return B(mt(B(B(e,n),B(r,i)),o),t)}function a(n,e,t,r,o,i,s){return b(e&t|~e&r,n,e,o,i,s)}function l(n,e,t,r,o,i,s){return b(e&r|t&~r,n,e,o,i,s)}function h(n,e,t,r,o,i,s){return b(e^t^r,n,e,o,i,s)}function f(n,e,t,r,o,i,s){return b(t^(e|~r),n,e,o,i,s)}function B(n,e){var t=(65535&n)+(65535&e);return(n>>16)+(e>>16)+(t>>16)<<16|65535&t}function mt(n,e){return n<<e|n>>>32-e}function wt(n){return/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/.test(n)}function Bt(n){return Object.entries(n).map(([e,t])=>encodeURIComponent(e)+"="+encodeURIComponent(t)).join("&")}function pt(n,e="mp"){return n?`https://www.gravatar.com/avatar/${x(n)}?d=${e}`:""}function At(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[y,m]=s.split("=");i[y]=m}),t.query=i}return t}class St extends Promise{constructor(t){super((r,o)=>t(i=>r(i),i=>o(i),i=>this.progress=i));u(this,"listeners",[]);u(this,"_progress",0)}get progress(){return this._progress}set progress(t){t!=this._progress&&(this._progress=t,this.listeners.forEach(r=>r(t)))}onProgress(t){return this.listeners.push(t),this}}function Ct(n){return(n instanceof Date?n.getTime():n)-new Date().getTime()}function Ot(n){return new Promise(e=>setTimeout(e,n))}function Nt(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)}const E=class E{constructor(e={}){u(this,"interceptors",{});u(this,"headers",{});this.opts=e,this.headers=e.headers||{},e.interceptors&&e.interceptors.forEach(t=>E.addInterceptor(t))}static addInterceptor(e){const t=Object.keys(E.interceptors).length.toString();return E.interceptors[t]=e,()=>{E.interceptors[t]=null}}addInterceptor(e){const t=Object.keys(this.interceptors).length.toString();return this.interceptors[t]=e,()=>{this.interceptors[t]=null}}async request(e={}){var o,i;if(!this.opts.url&&!e.url)throw new Error("URL needs to be set");const t=((o=e.url)!=null&&o.startsWith("http")?e.url:(this.opts.url||"")+(e.url||"")).replace(/([^:]\/)\/+/g,"$1"),r=d({"Content-Type":e.body&&!(e.body instanceof FormData)?"application/json":void 0,...E.headers,...this.headers,...e.headers});return fetch(t,{headers:r,method:e.method||(e.body?"POST":"GET"),body:(i=r["Content-Type"])!=null&&i.startsWith("application/json")&&e.body?JSON.stringify(e.body):e.body}).then(async s=>{var y,m;for(let F of[...Object.values(E.interceptors),...Object.values(this.interceptors)])await new Promise(q=>F(s,()=>q()));if(!s.ok)throw new Error(s.statusText);return!e.skipConverting&&((y=s.headers.get("Content-Type"))!=null&&y.startsWith("application/json"))?await s.json():!e.skipConverting&&((m=s.headers.get("Content-Type"))!=null&&m.startsWith("text/plain"))?await s.text():s})}};u(E,"interceptors",{}),u(E,"headers",{});let R=E;R.addInterceptor((n,e)=>{const t=r=>{var o,i;return((o=r.error)==null?void 0:o.message)||((i=r.reason)==null?void 0:i.message)||r.message||r.statusText||r.toString()};if(n.status==200)return e();throw n.status==400?new I(t(n)):n.status==401?new D(t(n)):n.status==403?new $(t(n)):n.status==404?new k(t(n)):n.status==500?new P(t(n)):new w(t(n),n.status)}),c.ASet=S,c.BadRequestError=I,c.CliBackground=et,c.CliEffects=C,c.CliForeground=N,c.CustomError=w,c.ForbiddenError=$,c.InternalServerError=P,c.LOG_LEVEL=W,c.Logger=G,c.NotFoundError=k,c.PromiseProgress=St,c.TypedEmitter=L,c.UnauthorizedError=D,c.XHR=R,c.addUnique=V,c.arrayDiff=K,c.caseInsensitiveSort=Z,c.clean=d,c.countChars=ot,c.createHex=it,c.dec2Frac=nt,c.deepCopy=p,c.dotNotation=O,c.download=tt,c.findByProp=X,c.flattenArr=H,c.flattenObj=v,c.formEncode=Bt,c.formatDate=Nt,c.formatPhoneNumber=ct,c.fracToDec=rt,c.gravatar=pt,c.includes=T,c.insertAt=ut,c.isEqual=A,c.makeArray=_,c.makeUnique=Y,c.matchAll=ft,c.md5=x,c.mixin=z,c.pad=at,c.randomString=lt,c.randomStringBuilder=ht,c.sanitizedJSON=J,c.sleep=Ot,c.sortByProp=Q,c.timeUntil=Ct,c.urlParser=At,c.validateEmail=wt,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})});
1
+ (function(c,d){typeof exports=="object"&&typeof module<"u"?d(exports):typeof define=="function"&&define.amd?define(["exports"],d):(c=typeof globalThis<"u"?globalThis:c||self,d(c.utils={}))})(this,function(c){"use strict";var bt=Object.defineProperty;var Rt=(c,d,B)=>d in c?bt(c,d,{enumerable:!0,configurable:!0,writable:!0,value:B}):c[d]=B;var u=(c,d,B)=>(Rt(c,typeof d!="symbol"?d+"":d,B),B);function d(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 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 j(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"?j(n[r],o,t):t[o]=n[r]}return t}}function R(n,e,t=!1){if(n==null)return t;if(Array.isArray(e))return e.findIndex((o,i)=>!R(n[i],e[i],t))==-1;const r=typeof e;return r!=typeof n?!1:r=="object"?Object.keys(e).find(o=>!R(n[o],e[o],t))==null:r=="function"?n.toString()==e.toString():n==e}function w(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=>w(n[i],e[i]))}function x(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 J(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 V(n,e){return n.indexOf(e)===-1&&n.push(e),n}function K(n,e){return M([...n.filter(t=>!e.includes(r=>w(t,r))),...e.filter(t=>!n.includes(r=>w(t,r)))])}function Z(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 U(n,e=[]){return n.forEach(t=>Array.isArray(t)?U(t,e):e.push(t)),e}function Q(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 X(n,e){return t=>w(t[n],e)}function M(n){for(let e=n.length-1;e>=0;e--)n.slice(0,e).find(t=>w(t,n[e]))&&n.splice(e,1);return n}function _(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])}}function tt(n,e){const t=document.createElement("a");t.href=n,t.download=e,document.body.appendChild(t),t.click(),document.body.removeChild(t)}class T{constructor(){u(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()})})}}u(T,"listeners",{});class A extends Error{constructor(t,r){super(t);u(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()}}u(A,"code",500);class F extends A{constructor(e="Bad Request"){super(e)}static instanceof(e){return e.constructor.code==this.code}}u(F,"code",400);class q extends A{constructor(e="Unauthorized"){super(e)}static instanceof(e){return e.constructor.code==this.code}}u(q,"code",401);class v extends A{constructor(e="Forbidden"){super(e)}static instanceof(e){return e.constructor.code==this.code}}u(v,"code",403);class H extends A{constructor(e="Not Found"){super(e)}static instanceof(e){return e.constructor.code==this.code}}u(H,"code",404);class Y extends A{constructor(e="Internal Server Error"){super(e)}static instanceof(e){return e.constructor.code==this.code}}u(Y,"code",500);const C={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"},et={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 W=(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))(W||{});const g=class g extends T{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 y=Array(~~(s/r.length)).fill(r).join("");return o?i+y:y+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(g.LOG_LEVEL<4)return;const t=this.format(...e);g.emit(4,t),console.debug(N.LIGHT_GREY+t+C.CLEAR)}log(...e){if(g.LOG_LEVEL<3)return;const t=this.format(...e);g.emit(3,t),console.log(C.CLEAR+t)}info(...e){if(g.LOG_LEVEL<2)return;const t=this.format(...e);g.emit(2,t),console.info(N.BLUE+t+C.CLEAR)}warn(...e){if(g.LOG_LEVEL<1)return;const t=this.format(...e);g.emit(1,t),console.warn(N.YELLOW+t+C.CLEAR)}error(...e){if(g.LOG_LEVEL<0)return;const t=this.format(...e);g.emit(0,t),console.error(N.RED+t+C.CLEAR)}};u(g,"LOG_LEVEL",4);let L=g;function nt(n){const e=(y,m)=>m<1e-7?y:e(m,~~(y%m)),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 rt(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 ot(n,e){return n.length-n.replaceAll(e,"").length}function it(n){return Array(n).fill(null).map(()=>Math.round(Math.random()*15).toString(16)).join("")}const I="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",D="0123456789",$="~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/",st=I+D+$;function ct(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 ut(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 lt(n,e=st){return Array(n).fill(null).map(()=>{const t=~~(Math.random()*e.length);return e[t]}).join("")}function ht(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=I[~~(Math.random()*I.length)]:t&&i==1?o=D[~~(Math.random()*D.length)]:r&&i==2&&(o=$[~~(Math.random()*$.length)])}while(!o);return o}).join("")}function ft(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 z(n){var e=dt(yt(Et(gt(n),8*n.length)));return e.toLowerCase()}function dt(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 gt(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 yt(n){for(var e="",t=0;t<32*n.length;t+=8)e+=String.fromCharCode(n[t>>5]>>>t%32&255);return e}function Et(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 y=t,m=r,P=o,G=i;r=f(r=f(r=f(r=f(r=h(r=h(r=h(r=h(r=l(r=l(r=l(r=l(r=a(r=a(r=a(r=a(r,o=a(o,i=a(i,t=a(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=a(o,i=a(i,t=a(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=a(o,i=a(i,t=a(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=a(o,i=a(i,t=a(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=l(o,i=l(i,t=l(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=l(o,i=l(i,t=l(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=l(o,i=l(i,t=l(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=l(o,i=l(i,t=l(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=h(o,i=h(i,t=h(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=h(o,i=h(i,t=h(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=h(o,i=h(i,t=h(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=h(o,i=h(i,t=h(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=f(o,i=f(i,t=f(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=f(o,i=f(i,t=f(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=f(o,i=f(i,t=f(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=f(o,i=f(i,t=f(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=p(t,y),r=p(r,m),o=p(o,P),i=p(i,G)}return Array(t,r,o,i)}function b(n,e,t,r,o,i){return p(mt(p(p(e,n),p(r,i)),o),t)}function a(n,e,t,r,o,i,s){return b(e&t|~e&r,n,e,o,i,s)}function l(n,e,t,r,o,i,s){return b(e&r|t&~r,n,e,o,i,s)}function h(n,e,t,r,o,i,s){return b(e^t^r,n,e,o,i,s)}function f(n,e,t,r,o,i,s){return b(t^(e|~r),n,e,o,i,s)}function p(n,e){var t=(65535&n)+(65535&e);return(n>>16)+(e>>16)+(t>>16)<<16|65535&t}function mt(n,e){return n<<e|n>>>32-e}function pt(n){return/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/.test(n)}function Bt(n){return Object.entries(n).map(([e,t])=>encodeURIComponent(e)+"="+encodeURIComponent(t)).join("&")}function At(n,e="mp"){return n?`https://www.gravatar.com/avatar/${z(n)}?d=${e}`:""}function wt(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[y,m]=s.split("=");i[y]=m}),t.query=i}return t}class St extends Promise{constructor(t){super((r,o)=>t(i=>r(i),i=>o(i),i=>this.progress=i));u(this,"listeners",[]);u(this,"_progress",0)}get progress(){return this._progress}set progress(t){t!=this._progress&&(this._progress=t,this.listeners.forEach(r=>r(t)))}onProgress(t){return this.listeners.push(t),this}}function Ct(n){return(n instanceof Date?n.getTime():n)-new Date().getTime()}function Ot(n){return new Promise(e=>setTimeout(e,n))}function Nt(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)}const E=class E{constructor(e={}){u(this,"interceptors",{});u(this,"headers",{});this.opts=e,this.headers=e.headers||{},e.interceptors&&e.interceptors.forEach(t=>E.addInterceptor(t))}static addInterceptor(e){const t=Object.keys(E.interceptors).length.toString();return E.interceptors[t]=e,()=>{E.interceptors[t]=null}}addInterceptor(e){const t=Object.keys(this.interceptors).length.toString();return this.interceptors[t]=e,()=>{this.interceptors[t]=null}}async request(e={}){var o,i;if(!this.opts.url&&!e.url)throw new Error("URL needs to be set");const t=((o=e.url)!=null&&o.startsWith("http")?e.url:(this.opts.url||"")+(e.url||"")).replace(/([^:]\/)\/+/g,"$1"),r=d({"Content-Type":e.body&&!(e.body instanceof FormData)?"application/json":void 0,...E.headers,...this.headers,...e.headers});return fetch(t,{headers:r,method:e.method||(e.body?"POST":"GET"),body:(i=r["Content-Type"])!=null&&i.startsWith("application/json")&&e.body?JSON.stringify(e.body):e.body}).then(async s=>{var y,m;for(let P of[...Object.values(E.interceptors),...Object.values(this.interceptors)])await new Promise(G=>P(s,()=>G()));if(!s.ok)throw new Error(s.statusText);return!e.skipConverting&&((y=s.headers.get("Content-Type"))!=null&&y.startsWith("application/json"))?await s.json():!e.skipConverting&&((m=s.headers.get("Content-Type"))!=null&&m.startsWith("text/plain"))?await s.text():s})}};u(E,"interceptors",{}),u(E,"headers",{});let k=E;c.ASet=S,c.BadRequestError=F,c.CliBackground=et,c.CliEffects=C,c.CliForeground=N,c.CustomError=A,c.ForbiddenError=v,c.InternalServerError=Y,c.LOG_LEVEL=W,c.Logger=L,c.NotFoundError=H,c.PromiseProgress=St,c.TypedEmitter=T,c.UnauthorizedError=q,c.XHR=k,c.addUnique=V,c.arrayDiff=K,c.caseInsensitiveSort=Z,c.clean=d,c.countChars=ot,c.createHex=it,c.dec2Frac=nt,c.deepCopy=B,c.dotNotation=O,c.download=tt,c.findByProp=X,c.flattenArr=U,c.flattenObj=j,c.formEncode=Bt,c.formatDate=Nt,c.formatPhoneNumber=ct,c.fracToDec=rt,c.gravatar=At,c.includes=R,c.insertAt=ut,c.isEqual=w,c.makeArray=_,c.makeUnique=M,c.matchAll=ft,c.md5=z,c.mixin=x,c.pad=at,c.randomString=lt,c.randomStringBuilder=ht,c.sanitizedJSON=J,c.sleep=Ot,c.sortByProp=Q,c.timeUntil=Ct,c.urlParser=wt,c.validateEmail=pt,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})});
2
2
  //# sourceMappingURL=utils.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.cjs","sources":["../src/objects.ts","../src/array.ts","../src/aset.ts","../src/download.ts","../src/emitter.ts","../src/errors.ts","../src/logger.ts","../src/math.ts","../src/string.ts","../src/misc.ts","../src/promise-progress.ts","../src/time.ts","../src/xhr.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 * 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 {\r\n\tget size() {\r\n\t\treturn this.length;\r\n\t}\r\n\r\n\tconstructor(elements: T[] = []) {\r\n\t\tsuper();\r\n\t\tif(!!elements?.['forEach'])\r\n\t\t\telements.forEach(el => this.add(el));\r\n\t}\r\n\r\n\tadd(el: T) {\r\n\t\tif(!this.has(el)) this.push(el);\r\n\t}\r\n\r\n\tdelete(el: T) {\r\n\t\tconst index = this.indexOf(el);\r\n\t\tif(index != -1) this.slice(index, 1);\r\n\t}\r\n\r\n\tdifference(set: ASet<T>) {\r\n\t\treturn new ASet<T>(this.reduce((acc, el) => {\r\n\t\t\tif(!set.has(el)) acc.push(el);\r\n\t\t\treturn acc;\r\n\t\t}, []));\r\n\t}\r\n\r\n\thas(el: T) {\r\n\t\treturn this.indexOf(el) != -1;\r\n\t}\r\n\r\n\tintersection(set: ASet<T>) {\r\n\t\treturn new ASet<T>(this.reduce((acc, el) => {\r\n\t\t\tif(set.has(el)) acc.push(el);\r\n\t\t\treturn acc;\r\n\t\t}, []));\r\n\t}\r\n\r\n\tisDisjointFrom(set: ASet<T>) {\r\n\t\treturn this.intersection(set).size == 0;\r\n\t}\r\n\r\n\tisSubsetOf(set: ASet<T>) {\r\n\t\treturn this.findIndex(el => !set.has(el)) == -1;\r\n\t}\r\n\r\n\tisSuperset(set: ASet<T>) {\r\n\t\treturn set.findIndex(el => !this.has(el)) == -1;\r\n\t}\r\n\r\n\tsymmetricDifference(set: ASet<T>) {\r\n\t\treturn new ASet([...this.difference(set), ...set.difference(this)]);\r\n\t}\r\n\r\n\tunion(set: ASet<T> | Array<T>) {\r\n\t\treturn new ASet([...this, ...set]);\r\n\t}\r\n}\r\n","export function download(href: any, name: string) {\r\n\tconst a = document.createElement('a');\r\n\ta.href = href;\r\n\ta.download = name;\r\n\tdocument.body.appendChild(a);\r\n\ta.click();\r\n\tdocument.body.removeChild(a);\r\n}\r\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 {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","/**\r\n * Convert decimal number to fraction\r\n *\r\n * @example\r\n * ```js\r\n * dec2Frac(1.25) // Outputs: \"1 1/4\"\r\n * ```\r\n *\r\n * @param {number} num Number to convert\r\n * @return {string} Fraction with remainder\r\n */\r\nexport function dec2Frac(num: number) {\r\n\tconst gcd = (a: number, b: number): number => {\r\n\t\tif (b < 0.0000001) return a;\r\n\t\treturn gcd(b, ~~(a % b));\r\n\t};\r\n\r\n\tconst len = num.toString().length - 2;\r\n\tlet denominator = Math.pow(10, len);\r\n\tlet numerator = num * denominator;\r\n\tconst divisor = gcd(numerator, denominator);\r\n\tnumerator = ~~(numerator / divisor);\r\n\tdenominator = ~~(denominator / divisor)\r\n\tconst remainder = ~~(numerator / denominator);\r\n\tnumerator -= remainder * denominator;\r\n\treturn `${remainder ? remainder + ' ' : ''}${~~(numerator)}/${~~(denominator)}`;\r\n}\r\n\r\n/**\r\n * Convert fraction to decimal number\r\n *\r\n * @example\r\n * ```js\r\n * fracToDec('1 1/4') // Outputs: 1.25\r\n * ```\r\n *\r\n * @param {string} frac Fraction to convert\r\n * @return {number} Faction as a decimal\r\n */\r\nexport function fracToDec(frac: string) {\r\n\tlet split = frac.split(' ');\r\n\tconst whole = split.length == 2 ? Number(split[0]) : 0;\r\n\tsplit = (<string>split.pop()).split('/');\r\n\treturn whole + (Number(split[0]) / Number(split[1]));\r\n}\r\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","export type ProgressCallback = (progress: number) => any;\r\n\r\nexport class PromiseProgress<T> extends Promise<T> {\r\n\tprivate listeners: ProgressCallback[] = [];\r\n\r\n\tprivate _progress = 0;\r\n\tget progress() { return this._progress; }\r\n\tset progress(p: number) {\r\n\t\tif(p == this._progress) return;\r\n\t\tthis._progress = p;\r\n\t\tthis.listeners.forEach(l => l(p));\r\n\t}\r\n\r\n\tconstructor(executor: (resolve: (value: T) => any, reject: (reason: any) => void, progress: (progress: number) => any) => void) {\r\n\t\tsuper((resolve, reject) => executor(\r\n\t\t\t(value: T) => resolve(value),\r\n\t\t\t(reason: any) => reject(reason),\r\n\t\t\t(progress: number) => this.progress = progress\r\n\t\t));\r\n\t}\r\n\r\n\tonProgress(callback: ProgressCallback) {\r\n\t\tthis.listeners.push(callback);\r\n\t\treturn this;\r\n\t}\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","import {\r\n\tBadRequestError,\r\n\tCustomError,\r\n\tForbiddenError,\r\n\tInternalServerError,\r\n\tNotFoundError,\r\n\tUnauthorizedError\r\n} from './errors.ts';\r\nimport {clean} from './objects';\r\n\r\nexport type Interceptor = (request: Response, next: () => void) => void;\r\n\r\nexport type RequestOptions = {\r\n\turl?: string;\r\n\tmethod?: 'GET' | 'POST' | 'PATCH' | 'DELETE';\r\n\tbody?: any;\r\n\theaders?: {[key: string | symbol]: string | null | undefined};\r\n\tskipConverting?: boolean;\r\n\t[key: string]: any;\r\n}\r\n\r\nexport type XhrOptions = {\r\n\theaders?: {[key: string | symbol]: string | null | undefined};\r\n\tinterceptors?: Interceptor[];\r\n\turl?: string;\r\n}\r\n\r\nexport class XHR {\r\n\tprivate static interceptors: {[key: string]: Interceptor} = {};\r\n\r\n\tstatic headers: {[key: string]: string | null | undefined} = {};\r\n\r\n\tprivate interceptors: {[key: string]: Interceptor} = {}\r\n\r\n\theaders: {[key: string]: string | null | undefined} = {}\r\n\r\n\tconstructor(public readonly opts: XhrOptions = {}) {\r\n\t\tthis.headers = opts.headers || {};\r\n\t\tif(opts.interceptors) {\r\n\t\t\topts.interceptors.forEach(i => XHR.addInterceptor(i));\r\n\t\t}\r\n\t}\r\n\r\n\tstatic addInterceptor(fn: Interceptor): () => void {\r\n\t\tconst key = Object.keys(XHR.interceptors).length.toString();\r\n\t\tXHR.interceptors[key] = fn;\r\n\t\treturn () => { XHR.interceptors[key] = <any>null; }\r\n\t}\r\n\r\n\taddInterceptor(fn: Interceptor): () => void {\r\n\t\tconst key = Object.keys(this.interceptors).length.toString();\r\n\t\tthis.interceptors[key] = fn;\r\n\t\treturn () => { this.interceptors[key] = <any>null; }\r\n\t}\r\n\r\n\tasync request<T>(opts: RequestOptions = {}): Promise<T> {\r\n\t\tif(!this.opts.url && !opts.url) throw new Error('URL needs to be set');\r\n\t\tconst url = (opts.url?.startsWith('http') ? opts.url : (this.opts.url || '') + (opts.url || '')).replace(/([^:]\\/)\\/+/g, '$1');\r\n\r\n\t\t// Prep headers\r\n\t\tconst headers = <any>clean({\r\n\t\t\t'Content-Type': (opts.body && !(opts.body instanceof FormData)) ? 'application/json' : undefined,\r\n\t\t\t...XHR.headers,\r\n\t\t\t...this.headers,\r\n\t\t\t...opts.headers\r\n\t\t});\r\n\r\n\t\t// Send request\r\n\t\treturn fetch(url, {\r\n\t\t\theaders,\r\n\t\t\tmethod: opts.method || (opts.body ? 'POST' : 'GET'),\r\n\t\t\tbody: (headers['Content-Type']?.startsWith('application/json') && opts.body) ? JSON.stringify(opts.body) : opts.body\r\n\t\t}).then(async resp => {\r\n\t\t\tfor(let fn of [...Object.values(XHR.interceptors), ...Object.values(this.interceptors)]) {\r\n\t\t\t\tawait new Promise<void>(res => fn(resp, () => res()));\r\n\t\t\t}\r\n\r\n\t\t\tif(!resp.ok) throw new Error(resp.statusText);\r\n\t\t\tif(!opts.skipConverting && resp.headers.get('Content-Type')?.startsWith('application/json')) return await resp.json();\r\n\t\t\tif(!opts.skipConverting && resp.headers.get('Content-Type')?.startsWith('text/plain')) return await <any>resp.text();\r\n\t\t\treturn resp;\r\n\t\t});\r\n\t}\r\n}\r\n\r\nXHR.addInterceptor((resp: Response, next: () => void) => {\r\n\tconst getErr = (e: any) => e.error?.message || e.reason?.message || e.message || e.statusText || e.toString();\r\n\tif(resp.status == 200) return next();\r\n\tif(resp.status == 400) throw new BadRequestError(getErr(resp));\r\n\tif(resp.status == 401) throw new UnauthorizedError(getErr(resp));\r\n\tif(resp.status == 403) throw new ForbiddenError(getErr(resp));\r\n\tif(resp.status == 404) throw new NotFoundError(getErr(resp));\r\n\tif(resp.status == 500) throw new InternalServerError(getErr(resp));\r\n\tthrow new CustomError(getErr(resp), resp.status);\r\n});\r\n"],"names":["clean","obj","undefinedOnly","o","key","value","deepCopy","dotNotation","prop","set","arr","flattenObj","parent","result","propName","includes","target","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","download","href","TypedEmitter","__publicField","event","args","l","listener","_a","res","unsubscribe","CustomError","message","code","err","newErr","BadRequestError","UnauthorizedError","ForbiddenError","NotFoundError","InternalServerError","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","match","md5","d","r","M","V","Y","X","_","m","f","h","g","md5_ii","md5_hh","md5_gg","md5_ff","safe_add","md5_cmn","bit_rol","validateEmail","email","formEncode","data","gravatar","def","urlParser","url","processed","groups","domains","query","q","val","PromiseProgress","executor","resolve","reject","reason","progress","p","callback","timeUntil","date","sleep","ms","formatDate","_XHR","opts","fn","headers","_b","resp","XHR","next","getErr"],"mappings":"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"}
1
+ {"version":3,"file":"utils.cjs","sources":["../src/objects.ts","../src/array.ts","../src/aset.ts","../src/download.ts","../src/emitter.ts","../src/errors.ts","../src/logger.ts","../src/math.ts","../src/string.ts","../src/misc.ts","../src/promise-progress.ts","../src/time.ts","../src/xhr.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 * 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 {\r\n\tget size() {\r\n\t\treturn this.length;\r\n\t}\r\n\r\n\tconstructor(elements: T[] = []) {\r\n\t\tsuper();\r\n\t\tif(!!elements?.['forEach'])\r\n\t\t\telements.forEach(el => this.add(el));\r\n\t}\r\n\r\n\tadd(el: T) {\r\n\t\tif(!this.has(el)) this.push(el);\r\n\t}\r\n\r\n\tdelete(el: T) {\r\n\t\tconst index = this.indexOf(el);\r\n\t\tif(index != -1) this.slice(index, 1);\r\n\t}\r\n\r\n\tdifference(set: ASet<T>) {\r\n\t\treturn new ASet<T>(this.reduce((acc, el) => {\r\n\t\t\tif(!set.has(el)) acc.push(el);\r\n\t\t\treturn acc;\r\n\t\t}, []));\r\n\t}\r\n\r\n\thas(el: T) {\r\n\t\treturn this.indexOf(el) != -1;\r\n\t}\r\n\r\n\tintersection(set: ASet<T>) {\r\n\t\treturn new ASet<T>(this.reduce((acc, el) => {\r\n\t\t\tif(set.has(el)) acc.push(el);\r\n\t\t\treturn acc;\r\n\t\t}, []));\r\n\t}\r\n\r\n\tisDisjointFrom(set: ASet<T>) {\r\n\t\treturn this.intersection(set).size == 0;\r\n\t}\r\n\r\n\tisSubsetOf(set: ASet<T>) {\r\n\t\treturn this.findIndex(el => !set.has(el)) == -1;\r\n\t}\r\n\r\n\tisSuperset(set: ASet<T>) {\r\n\t\treturn set.findIndex(el => !this.has(el)) == -1;\r\n\t}\r\n\r\n\tsymmetricDifference(set: ASet<T>) {\r\n\t\treturn new ASet([...this.difference(set), ...set.difference(this)]);\r\n\t}\r\n\r\n\tunion(set: ASet<T> | Array<T>) {\r\n\t\treturn new ASet([...this, ...set]);\r\n\t}\r\n}\r\n","export function download(href: any, name: string) {\r\n\tconst a = document.createElement('a');\r\n\ta.href = href;\r\n\ta.download = name;\r\n\tdocument.body.appendChild(a);\r\n\ta.click();\r\n\tdocument.body.removeChild(a);\r\n}\r\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 {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","/**\r\n * Convert decimal number to fraction\r\n *\r\n * @example\r\n * ```js\r\n * dec2Frac(1.25) // Outputs: \"1 1/4\"\r\n * ```\r\n *\r\n * @param {number} num Number to convert\r\n * @return {string} Fraction with remainder\r\n */\r\nexport function dec2Frac(num: number) {\r\n\tconst gcd = (a: number, b: number): number => {\r\n\t\tif (b < 0.0000001) return a;\r\n\t\treturn gcd(b, ~~(a % b));\r\n\t};\r\n\r\n\tconst len = num.toString().length - 2;\r\n\tlet denominator = Math.pow(10, len);\r\n\tlet numerator = num * denominator;\r\n\tconst divisor = gcd(numerator, denominator);\r\n\tnumerator = ~~(numerator / divisor);\r\n\tdenominator = ~~(denominator / divisor)\r\n\tconst remainder = ~~(numerator / denominator);\r\n\tnumerator -= remainder * denominator;\r\n\treturn `${remainder ? remainder + ' ' : ''}${~~(numerator)}/${~~(denominator)}`;\r\n}\r\n\r\n/**\r\n * Convert fraction to decimal number\r\n *\r\n * @example\r\n * ```js\r\n * fracToDec('1 1/4') // Outputs: 1.25\r\n * ```\r\n *\r\n * @param {string} frac Fraction to convert\r\n * @return {number} Faction as a decimal\r\n */\r\nexport function fracToDec(frac: string) {\r\n\tlet split = frac.split(' ');\r\n\tconst whole = split.length == 2 ? Number(split[0]) : 0;\r\n\tsplit = (<string>split.pop()).split('/');\r\n\treturn whole + (Number(split[0]) / Number(split[1]));\r\n}\r\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","export type ProgressCallback = (progress: number) => any;\r\n\r\nexport class PromiseProgress<T> extends Promise<T> {\r\n\tprivate listeners: ProgressCallback[] = [];\r\n\r\n\tprivate _progress = 0;\r\n\tget progress() { return this._progress; }\r\n\tset progress(p: number) {\r\n\t\tif(p == this._progress) return;\r\n\t\tthis._progress = p;\r\n\t\tthis.listeners.forEach(l => l(p));\r\n\t}\r\n\r\n\tconstructor(executor: (resolve: (value: T) => any, reject: (reason: any) => void, progress: (progress: number) => any) => void) {\r\n\t\tsuper((resolve, reject) => executor(\r\n\t\t\t(value: T) => resolve(value),\r\n\t\t\t(reason: any) => reject(reason),\r\n\t\t\t(progress: number) => this.progress = progress\r\n\t\t));\r\n\t}\r\n\r\n\tonProgress(callback: ProgressCallback) {\r\n\t\tthis.listeners.push(callback);\r\n\t\treturn this;\r\n\t}\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","import {\r\n\tBadRequestError,\r\n\tCustomError,\r\n\tForbiddenError,\r\n\tInternalServerError,\r\n\tNotFoundError,\r\n\tUnauthorizedError\r\n} from './errors.ts';\r\nimport {clean} from './objects';\r\n\r\nexport type Interceptor = (request: Response, next: () => void) => void;\r\n\r\nexport type RequestOptions = {\r\n\turl?: string;\r\n\tmethod?: 'GET' | 'POST' | 'PATCH' | 'DELETE';\r\n\tbody?: any;\r\n\theaders?: {[key: string | symbol]: string | null | undefined};\r\n\tskipConverting?: boolean;\r\n\t[key: string]: any;\r\n}\r\n\r\nexport type XhrOptions = {\r\n\theaders?: {[key: string | symbol]: string | null | undefined};\r\n\tinterceptors?: Interceptor[];\r\n\turl?: string;\r\n}\r\n\r\nexport class XHR {\r\n\tprivate static interceptors: {[key: string]: Interceptor} = {};\r\n\r\n\tstatic headers: {[key: string]: string | null | undefined} = {};\r\n\r\n\tprivate interceptors: {[key: string]: Interceptor} = {}\r\n\r\n\theaders: {[key: string]: string | null | undefined} = {}\r\n\r\n\tconstructor(public readonly opts: XhrOptions = {}) {\r\n\t\tthis.headers = opts.headers || {};\r\n\t\tif(opts.interceptors) {\r\n\t\t\topts.interceptors.forEach(i => XHR.addInterceptor(i));\r\n\t\t}\r\n\t}\r\n\r\n\tstatic addInterceptor(fn: Interceptor): () => void {\r\n\t\tconst key = Object.keys(XHR.interceptors).length.toString();\r\n\t\tXHR.interceptors[key] = fn;\r\n\t\treturn () => { XHR.interceptors[key] = <any>null; }\r\n\t}\r\n\r\n\taddInterceptor(fn: Interceptor): () => void {\r\n\t\tconst key = Object.keys(this.interceptors).length.toString();\r\n\t\tthis.interceptors[key] = fn;\r\n\t\treturn () => { this.interceptors[key] = <any>null; }\r\n\t}\r\n\r\n\tasync request<T>(opts: RequestOptions = {}): Promise<T> {\r\n\t\tif(!this.opts.url && !opts.url) throw new Error('URL needs to be set');\r\n\t\tconst url = (opts.url?.startsWith('http') ? opts.url : (this.opts.url || '') + (opts.url || '')).replace(/([^:]\\/)\\/+/g, '$1');\r\n\r\n\t\t// Prep headers\r\n\t\tconst headers = <any>clean({\r\n\t\t\t'Content-Type': (opts.body && !(opts.body instanceof FormData)) ? 'application/json' : undefined,\r\n\t\t\t...XHR.headers,\r\n\t\t\t...this.headers,\r\n\t\t\t...opts.headers\r\n\t\t});\r\n\r\n\t\t// Send request\r\n\t\treturn fetch(url, {\r\n\t\t\theaders,\r\n\t\t\tmethod: opts.method || (opts.body ? 'POST' : 'GET'),\r\n\t\t\tbody: (headers['Content-Type']?.startsWith('application/json') && opts.body) ? JSON.stringify(opts.body) : opts.body\r\n\t\t}).then(async resp => {\r\n\t\t\tfor(let fn of [...Object.values(XHR.interceptors), ...Object.values(this.interceptors)]) {\r\n\t\t\t\tawait new Promise<void>(res => fn(resp, () => res()));\r\n\t\t\t}\r\n\r\n\t\t\tif(!resp.ok) throw new Error(resp.statusText);\r\n\t\t\tif(!opts.skipConverting && resp.headers.get('Content-Type')?.startsWith('application/json')) return await resp.json();\r\n\t\t\tif(!opts.skipConverting && resp.headers.get('Content-Type')?.startsWith('text/plain')) return await <any>resp.text();\r\n\t\t\treturn resp;\r\n\t\t});\r\n\t}\r\n}\r\n"],"names":["clean","obj","undefinedOnly","o","key","value","deepCopy","dotNotation","prop","set","arr","flattenObj","parent","result","propName","includes","target","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","download","href","TypedEmitter","__publicField","event","args","l","listener","_a","res","unsubscribe","CustomError","message","code","err","newErr","BadRequestError","UnauthorizedError","ForbiddenError","NotFoundError","InternalServerError","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","match","md5","d","r","M","V","Y","X","_","m","f","h","g","md5_ii","md5_hh","md5_gg","md5_ff","safe_add","md5_cmn","bit_rol","validateEmail","email","formEncode","data","gravatar","def","urlParser","url","processed","groups","domains","query","q","val","PromiseProgress","executor","resolve","reject","reason","progress","p","callback","timeUntil","date","sleep","ms","formatDate","_XHR","opts","fn","headers","_b","resp","XHR"],"mappings":"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"}
package/dist/utils.mjs CHANGED
@@ -1,7 +1,7 @@
1
- var P = Object.defineProperty;
2
- var U = (n, e, t) => e in n ? P(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t;
3
- var c = (n, e, t) => (U(n, typeof e != "symbol" ? e + "" : e, t), t);
4
- function Y(n, e = !1) {
1
+ var D = Object.defineProperty;
2
+ var k = (n, e, t) => e in n ? D(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t;
3
+ var c = (n, e, t) => (k(n, typeof e != "symbol" ? e + "" : e, t), t);
4
+ function G(n, e = !1) {
5
5
  if (n == null)
6
6
  throw new Error("Cannot clean a NULL value");
7
7
  return Array.isArray(n) ? n = n.filter((t) => t != null) : Object.entries(n).forEach(([t, r]) => {
@@ -22,26 +22,26 @@ function A(n, e, t) {
22
22
  return t !== void 0 && s == i.length - 1 ? r[o] = t : r[o];
23
23
  }, n);
24
24
  }
25
- function H(n, e, t = {}) {
25
+ function j(n, e, t = {}) {
26
26
  if (typeof n == "object" && !Array.isArray(n)) {
27
27
  for (const r of Object.keys(n)) {
28
28
  const o = e ? e + "." + r : r;
29
- typeof n[r] == "object" ? H(n[r], o, t) : t[o] = n[r];
29
+ typeof n[r] == "object" ? j(n[r], o, t) : t[o] = n[r];
30
30
  }
31
31
  return t;
32
32
  }
33
33
  }
34
- function I(n, e, t = !1) {
34
+ function T(n, e, t = !1) {
35
35
  if (n == null)
36
36
  return t;
37
37
  if (Array.isArray(e))
38
- return e.findIndex((o, s) => !I(n[s], e[s], t)) == -1;
38
+ return e.findIndex((o, s) => !T(n[s], e[s], t)) == -1;
39
39
  const r = typeof e;
40
- return r != typeof n ? !1 : r == "object" ? Object.keys(e).find((o) => !I(n[o], e[o], t)) == null : r == "function" ? n.toString() == e.toString() : n == e;
40
+ return r != typeof n ? !1 : r == "object" ? Object.keys(e).find((o) => !T(n[o], e[o], t)) == null : r == "function" ? n.toString() == e.toString() : n == e;
41
41
  }
42
- function x(n, e) {
42
+ function B(n, e) {
43
43
  const t = typeof n, r = typeof e;
44
- 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((s) => x(n[s], e[s]));
44
+ 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((s) => B(n[s], e[s]));
45
45
  }
46
46
  function tt(n, e) {
47
47
  e.forEach((t) => {
@@ -69,9 +69,9 @@ function nt(n, e) {
69
69
  return n.indexOf(e) === -1 && n.push(e), n;
70
70
  }
71
71
  function rt(n, e) {
72
- return F([
73
- ...n.filter((t) => !e.includes((r) => x(t, r))),
74
- ...e.filter((t) => !n.includes((r) => x(t, r)))
72
+ return P([
73
+ ...n.filter((t) => !e.includes((r) => B(t, r))),
74
+ ...e.filter((t) => !n.includes((r) => B(t, r)))
75
75
  ]);
76
76
  }
77
77
  function ot(n) {
@@ -80,8 +80,8 @@ function ot(n) {
80
80
  return typeof r != "string" || typeof o != "string" ? 1 : r.toLowerCase().localeCompare(o.toLowerCase());
81
81
  };
82
82
  }
83
- function W(n, e = []) {
84
- return n.forEach((t) => Array.isArray(t) ? W(t, e) : e.push(t)), e;
83
+ function M(n, e = []) {
84
+ return n.forEach((t) => Array.isArray(t) ? M(t, e) : e.push(t)), e;
85
85
  }
86
86
  function st(n, e = !1) {
87
87
  return function(t, r) {
@@ -90,17 +90,17 @@ function st(n, e = !1) {
90
90
  };
91
91
  }
92
92
  function it(n, e) {
93
- return (t) => x(t[n], e);
93
+ return (t) => B(t[n], e);
94
94
  }
95
- function F(n) {
95
+ function P(n) {
96
96
  for (let e = n.length - 1; e >= 0; e--)
97
- n.slice(0, e).find((t) => x(t, n[e])) && n.splice(e, 1);
97
+ n.slice(0, e).find((t) => B(t, n[e])) && n.splice(e, 1);
98
98
  return n;
99
99
  }
100
100
  function ct(n) {
101
101
  return Array.isArray(n) ? n : [n];
102
102
  }
103
- class m extends Array {
103
+ class x extends Array {
104
104
  get size() {
105
105
  return this.length;
106
106
  }
@@ -115,13 +115,13 @@ class m extends Array {
115
115
  t != -1 && this.slice(t, 1);
116
116
  }
117
117
  difference(e) {
118
- return new m(this.reduce((t, r) => (e.has(r) || t.push(r), t), []));
118
+ return new x(this.reduce((t, r) => (e.has(r) || t.push(r), t), []));
119
119
  }
120
120
  has(e) {
121
121
  return this.indexOf(e) != -1;
122
122
  }
123
123
  intersection(e) {
124
- return new m(this.reduce((t, r) => (e.has(r) && t.push(r), t), []));
124
+ return new x(this.reduce((t, r) => (e.has(r) && t.push(r), t), []));
125
125
  }
126
126
  isDisjointFrom(e) {
127
127
  return this.intersection(e).size == 0;
@@ -133,10 +133,10 @@ class m extends Array {
133
133
  return e.findIndex((t) => !this.has(t)) == -1;
134
134
  }
135
135
  symmetricDifference(e) {
136
- return new m([...this.difference(e), ...e.difference(this)]);
136
+ return new x([...this.difference(e), ...e.difference(this)]);
137
137
  }
138
138
  union(e) {
139
- return new m([...this, ...e]);
139
+ return new x([...this, ...e]);
140
140
  }
141
141
  }
142
142
  function ut(n, e) {
@@ -213,7 +213,7 @@ class E extends Error {
213
213
  }
214
214
  }
215
215
  c(E, "code", 500);
216
- class D extends E {
216
+ class U extends E {
217
217
  constructor(e = "Bad Request") {
218
218
  super(e);
219
219
  }
@@ -221,8 +221,8 @@ class D extends E {
221
221
  return e.constructor.code == this.code;
222
222
  }
223
223
  }
224
- c(D, "code", 400);
225
- class k extends E {
224
+ c(U, "code", 400);
225
+ class Y extends E {
226
226
  constructor(e = "Unauthorized") {
227
227
  super(e);
228
228
  }
@@ -230,8 +230,8 @@ class k extends E {
230
230
  return e.constructor.code == this.code;
231
231
  }
232
232
  }
233
- c(k, "code", 401);
234
- class G extends E {
233
+ c(Y, "code", 401);
234
+ class H extends E {
235
235
  constructor(e = "Forbidden") {
236
236
  super(e);
237
237
  }
@@ -239,8 +239,8 @@ class G extends E {
239
239
  return e.constructor.code == this.code;
240
240
  }
241
241
  }
242
- c(G, "code", 403);
243
- class j extends E {
242
+ c(H, "code", 403);
243
+ class W extends E {
244
244
  constructor(e = "Not Found") {
245
245
  super(e);
246
246
  }
@@ -248,8 +248,8 @@ class j extends E {
248
248
  return e.constructor.code == this.code;
249
249
  }
250
250
  }
251
- c(j, "code", 404);
252
- class M extends E {
251
+ c(W, "code", 404);
252
+ class F extends E {
253
253
  constructor(e = "Internal Server Error") {
254
254
  super(e);
255
255
  }
@@ -257,8 +257,8 @@ class M extends E {
257
257
  return e.constructor.code == this.code;
258
258
  }
259
259
  }
260
- c(M, "code", 500);
261
- const w = {
260
+ c(F, "code", 500);
261
+ const m = {
262
262
  CLEAR: "\x1B[0m",
263
263
  BRIGHT: "\x1B[1m",
264
264
  DIM: "\x1B[2m",
@@ -266,7 +266,7 @@ const w = {
266
266
  BLINK: "\x1B[5m",
267
267
  REVERSE: "\x1B[7m",
268
268
  HIDDEN: "\x1B[8m"
269
- }, B = {
269
+ }, w = {
270
270
  BLACK: "\x1B[30m",
271
271
  RED: "\x1B[31m",
272
272
  GREEN: "\x1B[32m",
@@ -314,37 +314,37 @@ const f = class f extends $ {
314
314
  if (f.LOG_LEVEL < 4)
315
315
  return;
316
316
  const t = this.format(...e);
317
- f.emit(4, t), console.debug(B.LIGHT_GREY + t + w.CLEAR);
317
+ f.emit(4, t), console.debug(w.LIGHT_GREY + t + m.CLEAR);
318
318
  }
319
319
  log(...e) {
320
320
  if (f.LOG_LEVEL < 3)
321
321
  return;
322
322
  const t = this.format(...e);
323
- f.emit(3, t), console.log(w.CLEAR + t);
323
+ f.emit(3, t), console.log(m.CLEAR + t);
324
324
  }
325
325
  info(...e) {
326
326
  if (f.LOG_LEVEL < 2)
327
327
  return;
328
328
  const t = this.format(...e);
329
- f.emit(2, t), console.info(B.BLUE + t + w.CLEAR);
329
+ f.emit(2, t), console.info(w.BLUE + t + m.CLEAR);
330
330
  }
331
331
  warn(...e) {
332
332
  if (f.LOG_LEVEL < 1)
333
333
  return;
334
334
  const t = this.format(...e);
335
- f.emit(1, t), console.warn(B.YELLOW + t + w.CLEAR);
335
+ f.emit(1, t), console.warn(w.YELLOW + t + m.CLEAR);
336
336
  }
337
337
  error(...e) {
338
338
  if (f.LOG_LEVEL < 0)
339
339
  return;
340
340
  const t = this.format(...e);
341
- f.emit(0, t), console.error(B.RED + t + w.CLEAR);
341
+ f.emit(0, t), console.error(w.RED + t + m.CLEAR);
342
342
  }
343
343
  };
344
344
  c(f, "LOG_LEVEL", 4);
345
345
  let L = f;
346
346
  function ht(n) {
347
- const e = (d, g) => g < 1e-7 ? d : e(g, ~~(d % g)), t = n.toString().length - 2;
347
+ const e = (d, p) => p < 1e-7 ? d : e(p, ~~(d % p)), t = n.toString().length - 2;
348
348
  let r = Math.pow(10, t), o = n * r;
349
349
  const s = e(o, r);
350
350
  o = ~~(o / s), r = ~~(r / s);
@@ -362,14 +362,14 @@ function ft(n, e) {
362
362
  function dt(n) {
363
363
  return Array(n).fill(null).map(() => Math.round(Math.random() * 15).toString(16)).join("");
364
364
  }
365
- const R = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", N = "0123456789", T = "~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/", v = R + N + T;
366
- function gt(n) {
365
+ const R = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", N = "0123456789", b = "~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/", v = R + N + b;
366
+ function pt(n) {
367
367
  const e = /(\+?1)?.*?(\d{3}).*?(\d{3}).*?(\d{4})/g.exec(n);
368
368
  if (!e)
369
369
  throw new Error(`Number cannot be parsed: ${n}`);
370
370
  return `${e[1] ?? ""} (${e[2]}) ${e[3]}-${e[4]}`.trim();
371
371
  }
372
- function pt(n, e, t) {
372
+ function gt(n, e, t) {
373
373
  return `${n.slice(0, t)}${e}${n.slice(t + 1)}`;
374
374
  }
375
375
  function yt(n, e, t, r = !0) {
@@ -385,19 +385,19 @@ function Et(n, e = v) {
385
385
  return e[t];
386
386
  }).join("");
387
387
  }
388
- function wt(n, e = !1, t = !1, r = !1) {
388
+ function mt(n, e = !1, t = !1, r = !1) {
389
389
  if (!e && !t && !r)
390
390
  throw new Error("Must enable at least one: letters, numbers, symbols");
391
391
  return Array(n).fill(null).map(() => {
392
392
  let o;
393
393
  do {
394
394
  const s = ~~(Math.random() * 3);
395
- e && s == 0 ? o = R[~~(Math.random() * R.length)] : t && s == 1 ? o = N[~~(Math.random() * N.length)] : r && s == 2 && (o = T[~~(Math.random() * T.length)]);
395
+ e && s == 0 ? o = R[~~(Math.random() * R.length)] : t && s == 1 ? o = N[~~(Math.random() * N.length)] : r && s == 2 && (o = b[~~(Math.random() * b.length)]);
396
396
  } while (!o);
397
397
  return o;
398
398
  }).join("");
399
399
  }
400
- function mt(n, e) {
400
+ function xt(n, e) {
401
401
  if (typeof e == "string" && (e = new RegExp(e, "g")), !e.global)
402
402
  throw new TypeError("Regular expression must be global.");
403
403
  let t = [], r;
@@ -429,25 +429,25 @@ function V(n) {
429
429
  function Z(n, e) {
430
430
  n[e >> 5] |= 128 << e % 32, n[14 + (e + 64 >>> 9 << 4)] = e;
431
431
  for (var t = 1732584193, r = -271733879, o = -1732584194, s = 271733878, i = 0; i < n.length; i += 16) {
432
- var d = t, g = r, C = o, O = s;
433
- r = l(r = l(r = l(r = l(r = h(r = h(r = h(r = h(r = a(r = a(r = a(r = a(r = u(r = u(r = u(r = u(r, o = u(o, s = u(s, t = u(t, r, o, s, n[i + 0], 7, -680876936), r, o, n[i + 1], 12, -389564586), t, r, n[i + 2], 17, 606105819), s, t, n[i + 3], 22, -1044525330), o = u(o, s = u(s, t = u(t, r, o, s, n[i + 4], 7, -176418897), r, o, n[i + 5], 12, 1200080426), t, r, n[i + 6], 17, -1473231341), s, t, n[i + 7], 22, -45705983), o = u(o, s = u(s, t = u(t, r, o, s, n[i + 8], 7, 1770035416), r, o, n[i + 9], 12, -1958414417), t, r, n[i + 10], 17, -42063), s, t, n[i + 11], 22, -1990404162), o = u(o, s = u(s, t = u(t, r, o, s, n[i + 12], 7, 1804603682), r, o, n[i + 13], 12, -40341101), t, r, n[i + 14], 17, -1502002290), s, t, n[i + 15], 22, 1236535329), o = a(o, s = a(s, t = a(t, r, o, s, n[i + 1], 5, -165796510), r, o, n[i + 6], 9, -1069501632), t, r, n[i + 11], 14, 643717713), s, t, n[i + 0], 20, -373897302), o = a(o, s = a(s, t = a(t, r, o, s, n[i + 5], 5, -701558691), r, o, n[i + 10], 9, 38016083), t, r, n[i + 15], 14, -660478335), s, t, n[i + 4], 20, -405537848), o = a(o, s = a(s, t = a(t, r, o, s, n[i + 9], 5, 568446438), r, o, n[i + 14], 9, -1019803690), t, r, n[i + 3], 14, -187363961), s, t, n[i + 8], 20, 1163531501), o = a(o, s = a(s, t = a(t, r, o, s, n[i + 13], 5, -1444681467), r, o, n[i + 2], 9, -51403784), t, r, n[i + 7], 14, 1735328473), s, t, n[i + 12], 20, -1926607734), o = h(o, s = h(s, t = h(t, r, o, s, n[i + 5], 4, -378558), r, o, n[i + 8], 11, -2022574463), t, r, n[i + 11], 16, 1839030562), s, t, n[i + 14], 23, -35309556), o = h(o, s = h(s, t = h(t, r, o, s, n[i + 1], 4, -1530992060), r, o, n[i + 4], 11, 1272893353), t, r, n[i + 7], 16, -155497632), s, t, n[i + 10], 23, -1094730640), o = h(o, s = h(s, t = h(t, r, o, s, n[i + 13], 4, 681279174), r, o, n[i + 0], 11, -358537222), t, r, n[i + 3], 16, -722521979), s, t, n[i + 6], 23, 76029189), o = h(o, s = h(s, t = h(t, r, o, s, n[i + 9], 4, -640364487), r, o, n[i + 12], 11, -421815835), t, r, n[i + 15], 16, 530742520), s, t, n[i + 2], 23, -995338651), o = l(o, s = l(s, t = l(t, r, o, s, n[i + 0], 6, -198630844), r, o, n[i + 7], 10, 1126891415), t, r, n[i + 14], 15, -1416354905), s, t, n[i + 5], 21, -57434055), o = l(o, s = l(s, t = l(t, r, o, s, n[i + 12], 6, 1700485571), r, o, n[i + 3], 10, -1894986606), t, r, n[i + 10], 15, -1051523), s, t, n[i + 1], 21, -2054922799), o = l(o, s = l(s, t = l(t, r, o, s, n[i + 8], 6, 1873313359), r, o, n[i + 15], 10, -30611744), t, r, n[i + 6], 15, -1560198380), s, t, n[i + 13], 21, 1309151649), o = l(o, s = l(s, t = l(t, r, o, s, n[i + 4], 6, -145523070), r, o, n[i + 11], 10, -1120210379), t, r, n[i + 2], 15, 718787259), s, t, n[i + 9], 21, -343485551), t = y(t, d), r = y(r, g), o = y(o, C), s = y(s, O);
432
+ var d = t, p = r, O = o, S = s;
433
+ r = l(r = l(r = l(r = l(r = h(r = h(r = h(r = h(r = a(r = a(r = a(r = a(r = u(r = u(r = u(r = u(r, o = u(o, s = u(s, t = u(t, r, o, s, n[i + 0], 7, -680876936), r, o, n[i + 1], 12, -389564586), t, r, n[i + 2], 17, 606105819), s, t, n[i + 3], 22, -1044525330), o = u(o, s = u(s, t = u(t, r, o, s, n[i + 4], 7, -176418897), r, o, n[i + 5], 12, 1200080426), t, r, n[i + 6], 17, -1473231341), s, t, n[i + 7], 22, -45705983), o = u(o, s = u(s, t = u(t, r, o, s, n[i + 8], 7, 1770035416), r, o, n[i + 9], 12, -1958414417), t, r, n[i + 10], 17, -42063), s, t, n[i + 11], 22, -1990404162), o = u(o, s = u(s, t = u(t, r, o, s, n[i + 12], 7, 1804603682), r, o, n[i + 13], 12, -40341101), t, r, n[i + 14], 17, -1502002290), s, t, n[i + 15], 22, 1236535329), o = a(o, s = a(s, t = a(t, r, o, s, n[i + 1], 5, -165796510), r, o, n[i + 6], 9, -1069501632), t, r, n[i + 11], 14, 643717713), s, t, n[i + 0], 20, -373897302), o = a(o, s = a(s, t = a(t, r, o, s, n[i + 5], 5, -701558691), r, o, n[i + 10], 9, 38016083), t, r, n[i + 15], 14, -660478335), s, t, n[i + 4], 20, -405537848), o = a(o, s = a(s, t = a(t, r, o, s, n[i + 9], 5, 568446438), r, o, n[i + 14], 9, -1019803690), t, r, n[i + 3], 14, -187363961), s, t, n[i + 8], 20, 1163531501), o = a(o, s = a(s, t = a(t, r, o, s, n[i + 13], 5, -1444681467), r, o, n[i + 2], 9, -51403784), t, r, n[i + 7], 14, 1735328473), s, t, n[i + 12], 20, -1926607734), o = h(o, s = h(s, t = h(t, r, o, s, n[i + 5], 4, -378558), r, o, n[i + 8], 11, -2022574463), t, r, n[i + 11], 16, 1839030562), s, t, n[i + 14], 23, -35309556), o = h(o, s = h(s, t = h(t, r, o, s, n[i + 1], 4, -1530992060), r, o, n[i + 4], 11, 1272893353), t, r, n[i + 7], 16, -155497632), s, t, n[i + 10], 23, -1094730640), o = h(o, s = h(s, t = h(t, r, o, s, n[i + 13], 4, 681279174), r, o, n[i + 0], 11, -358537222), t, r, n[i + 3], 16, -722521979), s, t, n[i + 6], 23, 76029189), o = h(o, s = h(s, t = h(t, r, o, s, n[i + 9], 4, -640364487), r, o, n[i + 12], 11, -421815835), t, r, n[i + 15], 16, 530742520), s, t, n[i + 2], 23, -995338651), o = l(o, s = l(s, t = l(t, r, o, s, n[i + 0], 6, -198630844), r, o, n[i + 7], 10, 1126891415), t, r, n[i + 14], 15, -1416354905), s, t, n[i + 5], 21, -57434055), o = l(o, s = l(s, t = l(t, r, o, s, n[i + 12], 6, 1700485571), r, o, n[i + 3], 10, -1894986606), t, r, n[i + 10], 15, -1051523), s, t, n[i + 1], 21, -2054922799), o = l(o, s = l(s, t = l(t, r, o, s, n[i + 8], 6, 1873313359), r, o, n[i + 15], 10, -30611744), t, r, n[i + 6], 15, -1560198380), s, t, n[i + 13], 21, 1309151649), o = l(o, s = l(s, t = l(t, r, o, s, n[i + 4], 6, -145523070), r, o, n[i + 11], 10, -1120210379), t, r, n[i + 2], 15, 718787259), s, t, n[i + 9], 21, -343485551), t = y(t, d), r = y(r, p), o = y(o, O), s = y(s, S);
434
434
  }
435
435
  return Array(t, r, o, s);
436
436
  }
437
- function S(n, e, t, r, o, s) {
437
+ function C(n, e, t, r, o, s) {
438
438
  return y(Q(y(y(e, n), y(r, s)), o), t);
439
439
  }
440
440
  function u(n, e, t, r, o, s, i) {
441
- return S(e & t | ~e & r, n, e, o, s, i);
441
+ return C(e & t | ~e & r, n, e, o, s, i);
442
442
  }
443
443
  function a(n, e, t, r, o, s, i) {
444
- return S(e & r | t & ~r, n, e, o, s, i);
444
+ return C(e & r | t & ~r, n, e, o, s, i);
445
445
  }
446
446
  function h(n, e, t, r, o, s, i) {
447
- return S(e ^ t ^ r, n, e, o, s, i);
447
+ return C(e ^ t ^ r, n, e, o, s, i);
448
448
  }
449
449
  function l(n, e, t, r, o, s, i) {
450
- return S(t ^ (e | ~r), n, e, o, s, i);
450
+ return C(t ^ (e | ~r), n, e, o, s, i);
451
451
  }
452
452
  function y(n, e) {
453
453
  var t = (65535 & n) + (65535 & e);
@@ -456,10 +456,10 @@ function y(n, e) {
456
456
  function Q(n, e) {
457
457
  return n << e | n >>> 32 - e;
458
458
  }
459
- function xt(n) {
459
+ function Bt(n) {
460
460
  return /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/.test(n);
461
461
  }
462
- function Bt(n) {
462
+ function wt(n) {
463
463
  return Object.entries(n).map(
464
464
  ([e, t]) => encodeURIComponent(e) + "=" + encodeURIComponent(t)
465
465
  ).join("&");
@@ -467,7 +467,7 @@ function Bt(n) {
467
467
  function At(n, e = "mp") {
468
468
  return n ? `https://www.gravatar.com/avatar/${z(n)}?d=${e}` : "";
469
469
  }
470
- function St(n) {
470
+ function Ct(n) {
471
471
  const e = new RegExp(
472
472
  "(?:(?<protocol>[\\w\\d]+)\\:\\/\\/)?(?:(?<user>.+)\\@)?(?<host>(?<domain>[^:\\/\\?#@\\n]+)(?:\\:(?<port>\\d*))?)(?<path>\\/.*?)?(?:\\?(?<query>.*?))?(?:#(?<fragment>.*?))?$",
473
473
  "gm"
@@ -475,13 +475,13 @@ function St(n) {
475
475
  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) {
476
476
  const o = t.query.split("&"), s = {};
477
477
  o.forEach((i) => {
478
- const [d, g] = i.split("=");
479
- s[d] = g;
478
+ const [d, p] = i.split("=");
479
+ s[d] = p;
480
480
  }), t.query = s;
481
481
  }
482
482
  return t;
483
483
  }
484
- class Ct extends Promise {
484
+ class Ot extends Promise {
485
485
  constructor(t) {
486
486
  super((r, o) => t(
487
487
  (s) => r(s),
@@ -501,7 +501,7 @@ class Ct extends Promise {
501
501
  return this.listeners.push(t), this;
502
502
  }
503
503
  }
504
- function Ot(n) {
504
+ function St(n) {
505
505
  return (n instanceof Date ? n.getTime() : n) - (/* @__PURE__ */ new Date()).getTime();
506
506
  }
507
507
  function Rt(n) {
@@ -518,16 +518,16 @@ function Nt(n) {
518
518
  hour12: !0
519
519
  }).format(e);
520
520
  }
521
- const p = class p {
521
+ const g = class g {
522
522
  constructor(e = {}) {
523
523
  c(this, "interceptors", {});
524
524
  c(this, "headers", {});
525
- this.opts = e, this.headers = e.headers || {}, e.interceptors && e.interceptors.forEach((t) => p.addInterceptor(t));
525
+ this.opts = e, this.headers = e.headers || {}, e.interceptors && e.interceptors.forEach((t) => g.addInterceptor(t));
526
526
  }
527
527
  static addInterceptor(e) {
528
- const t = Object.keys(p.interceptors).length.toString();
529
- return p.interceptors[t] = e, () => {
530
- p.interceptors[t] = null;
528
+ const t = Object.keys(g.interceptors).length.toString();
529
+ return g.interceptors[t] = e, () => {
530
+ g.interceptors[t] = null;
531
531
  };
532
532
  }
533
533
  addInterceptor(e) {
@@ -540,9 +540,9 @@ const p = class p {
540
540
  var o, s;
541
541
  if (!this.opts.url && !e.url)
542
542
  throw new Error("URL needs to be set");
543
- const t = ((o = e.url) != null && o.startsWith("http") ? e.url : (this.opts.url || "") + (e.url || "")).replace(/([^:]\/)\/+/g, "$1"), r = Y({
543
+ const t = ((o = e.url) != null && o.startsWith("http") ? e.url : (this.opts.url || "") + (e.url || "")).replace(/([^:]\/)\/+/g, "$1"), r = G({
544
544
  "Content-Type": e.body && !(e.body instanceof FormData) ? "application/json" : void 0,
545
- ...p.headers,
545
+ ...g.headers,
546
546
  ...this.headers,
547
547
  ...e.headers
548
548
  });
@@ -551,46 +551,37 @@ const p = class p {
551
551
  method: e.method || (e.body ? "POST" : "GET"),
552
552
  body: (s = r["Content-Type"]) != null && s.startsWith("application/json") && e.body ? JSON.stringify(e.body) : e.body
553
553
  }).then(async (i) => {
554
- var d, g;
555
- for (let C of [...Object.values(p.interceptors), ...Object.values(this.interceptors)])
556
- await new Promise((O) => C(i, () => O()));
554
+ var d, p;
555
+ for (let O of [...Object.values(g.interceptors), ...Object.values(this.interceptors)])
556
+ await new Promise((S) => O(i, () => S()));
557
557
  if (!i.ok)
558
558
  throw new Error(i.statusText);
559
- return !e.skipConverting && ((d = i.headers.get("Content-Type")) != null && d.startsWith("application/json")) ? await i.json() : !e.skipConverting && ((g = i.headers.get("Content-Type")) != null && g.startsWith("text/plain")) ? await i.text() : i;
559
+ return !e.skipConverting && ((d = i.headers.get("Content-Type")) != null && d.startsWith("application/json")) ? await i.json() : !e.skipConverting && ((p = i.headers.get("Content-Type")) != null && p.startsWith("text/plain")) ? await i.text() : i;
560
560
  });
561
561
  }
562
562
  };
563
- c(p, "interceptors", {}), c(p, "headers", {});
564
- let b = p;
565
- b.addInterceptor((n, e) => {
566
- const t = (r) => {
567
- var o, s;
568
- return ((o = r.error) == null ? void 0 : o.message) || ((s = r.reason) == null ? void 0 : s.message) || r.message || r.statusText || r.toString();
569
- };
570
- if (n.status == 200)
571
- return e();
572
- throw n.status == 400 ? new D(t(n)) : n.status == 401 ? new k(t(n)) : n.status == 403 ? new G(t(n)) : n.status == 404 ? new j(t(n)) : n.status == 500 ? new M(t(n)) : new E(t(n), n.status);
573
- });
563
+ c(g, "interceptors", {}), c(g, "headers", {});
564
+ let I = g;
574
565
  export {
575
- m as ASet,
576
- D as BadRequestError,
566
+ x as ASet,
567
+ U as BadRequestError,
577
568
  at as CliBackground,
578
- w as CliEffects,
579
- B as CliForeground,
569
+ m as CliEffects,
570
+ w as CliForeground,
580
571
  E as CustomError,
581
- G as ForbiddenError,
582
- M as InternalServerError,
572
+ H as ForbiddenError,
573
+ F as InternalServerError,
583
574
  q as LOG_LEVEL,
584
575
  L as Logger,
585
- j as NotFoundError,
586
- Ct as PromiseProgress,
576
+ W as NotFoundError,
577
+ Ot as PromiseProgress,
587
578
  $ as TypedEmitter,
588
- k as UnauthorizedError,
589
- b as XHR,
579
+ Y as UnauthorizedError,
580
+ I as XHR,
590
581
  nt as addUnique,
591
582
  rt as arrayDiff,
592
583
  ot as caseInsensitiveSort,
593
- Y as clean,
584
+ G as clean,
594
585
  ft as countChars,
595
586
  dt as createHex,
596
587
  ht as dec2Frac,
@@ -598,29 +589,29 @@ export {
598
589
  A as dotNotation,
599
590
  ut as download,
600
591
  it as findByProp,
601
- W as flattenArr,
602
- H as flattenObj,
603
- Bt as formEncode,
592
+ M as flattenArr,
593
+ j as flattenObj,
594
+ wt as formEncode,
604
595
  Nt as formatDate,
605
- gt as formatPhoneNumber,
596
+ pt as formatPhoneNumber,
606
597
  lt as fracToDec,
607
598
  At as gravatar,
608
- I as includes,
609
- pt as insertAt,
610
- x as isEqual,
599
+ T as includes,
600
+ gt as insertAt,
601
+ B as isEqual,
611
602
  ct as makeArray,
612
- F as makeUnique,
613
- mt as matchAll,
603
+ P as makeUnique,
604
+ xt as matchAll,
614
605
  z as md5,
615
606
  tt as mixin,
616
607
  yt as pad,
617
608
  Et as randomString,
618
- wt as randomStringBuilder,
609
+ mt as randomStringBuilder,
619
610
  et as sanitizedJSON,
620
611
  Rt as sleep,
621
612
  st as sortByProp,
622
- Ot as timeUntil,
623
- St as urlParser,
624
- xt as validateEmail
613
+ St as timeUntil,
614
+ Ct as urlParser,
615
+ Bt as validateEmail
625
616
  };
626
617
  //# sourceMappingURL=utils.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.mjs","sources":["../src/objects.ts","../src/array.ts","../src/aset.ts","../src/download.ts","../src/emitter.ts","../src/errors.ts","../src/logger.ts","../src/math.ts","../src/string.ts","../src/misc.ts","../src/promise-progress.ts","../src/time.ts","../src/xhr.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 * 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 {\r\n\tget size() {\r\n\t\treturn this.length;\r\n\t}\r\n\r\n\tconstructor(elements: T[] = []) {\r\n\t\tsuper();\r\n\t\tif(!!elements?.['forEach'])\r\n\t\t\telements.forEach(el => this.add(el));\r\n\t}\r\n\r\n\tadd(el: T) {\r\n\t\tif(!this.has(el)) this.push(el);\r\n\t}\r\n\r\n\tdelete(el: T) {\r\n\t\tconst index = this.indexOf(el);\r\n\t\tif(index != -1) this.slice(index, 1);\r\n\t}\r\n\r\n\tdifference(set: ASet<T>) {\r\n\t\treturn new ASet<T>(this.reduce((acc, el) => {\r\n\t\t\tif(!set.has(el)) acc.push(el);\r\n\t\t\treturn acc;\r\n\t\t}, []));\r\n\t}\r\n\r\n\thas(el: T) {\r\n\t\treturn this.indexOf(el) != -1;\r\n\t}\r\n\r\n\tintersection(set: ASet<T>) {\r\n\t\treturn new ASet<T>(this.reduce((acc, el) => {\r\n\t\t\tif(set.has(el)) acc.push(el);\r\n\t\t\treturn acc;\r\n\t\t}, []));\r\n\t}\r\n\r\n\tisDisjointFrom(set: ASet<T>) {\r\n\t\treturn this.intersection(set).size == 0;\r\n\t}\r\n\r\n\tisSubsetOf(set: ASet<T>) {\r\n\t\treturn this.findIndex(el => !set.has(el)) == -1;\r\n\t}\r\n\r\n\tisSuperset(set: ASet<T>) {\r\n\t\treturn set.findIndex(el => !this.has(el)) == -1;\r\n\t}\r\n\r\n\tsymmetricDifference(set: ASet<T>) {\r\n\t\treturn new ASet([...this.difference(set), ...set.difference(this)]);\r\n\t}\r\n\r\n\tunion(set: ASet<T> | Array<T>) {\r\n\t\treturn new ASet([...this, ...set]);\r\n\t}\r\n}\r\n","export function download(href: any, name: string) {\r\n\tconst a = document.createElement('a');\r\n\ta.href = href;\r\n\ta.download = name;\r\n\tdocument.body.appendChild(a);\r\n\ta.click();\r\n\tdocument.body.removeChild(a);\r\n}\r\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 {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","/**\r\n * Convert decimal number to fraction\r\n *\r\n * @example\r\n * ```js\r\n * dec2Frac(1.25) // Outputs: \"1 1/4\"\r\n * ```\r\n *\r\n * @param {number} num Number to convert\r\n * @return {string} Fraction with remainder\r\n */\r\nexport function dec2Frac(num: number) {\r\n\tconst gcd = (a: number, b: number): number => {\r\n\t\tif (b < 0.0000001) return a;\r\n\t\treturn gcd(b, ~~(a % b));\r\n\t};\r\n\r\n\tconst len = num.toString().length - 2;\r\n\tlet denominator = Math.pow(10, len);\r\n\tlet numerator = num * denominator;\r\n\tconst divisor = gcd(numerator, denominator);\r\n\tnumerator = ~~(numerator / divisor);\r\n\tdenominator = ~~(denominator / divisor)\r\n\tconst remainder = ~~(numerator / denominator);\r\n\tnumerator -= remainder * denominator;\r\n\treturn `${remainder ? remainder + ' ' : ''}${~~(numerator)}/${~~(denominator)}`;\r\n}\r\n\r\n/**\r\n * Convert fraction to decimal number\r\n *\r\n * @example\r\n * ```js\r\n * fracToDec('1 1/4') // Outputs: 1.25\r\n * ```\r\n *\r\n * @param {string} frac Fraction to convert\r\n * @return {number} Faction as a decimal\r\n */\r\nexport function fracToDec(frac: string) {\r\n\tlet split = frac.split(' ');\r\n\tconst whole = split.length == 2 ? Number(split[0]) : 0;\r\n\tsplit = (<string>split.pop()).split('/');\r\n\treturn whole + (Number(split[0]) / Number(split[1]));\r\n}\r\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","export type ProgressCallback = (progress: number) => any;\r\n\r\nexport class PromiseProgress<T> extends Promise<T> {\r\n\tprivate listeners: ProgressCallback[] = [];\r\n\r\n\tprivate _progress = 0;\r\n\tget progress() { return this._progress; }\r\n\tset progress(p: number) {\r\n\t\tif(p == this._progress) return;\r\n\t\tthis._progress = p;\r\n\t\tthis.listeners.forEach(l => l(p));\r\n\t}\r\n\r\n\tconstructor(executor: (resolve: (value: T) => any, reject: (reason: any) => void, progress: (progress: number) => any) => void) {\r\n\t\tsuper((resolve, reject) => executor(\r\n\t\t\t(value: T) => resolve(value),\r\n\t\t\t(reason: any) => reject(reason),\r\n\t\t\t(progress: number) => this.progress = progress\r\n\t\t));\r\n\t}\r\n\r\n\tonProgress(callback: ProgressCallback) {\r\n\t\tthis.listeners.push(callback);\r\n\t\treturn this;\r\n\t}\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","import {\r\n\tBadRequestError,\r\n\tCustomError,\r\n\tForbiddenError,\r\n\tInternalServerError,\r\n\tNotFoundError,\r\n\tUnauthorizedError\r\n} from './errors.ts';\r\nimport {clean} from './objects';\r\n\r\nexport type Interceptor = (request: Response, next: () => void) => void;\r\n\r\nexport type RequestOptions = {\r\n\turl?: string;\r\n\tmethod?: 'GET' | 'POST' | 'PATCH' | 'DELETE';\r\n\tbody?: any;\r\n\theaders?: {[key: string | symbol]: string | null | undefined};\r\n\tskipConverting?: boolean;\r\n\t[key: string]: any;\r\n}\r\n\r\nexport type XhrOptions = {\r\n\theaders?: {[key: string | symbol]: string | null | undefined};\r\n\tinterceptors?: Interceptor[];\r\n\turl?: string;\r\n}\r\n\r\nexport class XHR {\r\n\tprivate static interceptors: {[key: string]: Interceptor} = {};\r\n\r\n\tstatic headers: {[key: string]: string | null | undefined} = {};\r\n\r\n\tprivate interceptors: {[key: string]: Interceptor} = {}\r\n\r\n\theaders: {[key: string]: string | null | undefined} = {}\r\n\r\n\tconstructor(public readonly opts: XhrOptions = {}) {\r\n\t\tthis.headers = opts.headers || {};\r\n\t\tif(opts.interceptors) {\r\n\t\t\topts.interceptors.forEach(i => XHR.addInterceptor(i));\r\n\t\t}\r\n\t}\r\n\r\n\tstatic addInterceptor(fn: Interceptor): () => void {\r\n\t\tconst key = Object.keys(XHR.interceptors).length.toString();\r\n\t\tXHR.interceptors[key] = fn;\r\n\t\treturn () => { XHR.interceptors[key] = <any>null; }\r\n\t}\r\n\r\n\taddInterceptor(fn: Interceptor): () => void {\r\n\t\tconst key = Object.keys(this.interceptors).length.toString();\r\n\t\tthis.interceptors[key] = fn;\r\n\t\treturn () => { this.interceptors[key] = <any>null; }\r\n\t}\r\n\r\n\tasync request<T>(opts: RequestOptions = {}): Promise<T> {\r\n\t\tif(!this.opts.url && !opts.url) throw new Error('URL needs to be set');\r\n\t\tconst url = (opts.url?.startsWith('http') ? opts.url : (this.opts.url || '') + (opts.url || '')).replace(/([^:]\\/)\\/+/g, '$1');\r\n\r\n\t\t// Prep headers\r\n\t\tconst headers = <any>clean({\r\n\t\t\t'Content-Type': (opts.body && !(opts.body instanceof FormData)) ? 'application/json' : undefined,\r\n\t\t\t...XHR.headers,\r\n\t\t\t...this.headers,\r\n\t\t\t...opts.headers\r\n\t\t});\r\n\r\n\t\t// Send request\r\n\t\treturn fetch(url, {\r\n\t\t\theaders,\r\n\t\t\tmethod: opts.method || (opts.body ? 'POST' : 'GET'),\r\n\t\t\tbody: (headers['Content-Type']?.startsWith('application/json') && opts.body) ? JSON.stringify(opts.body) : opts.body\r\n\t\t}).then(async resp => {\r\n\t\t\tfor(let fn of [...Object.values(XHR.interceptors), ...Object.values(this.interceptors)]) {\r\n\t\t\t\tawait new Promise<void>(res => fn(resp, () => res()));\r\n\t\t\t}\r\n\r\n\t\t\tif(!resp.ok) throw new Error(resp.statusText);\r\n\t\t\tif(!opts.skipConverting && resp.headers.get('Content-Type')?.startsWith('application/json')) return await resp.json();\r\n\t\t\tif(!opts.skipConverting && resp.headers.get('Content-Type')?.startsWith('text/plain')) return await <any>resp.text();\r\n\t\t\treturn resp;\r\n\t\t});\r\n\t}\r\n}\r\n\r\nXHR.addInterceptor((resp: Response, next: () => void) => {\r\n\tconst getErr = (e: any) => e.error?.message || e.reason?.message || e.message || e.statusText || e.toString();\r\n\tif(resp.status == 200) return next();\r\n\tif(resp.status == 400) throw new BadRequestError(getErr(resp));\r\n\tif(resp.status == 401) throw new UnauthorizedError(getErr(resp));\r\n\tif(resp.status == 403) throw new ForbiddenError(getErr(resp));\r\n\tif(resp.status == 404) throw new NotFoundError(getErr(resp));\r\n\tif(resp.status == 500) throw new InternalServerError(getErr(resp));\r\n\tthrow new CustomError(getErr(resp), resp.status);\r\n});\r\n"],"names":["clean","obj","undefinedOnly","o","key","value","deepCopy","dotNotation","prop","set","i","arr","flattenObj","parent","result","propName","includes","target","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","n","makeArray","ASet","elements","index","acc","download","href","TypedEmitter","__publicField","event","args","l","listener","_a","res","unsubscribe","CustomError","message","code","err","newErr","BadRequestError","UnauthorizedError","ForbiddenError","NotFoundError","InternalServerError","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","match","md5","d","r","M","Y","X","_","m","f","h","g","md5_ii","md5_hh","md5_gg","md5_ff","safe_add","md5_cmn","bit_rol","validateEmail","email","formEncode","data","gravatar","def","urlParser","url","processed","groups","domains","query","q","val","PromiseProgress","executor","resolve","reject","reason","progress","p","callback","timeUntil","date","sleep","ms","formatDate","_XHR","opts","fn","_b","headers","resp","XHR","next","getErr"],"mappings":"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"}
1
+ {"version":3,"file":"utils.mjs","sources":["../src/objects.ts","../src/array.ts","../src/aset.ts","../src/download.ts","../src/emitter.ts","../src/errors.ts","../src/logger.ts","../src/math.ts","../src/string.ts","../src/misc.ts","../src/promise-progress.ts","../src/time.ts","../src/xhr.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 * 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 {\r\n\tget size() {\r\n\t\treturn this.length;\r\n\t}\r\n\r\n\tconstructor(elements: T[] = []) {\r\n\t\tsuper();\r\n\t\tif(!!elements?.['forEach'])\r\n\t\t\telements.forEach(el => this.add(el));\r\n\t}\r\n\r\n\tadd(el: T) {\r\n\t\tif(!this.has(el)) this.push(el);\r\n\t}\r\n\r\n\tdelete(el: T) {\r\n\t\tconst index = this.indexOf(el);\r\n\t\tif(index != -1) this.slice(index, 1);\r\n\t}\r\n\r\n\tdifference(set: ASet<T>) {\r\n\t\treturn new ASet<T>(this.reduce((acc, el) => {\r\n\t\t\tif(!set.has(el)) acc.push(el);\r\n\t\t\treturn acc;\r\n\t\t}, []));\r\n\t}\r\n\r\n\thas(el: T) {\r\n\t\treturn this.indexOf(el) != -1;\r\n\t}\r\n\r\n\tintersection(set: ASet<T>) {\r\n\t\treturn new ASet<T>(this.reduce((acc, el) => {\r\n\t\t\tif(set.has(el)) acc.push(el);\r\n\t\t\treturn acc;\r\n\t\t}, []));\r\n\t}\r\n\r\n\tisDisjointFrom(set: ASet<T>) {\r\n\t\treturn this.intersection(set).size == 0;\r\n\t}\r\n\r\n\tisSubsetOf(set: ASet<T>) {\r\n\t\treturn this.findIndex(el => !set.has(el)) == -1;\r\n\t}\r\n\r\n\tisSuperset(set: ASet<T>) {\r\n\t\treturn set.findIndex(el => !this.has(el)) == -1;\r\n\t}\r\n\r\n\tsymmetricDifference(set: ASet<T>) {\r\n\t\treturn new ASet([...this.difference(set), ...set.difference(this)]);\r\n\t}\r\n\r\n\tunion(set: ASet<T> | Array<T>) {\r\n\t\treturn new ASet([...this, ...set]);\r\n\t}\r\n}\r\n","export function download(href: any, name: string) {\r\n\tconst a = document.createElement('a');\r\n\ta.href = href;\r\n\ta.download = name;\r\n\tdocument.body.appendChild(a);\r\n\ta.click();\r\n\tdocument.body.removeChild(a);\r\n}\r\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 {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","/**\r\n * Convert decimal number to fraction\r\n *\r\n * @example\r\n * ```js\r\n * dec2Frac(1.25) // Outputs: \"1 1/4\"\r\n * ```\r\n *\r\n * @param {number} num Number to convert\r\n * @return {string} Fraction with remainder\r\n */\r\nexport function dec2Frac(num: number) {\r\n\tconst gcd = (a: number, b: number): number => {\r\n\t\tif (b < 0.0000001) return a;\r\n\t\treturn gcd(b, ~~(a % b));\r\n\t};\r\n\r\n\tconst len = num.toString().length - 2;\r\n\tlet denominator = Math.pow(10, len);\r\n\tlet numerator = num * denominator;\r\n\tconst divisor = gcd(numerator, denominator);\r\n\tnumerator = ~~(numerator / divisor);\r\n\tdenominator = ~~(denominator / divisor)\r\n\tconst remainder = ~~(numerator / denominator);\r\n\tnumerator -= remainder * denominator;\r\n\treturn `${remainder ? remainder + ' ' : ''}${~~(numerator)}/${~~(denominator)}`;\r\n}\r\n\r\n/**\r\n * Convert fraction to decimal number\r\n *\r\n * @example\r\n * ```js\r\n * fracToDec('1 1/4') // Outputs: 1.25\r\n * ```\r\n *\r\n * @param {string} frac Fraction to convert\r\n * @return {number} Faction as a decimal\r\n */\r\nexport function fracToDec(frac: string) {\r\n\tlet split = frac.split(' ');\r\n\tconst whole = split.length == 2 ? Number(split[0]) : 0;\r\n\tsplit = (<string>split.pop()).split('/');\r\n\treturn whole + (Number(split[0]) / Number(split[1]));\r\n}\r\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","export type ProgressCallback = (progress: number) => any;\r\n\r\nexport class PromiseProgress<T> extends Promise<T> {\r\n\tprivate listeners: ProgressCallback[] = [];\r\n\r\n\tprivate _progress = 0;\r\n\tget progress() { return this._progress; }\r\n\tset progress(p: number) {\r\n\t\tif(p == this._progress) return;\r\n\t\tthis._progress = p;\r\n\t\tthis.listeners.forEach(l => l(p));\r\n\t}\r\n\r\n\tconstructor(executor: (resolve: (value: T) => any, reject: (reason: any) => void, progress: (progress: number) => any) => void) {\r\n\t\tsuper((resolve, reject) => executor(\r\n\t\t\t(value: T) => resolve(value),\r\n\t\t\t(reason: any) => reject(reason),\r\n\t\t\t(progress: number) => this.progress = progress\r\n\t\t));\r\n\t}\r\n\r\n\tonProgress(callback: ProgressCallback) {\r\n\t\tthis.listeners.push(callback);\r\n\t\treturn this;\r\n\t}\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","import {\r\n\tBadRequestError,\r\n\tCustomError,\r\n\tForbiddenError,\r\n\tInternalServerError,\r\n\tNotFoundError,\r\n\tUnauthorizedError\r\n} from './errors.ts';\r\nimport {clean} from './objects';\r\n\r\nexport type Interceptor = (request: Response, next: () => void) => void;\r\n\r\nexport type RequestOptions = {\r\n\turl?: string;\r\n\tmethod?: 'GET' | 'POST' | 'PATCH' | 'DELETE';\r\n\tbody?: any;\r\n\theaders?: {[key: string | symbol]: string | null | undefined};\r\n\tskipConverting?: boolean;\r\n\t[key: string]: any;\r\n}\r\n\r\nexport type XhrOptions = {\r\n\theaders?: {[key: string | symbol]: string | null | undefined};\r\n\tinterceptors?: Interceptor[];\r\n\turl?: string;\r\n}\r\n\r\nexport class XHR {\r\n\tprivate static interceptors: {[key: string]: Interceptor} = {};\r\n\r\n\tstatic headers: {[key: string]: string | null | undefined} = {};\r\n\r\n\tprivate interceptors: {[key: string]: Interceptor} = {}\r\n\r\n\theaders: {[key: string]: string | null | undefined} = {}\r\n\r\n\tconstructor(public readonly opts: XhrOptions = {}) {\r\n\t\tthis.headers = opts.headers || {};\r\n\t\tif(opts.interceptors) {\r\n\t\t\topts.interceptors.forEach(i => XHR.addInterceptor(i));\r\n\t\t}\r\n\t}\r\n\r\n\tstatic addInterceptor(fn: Interceptor): () => void {\r\n\t\tconst key = Object.keys(XHR.interceptors).length.toString();\r\n\t\tXHR.interceptors[key] = fn;\r\n\t\treturn () => { XHR.interceptors[key] = <any>null; }\r\n\t}\r\n\r\n\taddInterceptor(fn: Interceptor): () => void {\r\n\t\tconst key = Object.keys(this.interceptors).length.toString();\r\n\t\tthis.interceptors[key] = fn;\r\n\t\treturn () => { this.interceptors[key] = <any>null; }\r\n\t}\r\n\r\n\tasync request<T>(opts: RequestOptions = {}): Promise<T> {\r\n\t\tif(!this.opts.url && !opts.url) throw new Error('URL needs to be set');\r\n\t\tconst url = (opts.url?.startsWith('http') ? opts.url : (this.opts.url || '') + (opts.url || '')).replace(/([^:]\\/)\\/+/g, '$1');\r\n\r\n\t\t// Prep headers\r\n\t\tconst headers = <any>clean({\r\n\t\t\t'Content-Type': (opts.body && !(opts.body instanceof FormData)) ? 'application/json' : undefined,\r\n\t\t\t...XHR.headers,\r\n\t\t\t...this.headers,\r\n\t\t\t...opts.headers\r\n\t\t});\r\n\r\n\t\t// Send request\r\n\t\treturn fetch(url, {\r\n\t\t\theaders,\r\n\t\t\tmethod: opts.method || (opts.body ? 'POST' : 'GET'),\r\n\t\t\tbody: (headers['Content-Type']?.startsWith('application/json') && opts.body) ? JSON.stringify(opts.body) : opts.body\r\n\t\t}).then(async resp => {\r\n\t\t\tfor(let fn of [...Object.values(XHR.interceptors), ...Object.values(this.interceptors)]) {\r\n\t\t\t\tawait new Promise<void>(res => fn(resp, () => res()));\r\n\t\t\t}\r\n\r\n\t\t\tif(!resp.ok) throw new Error(resp.statusText);\r\n\t\t\tif(!opts.skipConverting && resp.headers.get('Content-Type')?.startsWith('application/json')) return await resp.json();\r\n\t\t\tif(!opts.skipConverting && resp.headers.get('Content-Type')?.startsWith('text/plain')) return await <any>resp.text();\r\n\t\t\treturn resp;\r\n\t\t});\r\n\t}\r\n}\r\n"],"names":["clean","obj","undefinedOnly","o","key","value","deepCopy","dotNotation","prop","set","i","arr","flattenObj","parent","result","propName","includes","target","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","n","makeArray","ASet","elements","index","acc","download","href","TypedEmitter","__publicField","event","args","l","listener","_a","res","unsubscribe","CustomError","message","code","err","newErr","BadRequestError","UnauthorizedError","ForbiddenError","NotFoundError","InternalServerError","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","match","md5","d","r","M","Y","X","_","m","f","h","g","md5_ii","md5_hh","md5_gg","md5_ff","safe_add","md5_cmn","bit_rol","validateEmail","email","formEncode","data","gravatar","def","urlParser","url","processed","groups","domains","query","q","val","PromiseProgress","executor","resolve","reject","reason","progress","p","callback","timeUntil","date","sleep","ms","formatDate","_XHR","opts","fn","_b","headers","resp","XHR"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ztimson/utils",
3
- "version": "0.10.2",
3
+ "version": "0.10.3",
4
4
  "description": "Utility library",
5
5
  "author": "Zak Timson",
6
6
  "license": "MIT",