@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 +1 -1
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.mjs +99 -108
- package/dist/utils.mjs.map +1 -1
- package/package.json +1 -1
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
|
package/dist/utils.cjs.map
CHANGED
|
@@ -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":"yYAagB,SAAAA,EAASC,EAAQC,EAAgB,GAAmB,CACnE,GAAGD,GAAO,KAAY,MAAA,IAAI,MAAM,2BAA2B,EACxD,OAAA,MAAM,QAAQA,CAAG,EACnBA,EAAWA,EAAI,OAAYE,GAAAA,GAAK,IAAI,EAE7B,OAAA,QAAQF,CAAG,EAAE,QAAQ,CAAC,CAACG,EAAKC,CAAK,IAAM,EACzCH,GAAiBG,IAAU,QAAe,CAACH,GAAiBG,GAAS,OAAO,OAAaJ,EAAKG,CAAG,CAAA,CACrG,EAEUH,CACb,CAUO,SAASK,EAAYD,EAAa,CACxC,OAAO,KAAK,MAAM,KAAK,UAAUA,CAAK,CAAC,CACxC,CAsBgB,SAAAE,EAAeN,EAAUO,EAAcC,EAAwB,CAC3E,GAAA,EAAAR,GAAO,MAAQ,CAACO,GAEnB,OAAUA,EAAK,MAAM,SAAS,EAAE,OAAOA,GAAQA,EAAK,MAAM,EAAE,OAAO,CAACP,EAAKO,EAAO,EAAGE,IAAQ,CAE1F,IADGF,EAAK,CAAC,GAAK,KAAOA,EAAK,CAAC,GAAK,OAAKA,EAAOA,EAAK,MAAM,EAAG,EAAE,GACzD,EAACP,GAAAA,MAAAA,EAAK,eAAeO,IAAO,CAC9B,GAAGC,GAAO,KAAkB,OAC5BR,EAAIO,CAAI,EAAI,EACb,CACA,OAAGC,IAAQ,QAAa,GAAKC,EAAI,OAAS,EAClCT,EAAIO,CAAI,EAAIC,EACbR,EAAIO,CAAI,GACbP,CAAG,CACP,CAgBO,SAASU,EAAWV,EAAUW,EAAcC,EAAc,CAAA,EAAI,CACpE,GAAG,OAAOZ,GAAQ,UAAY,CAAC,MAAM,QAAQA,CAAG,EAAG,CAClD,UAAUG,KAAO,OAAO,KAAKH,CAAG,EAAG,CAClC,MAAMa,EAAWF,EAASA,EAAS,IAAMR,EAAMA,EAC5C,OAAOH,EAAIG,CAAG,GAAM,SACtBO,EAAWV,EAAIG,CAAG,EAAGU,EAAUD,CAAM,EAE9BA,EAAAC,CAAQ,EAAIb,EAAIG,CAAG,CAE5B,CACO,OAAAS,CACR,CACD,CAiBO,SAASE,EAASC,EAAaC,EAAaC,EAAe,GAAgB,CACjF,GAAGF,GAAU,KAAkB,OAAAE,EAC5B,GAAA,MAAM,QAAQD,CAAM,EAAG,OAAOA,EAAO,UAAU,CAACE,EAAQ,IAAc,CAACJ,EAASC,EAAO,CAAC,EAAGC,EAAO,CAAC,EAAGC,CAAY,CAAC,GAAK,GAC3H,MAAME,EAAO,OAAOH,EACpB,OAAGG,GAAQ,OAAOJ,EAAe,GAC9BI,GAAQ,SACH,OAAO,KAAKH,CAAM,EAAE,QAAY,CAACF,EAASC,EAAOZ,CAAG,EAAGa,EAAOb,CAAG,EAAGc,CAAY,CAAC,GAAK,KAE3FE,GAAQ,WAAmBJ,EAAO,SAAA,GAAcC,EAAO,SAAS,EAC5DD,GAAUC,CAClB,CASgB,SAAAI,EAAQC,EAAQC,EAAiB,CAChD,MAAMC,EAAK,OAAOF,EAAGG,EAAK,OAAOF,EACjC,OAAIC,GAAM,UAAYF,GAAK,MAAUG,GAAM,UAAYF,GAAK,KACpDC,GAAM,YAAcC,GAAM,WAAaH,EAAE,SAAc,GAAAC,EAAE,WAAaD,IAAMC,EACvE,OAAO,KAAKD,CAAC,EAClB,QAAU,OAAO,KAAKC,CAAC,EAAE,OAAe,GACzC,OAAO,KAAKD,CAAC,EAAE,MAAMlB,GAAOiB,EAAQC,EAAElB,CAAG,EAAGmB,EAAEnB,CAAG,CAAC,CAAC,CAC3D,CAEgB,SAAAsB,EAAMV,EAAaW,EAAqB,CACvDA,EAAa,QAAaC,GAAA,CACzB,OAAO,oBAAoBA,EAAE,SAAS,EAAE,QAASC,GAAS,CAClD,OAAA,eACNb,EAAO,UACPa,EACA,OAAO,yBAAyBD,EAAE,UAAWC,CAAI,GACjD,OAAO,OAAO,IAAI,CAAA,CACnB,CACA,CAAA,CACD,CACF,CAEgB,SAAAC,EAAc7B,EAAU8B,EAAgB,CACvD,IAAIC,EAAe,CAAA,EACnB,OAAO,KAAK,MAAM,KAAK,UAAU/B,EAAK,CAACG,EAAKC,IAAU,CACrD,GAAI,OAAOA,GAAU,UAAYA,IAAU,KAAM,CAC5C,GAAA2B,EAAM,SAAS3B,CAAK,EAAG,OAC3B2B,EAAM,KAAK3B,CAAK,CACjB,CACO,OAAAA,CAAA,EACL0B,CAAK,CAAC,CACV,CCnKgB,SAAAE,EAAaC,EAAYC,EAAY,CACjD,OAAAD,EAAM,QAAQC,CAAE,IAAM,IAAID,EAAM,KAAKC,CAAE,EACnCD,CACR,CAEgB,SAAAE,EAAUd,EAAUC,EAAiB,CACpD,OAAOc,EAAW,CACjB,GAAGf,EAAE,OAAOgB,GAAM,CAACf,EAAE,SAAUgB,GAAYlB,EAAQiB,EAAIC,CAAE,CAAC,CAAC,EAC3D,GAAGhB,EAAE,OAAOe,GAAM,CAAChB,EAAE,SAAUiB,GAAYlB,EAAQiB,EAAIC,CAAE,CAAC,CAAC,CAAA,CAC3D,CACF,CAcO,SAASC,EAAoBhC,EAAc,CAC1C,OAAA,SAAUc,EAAQC,EAAQ,CAC1B,MAAAkB,EAAOlC,EAAoBe,EAAGd,CAAI,EAClCkC,EAAOnC,EAAoBgB,EAAGf,CAAI,EACxC,OAAG,OAAOiC,GAAS,UAAY,OAAOC,GAAS,SAAiB,EACzDD,EAAK,YAAY,EAAE,cAAcC,EAAK,aAAa,CAAA,CAE5D,CA8BO,SAASC,EAAWjC,EAAYG,EAAgB,GAAW,CACjE,OAAAH,EAAI,QAAQyB,GAAM,MAAM,QAAQA,CAAE,EAAIQ,EAAWR,EAAItB,CAAM,EAAIA,EAAO,KAAKsB,CAAE,CAAC,EACvEtB,CACR,CAegB,SAAA+B,EAAWpC,EAAcqC,EAAU,GAAO,CAClD,OAAA,SAAUvB,EAAQC,EAAQ,CAC1B,MAAAkB,EAAOlC,EAAiBe,EAAGd,CAAI,EAC/BkC,EAAOnC,EAAiBgB,EAAGf,CAAI,EACrC,OAAG,OAAOiC,GAAQ,UAAY,OAAOC,GAAQ,UACpCG,EAAU,GAAK,IAAMJ,EAAOC,GAClCD,EAAOC,EAAaG,EAAU,GAAK,EACnCJ,EAAOC,EAAaG,EAAU,EAAI,GAC9B,CAAA,CAET,CAEgB,SAAAC,EAAWtC,EAAcH,EAAY,CACpD,OAAQ0C,GAAW1B,EAAQ0B,EAAEvC,CAAI,EAAGH,CAAK,CAC1C,CAEO,SAASgC,EAAW3B,EAAY,CACtC,QAAQsC,EAAItC,EAAI,OAAS,EAAGsC,GAAK,EAAGA,IAChCtC,EAAI,MAAM,EAAGsC,CAAC,EAAE,KAAUC,GAAA5B,EAAQ4B,EAAGvC,EAAIsC,CAAC,CAAC,CAAC,GAAOtC,EAAA,OAAOsC,EAAG,CAAC,EAE3D,OAAAtC,CACR,CAOO,SAASwC,EAAa7C,EAAqB,CACjD,OAAO,MAAM,QAAQA,CAAK,EAAIA,EAAQ,CAACA,CAAK,CAC7C,CC/GO,MAAM8C,UAAgB,KAAM,CAClC,IAAI,MAAO,CACV,OAAO,KAAK,MACb,CAEA,YAAYC,EAAgB,GAAI,CACzB,QACDA,GAAA,MAAAA,EAAW,SACfA,EAAS,QAAQjB,GAAM,KAAK,IAAIA,CAAE,CAAC,CACrC,CAEA,IAAIA,EAAO,CACN,KAAK,IAAIA,CAAE,GAAG,KAAK,KAAKA,CAAE,CAC/B,CAEA,OAAOA,EAAO,CACP,MAAAkB,EAAQ,KAAK,QAAQlB,CAAE,EAC1BkB,GAAS,IAAS,KAAA,MAAMA,EAAO,CAAC,CACpC,CAEA,WAAW5C,EAAc,CACxB,OAAO,IAAI0C,EAAQ,KAAK,OAAO,CAACG,EAAKnB,KAChC1B,EAAI,IAAI0B,CAAE,GAAGmB,EAAI,KAAKnB,CAAE,EACrBmB,GACL,CAAA,CAAE,CAAC,CACP,CAEA,IAAInB,EAAO,CACH,OAAA,KAAK,QAAQA,CAAE,GAAK,EAC5B,CAEA,aAAa1B,EAAc,CAC1B,OAAO,IAAI0C,EAAQ,KAAK,OAAO,CAACG,EAAKnB,KACjC1B,EAAI,IAAI0B,CAAE,GAAGmB,EAAI,KAAKnB,CAAE,EACpBmB,GACL,CAAA,CAAE,CAAC,CACP,CAEA,eAAe7C,EAAc,CAC5B,OAAO,KAAK,aAAaA,CAAG,EAAE,MAAQ,CACvC,CAEA,WAAWA,EAAc,CACjB,OAAA,KAAK,UAAgB0B,GAAA,CAAC1B,EAAI,IAAI0B,CAAE,CAAC,GAAK,EAC9C,CAEA,WAAW1B,EAAc,CACjB,OAAAA,EAAI,UAAgB0B,GAAA,CAAC,KAAK,IAAIA,CAAE,CAAC,GAAK,EAC9C,CAEA,oBAAoB1B,EAAc,CACjC,OAAO,IAAI0C,EAAK,CAAC,GAAG,KAAK,WAAW1C,CAAG,EAAG,GAAGA,EAAI,WAAW,IAAI,CAAC,CAAC,CACnE,CAEA,MAAMA,EAAyB,CAC9B,OAAO,IAAI0C,EAAK,CAAC,GAAG,KAAM,GAAG1C,CAAG,CAAC,CAClC,CACD,CCzDgB,SAAA8C,GAASC,EAAW3B,EAAc,CAC3C,MAAAP,EAAI,SAAS,cAAc,GAAG,EACpCA,EAAE,KAAOkC,EACTlC,EAAE,SAAWO,EACJ,SAAA,KAAK,YAAYP,CAAC,EAC3BA,EAAE,MAAM,EACC,SAAA,KAAK,YAAYA,CAAC,CAC5B,CCJO,MAAMmC,CAAkD,CAAxD,cAGEC,EAAA,iBAA+C,CAAA,GAEvD,OAAO,KAAKC,KAAeC,EAAa,EACtC,KAAK,UAAU,GAAG,GAAK,CAAA,GAAI,QAAQC,GAAKA,EAAEF,EAAO,GAAGC,CAAI,CAAC,GACzD,KAAK,UAAUD,EAAM,SAAU,CAAA,GAAK,CAAA,GAAI,QAAQE,GAAKA,EAAE,GAAGD,CAAI,CAAC,CACjE,CAEA,OAAO,IAAID,EAAYG,EAAoB,CACpC,MAAA3C,EAAIwC,EAAM,WAChB,KAAK,UAAUxC,CAAC,GAAK,KAAK,UAAUA,CAAC,GAAK,CAAA,GAAI,OAAY0C,GAAAA,IAAMC,CAAQ,CACzE,CAEA,OAAO,GAAGH,EAAYG,EAAoB,OACnC,MAAA3C,EAAIwC,EAAM,WACb,OAAC,KAAK,UAAUxC,CAAC,IAAQ,KAAA,UAAUA,CAAC,EAAI,KAC3C4C,EAAA,KAAK,UAAU5C,CAAC,IAAhB,MAAA4C,EAAmB,KAAKD,GACjB,IAAM,KAAK,IAAIH,EAAOG,CAAQ,CACtC,CAEA,OAAO,KAAKH,EAAYG,EAAmC,CACnD,OAAA,IAAI,QAAeE,GAAA,CACzB,MAAMC,EAAc,KAAK,GAAGN,EAAa,IAAIC,IAAc,CAC1DI,EAAIJ,EAAK,QAAU,EAAIA,EAAK,CAAC,EAAIA,CAAI,EAClCE,GAAUA,EAAS,GAAGF,CAAI,EACjBK,GAAA,CACX,CAAA,CACF,CACF,CAEA,KAAwBN,KAAaC,EAAwB,EAC3D,KAAK,UAAU,GAAG,GAAK,CAAA,GAAI,QAAQC,GAAKA,EAAEF,EAAO,GAAGC,CAAI,CAAC,GACzD,KAAK,UAAUD,CAAK,GAAK,CAAI,GAAA,QAAaE,GAAAA,EAAE,GAAGD,CAAI,CAAC,CACtD,CAEA,IAAgCD,EAAUG,EAAgB,CACzD,KAAK,UAAUH,CAAK,GAAK,KAAK,UAAUA,CAAK,GAAK,CAAA,GAAI,OAAYE,GAAAA,IAAMC,CAAQ,CACjF,CAEA,GAA+BH,EAAUG,EAAgB,OACrD,OAAC,KAAK,UAAUH,CAAK,IAAQ,KAAA,UAAUA,CAAK,EAAI,KACnDI,EAAA,KAAK,UAAUJ,CAAK,IAApB,MAAAI,EAAuB,KAAKD,GACrB,IAAM,KAAK,IAAIH,EAAOG,CAAQ,CACtC,CAEA,KAAiCH,EAAUG,EAA+B,CAClE,OAAA,IAAI,QAAeE,GAAA,CACzB,MAAMC,EAAc,KAAK,GAAGN,EAAa,IAAIC,IAAc,CAC1DI,EAAIJ,EAAK,QAAU,EAAIA,EAAK,CAAC,EAAIA,CAAI,EAClCE,GAAUA,EAAS,GAAGF,CAAI,EACjBK,GAAA,CACX,CAAA,CACF,CACF,CACD,CAvDCP,EADYD,EACG,YAAyC,CAAA,GCJlD,MAAMS,UAAoB,KAAM,CAOtC,YAAYC,EAAkBC,EAAe,CAC5C,MAAMD,CAAO,EALNT,EAAA,cAMJU,GAAQ,OAAM,KAAK,MAAQA,EAC/B,CANA,IAAI,MAAe,CAAS,OAAA,KAAK,OAAe,KAAM,YAAY,IAAM,CACxE,IAAI,KAAKxC,EAAW,CAAE,KAAK,MAAQA,CAAG,CAOtC,OAAO,KAAKyC,EAAyB,CACpC,MAAMD,EAAO,OAAaC,EAAK,UAAU,GAAK,OAAaA,EAAK,IAAI,EAC9DC,EAAS,IAAI,KAAKD,EAAI,SAAWA,EAAI,UAAU,EAC9C,OAAA,OAAO,OAAOC,EAAQ,CAC5B,MAAOD,EAAI,MACX,GAAGA,EACH,KAAMD,GAAQ,MAAA,CACd,CACF,CAEA,OAAO,WAAWC,EAAY,CAChB,OAAAA,EAAK,YAAY,MAAQ,IACvC,CAEA,UAAW,CACH,OAAA,KAAK,SAAW,MAAM,SAAS,CACvC,CACD,CA5BCX,EADYQ,EACL,OAAO,KA8BR,MAAMK,UAAwBL,CAAY,CAGhD,YAAYC,EAAkB,cAAe,CAC5C,MAAMA,CAAO,CACd,CAEA,OAAO,WAAWE,EAAY,CAChB,OAAAA,EAAK,YAAY,MAAQ,KAAK,IAC5C,CACD,CATCX,EADYa,EACL,OAAO,KAWR,MAAMC,UAA0BN,CAAY,CAGlD,YAAYC,EAAkB,eAAgB,CAC7C,MAAMA,CAAO,CACd,CAEA,OAAO,WAAWE,EAAY,CAChB,OAAAA,EAAK,YAAY,MAAQ,KAAK,IAC5C,CACD,CATCX,EADYc,EACL,OAAO,KAWR,MAAMC,UAAuBP,CAAY,CAG/C,YAAYC,EAAkB,YAAa,CAC1C,MAAMA,CAAO,CACd,CAEA,OAAO,WAAWE,EAAY,CAChB,OAAAA,EAAK,YAAY,MAAQ,KAAK,IAC5C,CACD,CATCX,EADYe,EACL,OAAO,KAWR,MAAMC,UAAsBR,CAAY,CAG9C,YAAYC,EAAkB,YAAa,CAC1C,MAAMA,CAAO,CACd,CAEA,OAAO,WAAWE,EAAY,CAChB,OAAAA,EAAK,YAAY,MAAQ,KAAK,IAC5C,CACD,CATCX,EADYgB,EACL,OAAO,KAWR,MAAMC,UAA4BT,CAAY,CAGpD,YAAYC,EAAkB,wBAAyB,CACtD,MAAMA,CAAO,CACd,CAEA,OAAO,WAAWE,EAAY,CAChB,OAAAA,EAAK,YAAY,MAAQ,KAAK,IAC5C,CACD,CATCX,EADYiB,EACL,OAAO,KC9ER,MAAMC,EAAa,CACzB,MAAO,UACP,OAAQ,UACR,IAAK,UACL,WAAY,UACZ,MAAO,UACP,QAAS,UACT,OAAQ,SACT,EAEaC,EAAgB,CAC5B,MAAO,WACP,IAAK,WACL,MAAO,WACP,OAAQ,WACR,KAAM,WACN,QAAS,WACT,KAAM,WACN,WAAY,WACZ,KAAM,WACN,UAAW,WACX,YAAa,WACb,aAAc,WACd,WAAY,WACZ,cAAe,WACf,WAAY,WACZ,MAAO,UACR,EAEaC,GAAgB,CAC5B,MAAO,WACP,IAAK,WACL,MAAO,WACP,OAAQ,WACR,KAAM,WACN,QAAS,WACT,KAAM,WACN,MAAO,WACP,KAAM,WACP,EAEY,IAAAC,GAAAA,IACXA,EAAAA,EAAA,MAAQ,CAAR,EAAA,QACAA,EAAAA,EAAA,KAAO,CAAP,EAAA,OACAA,EAAAA,EAAA,KAAO,CAAP,EAAA,OACAA,EAAAA,EAAA,IAAM,CAAN,EAAA,MACAA,EAAAA,EAAA,MAAQ,CAAR,EAAA,QALWA,IAAAA,GAAA,CAAA,CAAA,EAgBL,MAAMC,EAAN,MAAMA,UAAevB,CAA2B,CAGtD,YAA4BwB,EAAoB,CACzC,QADqB,KAAA,UAAAA,CAE5B,CAEQ,IAAIC,EAAWC,EAAgBC,EAAcC,EAAM,GAAO,CAC3D,MAAAC,EAAIJ,EAAK,WACTrB,EAAIsB,EAASG,EAAE,OACrB,GAAGzB,GAAK,EAAU,OAAAyB,EAClB,MAAMC,EAAU,MAAM,CAAC,EAAE1B,EAAIuB,EAAK,OAAO,EAAE,KAAKA,CAAI,EAAE,KAAK,EAAE,EAC7D,OAAQC,EAAoBC,EAAIC,EAAlBA,EAAUD,CACzB,CAEQ,UAAUJ,EAAwB,CACnC,MAAAM,MAAU,KAEhB,MAAO,GADW,GAAGA,EAAI,YAAY,CAAC,IAAIA,EAAI,SAAS,EAAI,CAAC,IAAIA,EAAI,QAAA,CAAS,IAAI,KAAK,IAAIA,EAAI,SAAA,EAAW,WAAY,EAAG,GAAG,CAAC,IAAI,KAAK,IAAIA,EAAI,aAAa,SAAA,EAAY,EAAG,GAAG,CAAC,IAAI,KAAK,IAAIA,EAAI,WAAW,EAAE,SAAS,EAAG,EAAG,GAAG,CAAC,IAAI,KAAK,IAAIA,EAAI,gBAAA,EAAkB,SAAA,EAAY,EAAG,IAAK,EAAI,CAAC,EACvQ,GAAG,KAAK,UAAY,KAAK,KAAK,SAAS,IAAM,EAAE,IAAIN,EAAK,KAAK,GAAG,CAAC,EACrF,CAEA,SAAStB,EAAgB,CACxB,GAAGoB,EAAO,UAAY,EAAiB,OACvC,MAAMS,EAAM,KAAK,OAAO,GAAG7B,CAAI,EACxBoB,EAAA,KAAK,EAAiBS,CAAG,EAChC,QAAQ,MAAMZ,EAAc,WAAaY,EAAMb,EAAW,KAAK,CAChE,CAEA,OAAOhB,EAAgB,CACtB,GAAGoB,EAAO,UAAY,EAAe,OACrC,MAAMS,EAAM,KAAK,OAAO,GAAG7B,CAAI,EACxBoB,EAAA,KAAK,EAAeS,CAAG,EACtB,QAAA,IAAIb,EAAW,MAAQa,CAAG,CACnC,CAEA,QAAQ7B,EAAgB,CACvB,GAAGoB,EAAO,UAAY,EAAgB,OACtC,MAAMS,EAAM,KAAK,OAAO,GAAG7B,CAAI,EACxBoB,EAAA,KAAK,EAAgBS,CAAG,EAC/B,QAAQ,KAAKZ,EAAc,KAAOY,EAAMb,EAAW,KAAK,CACzD,CAEA,QAAQhB,EAAgB,CACvB,GAAGoB,EAAO,UAAY,EAAgB,OACtC,MAAMS,EAAM,KAAK,OAAO,GAAG7B,CAAI,EACxBoB,EAAA,KAAK,EAAgBS,CAAG,EAC/B,QAAQ,KAAKZ,EAAc,OAASY,EAAMb,EAAW,KAAK,CAC3D,CAEA,SAAShB,EAAgB,CACxB,GAAGoB,EAAO,UAAY,EAAiB,OACvC,MAAMS,EAAM,KAAK,OAAO,GAAG7B,CAAI,EACxBoB,EAAA,KAAK,EAAiBS,CAAG,EAChC,QAAQ,MAAMZ,EAAc,IAAMY,EAAMb,EAAW,KAAK,CACzD,CACD,EAtDClB,EADYsB,EACL,YAAuB,GADxB,IAAMU,EAANV,EChDA,SAASW,GAASC,EAAa,CAC/B,MAAAC,EAAM,CAACvE,EAAWC,IACnBA,EAAI,KAAkBD,EACnBuE,EAAItE,EAAG,CAAC,EAAED,EAAIC,EAAE,EAGlBuE,EAAMF,EAAI,SAAS,EAAE,OAAS,EACpC,IAAIG,EAAc,KAAK,IAAI,GAAID,CAAG,EAC9BE,EAAYJ,EAAMG,EAChB,MAAAE,EAAUJ,EAAIG,EAAWD,CAAW,EAC9BC,EAAA,CAAC,EAAEA,EAAYC,GACbF,EAAA,CAAC,EAAEA,EAAcE,GACzB,MAAAC,EAAY,CAAC,EAAEF,EAAYD,GACjC,OAAAC,GAAaE,EAAYH,EAClB,GAAGG,EAAYA,EAAY,IAAM,EAAE,GAAG,CAAC,CAAEF,CAAU,IAAI,CAAC,CAAED,CAAY,EAC9E,CAaO,SAASI,GAAUC,EAAc,CACnC,IAAAC,EAAQD,EAAK,MAAM,GAAG,EACpB,MAAAE,EAAQD,EAAM,QAAU,EAAI,OAAOA,EAAM,CAAC,CAAC,EAAI,EACrD,OAAAA,EAAiBA,EAAM,IAAO,EAAA,MAAM,GAAG,EAChCC,EAAS,OAAOD,EAAM,CAAC,CAAC,EAAI,OAAOA,EAAM,CAAC,CAAC,CACnD,CC5CgB,SAAAE,GAAWrB,EAAcsB,EAAiB,CACzD,OAAOtB,EAAK,OAASA,EAAK,WAAWsB,EAAS,EAAE,EAAE,MACnD,CAEO,SAASC,GAAUtB,EAAgB,CAClC,OAAA,MAAMA,CAAM,EAAE,KAAK,IAAI,EAAE,IAAI,IAAM,KAAK,MAAM,KAAK,OAAO,EAAI,EAAG,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAChG,CAMA,MAAMuB,EAAc,uDAMdC,EAAc,aAKdC,EAAc,qCAKdC,GAAYH,EAAcC,EAAcC,EAEvC,SAASE,GAAkBC,EAAgB,CAC3C,MAAAC,EAAQ,yCAAyC,KAAKD,CAAM,EAClE,GAAG,CAACC,EAAO,MAAM,IAAI,MAAM,4BAA4BD,CAAM,EAAE,EAC/D,MAAO,GAAGC,EAAM,CAAC,GAAK,EAAE,KAAKA,EAAM,CAAC,CAAC,KAAKA,EAAM,CAAC,CAAC,IAAIA,EAAM,CAAC,CAAC,GAAG,MAClE,CAgBgB,SAAAC,GAASjG,EAAgByE,EAAapC,EAAuB,CAC5E,MAAO,GAAGrC,EAAO,MAAM,EAAGqC,CAAK,CAAC,GAAGoC,CAAG,GAAGzE,EAAO,MAAMqC,EAAQ,CAAC,CAAC,EACjE,CAEO,SAAS6D,GAAIhC,EAAWC,EAAgBC,EAAc+B,EAAQ,GAAM,CACpE,MAAA7B,EAAIJ,EAAK,WACTrB,EAAIsB,EAASG,EAAE,OACrB,GAAGzB,GAAK,EAAU,OAAAyB,EAClB,MAAMC,EAAU,MAAM,CAAC,EAAE1B,EAAIuB,EAAK,OAAO,EAAE,KAAKA,CAAI,EAAE,KAAK,EAAE,EACtD,OAAA+B,EAAQ5B,EAAUD,EAAIA,EAAIC,CAClC,CAegB,SAAA6B,GAAajC,EAAgBkC,EAAeR,GAAmB,CAC9E,OAAO,MAAM1B,CAAM,EAAE,KAAK,IAAI,EAAE,IAAI,IAAM,CACzC,MAAMlC,EAAI,CAAC,EAAE,KAAK,OAAA,EAAWoE,EAAK,QAClC,OAAOA,EAAKpE,CAAC,CAAA,CACb,EAAE,KAAK,EAAE,CACX,CAiBO,SAASqE,GAAoBnC,EAAgBoC,EAAU,GAAOC,EAAU,GAAOC,EAAU,GAAe,CAC9G,GAAG,CAACF,GAAW,CAACC,GAAW,CAACC,EAAe,MAAA,IAAI,MAAM,qDAAqD,EAC1G,OAAO,MAAMtC,CAAM,EAAE,KAAK,IAAI,EAAE,IAAI,IAAM,CACrC,IAAAvD,EACD,EAAA,CACF,MAAMR,EAAO,CAAC,EAAE,KAAK,OAAW,EAAA,GAC7BmG,GAAWnG,GAAQ,EACrBQ,EAAI8E,EAAY,CAAC,EAAE,KAAK,OAAO,EAAIA,EAAY,OAAO,EAC7Cc,GAAWpG,GAAQ,EAC5BQ,EAAI+E,EAAY,CAAC,EAAE,KAAK,OAAO,EAAIA,EAAY,OAAO,EAC7Cc,GAAWrG,GAAQ,IAC5BQ,EAAIgF,EAAY,CAAC,EAAE,KAAK,OAAO,EAAIA,EAAY,OAAO,SAEhD,CAAChF,GACF,OAAAA,CAAA,CACP,EAAE,KAAK,EAAE,CACX,CAWgB,SAAA8F,GAASrH,EAAesH,EAA2C,CAM/E,GALA,OAAOA,GAAU,WACXA,EAAA,IAAI,OAAOA,EAAO,GAAG,GAI3B,CAACA,EAAM,OACH,MAAA,IAAI,UAAU,oCAAoC,EAGzD,IAAIC,EAAyB,CAAA,EACzBC,EACJ,MAAOA,EAAQF,EAAM,KAAKtH,CAAK,KAAO,MACrCuH,EAAI,KAAKC,CAAK,EAGR,OAAAD,CACR,CAOO,SAASE,EAAIC,EAAY,CAC3B,IAAAC,EAAIC,GAAEC,GAAEC,GAAEC,GAAEL,CAAC,EAAE,EAAEA,EAAE,MAAM,CAAC,CAAC,EAAE,OAAOC,EAAE,aAAa,CACvD,SAASC,GAAEF,EAAM,CAAS,QAAAM,EAAEC,EAAE,mBAAmBC,EAAE,GAAGP,EAAE,EAAEA,EAAED,EAAE,OAAOC,IAAIK,EAAEN,EAAE,WAAWC,CAAC,EAAEO,GAAGD,EAAE,OAAOD,IAAI,EAAE,EAAE,EAAEC,EAAE,OAAO,GAAGD,CAAC,EAAS,OAAAE,CAAC,CACxI,SAASH,GAAEL,EAAM,CAAS,QAAAM,EAAE,MAAMN,EAAE,QAAQ,CAAC,EAAEO,EAAE,EAAEA,EAAED,EAAE,OAAOC,IAAID,EAAEC,CAAC,EAAE,EAAE,IAAIA,EAAE,EAAEA,EAAE,EAAEP,EAAE,OAAOO,GAAG,EAAID,EAAAC,GAAG,CAAC,IAAI,IAAIP,EAAE,WAAWO,EAAE,CAAC,IAAIA,EAAE,GAAU,OAAAD,CAAC,CAClJ,SAASH,GAAEH,EAAM,CAAS,QAAAM,EAAE,GAAGC,EAAE,EAAEA,EAAE,GAAGP,EAAE,OAAOO,GAAG,EAAKD,GAAA,OAAO,aAAaN,EAAEO,GAAG,CAAC,IAAIA,EAAE,GAAG,GAAG,EAAS,OAAAD,CAAC,CACzG,SAASF,GAAEJ,EAAMM,EAAM,CAACN,EAAEM,GAAG,CAAC,GAAG,KAAKA,EAAE,GAAGN,EAAE,IAAIM,EAAE,KAAK,GAAG,EAAE,EAAEA,EAAE,QAAQC,EAAE,WAAWC,EAAE,WAAWP,EAAE,YAAY,EAAE,UAAU/E,EAAE,EAAEA,EAAE8E,EAAE,OAAO9E,GAAG,GAAG,CAAC,IAAIuF,EAAEF,EAAEhD,EAAEiD,EAAEE,EAAET,EAAE7G,EAAE,EAAIoH,EAAAG,EAAOH,EAAEG,EAAOH,EAAEG,EAAOH,EAAEG,EAAOH,EAAEI,EAAOJ,EAAEI,EAAOJ,EAAEI,EAAOJ,EAAEI,EAAOJ,EAAEK,EAAOL,EAAEK,EAAOL,EAAEK,EAAOL,EAAEK,EAAOL,EAAEM,EAAON,EAAEM,EAAON,EAAEM,EAAON,EAAEM,EAAON,EAAEP,EAAEa,EAAOb,EAAE,EAAEa,EAAO,EAAEP,EAAEO,EAAOP,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,UAAU,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,CAAC,EAAE,GAAG,WAAW,EAAE+E,EAAEa,EAAOb,EAAE,EAAEa,EAAO,EAAEP,EAAEO,EAAOP,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,UAAU,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,CAAC,EAAE,GAAG,WAAW,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE+E,EAAEa,EAAOb,EAAE,EAAEa,EAAO,EAAEP,EAAEO,EAAOP,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,UAAU,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,CAAC,EAAE,GAAG,WAAW,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,EAAE,EAAE,GAAG,MAAM,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE+E,EAAEa,EAAOb,EAAE,EAAEa,EAAO,EAAEP,EAAEO,EAAOP,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,EAAE,EAAE,EAAE,UAAU,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,EAAE,EAAE,GAAG,SAAS,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,EAAE,EAAE,GAAG,UAAU,EAAE+E,EAAEY,EAAOZ,EAAE,EAAEY,EAAO,EAAEN,EAAEM,EAAON,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,UAAU,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,WAAW,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,EAAE,EAAE,GAAG,SAAS,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAE+E,EAAEY,EAAOZ,EAAE,EAAEY,EAAO,EAAEN,EAAEM,EAAON,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,UAAU,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,EAAE,EAAE,GAAG,UAAU,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAE+E,EAAEY,EAAOZ,EAAE,EAAEY,EAAO,EAAEN,EAAEM,EAAON,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,SAAS,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,EAAE,EAAE,EAAE,WAAW,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAE+E,EAAEY,EAAOZ,EAAE,EAAEY,EAAO,EAAEN,EAAEM,EAAON,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,EAAE,EAAE,EAAE,WAAW,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,SAAS,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE+E,EAAEW,EAAOX,EAAE,EAAEW,EAAO,EAAEL,EAAEK,EAAOL,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,OAAO,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,CAAC,EAAE,GAAG,WAAW,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,EAAE,EAAE,GAAG,UAAU,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,EAAE,EAAE,GAAG,SAAS,EAAE+E,EAAEW,EAAOX,EAAE,EAAEW,EAAO,EAAEL,EAAEK,EAAOL,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,WAAW,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE+E,EAAEW,EAAOX,EAAE,EAAEW,EAAO,EAAEL,EAAEK,EAAOL,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,EAAE,EAAE,EAAE,SAAS,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,CAAC,EAAE,GAAG,QAAQ,EAAE+E,EAAEW,EAAOX,EAAE,EAAEW,EAAO,EAAEL,EAAEK,EAAOL,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,UAAU,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,EAAE,EAAE,GAAG,UAAU,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,EAAE,EAAE,GAAG,SAAS,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAE+E,EAAEU,EAAOV,EAAE,EAAEU,EAAO,EAAEJ,EAAEI,EAAOJ,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,UAAU,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE+E,EAAEU,EAAOV,EAAE,EAAEU,EAAO,EAAEJ,EAAEI,EAAOJ,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,EAAE,EAAE,EAAE,UAAU,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,CAAC,EAAE,GAAG,WAAW,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,EAAE,EAAE,GAAG,QAAQ,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,CAAC,EAAE,GAAG,WAAW,EAAE+E,EAAEU,EAAOV,EAAE,EAAEU,EAAO,EAAEJ,EAAEI,EAAOJ,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,UAAU,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,EAAE,EAAE,GAAG,SAAS,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,CAAC,EAAE,GAAG,WAAW,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,EAAE,EAAE,GAAG,UAAU,EAAE+E,EAAEU,EAAOV,EAAE,EAAEU,EAAO,EAAEJ,EAAEI,EAAOJ,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,UAAU,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,EAAE,EAAE,GAAG,WAAW,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAEqF,EAAEQ,EAASR,EAAEE,CAAC,EAAED,EAAEO,EAASP,EAAEjD,CAAC,EAAE0C,EAAEc,EAASd,EAAES,CAAC,EAAE,EAAEK,EAAS,EAAE3H,CAAC,CAAC,CAAC,OAAO,MAAMmH,EAAEC,EAAEP,EAAE,CAAC,CAAC,CAC1jF,SAASe,EAAQhB,EAAMM,EAAMC,EAAMC,EAAMP,EAAM,EAAM,CAAC,OAAOc,EAASE,GAAQF,EAASA,EAAST,EAAEN,CAAC,EAAEe,EAASP,EAAE,CAAC,CAAC,EAAEP,CAAC,EAAEM,CAAC,CAAC,CACzH,SAASO,EAAOd,EAAMM,EAAMC,EAAMC,EAAMP,EAAM,EAAM/E,EAAM,CAAQ,OAAA8F,EAAQV,EAAEC,EAAE,CAACD,EAAEE,EAAER,EAAEM,EAAEL,EAAE,EAAE/E,CAAC,CAAC,CAC7F,SAAS2F,EAAOb,EAAMM,EAAMC,EAAMC,EAAMP,EAAM,EAAM/E,EAAM,CAAQ,OAAA8F,EAAQV,EAAEE,EAAED,EAAE,CAACC,EAAER,EAAEM,EAAEL,EAAE,EAAE/E,CAAC,CAAC,CAC7F,SAAS0F,EAAOZ,EAAMM,EAAMC,EAAMC,EAAMP,EAAM,EAAM/E,EAAM,CAAQ,OAAA8F,EAAQV,EAAEC,EAAEC,EAAER,EAAEM,EAAEL,EAAE,EAAE/E,CAAC,CAAC,CAC1F,SAASyF,EAAOX,EAAMM,EAAMC,EAAMC,EAAMP,EAAM,EAAM/E,EAAM,CAAQ,OAAA8F,EAAQT,GAAGD,EAAE,CAACE,GAAGR,EAAEM,EAAEL,EAAE,EAAE/E,CAAC,CAAC,CAC7F,SAAS6F,EAASf,EAAMM,EAAM,CAAK,IAAAC,GAAG,MAAMP,IAAI,MAAMM,GAAG,OAAON,GAAG,KAAKM,GAAG,KAAKC,GAAG,KAAK,GAAG,MAAMA,CAAC,CAClG,SAASU,GAAQjB,EAAMM,EAAM,CAAQ,OAAAN,GAAGM,EAAEN,IAAI,GAAGM,CAClD,CAQO,SAASY,GAAcC,EAAe,CACrC,MAAA,uEAAuE,KAAKA,CAAK,CACzF,CCnKO,SAASC,GAAWC,EAAmB,CACtC,OAAA,OAAO,QAAQA,CAAI,EAAE,IAAI,CAAC,CAAChJ,EAAKC,CAAK,IAC3C,mBAAmBD,CAAG,EAAI,IAAM,mBAAwBC,CAAK,CAAA,EAC5D,KAAK,GAAG,CACX,CASgB,SAAAgJ,GAASH,EAAeI,EAAI,KAAM,CACjD,OAAIJ,EACG,mCAAmCpB,EAAIoB,CAAK,CAAC,MAAMI,CAAG,GAD3C,EAEnB,CAmBO,SAASC,GAAUC,EAAwB,CACjD,MAAMC,EAAY,IAAI,OACrB,+KACA,IAAA,EAAM,KAAKD,CAAG,EACTE,GAAyBD,GAAA,YAAAA,EAAW,SAAU,GAC9CE,EAAUD,EAAO,OAAO,MAAM,GAAG,EAMvC,GALGA,EAAO,MAAW,OAAaA,EAAA,KAAO,OAAOA,EAAO,IAAI,GACxDC,EAAQ,OAAS,IACnBD,EAAO,OAASC,EAAQ,OAAO,GAAI,CAAC,EAAE,KAAK,GAAG,EACvCD,EAAA,UAAYC,EAAQ,KAAK,GAAG,GAEjCD,EAAO,MAAO,CAChB,MAAMrD,EAAcqD,EAAO,MAAO,MAAM,GAAG,EAAGE,EAAa,GACrDvD,EAAA,QAASwD,GAAW,CACzB,KAAM,CAACzJ,EAAK0J,CAAG,EAAID,EAAE,MAAM,GAAG,EAC9BD,EAAMxJ,CAAG,EAAI0J,CAAA,CACb,EACDJ,EAAO,MAAQE,CAChB,CACO,OAAAF,CACR,CC7DO,MAAMK,WAA2B,OAAW,CAWlD,YAAYC,EAAoH,CACzH,MAAA,CAACC,EAASC,IAAWF,EACzB3J,GAAa4J,EAAQ5J,CAAK,EAC1B8J,GAAgBD,EAAOC,CAAM,EAC7BC,GAAqB,KAAK,SAAWA,CAAA,CACtC,EAfM1G,EAAA,iBAAgC,CAAA,GAEhCA,EAAA,iBAAY,EAcpB,CAbA,IAAI,UAAW,CAAE,OAAO,KAAK,SAAW,CACxC,IAAI,SAAS2G,EAAW,CACpBA,GAAK,KAAK,YACb,KAAK,UAAYA,EACjB,KAAK,UAAU,QAAaxG,GAAAA,EAAEwG,CAAC,CAAC,EACjC,CAUA,WAAWC,EAA4B,CACjC,YAAA,UAAU,KAAKA,CAAQ,EACrB,IACR,CACD,CCnBO,SAASC,GAAUC,EAA6B,CAC9C,OAAAA,aAAgB,KAAOA,EAAK,QAAA,EAAYA,GAAS,IAAI,OAAQ,SACtE,CAiBO,SAASC,GAAMC,EAAY,CACjC,OAAO,IAAI,QAAQ1G,GAAO,WAAWA,EAAK0G,CAAE,CAAC,CAC9C,CAEO,SAASC,GAAWH,EAA8B,CACxD,MAAMzC,EAAIyC,aAAgB,KAAOA,EAAO,IAAI,KAAKA,CAAI,EAC9C,OAAA,IAAI,KAAK,eAAe,QAAS,CACvC,QAAS,OACT,MAAO,QACP,IAAK,UACL,KAAM,UACN,OAAQ,UACR,OAAQ,EAAA,CACR,EAAE,OAAOzC,CAAC,CACZ,CCZO,MAAM6C,EAAN,MAAMA,CAAI,CAShB,YAA4BC,EAAmB,GAAI,CAJ3CnH,EAAA,oBAA6C,CAAA,GAErDA,EAAA,eAAsD,CAAA,GAE1B,KAAA,KAAAmH,EACtB,KAAA,QAAUA,EAAK,SAAW,CAAA,EAC5BA,EAAK,cACPA,EAAK,aAAa,QAAQ7H,GAAK4H,EAAI,eAAe5H,CAAC,CAAC,CAEtD,CAEA,OAAO,eAAe8H,EAA6B,CAClD,MAAM1K,EAAM,OAAO,KAAKwK,EAAI,YAAY,EAAE,OAAO,WAC7C,OAAAA,EAAA,aAAaxK,CAAG,EAAI0K,EACjB,IAAM,CAAMF,EAAA,aAAaxK,CAAG,EAAS,IAAA,CAC7C,CAEA,eAAe0K,EAA6B,CAC3C,MAAM1K,EAAM,OAAO,KAAK,KAAK,YAAY,EAAE,OAAO,WAC7C,YAAA,aAAaA,CAAG,EAAI0K,EAClB,IAAM,CAAO,KAAA,aAAa1K,CAAG,EAAS,IAAA,CAC9C,CAEA,MAAM,QAAWyK,EAAuB,GAAiB,SACxD,GAAG,CAAC,KAAK,KAAK,KAAO,CAACA,EAAK,IAAW,MAAA,IAAI,MAAM,qBAAqB,EACrE,MAAMrB,IAAOzF,EAAA8G,EAAK,MAAL,MAAA9G,EAAU,WAAW,QAAU8G,EAAK,KAAO,KAAK,KAAK,KAAO,KAAOA,EAAK,KAAO,KAAK,QAAQ,eAAgB,IAAI,EAGvHE,EAAe/K,EAAM,CAC1B,eAAiB6K,EAAK,MAAQ,EAAEA,EAAK,gBAAgB,UAAa,mBAAqB,OACvF,GAAGD,EAAI,QACP,GAAG,KAAK,QACR,GAAGC,EAAK,OAAA,CACR,EAGD,OAAO,MAAMrB,EAAK,CACjB,QAAAuB,EACA,OAAQF,EAAK,SAAWA,EAAK,KAAO,OAAS,OAC7C,MAAOG,EAAAD,EAAQ,cAAc,IAAtB,MAAAC,EAAyB,WAAW,qBAAuBH,EAAK,KAAQ,KAAK,UAAUA,EAAK,IAAI,EAAIA,EAAK,IAAA,CAChH,EAAE,KAAK,MAAMI,GAAQ,SACrB,QAAQH,IAAM,CAAC,GAAG,OAAO,OAAOF,EAAI,YAAY,EAAG,GAAG,OAAO,OAAO,KAAK,YAAY,CAAC,EAC/E,MAAA,IAAI,QAAqB5G,GAAA8G,EAAGG,EAAM,IAAMjH,EAAK,CAAA,CAAC,EAGrD,GAAG,CAACiH,EAAK,GAAU,MAAA,IAAI,MAAMA,EAAK,UAAU,EACzC,MAAA,CAACJ,EAAK,kBAAkB9G,EAAAkH,EAAK,QAAQ,IAAI,cAAc,IAA/B,MAAAlH,EAAkC,WAAW,qBAA4B,MAAMkH,EAAK,OAC5G,CAACJ,EAAK,kBAAkBG,EAAAC,EAAK,QAAQ,IAAI,cAAc,IAA/B,MAAAD,EAAkC,WAAW,eAAsB,MAAWC,EAAK,OACvGA,CAAA,CACP,CACF,CACD,EAvDCvH,EADYkH,EACG,eAA6C,CAAA,GAE5DlH,EAHYkH,EAGL,UAAsD,CAAA,GAHvD,IAAMM,EAANN,EA0DPM,EAAI,eAAe,CAACD,EAAgBE,IAAqB,CACxD,MAAMC,EAAUjK,GAAW,SAAA,QAAA4C,EAAA5C,EAAE,QAAF,YAAA4C,EAAS,YAAWiH,EAAA7J,EAAE,SAAF,YAAA6J,EAAU,UAAW7J,EAAE,SAAWA,EAAE,YAAcA,EAAE,YACnG,GAAG8J,EAAK,QAAU,IAAK,OAAOE,EAAK,EACnC,MAAGF,EAAK,QAAU,IAAW,IAAI1G,EAAgB6G,EAAOH,CAAI,CAAC,EAC1DA,EAAK,QAAU,IAAW,IAAIzG,EAAkB4G,EAAOH,CAAI,CAAC,EAC5DA,EAAK,QAAU,IAAW,IAAIxG,EAAe2G,EAAOH,CAAI,CAAC,EACzDA,EAAK,QAAU,IAAW,IAAIvG,EAAc0G,EAAOH,CAAI,CAAC,EACxDA,EAAK,QAAU,IAAW,IAAItG,EAAoByG,EAAOH,CAAI,CAAC,EAC3D,IAAI/G,EAAYkH,EAAOH,CAAI,EAAGA,EAAK,MAAM,CAChD,CAAC"}
|
|
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":"yYAagB,SAAAA,EAASC,EAAQC,EAAgB,GAAmB,CACnE,GAAGD,GAAO,KAAY,MAAA,IAAI,MAAM,2BAA2B,EACxD,OAAA,MAAM,QAAQA,CAAG,EACnBA,EAAWA,EAAI,OAAYE,GAAAA,GAAK,IAAI,EAE7B,OAAA,QAAQF,CAAG,EAAE,QAAQ,CAAC,CAACG,EAAKC,CAAK,IAAM,EACzCH,GAAiBG,IAAU,QAAe,CAACH,GAAiBG,GAAS,OAAO,OAAaJ,EAAKG,CAAG,CAAA,CACrG,EAEUH,CACb,CAUO,SAASK,EAAYD,EAAa,CACxC,OAAO,KAAK,MAAM,KAAK,UAAUA,CAAK,CAAC,CACxC,CAsBgB,SAAAE,EAAeN,EAAUO,EAAcC,EAAwB,CAC3E,GAAA,EAAAR,GAAO,MAAQ,CAACO,GAEnB,OAAUA,EAAK,MAAM,SAAS,EAAE,OAAOA,GAAQA,EAAK,MAAM,EAAE,OAAO,CAACP,EAAKO,EAAO,EAAGE,IAAQ,CAE1F,IADGF,EAAK,CAAC,GAAK,KAAOA,EAAK,CAAC,GAAK,OAAKA,EAAOA,EAAK,MAAM,EAAG,EAAE,GACzD,EAACP,GAAAA,MAAAA,EAAK,eAAeO,IAAO,CAC9B,GAAGC,GAAO,KAAkB,OAC5BR,EAAIO,CAAI,EAAI,EACb,CACA,OAAGC,IAAQ,QAAa,GAAKC,EAAI,OAAS,EAClCT,EAAIO,CAAI,EAAIC,EACbR,EAAIO,CAAI,GACbP,CAAG,CACP,CAgBO,SAASU,EAAWV,EAAUW,EAAcC,EAAc,CAAA,EAAI,CACpE,GAAG,OAAOZ,GAAQ,UAAY,CAAC,MAAM,QAAQA,CAAG,EAAG,CAClD,UAAUG,KAAO,OAAO,KAAKH,CAAG,EAAG,CAClC,MAAMa,EAAWF,EAASA,EAAS,IAAMR,EAAMA,EAC5C,OAAOH,EAAIG,CAAG,GAAM,SACtBO,EAAWV,EAAIG,CAAG,EAAGU,EAAUD,CAAM,EAE9BA,EAAAC,CAAQ,EAAIb,EAAIG,CAAG,CAE5B,CACO,OAAAS,CACR,CACD,CAiBO,SAASE,EAASC,EAAaC,EAAaC,EAAe,GAAgB,CACjF,GAAGF,GAAU,KAAkB,OAAAE,EAC5B,GAAA,MAAM,QAAQD,CAAM,EAAG,OAAOA,EAAO,UAAU,CAACE,EAAQ,IAAc,CAACJ,EAASC,EAAO,CAAC,EAAGC,EAAO,CAAC,EAAGC,CAAY,CAAC,GAAK,GAC3H,MAAME,EAAO,OAAOH,EACpB,OAAGG,GAAQ,OAAOJ,EAAe,GAC9BI,GAAQ,SACH,OAAO,KAAKH,CAAM,EAAE,QAAY,CAACF,EAASC,EAAOZ,CAAG,EAAGa,EAAOb,CAAG,EAAGc,CAAY,CAAC,GAAK,KAE3FE,GAAQ,WAAmBJ,EAAO,SAAA,GAAcC,EAAO,SAAS,EAC5DD,GAAUC,CAClB,CASgB,SAAAI,EAAQC,EAAQC,EAAiB,CAChD,MAAMC,EAAK,OAAOF,EAAGG,EAAK,OAAOF,EACjC,OAAIC,GAAM,UAAYF,GAAK,MAAUG,GAAM,UAAYF,GAAK,KACpDC,GAAM,YAAcC,GAAM,WAAaH,EAAE,SAAc,GAAAC,EAAE,WAAaD,IAAMC,EACvE,OAAO,KAAKD,CAAC,EAClB,QAAU,OAAO,KAAKC,CAAC,EAAE,OAAe,GACzC,OAAO,KAAKD,CAAC,EAAE,MAAMlB,GAAOiB,EAAQC,EAAElB,CAAG,EAAGmB,EAAEnB,CAAG,CAAC,CAAC,CAC3D,CAEgB,SAAAsB,EAAMV,EAAaW,EAAqB,CACvDA,EAAa,QAAaC,GAAA,CACzB,OAAO,oBAAoBA,EAAE,SAAS,EAAE,QAASC,GAAS,CAClD,OAAA,eACNb,EAAO,UACPa,EACA,OAAO,yBAAyBD,EAAE,UAAWC,CAAI,GACjD,OAAO,OAAO,IAAI,CAAA,CACnB,CACA,CAAA,CACD,CACF,CAEgB,SAAAC,EAAc7B,EAAU8B,EAAgB,CACvD,IAAIC,EAAe,CAAA,EACnB,OAAO,KAAK,MAAM,KAAK,UAAU/B,EAAK,CAACG,EAAKC,IAAU,CACrD,GAAI,OAAOA,GAAU,UAAYA,IAAU,KAAM,CAC5C,GAAA2B,EAAM,SAAS3B,CAAK,EAAG,OAC3B2B,EAAM,KAAK3B,CAAK,CACjB,CACO,OAAAA,CAAA,EACL0B,CAAK,CAAC,CACV,CCnKgB,SAAAE,EAAaC,EAAYC,EAAY,CACjD,OAAAD,EAAM,QAAQC,CAAE,IAAM,IAAID,EAAM,KAAKC,CAAE,EACnCD,CACR,CAEgB,SAAAE,EAAUd,EAAUC,EAAiB,CACpD,OAAOc,EAAW,CACjB,GAAGf,EAAE,OAAOgB,GAAM,CAACf,EAAE,SAAUgB,GAAYlB,EAAQiB,EAAIC,CAAE,CAAC,CAAC,EAC3D,GAAGhB,EAAE,OAAOe,GAAM,CAAChB,EAAE,SAAUiB,GAAYlB,EAAQiB,EAAIC,CAAE,CAAC,CAAC,CAAA,CAC3D,CACF,CAcO,SAASC,EAAoBhC,EAAc,CAC1C,OAAA,SAAUc,EAAQC,EAAQ,CAC1B,MAAAkB,EAAOlC,EAAoBe,EAAGd,CAAI,EAClCkC,EAAOnC,EAAoBgB,EAAGf,CAAI,EACxC,OAAG,OAAOiC,GAAS,UAAY,OAAOC,GAAS,SAAiB,EACzDD,EAAK,YAAY,EAAE,cAAcC,EAAK,aAAa,CAAA,CAE5D,CA8BO,SAASC,EAAWjC,EAAYG,EAAgB,GAAW,CACjE,OAAAH,EAAI,QAAQyB,GAAM,MAAM,QAAQA,CAAE,EAAIQ,EAAWR,EAAItB,CAAM,EAAIA,EAAO,KAAKsB,CAAE,CAAC,EACvEtB,CACR,CAegB,SAAA+B,EAAWpC,EAAcqC,EAAU,GAAO,CAClD,OAAA,SAAUvB,EAAQC,EAAQ,CAC1B,MAAAkB,EAAOlC,EAAiBe,EAAGd,CAAI,EAC/BkC,EAAOnC,EAAiBgB,EAAGf,CAAI,EACrC,OAAG,OAAOiC,GAAQ,UAAY,OAAOC,GAAQ,UACpCG,EAAU,GAAK,IAAMJ,EAAOC,GAClCD,EAAOC,EAAaG,EAAU,GAAK,EACnCJ,EAAOC,EAAaG,EAAU,EAAI,GAC9B,CAAA,CAET,CAEgB,SAAAC,EAAWtC,EAAcH,EAAY,CACpD,OAAQ0C,GAAW1B,EAAQ0B,EAAEvC,CAAI,EAAGH,CAAK,CAC1C,CAEO,SAASgC,EAAW3B,EAAY,CACtC,QAAQsC,EAAItC,EAAI,OAAS,EAAGsC,GAAK,EAAGA,IAChCtC,EAAI,MAAM,EAAGsC,CAAC,EAAE,KAAUC,GAAA5B,EAAQ4B,EAAGvC,EAAIsC,CAAC,CAAC,CAAC,GAAOtC,EAAA,OAAOsC,EAAG,CAAC,EAE3D,OAAAtC,CACR,CAOO,SAASwC,EAAa7C,EAAqB,CACjD,OAAO,MAAM,QAAQA,CAAK,EAAIA,EAAQ,CAACA,CAAK,CAC7C,CC/GO,MAAM8C,UAAgB,KAAM,CAClC,IAAI,MAAO,CACV,OAAO,KAAK,MACb,CAEA,YAAYC,EAAgB,GAAI,CACzB,QACDA,GAAA,MAAAA,EAAW,SACfA,EAAS,QAAQjB,GAAM,KAAK,IAAIA,CAAE,CAAC,CACrC,CAEA,IAAIA,EAAO,CACN,KAAK,IAAIA,CAAE,GAAG,KAAK,KAAKA,CAAE,CAC/B,CAEA,OAAOA,EAAO,CACP,MAAAkB,EAAQ,KAAK,QAAQlB,CAAE,EAC1BkB,GAAS,IAAS,KAAA,MAAMA,EAAO,CAAC,CACpC,CAEA,WAAW5C,EAAc,CACxB,OAAO,IAAI0C,EAAQ,KAAK,OAAO,CAACG,EAAKnB,KAChC1B,EAAI,IAAI0B,CAAE,GAAGmB,EAAI,KAAKnB,CAAE,EACrBmB,GACL,CAAA,CAAE,CAAC,CACP,CAEA,IAAInB,EAAO,CACH,OAAA,KAAK,QAAQA,CAAE,GAAK,EAC5B,CAEA,aAAa1B,EAAc,CAC1B,OAAO,IAAI0C,EAAQ,KAAK,OAAO,CAACG,EAAKnB,KACjC1B,EAAI,IAAI0B,CAAE,GAAGmB,EAAI,KAAKnB,CAAE,EACpBmB,GACL,CAAA,CAAE,CAAC,CACP,CAEA,eAAe7C,EAAc,CAC5B,OAAO,KAAK,aAAaA,CAAG,EAAE,MAAQ,CACvC,CAEA,WAAWA,EAAc,CACjB,OAAA,KAAK,UAAgB0B,GAAA,CAAC1B,EAAI,IAAI0B,CAAE,CAAC,GAAK,EAC9C,CAEA,WAAW1B,EAAc,CACjB,OAAAA,EAAI,UAAgB0B,GAAA,CAAC,KAAK,IAAIA,CAAE,CAAC,GAAK,EAC9C,CAEA,oBAAoB1B,EAAc,CACjC,OAAO,IAAI0C,EAAK,CAAC,GAAG,KAAK,WAAW1C,CAAG,EAAG,GAAGA,EAAI,WAAW,IAAI,CAAC,CAAC,CACnE,CAEA,MAAMA,EAAyB,CAC9B,OAAO,IAAI0C,EAAK,CAAC,GAAG,KAAM,GAAG1C,CAAG,CAAC,CAClC,CACD,CCzDgB,SAAA8C,GAASC,EAAW3B,EAAc,CAC3C,MAAAP,EAAI,SAAS,cAAc,GAAG,EACpCA,EAAE,KAAOkC,EACTlC,EAAE,SAAWO,EACJ,SAAA,KAAK,YAAYP,CAAC,EAC3BA,EAAE,MAAM,EACC,SAAA,KAAK,YAAYA,CAAC,CAC5B,CCJO,MAAMmC,CAAkD,CAAxD,cAGEC,EAAA,iBAA+C,CAAA,GAEvD,OAAO,KAAKC,KAAeC,EAAa,EACtC,KAAK,UAAU,GAAG,GAAK,CAAA,GAAI,QAAQC,GAAKA,EAAEF,EAAO,GAAGC,CAAI,CAAC,GACzD,KAAK,UAAUD,EAAM,SAAU,CAAA,GAAK,CAAA,GAAI,QAAQE,GAAKA,EAAE,GAAGD,CAAI,CAAC,CACjE,CAEA,OAAO,IAAID,EAAYG,EAAoB,CACpC,MAAA3C,EAAIwC,EAAM,WAChB,KAAK,UAAUxC,CAAC,GAAK,KAAK,UAAUA,CAAC,GAAK,CAAA,GAAI,OAAY0C,GAAAA,IAAMC,CAAQ,CACzE,CAEA,OAAO,GAAGH,EAAYG,EAAoB,OACnC,MAAA3C,EAAIwC,EAAM,WACb,OAAC,KAAK,UAAUxC,CAAC,IAAQ,KAAA,UAAUA,CAAC,EAAI,KAC3C4C,EAAA,KAAK,UAAU5C,CAAC,IAAhB,MAAA4C,EAAmB,KAAKD,GACjB,IAAM,KAAK,IAAIH,EAAOG,CAAQ,CACtC,CAEA,OAAO,KAAKH,EAAYG,EAAmC,CACnD,OAAA,IAAI,QAAeE,GAAA,CACzB,MAAMC,EAAc,KAAK,GAAGN,EAAa,IAAIC,IAAc,CAC1DI,EAAIJ,EAAK,QAAU,EAAIA,EAAK,CAAC,EAAIA,CAAI,EAClCE,GAAUA,EAAS,GAAGF,CAAI,EACjBK,GAAA,CACX,CAAA,CACF,CACF,CAEA,KAAwBN,KAAaC,EAAwB,EAC3D,KAAK,UAAU,GAAG,GAAK,CAAA,GAAI,QAAQC,GAAKA,EAAEF,EAAO,GAAGC,CAAI,CAAC,GACzD,KAAK,UAAUD,CAAK,GAAK,CAAI,GAAA,QAAaE,GAAAA,EAAE,GAAGD,CAAI,CAAC,CACtD,CAEA,IAAgCD,EAAUG,EAAgB,CACzD,KAAK,UAAUH,CAAK,GAAK,KAAK,UAAUA,CAAK,GAAK,CAAA,GAAI,OAAYE,GAAAA,IAAMC,CAAQ,CACjF,CAEA,GAA+BH,EAAUG,EAAgB,OACrD,OAAC,KAAK,UAAUH,CAAK,IAAQ,KAAA,UAAUA,CAAK,EAAI,KACnDI,EAAA,KAAK,UAAUJ,CAAK,IAApB,MAAAI,EAAuB,KAAKD,GACrB,IAAM,KAAK,IAAIH,EAAOG,CAAQ,CACtC,CAEA,KAAiCH,EAAUG,EAA+B,CAClE,OAAA,IAAI,QAAeE,GAAA,CACzB,MAAMC,EAAc,KAAK,GAAGN,EAAa,IAAIC,IAAc,CAC1DI,EAAIJ,EAAK,QAAU,EAAIA,EAAK,CAAC,EAAIA,CAAI,EAClCE,GAAUA,EAAS,GAAGF,CAAI,EACjBK,GAAA,CACX,CAAA,CACF,CACF,CACD,CAvDCP,EADYD,EACG,YAAyC,CAAA,GCJlD,MAAMS,UAAoB,KAAM,CAOtC,YAAYC,EAAkBC,EAAe,CAC5C,MAAMD,CAAO,EALNT,EAAA,cAMJU,GAAQ,OAAM,KAAK,MAAQA,EAC/B,CANA,IAAI,MAAe,CAAS,OAAA,KAAK,OAAe,KAAM,YAAY,IAAM,CACxE,IAAI,KAAKxC,EAAW,CAAE,KAAK,MAAQA,CAAG,CAOtC,OAAO,KAAKyC,EAAyB,CACpC,MAAMD,EAAO,OAAaC,EAAK,UAAU,GAAK,OAAaA,EAAK,IAAI,EAC9DC,EAAS,IAAI,KAAKD,EAAI,SAAWA,EAAI,UAAU,EAC9C,OAAA,OAAO,OAAOC,EAAQ,CAC5B,MAAOD,EAAI,MACX,GAAGA,EACH,KAAMD,GAAQ,MAAA,CACd,CACF,CAEA,OAAO,WAAWC,EAAY,CAChB,OAAAA,EAAK,YAAY,MAAQ,IACvC,CAEA,UAAW,CACH,OAAA,KAAK,SAAW,MAAM,SAAS,CACvC,CACD,CA5BCX,EADYQ,EACL,OAAO,KA8BR,MAAMK,UAAwBL,CAAY,CAGhD,YAAYC,EAAkB,cAAe,CAC5C,MAAMA,CAAO,CACd,CAEA,OAAO,WAAWE,EAAY,CAChB,OAAAA,EAAK,YAAY,MAAQ,KAAK,IAC5C,CACD,CATCX,EADYa,EACL,OAAO,KAWR,MAAMC,UAA0BN,CAAY,CAGlD,YAAYC,EAAkB,eAAgB,CAC7C,MAAMA,CAAO,CACd,CAEA,OAAO,WAAWE,EAAY,CAChB,OAAAA,EAAK,YAAY,MAAQ,KAAK,IAC5C,CACD,CATCX,EADYc,EACL,OAAO,KAWR,MAAMC,UAAuBP,CAAY,CAG/C,YAAYC,EAAkB,YAAa,CAC1C,MAAMA,CAAO,CACd,CAEA,OAAO,WAAWE,EAAY,CAChB,OAAAA,EAAK,YAAY,MAAQ,KAAK,IAC5C,CACD,CATCX,EADYe,EACL,OAAO,KAWR,MAAMC,UAAsBR,CAAY,CAG9C,YAAYC,EAAkB,YAAa,CAC1C,MAAMA,CAAO,CACd,CAEA,OAAO,WAAWE,EAAY,CAChB,OAAAA,EAAK,YAAY,MAAQ,KAAK,IAC5C,CACD,CATCX,EADYgB,EACL,OAAO,KAWR,MAAMC,UAA4BT,CAAY,CAGpD,YAAYC,EAAkB,wBAAyB,CACtD,MAAMA,CAAO,CACd,CAEA,OAAO,WAAWE,EAAY,CAChB,OAAAA,EAAK,YAAY,MAAQ,KAAK,IAC5C,CACD,CATCX,EADYiB,EACL,OAAO,KC9ER,MAAMC,EAAa,CACzB,MAAO,UACP,OAAQ,UACR,IAAK,UACL,WAAY,UACZ,MAAO,UACP,QAAS,UACT,OAAQ,SACT,EAEaC,EAAgB,CAC5B,MAAO,WACP,IAAK,WACL,MAAO,WACP,OAAQ,WACR,KAAM,WACN,QAAS,WACT,KAAM,WACN,WAAY,WACZ,KAAM,WACN,UAAW,WACX,YAAa,WACb,aAAc,WACd,WAAY,WACZ,cAAe,WACf,WAAY,WACZ,MAAO,UACR,EAEaC,GAAgB,CAC5B,MAAO,WACP,IAAK,WACL,MAAO,WACP,OAAQ,WACR,KAAM,WACN,QAAS,WACT,KAAM,WACN,MAAO,WACP,KAAM,WACP,EAEY,IAAAC,GAAAA,IACXA,EAAAA,EAAA,MAAQ,CAAR,EAAA,QACAA,EAAAA,EAAA,KAAO,CAAP,EAAA,OACAA,EAAAA,EAAA,KAAO,CAAP,EAAA,OACAA,EAAAA,EAAA,IAAM,CAAN,EAAA,MACAA,EAAAA,EAAA,MAAQ,CAAR,EAAA,QALWA,IAAAA,GAAA,CAAA,CAAA,EAgBL,MAAMC,EAAN,MAAMA,UAAevB,CAA2B,CAGtD,YAA4BwB,EAAoB,CACzC,QADqB,KAAA,UAAAA,CAE5B,CAEQ,IAAIC,EAAWC,EAAgBC,EAAcC,EAAM,GAAO,CAC3D,MAAAC,EAAIJ,EAAK,WACTrB,EAAIsB,EAASG,EAAE,OACrB,GAAGzB,GAAK,EAAU,OAAAyB,EAClB,MAAMC,EAAU,MAAM,CAAC,EAAE1B,EAAIuB,EAAK,OAAO,EAAE,KAAKA,CAAI,EAAE,KAAK,EAAE,EAC7D,OAAQC,EAAoBC,EAAIC,EAAlBA,EAAUD,CACzB,CAEQ,UAAUJ,EAAwB,CACnC,MAAAM,MAAU,KAEhB,MAAO,GADW,GAAGA,EAAI,YAAY,CAAC,IAAIA,EAAI,SAAS,EAAI,CAAC,IAAIA,EAAI,QAAA,CAAS,IAAI,KAAK,IAAIA,EAAI,SAAA,EAAW,WAAY,EAAG,GAAG,CAAC,IAAI,KAAK,IAAIA,EAAI,aAAa,SAAA,EAAY,EAAG,GAAG,CAAC,IAAI,KAAK,IAAIA,EAAI,WAAW,EAAE,SAAS,EAAG,EAAG,GAAG,CAAC,IAAI,KAAK,IAAIA,EAAI,gBAAA,EAAkB,SAAA,EAAY,EAAG,IAAK,EAAI,CAAC,EACvQ,GAAG,KAAK,UAAY,KAAK,KAAK,SAAS,IAAM,EAAE,IAAIN,EAAK,KAAK,GAAG,CAAC,EACrF,CAEA,SAAStB,EAAgB,CACxB,GAAGoB,EAAO,UAAY,EAAiB,OACvC,MAAMS,EAAM,KAAK,OAAO,GAAG7B,CAAI,EACxBoB,EAAA,KAAK,EAAiBS,CAAG,EAChC,QAAQ,MAAMZ,EAAc,WAAaY,EAAMb,EAAW,KAAK,CAChE,CAEA,OAAOhB,EAAgB,CACtB,GAAGoB,EAAO,UAAY,EAAe,OACrC,MAAMS,EAAM,KAAK,OAAO,GAAG7B,CAAI,EACxBoB,EAAA,KAAK,EAAeS,CAAG,EACtB,QAAA,IAAIb,EAAW,MAAQa,CAAG,CACnC,CAEA,QAAQ7B,EAAgB,CACvB,GAAGoB,EAAO,UAAY,EAAgB,OACtC,MAAMS,EAAM,KAAK,OAAO,GAAG7B,CAAI,EACxBoB,EAAA,KAAK,EAAgBS,CAAG,EAC/B,QAAQ,KAAKZ,EAAc,KAAOY,EAAMb,EAAW,KAAK,CACzD,CAEA,QAAQhB,EAAgB,CACvB,GAAGoB,EAAO,UAAY,EAAgB,OACtC,MAAMS,EAAM,KAAK,OAAO,GAAG7B,CAAI,EACxBoB,EAAA,KAAK,EAAgBS,CAAG,EAC/B,QAAQ,KAAKZ,EAAc,OAASY,EAAMb,EAAW,KAAK,CAC3D,CAEA,SAAShB,EAAgB,CACxB,GAAGoB,EAAO,UAAY,EAAiB,OACvC,MAAMS,EAAM,KAAK,OAAO,GAAG7B,CAAI,EACxBoB,EAAA,KAAK,EAAiBS,CAAG,EAChC,QAAQ,MAAMZ,EAAc,IAAMY,EAAMb,EAAW,KAAK,CACzD,CACD,EAtDClB,EADYsB,EACL,YAAuB,GADxB,IAAMU,EAANV,EChDA,SAASW,GAASC,EAAa,CAC/B,MAAAC,EAAM,CAACvE,EAAWC,IACnBA,EAAI,KAAkBD,EACnBuE,EAAItE,EAAG,CAAC,EAAED,EAAIC,EAAE,EAGlBuE,EAAMF,EAAI,SAAS,EAAE,OAAS,EACpC,IAAIG,EAAc,KAAK,IAAI,GAAID,CAAG,EAC9BE,EAAYJ,EAAMG,EAChB,MAAAE,EAAUJ,EAAIG,EAAWD,CAAW,EAC9BC,EAAA,CAAC,EAAEA,EAAYC,GACbF,EAAA,CAAC,EAAEA,EAAcE,GACzB,MAAAC,EAAY,CAAC,EAAEF,EAAYD,GACjC,OAAAC,GAAaE,EAAYH,EAClB,GAAGG,EAAYA,EAAY,IAAM,EAAE,GAAG,CAAC,CAAEF,CAAU,IAAI,CAAC,CAAED,CAAY,EAC9E,CAaO,SAASI,GAAUC,EAAc,CACnC,IAAAC,EAAQD,EAAK,MAAM,GAAG,EACpB,MAAAE,EAAQD,EAAM,QAAU,EAAI,OAAOA,EAAM,CAAC,CAAC,EAAI,EACrD,OAAAA,EAAiBA,EAAM,IAAO,EAAA,MAAM,GAAG,EAChCC,EAAS,OAAOD,EAAM,CAAC,CAAC,EAAI,OAAOA,EAAM,CAAC,CAAC,CACnD,CC5CgB,SAAAE,GAAWrB,EAAcsB,EAAiB,CACzD,OAAOtB,EAAK,OAASA,EAAK,WAAWsB,EAAS,EAAE,EAAE,MACnD,CAEO,SAASC,GAAUtB,EAAgB,CAClC,OAAA,MAAMA,CAAM,EAAE,KAAK,IAAI,EAAE,IAAI,IAAM,KAAK,MAAM,KAAK,OAAO,EAAI,EAAG,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAChG,CAMA,MAAMuB,EAAc,uDAMdC,EAAc,aAKdC,EAAc,qCAKdC,GAAYH,EAAcC,EAAcC,EAEvC,SAASE,GAAkBC,EAAgB,CAC3C,MAAAC,EAAQ,yCAAyC,KAAKD,CAAM,EAClE,GAAG,CAACC,EAAO,MAAM,IAAI,MAAM,4BAA4BD,CAAM,EAAE,EAC/D,MAAO,GAAGC,EAAM,CAAC,GAAK,EAAE,KAAKA,EAAM,CAAC,CAAC,KAAKA,EAAM,CAAC,CAAC,IAAIA,EAAM,CAAC,CAAC,GAAG,MAClE,CAgBgB,SAAAC,GAASjG,EAAgByE,EAAapC,EAAuB,CAC5E,MAAO,GAAGrC,EAAO,MAAM,EAAGqC,CAAK,CAAC,GAAGoC,CAAG,GAAGzE,EAAO,MAAMqC,EAAQ,CAAC,CAAC,EACjE,CAEO,SAAS6D,GAAIhC,EAAWC,EAAgBC,EAAc+B,EAAQ,GAAM,CACpE,MAAA7B,EAAIJ,EAAK,WACTrB,EAAIsB,EAASG,EAAE,OACrB,GAAGzB,GAAK,EAAU,OAAAyB,EAClB,MAAMC,EAAU,MAAM,CAAC,EAAE1B,EAAIuB,EAAK,OAAO,EAAE,KAAKA,CAAI,EAAE,KAAK,EAAE,EACtD,OAAA+B,EAAQ5B,EAAUD,EAAIA,EAAIC,CAClC,CAegB,SAAA6B,GAAajC,EAAgBkC,EAAeR,GAAmB,CAC9E,OAAO,MAAM1B,CAAM,EAAE,KAAK,IAAI,EAAE,IAAI,IAAM,CACzC,MAAMlC,EAAI,CAAC,EAAE,KAAK,OAAA,EAAWoE,EAAK,QAClC,OAAOA,EAAKpE,CAAC,CAAA,CACb,EAAE,KAAK,EAAE,CACX,CAiBO,SAASqE,GAAoBnC,EAAgBoC,EAAU,GAAOC,EAAU,GAAOC,EAAU,GAAe,CAC9G,GAAG,CAACF,GAAW,CAACC,GAAW,CAACC,EAAe,MAAA,IAAI,MAAM,qDAAqD,EAC1G,OAAO,MAAMtC,CAAM,EAAE,KAAK,IAAI,EAAE,IAAI,IAAM,CACrC,IAAAvD,EACD,EAAA,CACF,MAAMR,EAAO,CAAC,EAAE,KAAK,OAAW,EAAA,GAC7BmG,GAAWnG,GAAQ,EACrBQ,EAAI8E,EAAY,CAAC,EAAE,KAAK,OAAO,EAAIA,EAAY,OAAO,EAC7Cc,GAAWpG,GAAQ,EAC5BQ,EAAI+E,EAAY,CAAC,EAAE,KAAK,OAAO,EAAIA,EAAY,OAAO,EAC7Cc,GAAWrG,GAAQ,IAC5BQ,EAAIgF,EAAY,CAAC,EAAE,KAAK,OAAO,EAAIA,EAAY,OAAO,SAEhD,CAAChF,GACF,OAAAA,CAAA,CACP,EAAE,KAAK,EAAE,CACX,CAWgB,SAAA8F,GAASrH,EAAesH,EAA2C,CAM/E,GALA,OAAOA,GAAU,WACXA,EAAA,IAAI,OAAOA,EAAO,GAAG,GAI3B,CAACA,EAAM,OACH,MAAA,IAAI,UAAU,oCAAoC,EAGzD,IAAIC,EAAyB,CAAA,EACzBC,EACJ,MAAOA,EAAQF,EAAM,KAAKtH,CAAK,KAAO,MACrCuH,EAAI,KAAKC,CAAK,EAGR,OAAAD,CACR,CAOO,SAASE,EAAIC,EAAY,CAC3B,IAAAC,EAAIC,GAAEC,GAAEC,GAAEC,GAAEL,CAAC,EAAE,EAAEA,EAAE,MAAM,CAAC,CAAC,EAAE,OAAOC,EAAE,aAAa,CACvD,SAASC,GAAEF,EAAM,CAAS,QAAAM,EAAEC,EAAE,mBAAmBC,EAAE,GAAGP,EAAE,EAAEA,EAAED,EAAE,OAAOC,IAAIK,EAAEN,EAAE,WAAWC,CAAC,EAAEO,GAAGD,EAAE,OAAOD,IAAI,EAAE,EAAE,EAAEC,EAAE,OAAO,GAAGD,CAAC,EAAS,OAAAE,CAAC,CACxI,SAASH,GAAEL,EAAM,CAAS,QAAAM,EAAE,MAAMN,EAAE,QAAQ,CAAC,EAAEO,EAAE,EAAEA,EAAED,EAAE,OAAOC,IAAID,EAAEC,CAAC,EAAE,EAAE,IAAIA,EAAE,EAAEA,EAAE,EAAEP,EAAE,OAAOO,GAAG,EAAID,EAAAC,GAAG,CAAC,IAAI,IAAIP,EAAE,WAAWO,EAAE,CAAC,IAAIA,EAAE,GAAU,OAAAD,CAAC,CAClJ,SAASH,GAAEH,EAAM,CAAS,QAAAM,EAAE,GAAGC,EAAE,EAAEA,EAAE,GAAGP,EAAE,OAAOO,GAAG,EAAKD,GAAA,OAAO,aAAaN,EAAEO,GAAG,CAAC,IAAIA,EAAE,GAAG,GAAG,EAAS,OAAAD,CAAC,CACzG,SAASF,GAAEJ,EAAMM,EAAM,CAACN,EAAEM,GAAG,CAAC,GAAG,KAAKA,EAAE,GAAGN,EAAE,IAAIM,EAAE,KAAK,GAAG,EAAE,EAAEA,EAAE,QAAQC,EAAE,WAAWC,EAAE,WAAWP,EAAE,YAAY,EAAE,UAAU/E,EAAE,EAAEA,EAAE8E,EAAE,OAAO9E,GAAG,GAAG,CAAC,IAAIuF,EAAEF,EAAEhD,EAAEiD,EAAEE,EAAET,EAAE7G,EAAE,EAAIoH,EAAAG,EAAOH,EAAEG,EAAOH,EAAEG,EAAOH,EAAEG,EAAOH,EAAEI,EAAOJ,EAAEI,EAAOJ,EAAEI,EAAOJ,EAAEI,EAAOJ,EAAEK,EAAOL,EAAEK,EAAOL,EAAEK,EAAOL,EAAEK,EAAOL,EAAEM,EAAON,EAAEM,EAAON,EAAEM,EAAON,EAAEM,EAAON,EAAEP,EAAEa,EAAOb,EAAE,EAAEa,EAAO,EAAEP,EAAEO,EAAOP,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,UAAU,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,CAAC,EAAE,GAAG,WAAW,EAAE+E,EAAEa,EAAOb,EAAE,EAAEa,EAAO,EAAEP,EAAEO,EAAOP,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,UAAU,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,CAAC,EAAE,GAAG,WAAW,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE+E,EAAEa,EAAOb,EAAE,EAAEa,EAAO,EAAEP,EAAEO,EAAOP,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,UAAU,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,CAAC,EAAE,GAAG,WAAW,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,EAAE,EAAE,GAAG,MAAM,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE+E,EAAEa,EAAOb,EAAE,EAAEa,EAAO,EAAEP,EAAEO,EAAOP,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,EAAE,EAAE,EAAE,UAAU,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,EAAE,EAAE,GAAG,SAAS,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,EAAE,EAAE,GAAG,UAAU,EAAE+E,EAAEY,EAAOZ,EAAE,EAAEY,EAAO,EAAEN,EAAEM,EAAON,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,UAAU,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,WAAW,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,EAAE,EAAE,GAAG,SAAS,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAE+E,EAAEY,EAAOZ,EAAE,EAAEY,EAAO,EAAEN,EAAEM,EAAON,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,UAAU,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,EAAE,EAAE,GAAG,UAAU,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAE+E,EAAEY,EAAOZ,EAAE,EAAEY,EAAO,EAAEN,EAAEM,EAAON,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,SAAS,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,EAAE,EAAE,EAAE,WAAW,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAE+E,EAAEY,EAAOZ,EAAE,EAAEY,EAAO,EAAEN,EAAEM,EAAON,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,EAAE,EAAE,EAAE,WAAW,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,SAAS,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE+E,EAAEW,EAAOX,EAAE,EAAEW,EAAO,EAAEL,EAAEK,EAAOL,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,OAAO,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,CAAC,EAAE,GAAG,WAAW,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,EAAE,EAAE,GAAG,UAAU,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,EAAE,EAAE,GAAG,SAAS,EAAE+E,EAAEW,EAAOX,EAAE,EAAEW,EAAO,EAAEL,EAAEK,EAAOL,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,WAAW,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE+E,EAAEW,EAAOX,EAAE,EAAEW,EAAO,EAAEL,EAAEK,EAAOL,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,EAAE,EAAE,EAAE,SAAS,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,CAAC,EAAE,GAAG,QAAQ,EAAE+E,EAAEW,EAAOX,EAAE,EAAEW,EAAO,EAAEL,EAAEK,EAAOL,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,UAAU,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,EAAE,EAAE,GAAG,UAAU,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,EAAE,EAAE,GAAG,SAAS,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAE+E,EAAEU,EAAOV,EAAE,EAAEU,EAAO,EAAEJ,EAAEI,EAAOJ,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,UAAU,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE+E,EAAEU,EAAOV,EAAE,EAAEU,EAAO,EAAEJ,EAAEI,EAAOJ,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,EAAE,EAAE,EAAE,UAAU,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,CAAC,EAAE,GAAG,WAAW,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,EAAE,EAAE,GAAG,QAAQ,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,CAAC,EAAE,GAAG,WAAW,EAAE+E,EAAEU,EAAOV,EAAE,EAAEU,EAAO,EAAEJ,EAAEI,EAAOJ,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,UAAU,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,EAAE,EAAE,GAAG,SAAS,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,CAAC,EAAE,GAAG,WAAW,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,EAAE,EAAE,GAAG,UAAU,EAAE+E,EAAEU,EAAOV,EAAE,EAAEU,EAAO,EAAEJ,EAAEI,EAAOJ,EAAEC,EAAEP,EAAE,EAAED,EAAE9E,EAAE,CAAC,EAAE,EAAE,UAAU,EAAEsF,EAAEP,EAAED,EAAE9E,EAAE,EAAE,EAAE,GAAG,WAAW,EAAEqF,EAAEC,EAAER,EAAE9E,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,EAAEqF,EAAEP,EAAE9E,EAAE,CAAC,EAAE,GAAG,UAAU,EAAEqF,EAAEQ,EAASR,EAAEE,CAAC,EAAED,EAAEO,EAASP,EAAEjD,CAAC,EAAE0C,EAAEc,EAASd,EAAES,CAAC,EAAE,EAAEK,EAAS,EAAE3H,CAAC,CAAC,CAAC,OAAO,MAAMmH,EAAEC,EAAEP,EAAE,CAAC,CAAC,CAC1jF,SAASe,EAAQhB,EAAMM,EAAMC,EAAMC,EAAMP,EAAM,EAAM,CAAC,OAAOc,EAASE,GAAQF,EAASA,EAAST,EAAEN,CAAC,EAAEe,EAASP,EAAE,CAAC,CAAC,EAAEP,CAAC,EAAEM,CAAC,CAAC,CACzH,SAASO,EAAOd,EAAMM,EAAMC,EAAMC,EAAMP,EAAM,EAAM/E,EAAM,CAAQ,OAAA8F,EAAQV,EAAEC,EAAE,CAACD,EAAEE,EAAER,EAAEM,EAAEL,EAAE,EAAE/E,CAAC,CAAC,CAC7F,SAAS2F,EAAOb,EAAMM,EAAMC,EAAMC,EAAMP,EAAM,EAAM/E,EAAM,CAAQ,OAAA8F,EAAQV,EAAEE,EAAED,EAAE,CAACC,EAAER,EAAEM,EAAEL,EAAE,EAAE/E,CAAC,CAAC,CAC7F,SAAS0F,EAAOZ,EAAMM,EAAMC,EAAMC,EAAMP,EAAM,EAAM/E,EAAM,CAAQ,OAAA8F,EAAQV,EAAEC,EAAEC,EAAER,EAAEM,EAAEL,EAAE,EAAE/E,CAAC,CAAC,CAC1F,SAASyF,EAAOX,EAAMM,EAAMC,EAAMC,EAAMP,EAAM,EAAM/E,EAAM,CAAQ,OAAA8F,EAAQT,GAAGD,EAAE,CAACE,GAAGR,EAAEM,EAAEL,EAAE,EAAE/E,CAAC,CAAC,CAC7F,SAAS6F,EAASf,EAAMM,EAAM,CAAK,IAAAC,GAAG,MAAMP,IAAI,MAAMM,GAAG,OAAON,GAAG,KAAKM,GAAG,KAAKC,GAAG,KAAK,GAAG,MAAMA,CAAC,CAClG,SAASU,GAAQjB,EAAMM,EAAM,CAAQ,OAAAN,GAAGM,EAAEN,IAAI,GAAGM,CAClD,CAQO,SAASY,GAAcC,EAAe,CACrC,MAAA,uEAAuE,KAAKA,CAAK,CACzF,CCnKO,SAASC,GAAWC,EAAmB,CACtC,OAAA,OAAO,QAAQA,CAAI,EAAE,IAAI,CAAC,CAAChJ,EAAKC,CAAK,IAC3C,mBAAmBD,CAAG,EAAI,IAAM,mBAAwBC,CAAK,CAAA,EAC5D,KAAK,GAAG,CACX,CASgB,SAAAgJ,GAASH,EAAeI,EAAI,KAAM,CACjD,OAAIJ,EACG,mCAAmCpB,EAAIoB,CAAK,CAAC,MAAMI,CAAG,GAD3C,EAEnB,CAmBO,SAASC,GAAUC,EAAwB,CACjD,MAAMC,EAAY,IAAI,OACrB,+KACA,IAAA,EAAM,KAAKD,CAAG,EACTE,GAAyBD,GAAA,YAAAA,EAAW,SAAU,GAC9CE,EAAUD,EAAO,OAAO,MAAM,GAAG,EAMvC,GALGA,EAAO,MAAW,OAAaA,EAAA,KAAO,OAAOA,EAAO,IAAI,GACxDC,EAAQ,OAAS,IACnBD,EAAO,OAASC,EAAQ,OAAO,GAAI,CAAC,EAAE,KAAK,GAAG,EACvCD,EAAA,UAAYC,EAAQ,KAAK,GAAG,GAEjCD,EAAO,MAAO,CAChB,MAAMrD,EAAcqD,EAAO,MAAO,MAAM,GAAG,EAAGE,EAAa,GACrDvD,EAAA,QAASwD,GAAW,CACzB,KAAM,CAACzJ,EAAK0J,CAAG,EAAID,EAAE,MAAM,GAAG,EAC9BD,EAAMxJ,CAAG,EAAI0J,CAAA,CACb,EACDJ,EAAO,MAAQE,CAChB,CACO,OAAAF,CACR,CC7DO,MAAMK,WAA2B,OAAW,CAWlD,YAAYC,EAAoH,CACzH,MAAA,CAACC,EAASC,IAAWF,EACzB3J,GAAa4J,EAAQ5J,CAAK,EAC1B8J,GAAgBD,EAAOC,CAAM,EAC7BC,GAAqB,KAAK,SAAWA,CAAA,CACtC,EAfM1G,EAAA,iBAAgC,CAAA,GAEhCA,EAAA,iBAAY,EAcpB,CAbA,IAAI,UAAW,CAAE,OAAO,KAAK,SAAW,CACxC,IAAI,SAAS2G,EAAW,CACpBA,GAAK,KAAK,YACb,KAAK,UAAYA,EACjB,KAAK,UAAU,QAAaxG,GAAAA,EAAEwG,CAAC,CAAC,EACjC,CAUA,WAAWC,EAA4B,CACjC,YAAA,UAAU,KAAKA,CAAQ,EACrB,IACR,CACD,CCnBO,SAASC,GAAUC,EAA6B,CAC9C,OAAAA,aAAgB,KAAOA,EAAK,QAAA,EAAYA,GAAS,IAAI,OAAQ,SACtE,CAiBO,SAASC,GAAMC,EAAY,CACjC,OAAO,IAAI,QAAQ1G,GAAO,WAAWA,EAAK0G,CAAE,CAAC,CAC9C,CAEO,SAASC,GAAWH,EAA8B,CACxD,MAAMzC,EAAIyC,aAAgB,KAAOA,EAAO,IAAI,KAAKA,CAAI,EAC9C,OAAA,IAAI,KAAK,eAAe,QAAS,CACvC,QAAS,OACT,MAAO,QACP,IAAK,UACL,KAAM,UACN,OAAQ,UACR,OAAQ,EAAA,CACR,EAAE,OAAOzC,CAAC,CACZ,CCZO,MAAM6C,EAAN,MAAMA,CAAI,CAShB,YAA4BC,EAAmB,GAAI,CAJ3CnH,EAAA,oBAA6C,CAAA,GAErDA,EAAA,eAAsD,CAAA,GAE1B,KAAA,KAAAmH,EACtB,KAAA,QAAUA,EAAK,SAAW,CAAA,EAC5BA,EAAK,cACPA,EAAK,aAAa,QAAQ7H,GAAK4H,EAAI,eAAe5H,CAAC,CAAC,CAEtD,CAEA,OAAO,eAAe8H,EAA6B,CAClD,MAAM1K,EAAM,OAAO,KAAKwK,EAAI,YAAY,EAAE,OAAO,WAC7C,OAAAA,EAAA,aAAaxK,CAAG,EAAI0K,EACjB,IAAM,CAAMF,EAAA,aAAaxK,CAAG,EAAS,IAAA,CAC7C,CAEA,eAAe0K,EAA6B,CAC3C,MAAM1K,EAAM,OAAO,KAAK,KAAK,YAAY,EAAE,OAAO,WAC7C,YAAA,aAAaA,CAAG,EAAI0K,EAClB,IAAM,CAAO,KAAA,aAAa1K,CAAG,EAAS,IAAA,CAC9C,CAEA,MAAM,QAAWyK,EAAuB,GAAiB,SACxD,GAAG,CAAC,KAAK,KAAK,KAAO,CAACA,EAAK,IAAW,MAAA,IAAI,MAAM,qBAAqB,EACrE,MAAMrB,IAAOzF,EAAA8G,EAAK,MAAL,MAAA9G,EAAU,WAAW,QAAU8G,EAAK,KAAO,KAAK,KAAK,KAAO,KAAOA,EAAK,KAAO,KAAK,QAAQ,eAAgB,IAAI,EAGvHE,EAAe/K,EAAM,CAC1B,eAAiB6K,EAAK,MAAQ,EAAEA,EAAK,gBAAgB,UAAa,mBAAqB,OACvF,GAAGD,EAAI,QACP,GAAG,KAAK,QACR,GAAGC,EAAK,OAAA,CACR,EAGD,OAAO,MAAMrB,EAAK,CACjB,QAAAuB,EACA,OAAQF,EAAK,SAAWA,EAAK,KAAO,OAAS,OAC7C,MAAOG,EAAAD,EAAQ,cAAc,IAAtB,MAAAC,EAAyB,WAAW,qBAAuBH,EAAK,KAAQ,KAAK,UAAUA,EAAK,IAAI,EAAIA,EAAK,IAAA,CAChH,EAAE,KAAK,MAAMI,GAAQ,SACrB,QAAQH,IAAM,CAAC,GAAG,OAAO,OAAOF,EAAI,YAAY,EAAG,GAAG,OAAO,OAAO,KAAK,YAAY,CAAC,EAC/E,MAAA,IAAI,QAAqB5G,GAAA8G,EAAGG,EAAM,IAAMjH,EAAK,CAAA,CAAC,EAGrD,GAAG,CAACiH,EAAK,GAAU,MAAA,IAAI,MAAMA,EAAK,UAAU,EACzC,MAAA,CAACJ,EAAK,kBAAkB9G,EAAAkH,EAAK,QAAQ,IAAI,cAAc,IAA/B,MAAAlH,EAAkC,WAAW,qBAA4B,MAAMkH,EAAK,OAC5G,CAACJ,EAAK,kBAAkBG,EAAAC,EAAK,QAAQ,IAAI,cAAc,IAA/B,MAAAD,EAAkC,WAAW,eAAsB,MAAWC,EAAK,OACvGA,CAAA,CACP,CACF,CACD,EAvDCvH,EADYkH,EACG,eAA6C,CAAA,GAE5DlH,EAHYkH,EAGL,UAAsD,CAAA,GAHvD,IAAMM,EAANN"}
|
package/dist/utils.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var c = (n, e, t) => (
|
|
4
|
-
function
|
|
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
|
|
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" ?
|
|
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
|
|
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) => !
|
|
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) => !
|
|
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
|
|
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) =>
|
|
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
|
|
73
|
-
...n.filter((t) => !e.includes((r) =>
|
|
74
|
-
...e.filter((t) => !n.includes((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
|
|
84
|
-
return n.forEach((t) => Array.isArray(t) ?
|
|
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) =>
|
|
93
|
+
return (t) => B(t[n], e);
|
|
94
94
|
}
|
|
95
|
-
function
|
|
95
|
+
function P(n) {
|
|
96
96
|
for (let e = n.length - 1; e >= 0; e--)
|
|
97
|
-
n.slice(0, e).find((t) =>
|
|
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
|
|
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
|
|
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
|
|
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
|
|
136
|
+
return new x([...this.difference(e), ...e.difference(this)]);
|
|
137
137
|
}
|
|
138
138
|
union(e) {
|
|
139
|
-
return new
|
|
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
|
|
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(
|
|
225
|
-
class
|
|
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(
|
|
234
|
-
class
|
|
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(
|
|
243
|
-
class
|
|
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(
|
|
252
|
-
class
|
|
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(
|
|
261
|
-
const
|
|
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
|
-
},
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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,
|
|
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",
|
|
366
|
-
function
|
|
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
|
|
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
|
|
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 =
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
479
|
-
s[d] =
|
|
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
|
|
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
|
|
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
|
|
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) =>
|
|
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(
|
|
529
|
-
return
|
|
530
|
-
|
|
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 =
|
|
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
|
-
...
|
|
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,
|
|
555
|
-
for (let
|
|
556
|
-
await new Promise((
|
|
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 && ((
|
|
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(
|
|
564
|
-
let
|
|
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
|
-
|
|
576
|
-
|
|
566
|
+
x as ASet,
|
|
567
|
+
U as BadRequestError,
|
|
577
568
|
at as CliBackground,
|
|
578
|
-
|
|
579
|
-
|
|
569
|
+
m as CliEffects,
|
|
570
|
+
w as CliForeground,
|
|
580
571
|
E as CustomError,
|
|
581
|
-
|
|
582
|
-
|
|
572
|
+
H as ForbiddenError,
|
|
573
|
+
F as InternalServerError,
|
|
583
574
|
q as LOG_LEVEL,
|
|
584
575
|
L as Logger,
|
|
585
|
-
|
|
586
|
-
|
|
576
|
+
W as NotFoundError,
|
|
577
|
+
Ot as PromiseProgress,
|
|
587
578
|
$ as TypedEmitter,
|
|
588
|
-
|
|
589
|
-
|
|
579
|
+
Y as UnauthorizedError,
|
|
580
|
+
I as XHR,
|
|
590
581
|
nt as addUnique,
|
|
591
582
|
rt as arrayDiff,
|
|
592
583
|
ot as caseInsensitiveSort,
|
|
593
|
-
|
|
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
|
-
|
|
602
|
-
|
|
603
|
-
|
|
592
|
+
M as flattenArr,
|
|
593
|
+
j as flattenObj,
|
|
594
|
+
wt as formEncode,
|
|
604
595
|
Nt as formatDate,
|
|
605
|
-
|
|
596
|
+
pt as formatPhoneNumber,
|
|
606
597
|
lt as fracToDec,
|
|
607
598
|
At as gravatar,
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
599
|
+
T as includes,
|
|
600
|
+
gt as insertAt,
|
|
601
|
+
B as isEqual,
|
|
611
602
|
ct as makeArray,
|
|
612
|
-
|
|
613
|
-
|
|
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
|
-
|
|
609
|
+
mt as randomStringBuilder,
|
|
619
610
|
et as sanitizedJSON,
|
|
620
611
|
Rt as sleep,
|
|
621
612
|
st as sortByProp,
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
613
|
+
St as timeUntil,
|
|
614
|
+
Ct as urlParser,
|
|
615
|
+
Bt as validateEmail
|
|
625
616
|
};
|
|
626
617
|
//# sourceMappingURL=utils.mjs.map
|
package/dist/utils.mjs.map
CHANGED
|
@@ -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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"}
|