@ztimson/utils 0.14.8 → 0.14.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +43 -43
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(c,g){typeof exports=="object"&&typeof module<"u"?g(exports):typeof define=="function"&&define.amd?define(["exports"],g):(c=typeof globalThis<"u"?globalThis:c||self,g(c.utils={}))})(this,function(c){"use strict";var Mt=Object.defineProperty;var vt=(c,g,B)=>g in c?Mt(c,g,{enumerable:!0,configurable:!0,writable:!0,value:B}):c[g]=B;var l=(c,g,B)=>(vt(c,typeof g!="symbol"?g+"":g,B),B);function g(n,e=!1){if(n==null)throw new Error("Cannot clean a NULL value");return Array.isArray(n)?n=n.filter(t=>t!=null):Object.entries(n).forEach(([t,r])=>{(e&&r===void 0||!e&&r==null)&&delete n[t]}),n}function B(n){return JSON.parse(JSON.stringify(n))}function H(n,...e){return e.forEach(t=>{for(const r in t)t[r]&&typeof t[r]=="object"&&!Array.isArray(t[r])?(n[r]||(n[r]={}),H(n[r],t[r])):n[r]=t[r]}),n}function O(n,e,t){if(!(n==null||!e))return e.split(/[.[\]]/g).filter(r=>r.length).reduce((r,o,i,s)=>{if((o[0]=='"'||o[0]=="'")&&(o=o.slice(1,-1)),!(r!=null&&r.hasOwnProperty(o))){if(t==null)return;r[o]={}}return t!==void 0&&i==s.length-1?r[o]=t:r[o]},n)}function Y(n,e,t={}){if(typeof n=="object"&&!Array.isArray(n)){for(const r of Object.keys(n)){const o=e?e+"."+r:r;typeof n[r]=="object"?Y(n[r],o,t):t[o]=n[r]}return t}}function j(n,e,t=!1){if(n==null)return t;if(Array.isArray(e))return e.findIndex((o,i)=>!j(n[i],e[i],t))==-1;const r=typeof e;return r!=typeof n?!1:r=="object"?Object.keys(e).find(o=>!j(n[o],e[o],t))==null:r=="function"?n.toString()==e.toString():n==e}function S(n,e){const t=typeof n,r=typeof e;return t!="object"||n==null||r!="object"||e==null?t=="function"&&r=="function"?n.toString()==e.toString():n===e:Object.keys(n).length!=Object.keys(e).length?!1:Object.keys(n).every(i=>S(n[i],e[i]))}function rt(n,e){e.forEach(t=>{Object.getOwnPropertyNames(t.prototype).forEach(r=>{Object.defineProperty(n.prototype,r,Object.getOwnPropertyDescriptor(t.prototype,r)||Object.create(null))})})}function ot(n,e){let t=[];return JSON.parse(JSON.stringify(n,(r,o)=>{if(typeof o=="object"&&o!==null){if(t.includes(o))return;t.push(o)}return o},e))}function it(n,e){return n.indexOf(e)===-1&&n.push(e),n}function st(n,e){return z([...n.filter(t=>!e.includes(r=>S(t,r))),...e.filter(t=>!n.includes(r=>S(t,r)))])}function ct(n){return function(e,t){const r=O(e,n),o=O(t,n);return typeof r!="string"||typeof o!="string"?1:r.toLowerCase().localeCompare(o.toLowerCase())}}function W(n,e=[]){return n.forEach(t=>Array.isArray(t)?W(t,e):e.push(t)),e}function at(n,e=!1){return function(t,r){const o=O(t,n),i=O(r,n);return typeof o=="number"&&typeof i=="number"?(e?-1:1)*(o-i):o>i?e?-1:1:o<i?e?1:-1:0}}function ut(n,e){return t=>S(t[n],e)}function z(n){for(let e=n.length-1;e>=0;e--)n.slice(0,e).find(t=>S(t,n[e]))&&n.splice(e,1);return n}function lt(n){return Array.isArray(n)?n:[n]}class C extends Array{get size(){return this.length}constructor(e=[]){super(),e!=null&&e.forEach&&e.forEach(t=>this.add(t))}add(e){this.has(e)||this.push(e)}delete(e){const t=this.indexOf(e);t!=-1&&this.slice(t,1)}difference(e){return new C(this.reduce((t,r)=>(e.has(r)||t.push(r),t),[]))}has(e){return this.indexOf(e)!=-1}intersection(e){return new C(this.reduce((t,r)=>(e.has(r)&&t.push(r),t),[]))}isDisjointFrom(e){return this.intersection(e).size==0}isSubsetOf(e){return this.findIndex(t=>!e.has(t))==-1}isSuperset(e){return e.findIndex(t=>!this.has(t))==-1}symmetricDifference(e){return new C([...this.difference(e),...e.difference(this)])}union(e){return new C([...this,...e])}}class A extends Promise{constructor(t){super((r,o)=>t(i=>r(i),i=>o(i),i=>this.progress=i));l(this,"listeners",[]);l(this,"_progress",0)}get progress(){return this._progress}set progress(t){t!=this._progress&&(this._progress=t,this.listeners.forEach(r=>r(t)))}static from(t){return t instanceof A?t:new A((r,o)=>t.then((...i)=>r(...i)).catch((...i)=>o(...i)))}from(t){const r=A.from(t);return this.onProgress(o=>r.progress=o),r}onProgress(t){return this.listeners.push(t),this}then(t,r){const o=super.then(t,r);return this.from(o)}catch(t){return this.from(super.catch(t))}finally(t){return this.from(super.finally(t))}}function J(n,e){const t=document.createElement("a");t.href=n,t.download=e,document.body.appendChild(t),t.click(),document.body.removeChild(t)}function ft(n,e){const t=URL.createObjectURL(n);J(t,e),URL.revokeObjectURL(t)}function ht(n={}){return new Promise(e=>{const t=document.createElement("input");t.type="file",t.accept=n.accept||"*",t.style.display="none",t.multiple=!!n.multiple,t.onblur=t.onchange=async()=>{e(Array.from(t.files)),t.remove()},document.body.appendChild(t),t.click()})}function dt(n){return new A((e,t,r)=>{const o=new XMLHttpRequest,i=new FormData;n.files.forEach(s=>i.append("file",s)),o.withCredentials=!!n.withCredentials,o.upload.addEventListener("progress",s=>s.lengthComputable?r(s.loaded/s.total):null),o.upload.addEventListener("load",s=>e(s)),o.upload.addEventListener("error",s=>t(s)),o.open("POST",n.url),Object.entries(n.headers||{}).forEach(([s,E])=>o.setRequestHeader(s,E)),o.send(i)})}class k{constructor(){l(this,"listeners",{})}static emit(e,...t){(this.listeners["*"]||[]).forEach(r=>r(e,...t)),(this.listeners[e.toString()]||[]).forEach(r=>r(...t))}static off(e,t){const r=e.toString();this.listeners[r]=(this.listeners[r]||[]).filter(o=>o===t)}static on(e,t){var o;const r=e.toString();return this.listeners[r]||(this.listeners[r]=[]),(o=this.listeners[r])==null||o.push(t),()=>this.off(e,t)}static once(e,t){return new Promise(r=>{const o=this.on(e,(...i)=>{r(i.length==1?i[0]:i),t&&t(...i),o()})})}emit(e,...t){(this.listeners["*"]||[]).forEach(r=>r(e,...t)),(this.listeners[e]||[]).forEach(r=>r(...t))}off(e,t){this.listeners[e]=(this.listeners[e]||[]).filter(r=>r===t)}on(e,t){var r;return this.listeners[e]||(this.listeners[e]=[]),(r=this.listeners[e])==null||r.push(t),()=>this.off(e,t)}once(e,t){return new Promise(r=>{const o=this.on(e,(...i)=>{r(i.length==1?i[0]:i),t&&t(...i),o()})})}}l(k,"listeners",{});class R extends Error{constructor(t,r){super(t);l(this,"_code");r!=null&&(this._code=r)}get code(){return this._code||this.constructor.code}set code(t){this._code=t}static from(t){const r=Number(t.statusCode)??Number(t.code),o=new this(t.message||t.toString());return Object.assign(o,{stack:t.stack,...t,code:r??void 0})}static instanceof(t){return t.constructor.code!=null}toString(){return this.message||super.toString()}}l(R,"code",500);class x extends R{constructor(e="Bad Request"){super(e)}static instanceof(e){return e.constructor.code==this.code}}l(x,"code",400);class V extends R{constructor(e="Unauthorized"){super(e)}static instanceof(e){return e.constructor.code==this.code}}l(V,"code",401);class K extends R{constructor(e="Forbidden"){super(e)}static instanceof(e){return e.constructor.code==this.code}}l(K,"code",403);class Z extends R{constructor(e="Not Found"){super(e)}static instanceof(e){return e.constructor.code==this.code}}l(Z,"code",404);class X extends R{constructor(e="Internal Server Error"){super(e)}static instanceof(e){return e.constructor.code==this.code}}l(X,"code",500);const p=class p{constructor(e={}){l(this,"interceptors",{});l(this,"headers",{});l(this,"url");this.url=e.url??null,this.headers=e.headers||{},e.interceptors&&e.interceptors.forEach(t=>p.addInterceptor(t))}static addInterceptor(e){const t=Object.keys(p.interceptors).length.toString();return p.interceptors[t]=e,()=>{p.interceptors[t]=null}}addInterceptor(e){const t=Object.keys(this.interceptors).length.toString();return this.interceptors[t]=e,()=>{this.interceptors[t]=null}}request(e={}){var o;if(!this.url&&!e.url)throw new Error("URL needs to be set");let t=((o=e.url)!=null&&o.startsWith("http")?e.url:(this.url||"")+(e.url||"")).replace(/([^:]\/)\/+/g,"$1");if(e.fragment&&(t.includes("#")?t.replace(/#.*(\?|\n)/g,(i,s)=>`#${e.fragment}${s}`):t+="#"+e.fragment),e.query){const i=Array.isArray(e.query)?e.query:Object.keys(e.query).map(s=>({key:s,value:e.query[s]}));t+=(t.includes("?")?"&":"?")+i.map(s=>`${s.key}=${s.value}`).join("&")}const r=g({"Content-Type":e.body?e.body instanceof FormData?"multipart/form-data":"application/json":void 0,...p.headers,...this.headers,...e.headers});return typeof e.body=="object"&&e.body!=null&&r["Content-Type"]=="application/json"&&(e.body=JSON.stringify(e.body)),new A((i,s,E)=>{fetch(t,{headers:r,method:e.method||(e.body?"POST":"GET"),body:e.body}).then(async a=>{var et,nt;for(let u of[...Object.values(p.interceptors),...Object.values(this.interceptors)])await new Promise($=>u(a,()=>$()));const D=a.headers.get("Content-Length"),v=D?parseInt(D,10):0;let tt=0;const F=(et=a.body)==null?void 0:et.getReader(),Gt=new ReadableStream({start(u){function $(){F==null||F.read().then(T=>{if(T.done)return u.close();tt+=T.value.byteLength,E(tt/v),u.enqueue(T.value),$()}).catch(T=>u.error(T))}$()}}),w=new Response(Gt);if(a.body=w.body,a.blob=w.blob,a.formData=w.formData,a.json=w.json,a.text=w.text,e.decode!==!1){const u=(nt=a.headers.get("Content-Type"))==null?void 0:nt.toLowerCase();u!=null&&u.includes("application")?a.data=await w.blob():u!=null&&u.includes("form")?a.data=await w.formData():u!=null&&u.includes("json")?a.data=await w.json():u!=null&&u.includes("text")&&(a.data=await w.text())}a.ok?i(a):s(a)})})}};l(p,"interceptors",{}),l(p,"headers",{});let P=p;const L={CLEAR:"\x1B[0m",BRIGHT:"\x1B[1m",DIM:"\x1B[2m",UNDERSCORE:"\x1B[4m",BLINK:"\x1B[5m",REVERSE:"\x1B[7m",HIDDEN:"\x1B[8m"},N={BLACK:"\x1B[30m",RED:"\x1B[31m",GREEN:"\x1B[32m",YELLOW:"\x1B[33m",BLUE:"\x1B[34m",MAGENTA:"\x1B[35m",CYAN:"\x1B[36m",LIGHT_GREY:"\x1B[37m",GREY:"\x1B[90m",LIGHT_RED:"\x1B[91m",LIGHT_GREEN:"\x1B[92m",LIGHT_YELLOW:"\x1B[93m",LIGHT_BLUE:"\x1B[94m",LIGHT_MAGENTA:"\x1B[95m",LIGHT_CYAN:"\x1B[96m",WHITE:"\x1B[97m"},yt={BLACK:"\x1B[40m",RED:"\x1B[41m",GREEN:"\x1B[42m",YELLOW:"\x1B[43m",BLUE:"\x1B[44m",MAGENTA:"\x1B[45m",CYAN:"\x1B[46m",WHITE:"\x1B[47m",GREY:"\x1B[100m"};var Q=(n=>(n[n.ERROR=0]="ERROR",n[n.WARN=1]="WARN",n[n.INFO=2]="INFO",n[n.LOG=3]="LOG",n[n.DEBUG=4]="DEBUG",n))(Q||{});const m=class m extends k{constructor(e){super(),this.namespace=e}pad(e,t,r,o=!1){const i=e.toString(),s=t-i.length;if(s<=0)return i;const E=Array(~~(s/r.length)).fill(r).join("");return o?i+E:E+i}format(...e){const t=new Date;return`${`${t.getFullYear()}-${t.getMonth()+1}-${t.getDate()} ${this.pad(t.getHours().toString(),2,"0")}:${this.pad(t.getMinutes().toString(),2,"0")}:${this.pad(t.getSeconds().toString(),2,"0")}.${this.pad(t.getMilliseconds().toString(),3,"0",!0)}`}${this.namespace?` [${this.namespace}]`:""} ${e.join(" ")}`}debug(...e){if(m.LOG_LEVEL<4)return;const t=this.format(...e);m.emit(4,t),console.debug(N.LIGHT_GREY+t+L.CLEAR)}log(...e){if(m.LOG_LEVEL<3)return;const t=this.format(...e);m.emit(3,t),console.log(L.CLEAR+t)}info(...e){if(m.LOG_LEVEL<2)return;const t=this.format(...e);m.emit(2,t),console.info(N.BLUE+t+L.CLEAR)}warn(...e){if(m.LOG_LEVEL<1)return;const t=this.format(...e);m.emit(1,t),console.warn(N.YELLOW+t+L.CLEAR)}error(...e){if(m.LOG_LEVEL<0)return;const t=this.format(...e);m.emit(0,t),console.error(N.RED+t+L.CLEAR)}};l(m,"LOG_LEVEL",4);let U=m;function gt(n){const e=(E,a)=>a<1e-7?E:e(a,~~(E%a)),t=n.toString().length-2;let r=Math.pow(10,t),o=n*r;const i=e(o,r);o=~~(o/i),r=~~(r/i);const s=~~(o/r);return o-=s*r,`${s?s+" ":""}${~~o}/${~~r}`}function mt(n){let e=n.split(" ");const t=e.length==2?Number(e[0]):0;return e=e.pop().split("/"),t+Number(e[0])/Number(e[1])}function Et(n,e){return n.length-n.replaceAll(e,"").length}function pt(n){return Array(n).fill(null).map(()=>Math.round(Math.random()*15).toString(16)).join("")}const q="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",G="0123456789",M="~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/",wt=q+G+M;function bt(n){const e=/(\+?1)?.*?(\d{3}).*?(\d{3}).*?(\d{4})/g.exec(n);if(!e)throw new Error(`Number cannot be parsed: ${n}`);return`${e[1]??""} (${e[2]}) ${e[3]}-${e[4]}`.trim()}function Bt(n,e,t){return`${n.slice(0,t)}${e}${n.slice(t+1)}`}function At(n,e,t,r=!0){const o=n.toString(),i=e-o.length;if(i<=0)return o;const s=Array(~~(i/t.length)).fill(t).join("");return r?s+o:o+s}function Rt(n,e=wt){return Array(n).fill(null).map(()=>{const t=~~(Math.random()*e.length);return e[t]}).join("")}function St(n,e=!1,t=!1,r=!1){if(!e&&!t&&!r)throw new Error("Must enable at least one: letters, numbers, symbols");return Array(n).fill(null).map(()=>{let o;do{const i=~~(Math.random()*3);e&&i==0?o=q[~~(Math.random()*q.length)]:t&&i==1?o=G[~~(Math.random()*G.length)]:r&&i==2&&(o=M[~~(Math.random()*M.length)])}while(!o);return o}).join("")}function Ct(n,e){if(typeof e=="string"&&(e=new RegExp(e,"g")),!e.global)throw new TypeError("Regular expression must be global.");let t=[],r;for(;(r=e.exec(n))!==null;)t.push(r);return t}function _(n){var e=Lt(Nt(Tt(Ot(n),8*n.length)));return e.toLowerCase()}function Lt(n){for(var e,t="0123456789ABCDEF",r="",o=0;o<n.length;o++)e=n.charCodeAt(o),r+=t.charAt(e>>>4&15)+t.charAt(15&e);return r}function Ot(n){for(var e=Array(n.length>>2),t=0;t<e.length;t++)e[t]=0;for(t=0;t<8*n.length;t+=8)e[t>>5]|=(255&n.charCodeAt(t/8))<<t%32;return e}function Nt(n){for(var e="",t=0;t<32*n.length;t+=8)e+=String.fromCharCode(n[t>>5]>>>t%32&255);return e}function Tt(n,e){n[e>>5]|=128<<e%32,n[14+(e+64>>>9<<4)]=e;for(var t=1732584193,r=-271733879,o=-1732584194,i=271733878,s=0;s<n.length;s+=16){var E=t,a=r,D=o,v=i;r=y(r=y(r=y(r=y(r=d(r=d(r=d(r=d(r=h(r=h(r=h(r=h(r=f(r=f(r=f(r=f(r,o=f(o,i=f(i,t=f(t,r,o,i,n[s+0],7,-680876936),r,o,n[s+1],12,-389564586),t,r,n[s+2],17,606105819),i,t,n[s+3],22,-1044525330),o=f(o,i=f(i,t=f(t,r,o,i,n[s+4],7,-176418897),r,o,n[s+5],12,1200080426),t,r,n[s+6],17,-1473231341),i,t,n[s+7],22,-45705983),o=f(o,i=f(i,t=f(t,r,o,i,n[s+8],7,1770035416),r,o,n[s+9],12,-1958414417),t,r,n[s+10],17,-42063),i,t,n[s+11],22,-1990404162),o=f(o,i=f(i,t=f(t,r,o,i,n[s+12],7,1804603682),r,o,n[s+13],12,-40341101),t,r,n[s+14],17,-1502002290),i,t,n[s+15],22,1236535329),o=h(o,i=h(i,t=h(t,r,o,i,n[s+1],5,-165796510),r,o,n[s+6],9,-1069501632),t,r,n[s+11],14,643717713),i,t,n[s+0],20,-373897302),o=h(o,i=h(i,t=h(t,r,o,i,n[s+5],5,-701558691),r,o,n[s+10],9,38016083),t,r,n[s+15],14,-660478335),i,t,n[s+4],20,-405537848),o=h(o,i=h(i,t=h(t,r,o,i,n[s+9],5,568446438),r,o,n[s+14],9,-1019803690),t,r,n[s+3],14,-187363961),i,t,n[s+8],20,1163531501),o=h(o,i=h(i,t=h(t,r,o,i,n[s+13],5,-1444681467),r,o,n[s+2],9,-51403784),t,r,n[s+7],14,1735328473),i,t,n[s+12],20,-1926607734),o=d(o,i=d(i,t=d(t,r,o,i,n[s+5],4,-378558),r,o,n[s+8],11,-2022574463),t,r,n[s+11],16,1839030562),i,t,n[s+14],23,-35309556),o=d(o,i=d(i,t=d(t,r,o,i,n[s+1],4,-1530992060),r,o,n[s+4],11,1272893353),t,r,n[s+7],16,-155497632),i,t,n[s+10],23,-1094730640),o=d(o,i=d(i,t=d(t,r,o,i,n[s+13],4,681279174),r,o,n[s+0],11,-358537222),t,r,n[s+3],16,-722521979),i,t,n[s+6],23,76029189),o=d(o,i=d(i,t=d(t,r,o,i,n[s+9],4,-640364487),r,o,n[s+12],11,-421815835),t,r,n[s+15],16,530742520),i,t,n[s+2],23,-995338651),o=y(o,i=y(i,t=y(t,r,o,i,n[s+0],6,-198630844),r,o,n[s+7],10,1126891415),t,r,n[s+14],15,-1416354905),i,t,n[s+5],21,-57434055),o=y(o,i=y(i,t=y(t,r,o,i,n[s+12],6,1700485571),r,o,n[s+3],10,-1894986606),t,r,n[s+10],15,-1051523),i,t,n[s+1],21,-2054922799),o=y(o,i=y(i,t=y(t,r,o,i,n[s+8],6,1873313359),r,o,n[s+15],10,-30611744),t,r,n[s+6],15,-1560198380),i,t,n[s+13],21,1309151649),o=y(o,i=y(i,t=y(t,r,o,i,n[s+4],6,-145523070),r,o,n[s+11],10,-1120210379),t,r,n[s+2],15,718787259),i,t,n[s+9],21,-343485551),t=b(t,E),r=b(r,a),o=b(o,D),i=b(i,v)}return Array(t,r,o,i)}function I(n,e,t,r,o,i){return b(It(b(b(e,n),b(r,i)),o),t)}function f(n,e,t,r,o,i,s){return I(e&t|~e&r,n,e,o,i,s)}function h(n,e,t,r,o,i,s){return I(e&r|t&~r,n,e,o,i,s)}function d(n,e,t,r,o,i,s){return I(e^t^r,n,e,o,i,s)}function y(n,e,t,r,o,i,s){return I(t^(e|~r),n,e,o,i,s)}function b(n,e){var t=(65535&n)+(65535&e);return(n>>16)+(e>>16)+(t>>16)<<16|65535&t}function It(n,e){return n<<e|n>>>32-e}function Dt(n){return/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/.test(n)}function $t(n){return Object.entries(n).map(([e,t])=>encodeURIComponent(e)+"="+encodeURIComponent(t)).join("&")}function jt(n,e="mp"){return n?`https://www.gravatar.com/avatar/${_(n)}?d=${e}`:""}function kt(n){const e=new RegExp("(?:(?<protocol>[\\w\\d]+)\\:\\/\\/)?(?:(?<user>.+)\\@)?(?<host>(?<domain>[^:\\/\\?#@\\n]+)(?:\\:(?<port>\\d*))?)(?<path>\\/.*?)?(?:\\?(?<query>.*?))?(?:#(?<fragment>.*?))?$","gm").exec(n),t=(e==null?void 0:e.groups)??{},r=t.domain.split(".");if(t.port!=null&&(t.port=Number(t.port)),r.length>2&&(t.domain=r.splice(-2,2).join("."),t.subdomain=r.join(".")),t.query){const o=t.query.split("&"),i={};o.forEach(s=>{const[E,a]=s.split("=");i[E]=a}),t.query=i}return t}function Pt(n){return(n instanceof Date?n.getTime():n)-new Date().getTime()}function Ut(n){return new Promise(e=>setTimeout(e,n))}function qt(n){const e=n instanceof Date?n:new Date(n);return new Intl.DateTimeFormat("en-us",{weekday:"long",month:"short",day:"numeric",hour:"numeric",minute:"numeric",hour12:!0}).format(e)}c.ASet=C,c.BadRequestError=x,c.CliBackground=yt,c.CliEffects=L,c.CliForeground=N,c.CustomError=R,c.ForbiddenError=K,c.Http=P,c.InternalServerError=X,c.LOG_LEVEL=Q,c.Logger=U,c.NotFoundError=Z,c.PromiseProgress=A,c.TypedEmitter=k,c.UnauthorizedError=V,c.addUnique=it,c.arrayDiff=st,c.caseInsensitiveSort=ct,c.clean=g,c.countChars=Et,c.createHex=pt,c.dec2Frac=gt,c.deepCopy=B,c.deepMerge=H,c.dotNotation=O,c.download=J,c.downloadBlob=ft,c.fileBrowser=ht,c.findByProp=ut,c.flattenArr=W,c.flattenObj=Y,c.formEncode=$t,c.formatDate=qt,c.formatPhoneNumber=bt,c.fracToDec=mt,c.gravatar=jt,c.includes=j,c.insertAt=Bt,c.isEqual=S,c.makeArray=lt,c.makeUnique=z,c.matchAll=Ct,c.md5=_,c.mixin=rt,c.pad=At,c.randomString=Rt,c.randomStringBuilder=St,c.sanitizedJSON=ot,c.sleep=Ut,c.sortByProp=at,c.timeUntil=Pt,c.uploadWithProgress=dt,c.urlParser=kt,c.validateEmail=Dt,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(c,g){typeof exports=="object"&&typeof module<"u"?g(exports):typeof define=="function"&&define.amd?define(["exports"],g):(c=typeof globalThis<"u"?globalThis:c||self,g(c.utils={}))})(this,function(c){"use strict";var Mt=Object.defineProperty;var vt=(c,g,B)=>g in c?Mt(c,g,{enumerable:!0,configurable:!0,writable:!0,value:B}):c[g]=B;var l=(c,g,B)=>(vt(c,typeof g!="symbol"?g+"":g,B),B);function g(n,e=!1){if(n==null)throw new Error("Cannot clean a NULL value");return Array.isArray(n)?n=n.filter(t=>t!=null):Object.entries(n).forEach(([t,r])=>{(e&&r===void 0||!e&&r==null)&&delete n[t]}),n}function B(n){return JSON.parse(JSON.stringify(n))}function H(n,...e){return e.forEach(t=>{for(const r in t)t[r]&&typeof t[r]=="object"&&!Array.isArray(t[r])?(n[r]||(n[r]={}),H(n[r],t[r])):n[r]=t[r]}),n}function O(n,e,t){if(!(n==null||!e))return e.split(/[.[\]]/g).filter(r=>r.length).reduce((r,o,i,s)=>{if((o[0]=='"'||o[0]=="'")&&(o=o.slice(1,-1)),!(r!=null&&r.hasOwnProperty(o))){if(t==null)return;r[o]={}}return t!==void 0&&i==s.length-1?r[o]=t:r[o]},n)}function Y(n,e,t={}){if(typeof n=="object"&&!Array.isArray(n)){for(const r of Object.keys(n)){const o=e?e+"."+r:r;typeof n[r]=="object"?Y(n[r],o,t):t[o]=n[r]}return t}}function j(n,e,t=!1){if(n==null)return t;if(Array.isArray(e))return e.findIndex((o,i)=>!j(n[i],e[i],t))==-1;const r=typeof e;return r!=typeof n?!1:r=="object"?Object.keys(e).find(o=>!j(n[o],e[o],t))==null:r=="function"?n.toString()==e.toString():n==e}function S(n,e){const t=typeof n,r=typeof e;return t!="object"||n==null||r!="object"||e==null?t=="function"&&r=="function"?n.toString()==e.toString():n===e:Object.keys(n).length!=Object.keys(e).length?!1:Object.keys(n).every(i=>S(n[i],e[i]))}function rt(n,e){e.forEach(t=>{Object.getOwnPropertyNames(t.prototype).forEach(r=>{Object.defineProperty(n.prototype,r,Object.getOwnPropertyDescriptor(t.prototype,r)||Object.create(null))})})}function ot(n,e){let t=[];return JSON.parse(JSON.stringify(n,(r,o)=>{if(typeof o=="object"&&o!==null){if(t.includes(o))return;t.push(o)}return o},e))}function it(n,e){return n.indexOf(e)===-1&&n.push(e),n}function st(n,e){return z([...n.filter(t=>!e.includes(r=>S(t,r))),...e.filter(t=>!n.includes(r=>S(t,r)))])}function ct(n){return function(e,t){const r=O(e,n),o=O(t,n);return typeof r!="string"||typeof o!="string"?1:r.toLowerCase().localeCompare(o.toLowerCase())}}function W(n,e=[]){return n.forEach(t=>Array.isArray(t)?W(t,e):e.push(t)),e}function at(n,e=!1){return function(t,r){const o=O(t,n),i=O(r,n);return typeof o=="number"&&typeof i=="number"?(e?-1:1)*(o-i):o>i?e?-1:1:o<i?e?1:-1:0}}function ut(n,e){return t=>S(t[n],e)}function z(n){for(let e=n.length-1;e>=0;e--)n.slice(0,e).find(t=>S(t,n[e]))&&n.splice(e,1);return n}function lt(n){return Array.isArray(n)?n:[n]}class C extends Array{get size(){return this.length}constructor(e=[]){super(),e!=null&&e.forEach&&e.forEach(t=>this.add(t))}add(e){this.has(e)||this.push(e)}delete(e){const t=this.indexOf(e);t!=-1&&this.slice(t,1)}difference(e){return new C(this.reduce((t,r)=>(e.has(r)||t.push(r),t),[]))}has(e){return this.indexOf(e)!=-1}intersection(e){return new C(this.reduce((t,r)=>(e.has(r)&&t.push(r),t),[]))}isDisjointFrom(e){return this.intersection(e).size==0}isSubsetOf(e){return this.findIndex(t=>!e.has(t))==-1}isSuperset(e){return e.findIndex(t=>!this.has(t))==-1}symmetricDifference(e){return new C([...this.difference(e),...e.difference(this)])}union(e){return new C([...this,...e])}}class A extends Promise{constructor(t){super((r,o)=>t(i=>r(i),i=>o(i),i=>this.progress=i));l(this,"listeners",[]);l(this,"_progress",0)}get progress(){return this._progress}set progress(t){t!=this._progress&&(this._progress=t,this.listeners.forEach(r=>r(t)))}static from(t){return t instanceof A?t:new A((r,o)=>t.then((...i)=>r(...i)).catch((...i)=>o(...i)))}from(t){const r=A.from(t);return this.onProgress(o=>r.progress=o),r}onProgress(t){return this.listeners.push(t),this}then(t,r){const o=super.then(t,r);return this.from(o)}catch(t){return this.from(super.catch(t))}finally(t){return this.from(super.finally(t))}}function J(n,e){const t=document.createElement("a");t.href=n,t.download=e,document.body.appendChild(t),t.click(),document.body.removeChild(t)}function ft(n,e){const t=URL.createObjectURL(n);J(t,e),URL.revokeObjectURL(t)}function ht(n={}){return new Promise(e=>{const t=document.createElement("input");t.type="file",t.accept=n.accept||"*",t.style.display="none",t.multiple=!!n.multiple,t.onblur=t.onchange=async()=>{e(Array.from(t.files)),t.remove()},document.body.appendChild(t),t.click()})}function dt(n){return new A((e,t,r)=>{const o=new XMLHttpRequest,i=new FormData;n.files.forEach(s=>i.append("file",s)),o.withCredentials=!!n.withCredentials,o.upload.addEventListener("progress",s=>s.lengthComputable?r(s.loaded/s.total):null),o.upload.addEventListener("load",s=>e(s)),o.upload.addEventListener("error",s=>t(s)),o.open("POST",n.url),Object.entries(n.headers||{}).forEach(([s,E])=>o.setRequestHeader(s,E)),o.send(i)})}class k{constructor(){l(this,"listeners",{})}static emit(e,...t){(this.listeners["*"]||[]).forEach(r=>r(e,...t)),(this.listeners[e.toString()]||[]).forEach(r=>r(...t))}static off(e,t){const r=e.toString();this.listeners[r]=(this.listeners[r]||[]).filter(o=>o===t)}static on(e,t){var o;const r=e.toString();return this.listeners[r]||(this.listeners[r]=[]),(o=this.listeners[r])==null||o.push(t),()=>this.off(e,t)}static once(e,t){return new Promise(r=>{const o=this.on(e,(...i)=>{r(i.length==1?i[0]:i),t&&t(...i),o()})})}emit(e,...t){(this.listeners["*"]||[]).forEach(r=>r(e,...t)),(this.listeners[e]||[]).forEach(r=>r(...t))}off(e,t){this.listeners[e]=(this.listeners[e]||[]).filter(r=>r===t)}on(e,t){var r;return this.listeners[e]||(this.listeners[e]=[]),(r=this.listeners[e])==null||r.push(t),()=>this.off(e,t)}once(e,t){return new Promise(r=>{const o=this.on(e,(...i)=>{r(i.length==1?i[0]:i),t&&t(...i),o()})})}}l(k,"listeners",{});class R extends Error{constructor(t,r){super(t);l(this,"_code");r!=null&&(this._code=r)}get code(){return this._code||this.constructor.code}set code(t){this._code=t}static from(t){const r=Number(t.statusCode)??Number(t.code),o=new this(t.message||t.toString());return Object.assign(o,{stack:t.stack,...t,code:r??void 0})}static instanceof(t){return t.constructor.code!=null}toString(){return this.message||super.toString()}}l(R,"code",500);class x extends R{constructor(e="Bad Request"){super(e)}static instanceof(e){return e.constructor.code==this.code}}l(x,"code",400);class V extends R{constructor(e="Unauthorized"){super(e)}static instanceof(e){return e.constructor.code==this.code}}l(V,"code",401);class K extends R{constructor(e="Forbidden"){super(e)}static instanceof(e){return e.constructor.code==this.code}}l(K,"code",403);class Z extends R{constructor(e="Not Found"){super(e)}static instanceof(e){return e.constructor.code==this.code}}l(Z,"code",404);class X extends R{constructor(e="Internal Server Error"){super(e)}static instanceof(e){return e.constructor.code==this.code}}l(X,"code",500);const p=class p{constructor(e={}){l(this,"interceptors",{});l(this,"headers",{});l(this,"url");this.url=e.url??null,this.headers=e.headers||{},e.interceptors&&e.interceptors.forEach(t=>p.addInterceptor(t))}static addInterceptor(e){const t=Object.keys(p.interceptors).length.toString();return p.interceptors[t]=e,()=>{p.interceptors[t]=null}}addInterceptor(e){const t=Object.keys(this.interceptors).length.toString();return this.interceptors[t]=e,()=>{this.interceptors[t]=null}}request(e={}){var o;if(!this.url&&!e.url)throw new Error("URL needs to be set");let t=((o=e.url)!=null&&o.startsWith("http")?e.url:(this.url||"")+(e.url||"")).replace(/([^:]\/)\/+/g,"$1");if(e.fragment&&(t.includes("#")?t.replace(/#.*(\?|\n)/g,(i,s)=>`#${e.fragment}${s}`):t+="#"+e.fragment),e.query){const i=Array.isArray(e.query)?e.query:Object.keys(e.query).map(s=>({key:s,value:e.query[s]}));t+=(t.includes("?")?"&":"?")+i.map(s=>`${s.key}=${s.value}`).join("&")}const r=g({"Content-Type":e.body?e.body instanceof FormData?"multipart/form-data":"application/json":void 0,...p.headers,...this.headers,...e.headers});return typeof e.body=="object"&&e.body!=null&&r["Content-Type"]=="application/json"&&(e.body=JSON.stringify(e.body)),new A((i,s,E)=>{fetch(t,{headers:r,method:e.method||(e.body?"POST":"GET"),body:e.body}).then(async a=>{var et,nt;for(let u of[...Object.values(p.interceptors),...Object.values(this.interceptors)])await new Promise($=>u(a,()=>$()));const D=a.headers.get("Content-Length"),v=D?parseInt(D,10):0;let tt=0;const F=(et=a.body)==null?void 0:et.getReader(),Gt=new ReadableStream({start(u){function $(){F==null||F.read().then(T=>{if(T.done)return u.close();tt+=T.value.byteLength,E(tt/v),u.enqueue(T.value),$()}).catch(T=>u.error(T))}$()}}),b=new Response(Gt);if(a.blob=b.blob,a.formData=b.formData,a.json=b.json,a.text=b.text,e.decode!==!1){const u=(nt=a.headers.get("Content-Type"))==null?void 0:nt.toLowerCase();u!=null&&u.includes("application")?a.data=await b.blob():u!=null&&u.includes("form")?a.data=await b.formData():u!=null&&u.includes("json")?a.data=await b.json():u!=null&&u.includes("text")&&(a.data=await b.text())}a.ok?i(a):s(a)})})}};l(p,"interceptors",{}),l(p,"headers",{});let P=p;const L={CLEAR:"\x1B[0m",BRIGHT:"\x1B[1m",DIM:"\x1B[2m",UNDERSCORE:"\x1B[4m",BLINK:"\x1B[5m",REVERSE:"\x1B[7m",HIDDEN:"\x1B[8m"},N={BLACK:"\x1B[30m",RED:"\x1B[31m",GREEN:"\x1B[32m",YELLOW:"\x1B[33m",BLUE:"\x1B[34m",MAGENTA:"\x1B[35m",CYAN:"\x1B[36m",LIGHT_GREY:"\x1B[37m",GREY:"\x1B[90m",LIGHT_RED:"\x1B[91m",LIGHT_GREEN:"\x1B[92m",LIGHT_YELLOW:"\x1B[93m",LIGHT_BLUE:"\x1B[94m",LIGHT_MAGENTA:"\x1B[95m",LIGHT_CYAN:"\x1B[96m",WHITE:"\x1B[97m"},yt={BLACK:"\x1B[40m",RED:"\x1B[41m",GREEN:"\x1B[42m",YELLOW:"\x1B[43m",BLUE:"\x1B[44m",MAGENTA:"\x1B[45m",CYAN:"\x1B[46m",WHITE:"\x1B[47m",GREY:"\x1B[100m"};var Q=(n=>(n[n.ERROR=0]="ERROR",n[n.WARN=1]="WARN",n[n.INFO=2]="INFO",n[n.LOG=3]="LOG",n[n.DEBUG=4]="DEBUG",n))(Q||{});const m=class m extends k{constructor(e){super(),this.namespace=e}pad(e,t,r,o=!1){const i=e.toString(),s=t-i.length;if(s<=0)return i;const E=Array(~~(s/r.length)).fill(r).join("");return o?i+E:E+i}format(...e){const t=new Date;return`${`${t.getFullYear()}-${t.getMonth()+1}-${t.getDate()} ${this.pad(t.getHours().toString(),2,"0")}:${this.pad(t.getMinutes().toString(),2,"0")}:${this.pad(t.getSeconds().toString(),2,"0")}.${this.pad(t.getMilliseconds().toString(),3,"0",!0)}`}${this.namespace?` [${this.namespace}]`:""} ${e.join(" ")}`}debug(...e){if(m.LOG_LEVEL<4)return;const t=this.format(...e);m.emit(4,t),console.debug(N.LIGHT_GREY+t+L.CLEAR)}log(...e){if(m.LOG_LEVEL<3)return;const t=this.format(...e);m.emit(3,t),console.log(L.CLEAR+t)}info(...e){if(m.LOG_LEVEL<2)return;const t=this.format(...e);m.emit(2,t),console.info(N.BLUE+t+L.CLEAR)}warn(...e){if(m.LOG_LEVEL<1)return;const t=this.format(...e);m.emit(1,t),console.warn(N.YELLOW+t+L.CLEAR)}error(...e){if(m.LOG_LEVEL<0)return;const t=this.format(...e);m.emit(0,t),console.error(N.RED+t+L.CLEAR)}};l(m,"LOG_LEVEL",4);let U=m;function gt(n){const e=(E,a)=>a<1e-7?E:e(a,~~(E%a)),t=n.toString().length-2;let r=Math.pow(10,t),o=n*r;const i=e(o,r);o=~~(o/i),r=~~(r/i);const s=~~(o/r);return o-=s*r,`${s?s+" ":""}${~~o}/${~~r}`}function mt(n){let e=n.split(" ");const t=e.length==2?Number(e[0]):0;return e=e.pop().split("/"),t+Number(e[0])/Number(e[1])}function Et(n,e){return n.length-n.replaceAll(e,"").length}function pt(n){return Array(n).fill(null).map(()=>Math.round(Math.random()*15).toString(16)).join("")}const q="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",G="0123456789",M="~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/",wt=q+G+M;function bt(n){const e=/(\+?1)?.*?(\d{3}).*?(\d{3}).*?(\d{4})/g.exec(n);if(!e)throw new Error(`Number cannot be parsed: ${n}`);return`${e[1]??""} (${e[2]}) ${e[3]}-${e[4]}`.trim()}function Bt(n,e,t){return`${n.slice(0,t)}${e}${n.slice(t+1)}`}function At(n,e,t,r=!0){const o=n.toString(),i=e-o.length;if(i<=0)return o;const s=Array(~~(i/t.length)).fill(t).join("");return r?s+o:o+s}function Rt(n,e=wt){return Array(n).fill(null).map(()=>{const t=~~(Math.random()*e.length);return e[t]}).join("")}function St(n,e=!1,t=!1,r=!1){if(!e&&!t&&!r)throw new Error("Must enable at least one: letters, numbers, symbols");return Array(n).fill(null).map(()=>{let o;do{const i=~~(Math.random()*3);e&&i==0?o=q[~~(Math.random()*q.length)]:t&&i==1?o=G[~~(Math.random()*G.length)]:r&&i==2&&(o=M[~~(Math.random()*M.length)])}while(!o);return o}).join("")}function Ct(n,e){if(typeof e=="string"&&(e=new RegExp(e,"g")),!e.global)throw new TypeError("Regular expression must be global.");let t=[],r;for(;(r=e.exec(n))!==null;)t.push(r);return t}function _(n){var e=Lt(Nt(Tt(Ot(n),8*n.length)));return e.toLowerCase()}function Lt(n){for(var e,t="0123456789ABCDEF",r="",o=0;o<n.length;o++)e=n.charCodeAt(o),r+=t.charAt(e>>>4&15)+t.charAt(15&e);return r}function Ot(n){for(var e=Array(n.length>>2),t=0;t<e.length;t++)e[t]=0;for(t=0;t<8*n.length;t+=8)e[t>>5]|=(255&n.charCodeAt(t/8))<<t%32;return e}function Nt(n){for(var e="",t=0;t<32*n.length;t+=8)e+=String.fromCharCode(n[t>>5]>>>t%32&255);return e}function Tt(n,e){n[e>>5]|=128<<e%32,n[14+(e+64>>>9<<4)]=e;for(var t=1732584193,r=-271733879,o=-1732584194,i=271733878,s=0;s<n.length;s+=16){var E=t,a=r,D=o,v=i;r=y(r=y(r=y(r=y(r=d(r=d(r=d(r=d(r=h(r=h(r=h(r=h(r=f(r=f(r=f(r=f(r,o=f(o,i=f(i,t=f(t,r,o,i,n[s+0],7,-680876936),r,o,n[s+1],12,-389564586),t,r,n[s+2],17,606105819),i,t,n[s+3],22,-1044525330),o=f(o,i=f(i,t=f(t,r,o,i,n[s+4],7,-176418897),r,o,n[s+5],12,1200080426),t,r,n[s+6],17,-1473231341),i,t,n[s+7],22,-45705983),o=f(o,i=f(i,t=f(t,r,o,i,n[s+8],7,1770035416),r,o,n[s+9],12,-1958414417),t,r,n[s+10],17,-42063),i,t,n[s+11],22,-1990404162),o=f(o,i=f(i,t=f(t,r,o,i,n[s+12],7,1804603682),r,o,n[s+13],12,-40341101),t,r,n[s+14],17,-1502002290),i,t,n[s+15],22,1236535329),o=h(o,i=h(i,t=h(t,r,o,i,n[s+1],5,-165796510),r,o,n[s+6],9,-1069501632),t,r,n[s+11],14,643717713),i,t,n[s+0],20,-373897302),o=h(o,i=h(i,t=h(t,r,o,i,n[s+5],5,-701558691),r,o,n[s+10],9,38016083),t,r,n[s+15],14,-660478335),i,t,n[s+4],20,-405537848),o=h(o,i=h(i,t=h(t,r,o,i,n[s+9],5,568446438),r,o,n[s+14],9,-1019803690),t,r,n[s+3],14,-187363961),i,t,n[s+8],20,1163531501),o=h(o,i=h(i,t=h(t,r,o,i,n[s+13],5,-1444681467),r,o,n[s+2],9,-51403784),t,r,n[s+7],14,1735328473),i,t,n[s+12],20,-1926607734),o=d(o,i=d(i,t=d(t,r,o,i,n[s+5],4,-378558),r,o,n[s+8],11,-2022574463),t,r,n[s+11],16,1839030562),i,t,n[s+14],23,-35309556),o=d(o,i=d(i,t=d(t,r,o,i,n[s+1],4,-1530992060),r,o,n[s+4],11,1272893353),t,r,n[s+7],16,-155497632),i,t,n[s+10],23,-1094730640),o=d(o,i=d(i,t=d(t,r,o,i,n[s+13],4,681279174),r,o,n[s+0],11,-358537222),t,r,n[s+3],16,-722521979),i,t,n[s+6],23,76029189),o=d(o,i=d(i,t=d(t,r,o,i,n[s+9],4,-640364487),r,o,n[s+12],11,-421815835),t,r,n[s+15],16,530742520),i,t,n[s+2],23,-995338651),o=y(o,i=y(i,t=y(t,r,o,i,n[s+0],6,-198630844),r,o,n[s+7],10,1126891415),t,r,n[s+14],15,-1416354905),i,t,n[s+5],21,-57434055),o=y(o,i=y(i,t=y(t,r,o,i,n[s+12],6,1700485571),r,o,n[s+3],10,-1894986606),t,r,n[s+10],15,-1051523),i,t,n[s+1],21,-2054922799),o=y(o,i=y(i,t=y(t,r,o,i,n[s+8],6,1873313359),r,o,n[s+15],10,-30611744),t,r,n[s+6],15,-1560198380),i,t,n[s+13],21,1309151649),o=y(o,i=y(i,t=y(t,r,o,i,n[s+4],6,-145523070),r,o,n[s+11],10,-1120210379),t,r,n[s+2],15,718787259),i,t,n[s+9],21,-343485551),t=w(t,E),r=w(r,a),o=w(o,D),i=w(i,v)}return Array(t,r,o,i)}function I(n,e,t,r,o,i){return w(It(w(w(e,n),w(r,i)),o),t)}function f(n,e,t,r,o,i,s){return I(e&t|~e&r,n,e,o,i,s)}function h(n,e,t,r,o,i,s){return I(e&r|t&~r,n,e,o,i,s)}function d(n,e,t,r,o,i,s){return I(e^t^r,n,e,o,i,s)}function y(n,e,t,r,o,i,s){return I(t^(e|~r),n,e,o,i,s)}function w(n,e){var t=(65535&n)+(65535&e);return(n>>16)+(e>>16)+(t>>16)<<16|65535&t}function It(n,e){return n<<e|n>>>32-e}function Dt(n){return/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/.test(n)}function $t(n){return Object.entries(n).map(([e,t])=>encodeURIComponent(e)+"="+encodeURIComponent(t)).join("&")}function jt(n,e="mp"){return n?`https://www.gravatar.com/avatar/${_(n)}?d=${e}`:""}function kt(n){const e=new RegExp("(?:(?<protocol>[\\w\\d]+)\\:\\/\\/)?(?:(?<user>.+)\\@)?(?<host>(?<domain>[^:\\/\\?#@\\n]+)(?:\\:(?<port>\\d*))?)(?<path>\\/.*?)?(?:\\?(?<query>.*?))?(?:#(?<fragment>.*?))?$","gm").exec(n),t=(e==null?void 0:e.groups)??{},r=t.domain.split(".");if(t.port!=null&&(t.port=Number(t.port)),r.length>2&&(t.domain=r.splice(-2,2).join("."),t.subdomain=r.join(".")),t.query){const o=t.query.split("&"),i={};o.forEach(s=>{const[E,a]=s.split("=");i[E]=a}),t.query=i}return t}function Pt(n){return(n instanceof Date?n.getTime():n)-new Date().getTime()}function Ut(n){return new Promise(e=>setTimeout(e,n))}function qt(n){const e=n instanceof Date?n:new Date(n);return new Intl.DateTimeFormat("en-us",{weekday:"long",month:"short",day:"numeric",hour:"numeric",minute:"numeric",hour12:!0}).format(e)}c.ASet=C,c.BadRequestError=x,c.CliBackground=yt,c.CliEffects=L,c.CliForeground=N,c.CustomError=R,c.ForbiddenError=K,c.Http=P,c.InternalServerError=X,c.LOG_LEVEL=Q,c.Logger=U,c.NotFoundError=Z,c.PromiseProgress=A,c.TypedEmitter=k,c.UnauthorizedError=V,c.addUnique=it,c.arrayDiff=st,c.caseInsensitiveSort=ct,c.clean=g,c.countChars=Et,c.createHex=pt,c.dec2Frac=gt,c.deepCopy=B,c.deepMerge=H,c.dotNotation=O,c.download=J,c.downloadBlob=ft,c.fileBrowser=ht,c.findByProp=ut,c.flattenArr=W,c.flattenObj=Y,c.formEncode=$t,c.formatDate=qt,c.formatPhoneNumber=bt,c.fracToDec=mt,c.gravatar=jt,c.includes=j,c.insertAt=Bt,c.isEqual=S,c.makeArray=lt,c.makeUnique=z,c.matchAll=Ct,c.md5=_,c.mixin=rt,c.pad=At,c.randomString=Rt,c.randomStringBuilder=St,c.sanitizedJSON=ot,c.sleep=Ut,c.sortByProp=at,c.timeUntil=Pt,c.uploadWithProgress=dt,c.urlParser=kt,c.validateEmail=Dt,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})});
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/objects.ts","../src/array.ts","../src/aset.ts","../src/promise-progress.ts","../src/files.ts","../src/emitter.ts","../src/errors.ts","../src/http.ts","../src/logger.ts","../src/math.ts","../src/string.ts","../src/misc.ts","../src/time.ts"],"sourcesContent":["/**\r\n * Removes any null values from an object in-place\r\n *\r\n * @example\r\n * ```ts\r\n * let test = {a: 0, b: false, c: null, d: 'abc'}\r\n * console.log(clean(test)); // Output: {a: 0, b: false, d: 'abc'}\r\n * ```\r\n *\r\n * @param {T} obj Object reference that will be cleaned\r\n * @param undefinedOnly Ignore null values\r\n * @returns {Partial<T>} Cleaned object\r\n */\r\nexport function clean<T>(obj: T, undefinedOnly = false): Partial<T> {\r\n\tif(obj == null) throw new Error(\"Cannot clean a NULL value\");\r\n\tif(Array.isArray(obj)) {\r\n\t\tobj = <any>obj.filter(o => o != null);\r\n\t} else {\r\n\t\tObject.entries(obj).forEach(([key, value]) => {\r\n\t\t\tif((undefinedOnly && value === undefined) || (!undefinedOnly && value == null)) delete (<any>obj)[key];\r\n\t\t});\r\n\t}\r\n\treturn <any>obj;\r\n}\r\n\r\n/**\r\n * Create a deep copy of an object (vs. a shallow copy of references)\r\n *\r\n * Should be replaced by `structuredClone` once released.\r\n *\r\n * @param {T} value Object to copy\r\n * @returns {T} Type\r\n */\r\nexport function deepCopy<T>(value: T): T {\r\n\treturn JSON.parse(JSON.stringify(value));\r\n}\r\n\r\n/**\r\n * Merge any number of objects into the target\r\n *\r\n * @param target Destination of all properties\r\n * @param sources Objects that will copied into target\r\n * @return {any} The des\r\n */\r\nexport function deepMerge<T>(target: any, ...sources: any[]): T {\r\n\tsources.forEach(s => {\r\n\t\tfor(const key in s) {\r\n\t\t\tif(s[key] && typeof s[key] == 'object' && !Array.isArray(s[key])) {\r\n\t\t\t\tif(!target[key]) target[key] = {};\r\n\t\t\t\tdeepMerge(target[key], s[key]);\r\n\t\t\t} else {\r\n\t\t\t\ttarget[key] = s[key];\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\treturn target;\r\n}\r\n\r\n/**\r\n * Get/set a property of an object using dot notation\r\n *\r\n * @example\r\n * ```ts\r\n * // Get a value\r\n * const name = dotNotation<string>(person, 'firstName');\r\n * const familyCarMake = dotNotation(family, 'cars[0].make');\r\n * // Set a value\r\n * dotNotation(family, 'cars[0].make', 'toyota');\r\n * ```\r\n *\r\n * @type T Return type\r\n * @param {Object} obj source object to search\r\n * @param {string} prop property name (Dot notation & indexing allowed)\r\n * @param {any} set Set object property to value, omit to fetch value instead\r\n * @return {T} property value\r\n */\r\nexport function dotNotation<T>(obj: any, prop: string, set: T): T;\r\nexport function dotNotation<T>(obj: any, prop: string): T | undefined;\r\nexport function dotNotation<T>(obj: any, prop: string, set?: T): T | undefined {\r\n\tif(obj == null || !prop) return undefined;\r\n\t// Split property string by '.' or [index]\r\n\treturn <T>prop.split(/[.[\\]]/g).filter(prop => prop.length).reduce((obj, prop, i, arr) => {\r\n\t\tif(prop[0] == '\"' || prop[0] == \"'\") prop = prop.slice(1, -1); // Take quotes out\r\n\t\tif(!obj?.hasOwnProperty(prop)) {\r\n\t\t\tif(set == undefined) return undefined;\r\n\t\t\tobj[prop] = {};\r\n\t\t}\r\n\t\tif(set !== undefined && i == arr.length - 1)\r\n\t\t\treturn obj[prop] = set;\r\n\t\treturn obj[prop];\r\n\t}, obj);\r\n}\r\n\r\n/**\r\n * Recursively flatten a nested object, while maintaining key structure.\r\n *\r\n * @example\r\n * ```ts\r\n * const car = {honda: {model: \"Civic\"}};\r\n * console.log(flattenObj(car)); //Output {honda.model: \"Civic\"}\r\n * ```\r\n *\r\n * @param obj - Object to flatten\r\n * @param parent - Recursively check if key is a parent key or not\r\n * @param result - Result\r\n * @returns {object} - Flattened object\r\n */\r\nexport function flattenObj(obj: any, parent?: any, result: any = {}) {\r\n\tif(typeof obj === \"object\" && !Array.isArray(obj)) {\r\n\t\tfor(const key of Object.keys(obj)) {\r\n\t\t\tconst propName = parent ? parent + '.' + key : key;\r\n\t\t\tif(typeof obj[key] === 'object') {\r\n\t\t\t\tflattenObj(obj[key], propName, result);\r\n\t\t\t} else {\r\n\t\t\t\tresult[propName] = obj[key];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n}\r\n\r\n/**\r\n * Check that an object has the following values\r\n *\r\n * @example\r\n * ```ts\r\n * const test = {a: 2, b: 2};\r\n * includes(test, {a: 1}); // true\r\n * includes(test, {b: 1, c: 3}); // false\r\n * ```\r\n *\r\n * @param target Object to search\r\n * @param values Criteria to check against\r\n * @param allowMissing Only check the keys that are available on the target\r\n * @returns {boolean} Does target include all the values\r\n */\r\nexport function includes(target: any, values: any, allowMissing = false): boolean {\r\n\tif(target == undefined) return allowMissing;\r\n\tif(Array.isArray(values)) return values.findIndex((e: any, i: number) => !includes(target[i], values[i], allowMissing)) == -1;\r\n\tconst type = typeof values;\r\n\tif(type != typeof target) return false;\r\n\tif(type == 'object') {\r\n\t\treturn Object.keys(values).find(key => !includes(target[key], values[key], allowMissing)) == null;\r\n\t}\r\n\tif(type == 'function') return target.toString() == values.toString();\r\n\treturn target == values;\r\n}\r\n\r\n/**\r\n * Deep check if two objects are equal\r\n *\r\n * @param {any} a - first item to compare\r\n * @param {any} b - second item to compare\r\n * @returns {boolean} True if they match\r\n */\r\nexport function isEqual(a: any, b: any): boolean {\r\n\tconst ta = typeof a, tb = typeof b;\r\n\tif((ta != 'object' || a == null) || (tb != 'object' || b == null))\r\n\t\treturn ta == 'function' && tb == 'function' ? a.toString() == b.toString() : a === b;\r\n\tconst keys = Object.keys(a);\r\n\tif(keys.length != Object.keys(b).length) return false;\r\n\treturn Object.keys(a).every(key => isEqual(a[key], b[key]));\r\n}\r\n\r\nexport function mixin(target: any, constructors: any[]) {\r\n\tconstructors.forEach(c => {\r\n\t\tObject.getOwnPropertyNames(c.prototype).forEach((name) => {\r\n\t\t\tObject.defineProperty(\r\n\t\t\t\ttarget.prototype,\r\n\t\t\t\tname,\r\n\t\t\t\tObject.getOwnPropertyDescriptor(c.prototype, name) ||\r\n\t\t\t\tObject.create(null)\r\n\t\t\t);\r\n\t\t});\r\n\t});\r\n}\r\n\r\nexport function sanitizedJSON(obj: any, space?: number) {\r\n\tlet cache: any[] = [];\r\n\treturn JSON.parse(JSON.stringify(obj, (key, value) => {\r\n\t\tif (typeof value === 'object' && value !== null) {\r\n\t\t\tif (cache.includes(value)) return;\r\n\t\t\tcache.push(value);\r\n\t\t}\r\n\t\treturn value;\r\n\t}, space));\r\n}\r\n","import {dotNotation, isEqual} from './objects';\n\nexport function addUnique<T>(array: T[], el: T): T[] {\n\tif(array.indexOf(el) === -1) array.push(el);\n\treturn array;\n}\n\nexport function arrayDiff(a: any[], b: any[]): any[] {\n\treturn makeUnique([\n\t\t...a.filter(v1 => !b.includes((v2: any) => isEqual(v1, v2))),\n\t\t...b.filter(v1 => !a.includes((v2: any) => isEqual(v1, v2))),\n\t]);\n}\n\n/**\n * Provides a shorthand for sorting arrays of complex objects by a string property\n *\n * @example\n * ```ts\n * let arr = [{a: 'Apple', b: 123}, {a: 'Carrot', b: 789}, {a: 'banana', b: 456}];\n * arr.sort(caseInsensitiveSort('a'));\n * ```\n *\n * @param {string} prop - Name of property to use, supports dot notation\n * @returns {(a, b) => (number)} - Function to handle sort (Meant to be passed to Array.prototype.sort or used in sortFn)\n */\nexport function caseInsensitiveSort(prop: string) {\n\treturn function (a: any, b: any) {\n\t\tconst aVal = dotNotation<string>(a, prop);\n\t\tconst bVal = dotNotation<string>(b, prop);\n\t\tif(typeof aVal !== 'string' || typeof bVal !== 'string') return 1;\n\t\treturn aVal.toLowerCase().localeCompare(bVal.toLowerCase());\n\t};\n}\n\n/**\n * Recursively flatten nested arrays\n *\n * @example\n * ```ts\n * const arr = [\n * {label: null, url: '/'},\n * {label: 'Model Admin', url: '/model-admin'},\n * [\n * {label: 'Elements', url: '/model-admin/elements'},\n * {label: 'Example', url: null}\n * ]\n * ];\n *\n * console.log(flattenArr(arr));\n * // Output:\n * [\n * {label: null, url: '/'},\n * {label: 'Model Admin', url: '/model-admin'},\n * {label: 'Elements', url: '/model-admin/elements'},\n * {label: 'Example', url: null}\n * ]\n * ```\n *\n * @param {any[]} arr - n-dimensional array\n * @param {any[]} result - Internal use only -- Keeps track of recursion\n * @returns {any[]} - Flattened array\n */\nexport function flattenArr(arr: any[], result: any[] = []): any[] {\n\tarr.forEach(el => Array.isArray(el) ? flattenArr(el, result) : result.push(el));\n\treturn result;\n}\n\n/**\n * Provides a shorthand for sorting arrays of complex objects\n *\n * @example\n * ```ts\n * let arr = [{a: {b: 2}}, {a: {b: 3}}, {a: {b: 1}}];\n * arr.sort(sortByProp('a.b'));\n * ```\n *\n * @param {string} prop - Name of property to use, supports dot notation\n * @param {boolean} reverse - Reverse the order of the sort\n * @returns {(a, b) => (number)} - Function to handle sort (Meant to be passed to Array.prototype.sort)\n */\nexport function sortByProp(prop: string, reverse = false) {\n\treturn function (a: any, b: any) {\n\t\tconst aVal = dotNotation<any>(a, prop);\n\t\tconst bVal = dotNotation<any>(b, prop);\n\t\tif(typeof aVal == 'number' && typeof bVal == 'number')\n\t\t\treturn (reverse ? -1 : 1) * (aVal - bVal);\n\t\tif(aVal > bVal) return reverse ? -1 : 1;\n\t\tif(aVal < bVal) return reverse ? 1 : -1;\n\t\treturn 0;\n\t};\n}\n\nexport function findByProp(prop: string, value: any) {\n\treturn (v: any) => isEqual(v[prop], value);\n}\n\nexport function makeUnique(arr: any[]) {\n\tfor(let i = arr.length - 1; i >= 0; i--) {\n\t\tif(arr.slice(0, i).find(n => isEqual(n, arr[i]))) arr.splice(i, 1);\n\t}\n\treturn arr;\n}\n\n/**\n * Make sure value is an array, if it isn't wrap it in one.\n * @param {T[] | T} value Value that should be an array\n * @returns {T[]} Value in an array\n */\nexport function makeArray<T>(value: T | T[]): T[] {\n\treturn Array.isArray(value) ? value : [value];\n}\n","export class ASet<T> extends Array {\n\tget size() {\n\t\treturn this.length;\n\t}\n\n\tconstructor(elements: T[] = []) {\n\t\tsuper();\n\t\tif(!!elements?.['forEach'])\n\t\t\telements.forEach(el => this.add(el));\n\t}\n\n\tadd(el: T) {\n\t\tif(!this.has(el)) this.push(el);\n\t}\n\n\tdelete(el: T) {\n\t\tconst index = this.indexOf(el);\n\t\tif(index != -1) this.slice(index, 1);\n\t}\n\n\tdifference(set: ASet<T>) {\n\t\treturn new ASet<T>(this.reduce((acc, el) => {\n\t\t\tif(!set.has(el)) acc.push(el);\n\t\t\treturn acc;\n\t\t}, []));\n\t}\n\n\thas(el: T) {\n\t\treturn this.indexOf(el) != -1;\n\t}\n\n\tintersection(set: ASet<T>) {\n\t\treturn new ASet<T>(this.reduce((acc, el) => {\n\t\t\tif(set.has(el)) acc.push(el);\n\t\t\treturn acc;\n\t\t}, []));\n\t}\n\n\tisDisjointFrom(set: ASet<T>) {\n\t\treturn this.intersection(set).size == 0;\n\t}\n\n\tisSubsetOf(set: ASet<T>) {\n\t\treturn this.findIndex(el => !set.has(el)) == -1;\n\t}\n\n\tisSuperset(set: ASet<T>) {\n\t\treturn set.findIndex(el => !this.has(el)) == -1;\n\t}\n\n\tsymmetricDifference(set: ASet<T>) {\n\t\treturn new ASet([...this.difference(set), ...set.difference(this)]);\n\t}\n\n\tunion(set: ASet<T> | Array<T>) {\n\t\treturn new ASet([...this, ...set]);\n\t}\n}\n","export type ProgressCallback = (progress: number) => any;\n\nexport class PromiseProgress<T> extends Promise<T> {\n\tprivate listeners: ProgressCallback[] = [];\n\n\tprivate _progress = 0;\n\tget progress() { return this._progress; }\n\tset progress(p: number) {\n\t\tif(p == this._progress) return;\n\t\tthis._progress = p;\n\t\tthis.listeners.forEach(l => l(p));\n\t}\n\n\tconstructor(executor: (resolve: (value: T) => any, reject: (reason: any) => void, progress: (progress: number) => any) => void) {\n\t\tsuper((resolve, reject) => executor(\n\t\t\t(value: T) => resolve(value),\n\t\t\t(reason: any) => reject(reason),\n\t\t\t(progress: number) => this.progress = progress,\n\t\t));\n\t}\n\n\tstatic from<T>(promise: Promise<T>): PromiseProgress<T> {\n\t\tif(promise instanceof PromiseProgress) return promise;\n\t\treturn new PromiseProgress<T>((res, rej) => promise\n\t\t\t.then((...args) => res(...args))\n\t\t\t.catch((...args) => rej(...args)));\n\t}\n\n\tprivate from(promise: Promise<T>): PromiseProgress<T> {\n\t\tconst newPromise = PromiseProgress.from(promise);\n\t\tthis.onProgress(p => newPromise.progress = p);\n\t\treturn newPromise;\n\t}\n\n\tonProgress(callback: ProgressCallback) {\n\t\tthis.listeners.push(callback);\n\t\treturn this;\n\t}\n\n\tthen(res?: (v: T) => any, rej?: (err: any) => any): PromiseProgress<any> {\n\t\tconst resp = super.then(res, rej);\n\t\treturn this.from(resp);\n\t}\n\n\tcatch(rej?: (err: any) => any): PromiseProgress<any> {\n\t\treturn this.from(super.catch(rej));\n\t}\n\n\tfinally(res?: () => any): PromiseProgress<any> {\n\t\treturn this.from(super.finally(res));\n\t}\n}\n","import {PromiseProgress} from './promise-progress';\n\nexport function download(href: any, name: string) {\n\tconst a = document.createElement('a');\n\ta.href = href;\n\ta.download = name;\n\tdocument.body.appendChild(a);\n\ta.click();\n\tdocument.body.removeChild(a);\n}\n\nexport function downloadBlob(blob: Blob, name: string) {\n\tconst url = URL.createObjectURL(blob);\n\tdownload(url, name);\n\tURL.revokeObjectURL(url);\n}\n\nexport function fileBrowser(options: {accept?: string, multiple?: boolean} = {}): Promise<File[]> {\n\treturn new Promise(res => {\n\t\tconst input = document.createElement('input');\n\t\tinput.type = 'file';\n\t\tinput.accept = options.accept || '*';\n\t\tinput.style.display='none';\n\t\tinput.multiple = !!options.multiple;\n\t\tinput.onblur = input.onchange = async () => {\n\t\t\tres(Array.from(<any>input.files));\n\t\t\tinput.remove();\n\t\t}\n\t\tdocument.body.appendChild(input);\n\t\tinput.click();\n\t});\n}\n\nexport function uploadWithProgress<T>(options: {\n\turl: string;\n\tfiles: File[];\n\theaders?: {[key: string]: string};\n\twithCredentials?: boolean;\n}): PromiseProgress<T> {\n\treturn new PromiseProgress<T>((res, rej, prog) => {\n\t\tconst xhr = new XMLHttpRequest();\n\t\tconst formData = new FormData();\n\t\toptions.files.forEach(f => formData.append('file', f));\n\n\t\txhr.withCredentials = !!options.withCredentials\n\t\txhr.upload.addEventListener('progress', (event) => event.lengthComputable ? prog(event.loaded / event.total) : null);\n\t\txhr.upload.addEventListener('load', (resp) => res(<any>resp));\n\t\txhr.upload.addEventListener('error', (err) => rej(err));\n\n\t\txhr.open('POST', options.url);\n\t\tObject.entries(options.headers || {}).forEach(([key, value]) => xhr.setRequestHeader(key, value));\n\t\txhr.send(formData);\n\t});\n}\n","export type Listener = (...args: any[]) => any;\r\nexport type TypedEvents = {[k in string | symbol]: Listener} & {'*': (event: string, ...args: any[]) => any};\r\n\r\nexport class TypedEmitter<T extends TypedEvents = TypedEvents> {\r\n\tprivate static listeners: {[key: string]: Listener[]} = {};\r\n\r\n\tprivate listeners: { [key in keyof T]?: Listener[] } = {};\r\n\r\n\tstatic emit(event: any, ...args: any[]) {\r\n\t\t(this.listeners['*'] || []).forEach(l => l(event, ...args));\r\n\t\t(this.listeners[event.toString()] || []).forEach(l => l(...args));\r\n\t};\r\n\r\n\tstatic off(event: any, listener: Listener) {\r\n\t\tconst e = event.toString();\r\n\t\tthis.listeners[e] = (this.listeners[e] || []).filter(l => l === listener);\r\n\t}\r\n\r\n\tstatic on(event: any, listener: Listener) {\r\n\t\tconst e = event.toString();\r\n\t\tif(!this.listeners[e]) this.listeners[e] = [];\r\n\t\tthis.listeners[e]?.push(listener);\r\n\t\treturn () => this.off(event, listener);\r\n\t}\r\n\r\n\tstatic once(event: any, listener?: Listener): Promise<any> {\r\n\t\treturn new Promise(res => {\r\n\t\t\tconst unsubscribe = this.on(event, <any>((...args: any) => {\r\n\t\t\t\tres(args.length == 1 ? args[0] : args);\r\n\t\t\t\tif(listener) listener(...args);\r\n\t\t\t\tunsubscribe();\r\n\t\t\t}));\r\n\t\t});\r\n\t}\r\n\r\n\temit<K extends keyof T>(event: K, ...args: Parameters<T[K]>) {\r\n\t\t(this.listeners['*'] || []).forEach(l => l(event, ...args));\r\n\t\t(this.listeners[event] || []).forEach(l => l(...args));\r\n\t};\r\n\r\n\toff<K extends keyof T = string>(event: K, listener: T[K]) {\r\n\t\tthis.listeners[event] = (this.listeners[event] || []).filter(l => l === listener);\r\n\t}\r\n\r\n\ton<K extends keyof T = string>(event: K, listener: T[K]) {\r\n\t\tif(!this.listeners[event]) this.listeners[event] = [];\r\n\t\tthis.listeners[event]?.push(listener);\r\n\t\treturn () => this.off(event, listener);\r\n\t}\r\n\r\n\tonce<K extends keyof T = string>(event: K, listener?: T[K]): Promise<any> {\r\n\t\treturn new Promise(res => {\r\n\t\t\tconst unsubscribe = this.on(event, <any>((...args: any) => {\r\n\t\t\t\tres(args.length == 1 ? args[0] : args);\r\n\t\t\t\tif(listener) listener(...args);\r\n\t\t\t\tunsubscribe();\r\n\t\t\t}));\r\n\t\t});\r\n\t}\r\n}\r\n","export class CustomError extends Error {\r\n\tstatic code = 500;\r\n\r\n\tprivate _code?: number;\r\n\tget code(): number { return this._code || (<any>this).constructor.code; }\r\n\tset code(c: number) { this._code = c; }\r\n\r\n\tconstructor(message?: string, code?: number) {\r\n\t\tsuper(message);\r\n\t\tif(code != null) this._code = code;\r\n\t}\r\n\r\n\tstatic from(err: Error): CustomError {\r\n\t\tconst code = Number((<any>err).statusCode) ?? Number((<any>err).code);\r\n\t\tconst newErr = new this(err.message || err.toString());\r\n\t\treturn Object.assign(newErr, {\r\n\t\t\tstack: err.stack,\r\n\t\t\t...err,\r\n\t\t\tcode: code ?? undefined\r\n\t\t});\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code != undefined;\r\n\t}\r\n\r\n\ttoString() {\r\n\t\treturn this.message || super.toString();\r\n\t}\r\n}\r\n\r\nexport class BadRequestError extends CustomError {\r\n\tstatic code = 400;\r\n\r\n\tconstructor(message: string = 'Bad Request') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class UnauthorizedError extends CustomError {\r\n\tstatic code = 401;\r\n\r\n\tconstructor(message: string = 'Unauthorized') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class ForbiddenError extends CustomError {\r\n\tstatic code = 403;\r\n\r\n\tconstructor(message: string = 'Forbidden') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class NotFoundError extends CustomError {\r\n\tstatic code = 404;\r\n\r\n\tconstructor(message: string = 'Not Found') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class InternalServerError extends CustomError {\r\n\tstatic code = 500;\r\n\r\n\tconstructor(message: string = 'Internal Server Error') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n","import {clean} from './objects';\nimport {PromiseProgress} from './promise-progress';\n\nexport type DecodedResponse<T> = Response & {data: T | null}\n\nexport type HttpInterceptor = (response: Response, next: () => void) => void;\n\nexport type HttpRequestOptions = {\n\tbody?: any;\n\tdecode?: boolean;\n\tfragment?: string;\n\theaders?: {[key: string | symbol]: string | null | undefined};\n\tmethod?: 'GET' | 'POST' | 'PATCH' | 'DELETE';\n\tquery?: {key: string, value: string}[] | {[key: string]: string};\n\turl?: string;\n\t[key: string]: any;\n}\n\nexport type HttpDefaults = {\n\theaders?: {[key: string | symbol]: string | null | undefined};\n\tinterceptors?: HttpInterceptor[];\n\turl?: string;\n}\n\nexport class Http {\n\tprivate static interceptors: {[key: string]: HttpInterceptor} = {};\n\n\tstatic headers: {[key: string]: string | null | undefined} = {};\n\n\tprivate interceptors: {[key: string]: HttpInterceptor} = {}\n\n\theaders: {[key: string]: string | null | undefined} = {}\n\turl!: string | null;\n\n\tconstructor(defaults: HttpDefaults = {}) {\n\t\tthis.url = defaults.url ?? null;\n\t\tthis.headers = defaults.headers || {};\n\t\tif(defaults.interceptors) {\n\t\t\tdefaults.interceptors.forEach(i => Http.addInterceptor(i));\n\t\t}\n\t}\n\n\tstatic addInterceptor(fn: HttpInterceptor): () => void {\n\t\tconst key = Object.keys(Http.interceptors).length.toString();\n\t\tHttp.interceptors[key] = fn;\n\t\treturn () => { Http.interceptors[key] = <any>null; }\n\t}\n\n\taddInterceptor(fn: HttpInterceptor): () => void {\n\t\tconst key = Object.keys(this.interceptors).length.toString();\n\t\tthis.interceptors[key] = fn;\n\t\treturn () => { this.interceptors[key] = <any>null; }\n\t}\n\n\trequest<T>(opts: HttpRequestOptions = {}): PromiseProgress<DecodedResponse<T>> {\n\t\tif(!this.url && !opts.url) throw new Error('URL needs to be set');\n\t\tlet url = (opts.url?.startsWith('http') ? opts.url : (this.url || '') + (opts.url || '')).replace(/([^:]\\/)\\/+/g, '$1');\n\t\tif(opts.fragment) url.includes('#') ? url.replace(/#.*(\\?|\\n)/g, (match, arg1) => `#${opts.fragment}${arg1}`) : url += '#' + opts.fragment;\n\t\tif(opts.query) {\n\t\t\tconst q = Array.isArray(opts.query) ? opts.query :\n\t\t\t\tObject.keys(opts.query).map(k => ({key: k, value: (<any>opts.query)[k]}))\n\t\t\turl += (url.includes('?') ? '&' : '?') + q.map(q => `${q.key}=${q.value}`).join('&');\n\t\t}\n\n\t\t// Prep headers\n\t\tconst headers = <any>clean({\n\t\t\t'Content-Type': !opts.body ? undefined : (opts.body instanceof FormData ? 'multipart/form-data' : 'application/json'),\n\t\t\t...Http.headers,\n\t\t\t...this.headers,\n\t\t\t...opts.headers\n\t\t});\n\n\t\tif(typeof opts.body == 'object' && opts.body != null && headers['Content-Type'] == 'application/json')\n\t\t\topts.body = JSON.stringify(opts.body);\n\n\t\t// Send request\n\t\treturn new PromiseProgress((res, rej, prog) => {\n\t\t\tfetch(url, {\n\t\t\t\theaders,\n\t\t\t\tmethod: opts.method || (opts.body ? 'POST' : 'GET'),\n\t\t\t\tbody: opts.body\n\t\t\t}).then(async (resp: any) => {\n\t\t\t\tfor(let fn of [...Object.values(Http.interceptors), ...Object.values(this.interceptors)]) {\n\t\t\t\t\tawait new Promise<void>(res => fn(resp, () => res()));\n\t\t\t\t}\n\n\t\t\t\tconst contentLength = resp.headers.get('Content-Length');\n\t\t\t\tconst total = contentLength ? parseInt(contentLength, 10) : 0;\n\t\t\t\tlet loaded = 0;\n\n\t\t\t\tconst reader = resp.body?.getReader();\n\t\t\t\tconst stream = new ReadableStream({\n\t\t\t\t\tstart(controller) {\n\t\t\t\t\t\tfunction push() {\n\t\t\t\t\t\t\treader?.read().then((event: any) => {\n\t\t\t\t\t\t\t\tif(event.done) return controller.close();\n\t\t\t\t\t\t\t\tloaded += event.value.byteLength;\n\t\t\t\t\t\t\t\tprog(loaded / total);\n\t\t\t\t\t\t\t\tcontroller.enqueue(event.value);\n\t\t\t\t\t\t\t\tpush();\n\t\t\t\t\t\t\t}).catch((error: any) => controller.error(error));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpush();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tconst data = new Response(stream);\n\t\t\t\tresp.body = data.body;\n\t\t\t\tresp.blob = data.blob;\n\t\t\t\tresp.formData = data.formData;\n\t\t\t\tresp.json = data.json;\n\t\t\t\tresp.text = data.text;\n\n\t\t\t\tif(opts.decode !== false) {\n\t\t\t\t\tconst content = resp.headers.get('Content-Type')?.toLowerCase();\n\t\t\t\t\tif(content?.includes('application')) resp.data = <T>await data.blob();\n\t\t\t\t\telse if(content?.includes('form')) resp.data = <T>await data.formData();\n\t\t\t\t\telse if(content?.includes('json')) resp.data = <T>await data.json();\n\t\t\t\t\telse if(content?.includes('text')) resp.data = <T>await data.text();\n\t\t\t\t}\n\n\t\t\t\tif(resp.ok) res(resp);\n\t\t\t\telse rej(resp);\n\t\t\t})\n\t\t});\n\t}\n}\n","import {TypedEmitter, TypedEvents} from './emitter';\r\n\r\nexport const CliEffects = {\r\n\tCLEAR: \"\\x1b[0m\",\r\n\tBRIGHT: \"\\x1b[1m\",\r\n\tDIM: \"\\x1b[2m\",\r\n\tUNDERSCORE: \"\\x1b[4m\",\r\n\tBLINK: \"\\x1b[5m\",\r\n\tREVERSE: \"\\x1b[7m\",\r\n\tHIDDEN: \"\\x1b[8m\",\r\n}\r\n\r\nexport const CliForeground = {\r\n\tBLACK: '\\x1b[30m',\r\n\tRED: '\\x1b[31m',\r\n\tGREEN: '\\x1b[32m',\r\n\tYELLOW: '\\x1b[33m',\r\n\tBLUE: '\\x1b[34m',\r\n\tMAGENTA: '\\x1b[35m',\r\n\tCYAN: '\\x1b[36m',\r\n\tLIGHT_GREY: '\\x1b[37m',\r\n\tGREY: '\\x1b[90m',\r\n\tLIGHT_RED: '\\x1b[91m',\r\n\tLIGHT_GREEN: '\\x1b[92m',\r\n\tLIGHT_YELLOW: '\\x1b[93m',\r\n\tLIGHT_BLUE: '\\x1b[94m',\r\n\tLIGHT_MAGENTA: '\\x1b[95m',\r\n\tLIGHT_CYAN: '\\x1b[96m',\r\n\tWHITE: '\\x1b[97m',\r\n}\r\n\r\nexport const CliBackground = {\r\n\tBLACK: \"\\x1b[40m\",\r\n\tRED: \"\\x1b[41m\",\r\n\tGREEN: \"\\x1b[42m\",\r\n\tYELLOW: \"\\x1b[43m\",\r\n\tBLUE: \"\\x1b[44m\",\r\n\tMAGENTA: \"\\x1b[45m\",\r\n\tCYAN: \"\\x1b[46m\",\r\n\tWHITE: \"\\x1b[47m\",\r\n\tGREY: \"\\x1b[100m\",\r\n}\r\n\r\nexport enum LOG_LEVEL {\r\n\tERROR = 0,\r\n\tWARN = 1,\r\n\tINFO = 2,\r\n\tLOG = 3,\r\n\tDEBUG = 4,\r\n}\r\n\r\nexport type LoggerEvents = TypedEvents & {\r\n\t'ERROR': (...args: any[]) => any;\r\n\t'WARN': (...args: any[]) => any;\r\n\t'INFO': (...args: any[]) => any;\r\n\t'LOG': (...args: any[]) => any;\r\n\t'DEBUG': (...args: any[]) => any;\r\n};\r\n\r\nexport class Logger extends TypedEmitter<LoggerEvents> {\r\n\tstatic LOG_LEVEL: LOG_LEVEL = LOG_LEVEL.DEBUG;\r\n\r\n\tconstructor(public readonly namespace?: string) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tprivate pad(text: any, length: number, char: string, end = false) {\r\n\t\tconst t = text.toString();\r\n\t\tconst l = length - t.length;\r\n\t\tif(l <= 0) return t;\r\n\t\tconst padding = Array(~~(l / char.length)).fill(char).join('');\r\n\t\treturn !end ? padding + t : t + padding;\r\n\t}\r\n\r\n\tprivate format(...text: string[]): string {\r\n\t\tconst now = new Date();\r\n\t\tconst timestamp = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()} ${this.pad(now.getHours().toString(), 2, '0')}:${this.pad(now.getMinutes().toString(), 2, '0')}:${this.pad(now.getSeconds().toString(), 2, '0')}.${this.pad(now.getMilliseconds().toString(), 3, '0', true)}`;\r\n\t\treturn `${timestamp}${this.namespace ? ` [${this.namespace}]` : ''} ${text.join(' ')}`;\r\n\t}\r\n\r\n\tdebug(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.DEBUG) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.DEBUG, str);\r\n\t\tconsole.debug(CliForeground.LIGHT_GREY + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\tlog(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.LOG) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.LOG, str);\r\n\t\tconsole.log(CliEffects.CLEAR + str);\r\n\t}\r\n\r\n\tinfo(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.INFO) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.INFO, str);\r\n\t\tconsole.info(CliForeground.BLUE + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\twarn(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.WARN) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.WARN, str);\r\n\t\tconsole.warn(CliForeground.YELLOW + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\terror(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.ERROR) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.ERROR, str);\r\n\t\tconsole.error(CliForeground.RED + str + CliEffects.CLEAR);\r\n\t}\r\n}\r\n","/**\n * Convert decimal number to fraction\n *\n * @example\n * ```js\n * dec2Frac(1.25) // Outputs: \"1 1/4\"\n * ```\n *\n * @param {number} num Number to convert\n * @return {string} Fraction with remainder\n */\nexport function dec2Frac(num: number) {\n\tconst gcd = (a: number, b: number): number => {\n\t\tif (b < 0.0000001) return a;\n\t\treturn gcd(b, ~~(a % b));\n\t};\n\n\tconst len = num.toString().length - 2;\n\tlet denominator = Math.pow(10, len);\n\tlet numerator = num * denominator;\n\tconst divisor = gcd(numerator, denominator);\n\tnumerator = ~~(numerator / divisor);\n\tdenominator = ~~(denominator / divisor)\n\tconst remainder = ~~(numerator / denominator);\n\tnumerator -= remainder * denominator;\n\treturn `${remainder ? remainder + ' ' : ''}${~~(numerator)}/${~~(denominator)}`;\n}\n\n/**\n * Convert fraction to decimal number\n *\n * @example\n * ```js\n * fracToDec('1 1/4') // Outputs: 1.25\n * ```\n *\n * @param {string} frac Fraction to convert\n * @return {number} Faction as a decimal\n */\nexport function fracToDec(frac: string) {\n\tlet split = frac.split(' ');\n\tconst whole = split.length == 2 ? Number(split[0]) : 0;\n\tsplit = (<string>split.pop()).split('/');\n\treturn whole + (Number(split[0]) / Number(split[1]));\n}\n","export function countChars(text: string, pattern: RegExp) {\r\n\treturn text.length - text.replaceAll(pattern, '').length;\r\n}\r\n\r\nexport function createHex(length: number) {\r\n\treturn Array(length).fill(null).map(() => Math.round(Math.random() * 0xF).toString(16)).join('');\r\n}\r\n\r\n/**\r\n * String of all letters\r\n *\r\n */\r\nconst LETTER_LIST = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\r\n\r\n/**\r\n * String of all numbers\r\n *\r\n */\r\nconst NUMBER_LIST = '0123456789';\r\n\r\n/**\r\n * String of all symbols\r\n */\r\nconst SYMBOL_LIST = '~`!@#$%^&*()_-+={[}]|\\\\:;\"\\'<,>.?/';\r\n\r\n/**\r\n * String of all letters, numbers & symbols\r\n */\r\nconst CHAR_LIST = LETTER_LIST + NUMBER_LIST + SYMBOL_LIST;\r\n\r\nexport function formatPhoneNumber(number: string) {\r\n\tconst parts = /(\\+?1)?.*?(\\d{3}).*?(\\d{3}).*?(\\d{4})/g.exec(number);\r\n\tif(!parts) throw new Error(`Number cannot be parsed: ${number}`);\r\n\treturn `${parts[1] ?? ''} (${parts[2]}) ${parts[3]}-${parts[4]}`.trim();\r\n}\r\n\r\n/**\r\n * Insert a string into another string at a given position\r\n *\r\n * @example\r\n * ```\r\n * console.log(insertAt('Hello world!', ' glorious', 5);\r\n * // Output: Hello glorious world!\r\n * ```\r\n *\r\n * @param {string} target - Parent string you want to modify\r\n * @param {string} str - Value that will be injected to parent\r\n * @param {number} index - Position to inject string at\r\n * @returns {string} - New string\r\n */\r\nexport function insertAt(target: string, str: string, index: number): String {\r\n\treturn `${target.slice(0, index)}${str}${target.slice(index + 1)}`;\r\n}\r\n\r\nexport function pad(text: any, length: number, char: string, start = true) {\r\n\tconst t = text.toString();\r\n\tconst l = length - t.length;\r\n\tif(l <= 0) return t;\r\n\tconst padding = Array(~~(l / char.length)).fill(char).join('');\r\n\treturn start ? padding + t : t + padding;\r\n}\r\n\r\n/**\r\n * Generate a string of random characters.\r\n *\r\n * @example\r\n * ```ts\r\n * const random = randomString();\r\n * const randomByte = randomString(8, \"01\")\r\n * ```\r\n *\r\n * @param {number} length - length of generated string\r\n * @param {string} pool - character pool to generate string from\r\n * @return {string} generated string\r\n */\r\nexport function randomString(length: number, pool: string = CHAR_LIST): string {\r\n\treturn Array(length).fill(null).map(() => {\r\n\t\tconst n = ~~(Math.random() * pool.length);\r\n\t\treturn pool[n];\r\n\t}).join('');\r\n}\r\n\r\n/**\r\n * Generate a random string with fine control over letters, numbers & symbols\r\n *\r\n * @example\r\n * ```ts\r\n * const randomLetter = randomString(1, true);\r\n * const randomChar = randomString(1, true, true, true);\r\n * ```\r\n *\r\n * @param {number} length - length of generated string\r\n * @param {boolean} letters - Add letters to pool\r\n * @param {boolean} numbers - Add numbers to pool\r\n * @param {boolean} symbols - Add symbols to pool\r\n * @return {string} generated string\r\n */\r\nexport function randomStringBuilder(length: number, letters = false, numbers = false, symbols = false): string {\r\n\tif(!letters && !numbers && !symbols) throw new Error('Must enable at least one: letters, numbers, symbols');\r\n\treturn Array(length).fill(null).map(() => {\r\n\t\tlet c;\r\n\t\tdo {\r\n\t\t\tconst type = ~~(Math.random() * 3);\r\n\t\t\tif(letters && type == 0) {\r\n\t\t\t\tc = LETTER_LIST[~~(Math.random() * LETTER_LIST.length)];\r\n\t\t\t} else if(numbers && type == 1) {\r\n\t\t\t\tc = NUMBER_LIST[~~(Math.random() * NUMBER_LIST.length)];\r\n\t\t\t} else if(symbols && type == 2) {\r\n\t\t\t\tc = SYMBOL_LIST[~~(Math.random() * SYMBOL_LIST.length)];\r\n\t\t\t}\r\n\t\t} while(!c);\r\n\t\treturn c;\r\n\t}).join('');\r\n}\r\n\r\n/**\r\n * Find all substrings that match a given pattern.\r\n *\r\n * Roughly based on `String.prototype.matchAll`.\r\n *\r\n * @param {string} value - String to search.\r\n * @param {RegExp | string} regex - Regular expression to match.\r\n * @return {RegExpExecArray[]} Found matches.\r\n */\r\nexport function matchAll(value: string, regex: RegExp | string): RegExpExecArray[] {\r\n\tif(typeof regex === 'string') {\r\n\t\tregex = new RegExp(regex, 'g');\r\n\t}\r\n\r\n\t// https://stackoverflow.com/a/60290199\r\n\tif(!regex.global) {\r\n\t\tthrow new TypeError('Regular expression must be global.');\r\n\t}\r\n\r\n\tlet ret: RegExpExecArray[] = [];\r\n\tlet match: RegExpExecArray | null;\r\n\twhile((match = regex.exec(value)) !== null) {\r\n\t\tret.push(match);\r\n\t}\r\n\r\n\treturn ret;\r\n}\r\n\r\n/**\r\n * Create MD5 hash using native javascript\r\n * @param d String to hash\r\n * @returns {string} Hashed string\r\n */\r\nexport function md5(d: string) {\r\n\tvar r = M(V(Y(X(d),8*d.length)));return r.toLowerCase()};\r\n\tfunction M(d:any){for(var _,m=\"0123456789ABCDEF\",f=\"\",r=0;r<d.length;r++)_=d.charCodeAt(r),f+=m.charAt(_>>>4&15)+m.charAt(15&_);return f}\r\n\tfunction X(d:any){for(var _=Array(d.length>>2),m=0;m<_.length;m++)_[m]=0;for(m=0;m<8*d.length;m+=8)_[m>>5]|=(255&d.charCodeAt(m/8))<<m%32;return _}\r\n\tfunction V(d:any){for(var _=\"\",m=0;m<32*d.length;m+=8)_+=String.fromCharCode(d[m>>5]>>>m%32&255);return _}\r\n\tfunction Y(d:any,_:any){d[_>>5]|=128<<_%32,d[14+(_+64>>>9<<4)]=_;for(var m=1732584193,f=-271733879,r=-1732584194,i=271733878,n=0;n<d.length;n+=16){var h=m,t=f,g=r,e=i;f=md5_ii(f=md5_ii(f=md5_ii(f=md5_ii(f=md5_hh(f=md5_hh(f=md5_hh(f=md5_hh(f=md5_gg(f=md5_gg(f=md5_gg(f=md5_gg(f=md5_ff(f=md5_ff(f=md5_ff(f=md5_ff(f,r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+0],7,-680876936),f,r,d[n+1],12,-389564586),m,f,d[n+2],17,606105819),i,m,d[n+3],22,-1044525330),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+4],7,-176418897),f,r,d[n+5],12,1200080426),m,f,d[n+6],17,-1473231341),i,m,d[n+7],22,-45705983),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+8],7,1770035416),f,r,d[n+9],12,-1958414417),m,f,d[n+10],17,-42063),i,m,d[n+11],22,-1990404162),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+12],7,1804603682),f,r,d[n+13],12,-40341101),m,f,d[n+14],17,-1502002290),i,m,d[n+15],22,1236535329),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+1],5,-165796510),f,r,d[n+6],9,-1069501632),m,f,d[n+11],14,643717713),i,m,d[n+0],20,-373897302),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+5],5,-701558691),f,r,d[n+10],9,38016083),m,f,d[n+15],14,-660478335),i,m,d[n+4],20,-405537848),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+9],5,568446438),f,r,d[n+14],9,-1019803690),m,f,d[n+3],14,-187363961),i,m,d[n+8],20,1163531501),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+13],5,-1444681467),f,r,d[n+2],9,-51403784),m,f,d[n+7],14,1735328473),i,m,d[n+12],20,-1926607734),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+5],4,-378558),f,r,d[n+8],11,-2022574463),m,f,d[n+11],16,1839030562),i,m,d[n+14],23,-35309556),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+1],4,-1530992060),f,r,d[n+4],11,1272893353),m,f,d[n+7],16,-155497632),i,m,d[n+10],23,-1094730640),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+13],4,681279174),f,r,d[n+0],11,-358537222),m,f,d[n+3],16,-722521979),i,m,d[n+6],23,76029189),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+9],4,-640364487),f,r,d[n+12],11,-421815835),m,f,d[n+15],16,530742520),i,m,d[n+2],23,-995338651),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+0],6,-198630844),f,r,d[n+7],10,1126891415),m,f,d[n+14],15,-1416354905),i,m,d[n+5],21,-57434055),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+12],6,1700485571),f,r,d[n+3],10,-1894986606),m,f,d[n+10],15,-1051523),i,m,d[n+1],21,-2054922799),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+8],6,1873313359),f,r,d[n+15],10,-30611744),m,f,d[n+6],15,-1560198380),i,m,d[n+13],21,1309151649),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+4],6,-145523070),f,r,d[n+11],10,-1120210379),m,f,d[n+2],15,718787259),i,m,d[n+9],21,-343485551),m=safe_add(m,h),f=safe_add(f,t),r=safe_add(r,g),i=safe_add(i,e)}return Array(m,f,r,i)}\r\n\tfunction md5_cmn(d:any,_:any,m:any,f:any,r:any,i:any){return safe_add(bit_rol(safe_add(safe_add(_,d),safe_add(f,i)),r),m)}\r\n\tfunction md5_ff(d:any,_:any,m:any,f:any,r:any,i:any,n:any){return md5_cmn(_&m|~_&f,d,_,r,i,n)}\r\n\tfunction md5_gg(d:any,_:any,m:any,f:any,r:any,i:any,n:any){return md5_cmn(_&f|m&~f,d,_,r,i,n)}\r\n\tfunction md5_hh(d:any,_:any,m:any,f:any,r:any,i:any,n:any){return md5_cmn(_^m^f,d,_,r,i,n)}\r\n\tfunction md5_ii(d:any,_:any,m:any,f:any,r:any,i:any,n:any){return md5_cmn(m^(_|~f),d,_,r,i,n)}\r\n\tfunction safe_add(d:any,_:any){var m=(65535&d)+(65535&_);return(d>>16)+(_>>16)+(m>>16)<<16|65535&m}\r\n\tfunction bit_rol(d:any,_:any){return d<<_|d>>>32-_\r\n}\r\n\r\n/**\r\n * Check if email is valid\r\n *\r\n * @param {string} email - Target\r\n * @returns {boolean} - Follows format\r\n */\r\nexport function validateEmail(email: string) {\r\n\treturn /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/.test(email);\r\n}\r\n","import {md5} from './string';\r\n\r\n/**\r\n * Convert data into a form encoded format.\r\n *\r\n * @param {any} data - data to convert\r\n * @returns {string} - Ecodeded form data\r\n */\r\nexport function formEncode(data: any): string {\r\n\treturn Object.entries(data).map(([key, value]) =>\r\n\t\tencodeURIComponent(key) + '=' + encodeURIComponent(<any>value)\r\n\t).join('&');\r\n}\r\n\r\n/**\r\n * Get profile image from Gravatar\r\n *\r\n * @param {string} email Account email address\r\n * @param {string} def Default image, can be a link or '404', see: https://docs.gravatar.com/general/images/\r\n * @returns {string} Gravatar URL\r\n */\r\nexport function gravatar(email: string, def='mp') {\r\n\tif(!email) return '';\r\n\treturn `https://www.gravatar.com/avatar/${md5(email)}?d=${def}`;\r\n}\r\n\r\n/** Parts of a URL */\r\nexport type ParsedUrl = {\r\n\tprotocol?: string,\r\n\tsubdomain?: string,\r\n\tdomain: string,\r\n\thost: string,\r\n\tport?: number,\r\n\tpath?: string,\r\n\tquery?: {[name: string]: string}\r\n\tfragment?: string\r\n}\r\n\r\n/**\r\n *\r\n * @param {string} url\r\n * @returns {RegExpExecArray}\r\n */\r\nexport function urlParser(url: string): ParsedUrl {\r\n\tconst processed = new RegExp(\r\n\t\t'(?:(?<protocol>[\\\\w\\\\d]+)\\\\:\\\\/\\\\/)?(?:(?<user>.+)\\\\@)?(?<host>(?<domain>[^:\\\\/\\\\?#@\\\\n]+)(?:\\\\:(?<port>\\\\d*))?)(?<path>\\\\/.*?)?(?:\\\\?(?<query>.*?))?(?:#(?<fragment>.*?))?$',\r\n\t\t'gm').exec(url);\r\n\tconst groups: ParsedUrl = <any>processed?.groups ?? {};\r\n\tconst domains = groups.domain.split('.');\r\n\tif(groups['port'] != null) groups.port = Number(groups.port);\r\n\tif(domains.length > 2) {\r\n\t\tgroups.domain = domains.splice(-2, 2).join('.');\r\n\t\tgroups.subdomain = domains.join('.');\r\n\t}\r\n\tif(groups.query) {\r\n\t\tconst split = (<any>groups.query).split('&'), query: any = {};\r\n\t\tsplit.forEach((q: any) => {\r\n\t\t\tconst [key, val] = q.split('=');\r\n\t\t\tquery[key] = val;\r\n\t\t});\r\n\t\tgroups.query = query;\r\n\t}\r\n\treturn groups;\r\n}\r\n","/**\r\n * Calculate the number of milliseconds until date/time\r\n *\r\n * @param {Date | number} date - Target\r\n * @returns {number} - Number of milliseconds until target\r\n */\r\nexport function timeUntil(date: Date | number): number {\r\n\treturn (date instanceof Date ? date.getTime() : date) - (new Date()).getTime();\r\n}\r\n\r\n/**\r\n * Use in conjunction with `await` to pause an async script\r\n *\r\n * @example\r\n * ```ts\r\n * async () => {\r\n * ...\r\n * await sleep(1000) // Pause for 1 second\r\n *\t ...\r\n * }\r\n * ```\r\n *\r\n * @param {number} ms - Time to pause for in milliseconds\r\n * @returns {Promise<unknown>} - Resolves promise when it's time to resume\r\n */\r\nexport function sleep(ms: number) {\r\n\treturn new Promise(res => setTimeout(res, ms));\r\n}\r\n\r\nexport function formatDate(date: Date | number | string) {\r\n\tconst d = date instanceof Date ? date : new Date(date);\r\n\treturn new Intl.DateTimeFormat(\"en-us\", {\r\n\t\tweekday: \"long\",\r\n\t\tmonth: \"short\",\r\n\t\tday: \"numeric\",\r\n\t\thour: \"numeric\",\r\n\t\tminute: \"numeric\",\r\n\t\thour12: true\r\n\t}).format(d);\r\n}\r\n"],"names":["clean","obj","undefinedOnly","o","key","value","deepCopy","deepMerge","target","sources","s","dotNotation","prop","set","arr","flattenObj","parent","result","propName","includes","values","allowMissing","e","type","isEqual","a","b","ta","tb","mixin","constructors","c","name","sanitizedJSON","space","cache","addUnique","array","el","arrayDiff","makeUnique","v1","v2","caseInsensitiveSort","aVal","bVal","flattenArr","sortByProp","reverse","findByProp","v","i","n","makeArray","ASet","elements","index","acc","PromiseProgress","executor","resolve","reject","reason","progress","__publicField","p","l","promise","res","rej","args","newPromise","callback","resp","download","href","downloadBlob","blob","url","fileBrowser","options","input","uploadWithProgress","prog","xhr","formData","f","event","err","TypedEmitter","listener","_a","unsubscribe","CustomError","message","code","newErr","BadRequestError","UnauthorizedError","ForbiddenError","NotFoundError","InternalServerError","_Http","defaults","fn","opts","match","arg1","q","k","headers","contentLength","total","loaded","reader","stream","controller","push","error","data","content","_b","Http","CliEffects","CliForeground","CliBackground","LOG_LEVEL","_Logger","namespace","text","length","char","end","t","padding","now","str","Logger","dec2Frac","num","gcd","len","denominator","numerator","divisor","remainder","fracToDec","frac","split","whole","countChars","pattern","createHex","LETTER_LIST","NUMBER_LIST","SYMBOL_LIST","CHAR_LIST","formatPhoneNumber","number","parts","insertAt","pad","start","randomString","pool","randomStringBuilder","letters","numbers","symbols","matchAll","regex","ret","md5","d","r","M","V","Y","X","_","m","h","g","md5_ii","md5_hh","md5_gg","md5_ff","safe_add","md5_cmn","bit_rol","validateEmail","email","formEncode","gravatar","def","urlParser","processed","groups","domains","query","val","timeUntil","date","sleep","ms","formatDate"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/objects.ts","../src/array.ts","../src/aset.ts","../src/promise-progress.ts","../src/files.ts","../src/emitter.ts","../src/errors.ts","../src/http.ts","../src/logger.ts","../src/math.ts","../src/string.ts","../src/misc.ts","../src/time.ts"],"sourcesContent":["/**\r\n * Removes any null values from an object in-place\r\n *\r\n * @example\r\n * ```ts\r\n * let test = {a: 0, b: false, c: null, d: 'abc'}\r\n * console.log(clean(test)); // Output: {a: 0, b: false, d: 'abc'}\r\n * ```\r\n *\r\n * @param {T} obj Object reference that will be cleaned\r\n * @param undefinedOnly Ignore null values\r\n * @returns {Partial<T>} Cleaned object\r\n */\r\nexport function clean<T>(obj: T, undefinedOnly = false): Partial<T> {\r\n\tif(obj == null) throw new Error(\"Cannot clean a NULL value\");\r\n\tif(Array.isArray(obj)) {\r\n\t\tobj = <any>obj.filter(o => o != null);\r\n\t} else {\r\n\t\tObject.entries(obj).forEach(([key, value]) => {\r\n\t\t\tif((undefinedOnly && value === undefined) || (!undefinedOnly && value == null)) delete (<any>obj)[key];\r\n\t\t});\r\n\t}\r\n\treturn <any>obj;\r\n}\r\n\r\n/**\r\n * Create a deep copy of an object (vs. a shallow copy of references)\r\n *\r\n * Should be replaced by `structuredClone` once released.\r\n *\r\n * @param {T} value Object to copy\r\n * @returns {T} Type\r\n */\r\nexport function deepCopy<T>(value: T): T {\r\n\treturn JSON.parse(JSON.stringify(value));\r\n}\r\n\r\n/**\r\n * Merge any number of objects into the target\r\n *\r\n * @param target Destination of all properties\r\n * @param sources Objects that will copied into target\r\n * @return {any} The des\r\n */\r\nexport function deepMerge<T>(target: any, ...sources: any[]): T {\r\n\tsources.forEach(s => {\r\n\t\tfor(const key in s) {\r\n\t\t\tif(s[key] && typeof s[key] == 'object' && !Array.isArray(s[key])) {\r\n\t\t\t\tif(!target[key]) target[key] = {};\r\n\t\t\t\tdeepMerge(target[key], s[key]);\r\n\t\t\t} else {\r\n\t\t\t\ttarget[key] = s[key];\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\treturn target;\r\n}\r\n\r\n/**\r\n * Get/set a property of an object using dot notation\r\n *\r\n * @example\r\n * ```ts\r\n * // Get a value\r\n * const name = dotNotation<string>(person, 'firstName');\r\n * const familyCarMake = dotNotation(family, 'cars[0].make');\r\n * // Set a value\r\n * dotNotation(family, 'cars[0].make', 'toyota');\r\n * ```\r\n *\r\n * @type T Return type\r\n * @param {Object} obj source object to search\r\n * @param {string} prop property name (Dot notation & indexing allowed)\r\n * @param {any} set Set object property to value, omit to fetch value instead\r\n * @return {T} property value\r\n */\r\nexport function dotNotation<T>(obj: any, prop: string, set: T): T;\r\nexport function dotNotation<T>(obj: any, prop: string): T | undefined;\r\nexport function dotNotation<T>(obj: any, prop: string, set?: T): T | undefined {\r\n\tif(obj == null || !prop) return undefined;\r\n\t// Split property string by '.' or [index]\r\n\treturn <T>prop.split(/[.[\\]]/g).filter(prop => prop.length).reduce((obj, prop, i, arr) => {\r\n\t\tif(prop[0] == '\"' || prop[0] == \"'\") prop = prop.slice(1, -1); // Take quotes out\r\n\t\tif(!obj?.hasOwnProperty(prop)) {\r\n\t\t\tif(set == undefined) return undefined;\r\n\t\t\tobj[prop] = {};\r\n\t\t}\r\n\t\tif(set !== undefined && i == arr.length - 1)\r\n\t\t\treturn obj[prop] = set;\r\n\t\treturn obj[prop];\r\n\t}, obj);\r\n}\r\n\r\n/**\r\n * Recursively flatten a nested object, while maintaining key structure.\r\n *\r\n * @example\r\n * ```ts\r\n * const car = {honda: {model: \"Civic\"}};\r\n * console.log(flattenObj(car)); //Output {honda.model: \"Civic\"}\r\n * ```\r\n *\r\n * @param obj - Object to flatten\r\n * @param parent - Recursively check if key is a parent key or not\r\n * @param result - Result\r\n * @returns {object} - Flattened object\r\n */\r\nexport function flattenObj(obj: any, parent?: any, result: any = {}) {\r\n\tif(typeof obj === \"object\" && !Array.isArray(obj)) {\r\n\t\tfor(const key of Object.keys(obj)) {\r\n\t\t\tconst propName = parent ? parent + '.' + key : key;\r\n\t\t\tif(typeof obj[key] === 'object') {\r\n\t\t\t\tflattenObj(obj[key], propName, result);\r\n\t\t\t} else {\r\n\t\t\t\tresult[propName] = obj[key];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n}\r\n\r\n/**\r\n * Check that an object has the following values\r\n *\r\n * @example\r\n * ```ts\r\n * const test = {a: 2, b: 2};\r\n * includes(test, {a: 1}); // true\r\n * includes(test, {b: 1, c: 3}); // false\r\n * ```\r\n *\r\n * @param target Object to search\r\n * @param values Criteria to check against\r\n * @param allowMissing Only check the keys that are available on the target\r\n * @returns {boolean} Does target include all the values\r\n */\r\nexport function includes(target: any, values: any, allowMissing = false): boolean {\r\n\tif(target == undefined) return allowMissing;\r\n\tif(Array.isArray(values)) return values.findIndex((e: any, i: number) => !includes(target[i], values[i], allowMissing)) == -1;\r\n\tconst type = typeof values;\r\n\tif(type != typeof target) return false;\r\n\tif(type == 'object') {\r\n\t\treturn Object.keys(values).find(key => !includes(target[key], values[key], allowMissing)) == null;\r\n\t}\r\n\tif(type == 'function') return target.toString() == values.toString();\r\n\treturn target == values;\r\n}\r\n\r\n/**\r\n * Deep check if two objects are equal\r\n *\r\n * @param {any} a - first item to compare\r\n * @param {any} b - second item to compare\r\n * @returns {boolean} True if they match\r\n */\r\nexport function isEqual(a: any, b: any): boolean {\r\n\tconst ta = typeof a, tb = typeof b;\r\n\tif((ta != 'object' || a == null) || (tb != 'object' || b == null))\r\n\t\treturn ta == 'function' && tb == 'function' ? a.toString() == b.toString() : a === b;\r\n\tconst keys = Object.keys(a);\r\n\tif(keys.length != Object.keys(b).length) return false;\r\n\treturn Object.keys(a).every(key => isEqual(a[key], b[key]));\r\n}\r\n\r\nexport function mixin(target: any, constructors: any[]) {\r\n\tconstructors.forEach(c => {\r\n\t\tObject.getOwnPropertyNames(c.prototype).forEach((name) => {\r\n\t\t\tObject.defineProperty(\r\n\t\t\t\ttarget.prototype,\r\n\t\t\t\tname,\r\n\t\t\t\tObject.getOwnPropertyDescriptor(c.prototype, name) ||\r\n\t\t\t\tObject.create(null)\r\n\t\t\t);\r\n\t\t});\r\n\t});\r\n}\r\n\r\nexport function sanitizedJSON(obj: any, space?: number) {\r\n\tlet cache: any[] = [];\r\n\treturn JSON.parse(JSON.stringify(obj, (key, value) => {\r\n\t\tif (typeof value === 'object' && value !== null) {\r\n\t\t\tif (cache.includes(value)) return;\r\n\t\t\tcache.push(value);\r\n\t\t}\r\n\t\treturn value;\r\n\t}, space));\r\n}\r\n","import {dotNotation, isEqual} from './objects';\n\nexport function addUnique<T>(array: T[], el: T): T[] {\n\tif(array.indexOf(el) === -1) array.push(el);\n\treturn array;\n}\n\nexport function arrayDiff(a: any[], b: any[]): any[] {\n\treturn makeUnique([\n\t\t...a.filter(v1 => !b.includes((v2: any) => isEqual(v1, v2))),\n\t\t...b.filter(v1 => !a.includes((v2: any) => isEqual(v1, v2))),\n\t]);\n}\n\n/**\n * Provides a shorthand for sorting arrays of complex objects by a string property\n *\n * @example\n * ```ts\n * let arr = [{a: 'Apple', b: 123}, {a: 'Carrot', b: 789}, {a: 'banana', b: 456}];\n * arr.sort(caseInsensitiveSort('a'));\n * ```\n *\n * @param {string} prop - Name of property to use, supports dot notation\n * @returns {(a, b) => (number)} - Function to handle sort (Meant to be passed to Array.prototype.sort or used in sortFn)\n */\nexport function caseInsensitiveSort(prop: string) {\n\treturn function (a: any, b: any) {\n\t\tconst aVal = dotNotation<string>(a, prop);\n\t\tconst bVal = dotNotation<string>(b, prop);\n\t\tif(typeof aVal !== 'string' || typeof bVal !== 'string') return 1;\n\t\treturn aVal.toLowerCase().localeCompare(bVal.toLowerCase());\n\t};\n}\n\n/**\n * Recursively flatten nested arrays\n *\n * @example\n * ```ts\n * const arr = [\n * {label: null, url: '/'},\n * {label: 'Model Admin', url: '/model-admin'},\n * [\n * {label: 'Elements', url: '/model-admin/elements'},\n * {label: 'Example', url: null}\n * ]\n * ];\n *\n * console.log(flattenArr(arr));\n * // Output:\n * [\n * {label: null, url: '/'},\n * {label: 'Model Admin', url: '/model-admin'},\n * {label: 'Elements', url: '/model-admin/elements'},\n * {label: 'Example', url: null}\n * ]\n * ```\n *\n * @param {any[]} arr - n-dimensional array\n * @param {any[]} result - Internal use only -- Keeps track of recursion\n * @returns {any[]} - Flattened array\n */\nexport function flattenArr(arr: any[], result: any[] = []): any[] {\n\tarr.forEach(el => Array.isArray(el) ? flattenArr(el, result) : result.push(el));\n\treturn result;\n}\n\n/**\n * Provides a shorthand for sorting arrays of complex objects\n *\n * @example\n * ```ts\n * let arr = [{a: {b: 2}}, {a: {b: 3}}, {a: {b: 1}}];\n * arr.sort(sortByProp('a.b'));\n * ```\n *\n * @param {string} prop - Name of property to use, supports dot notation\n * @param {boolean} reverse - Reverse the order of the sort\n * @returns {(a, b) => (number)} - Function to handle sort (Meant to be passed to Array.prototype.sort)\n */\nexport function sortByProp(prop: string, reverse = false) {\n\treturn function (a: any, b: any) {\n\t\tconst aVal = dotNotation<any>(a, prop);\n\t\tconst bVal = dotNotation<any>(b, prop);\n\t\tif(typeof aVal == 'number' && typeof bVal == 'number')\n\t\t\treturn (reverse ? -1 : 1) * (aVal - bVal);\n\t\tif(aVal > bVal) return reverse ? -1 : 1;\n\t\tif(aVal < bVal) return reverse ? 1 : -1;\n\t\treturn 0;\n\t};\n}\n\nexport function findByProp(prop: string, value: any) {\n\treturn (v: any) => isEqual(v[prop], value);\n}\n\nexport function makeUnique(arr: any[]) {\n\tfor(let i = arr.length - 1; i >= 0; i--) {\n\t\tif(arr.slice(0, i).find(n => isEqual(n, arr[i]))) arr.splice(i, 1);\n\t}\n\treturn arr;\n}\n\n/**\n * Make sure value is an array, if it isn't wrap it in one.\n * @param {T[] | T} value Value that should be an array\n * @returns {T[]} Value in an array\n */\nexport function makeArray<T>(value: T | T[]): T[] {\n\treturn Array.isArray(value) ? value : [value];\n}\n","export class ASet<T> extends Array {\n\tget size() {\n\t\treturn this.length;\n\t}\n\n\tconstructor(elements: T[] = []) {\n\t\tsuper();\n\t\tif(!!elements?.['forEach'])\n\t\t\telements.forEach(el => this.add(el));\n\t}\n\n\tadd(el: T) {\n\t\tif(!this.has(el)) this.push(el);\n\t}\n\n\tdelete(el: T) {\n\t\tconst index = this.indexOf(el);\n\t\tif(index != -1) this.slice(index, 1);\n\t}\n\n\tdifference(set: ASet<T>) {\n\t\treturn new ASet<T>(this.reduce((acc, el) => {\n\t\t\tif(!set.has(el)) acc.push(el);\n\t\t\treturn acc;\n\t\t}, []));\n\t}\n\n\thas(el: T) {\n\t\treturn this.indexOf(el) != -1;\n\t}\n\n\tintersection(set: ASet<T>) {\n\t\treturn new ASet<T>(this.reduce((acc, el) => {\n\t\t\tif(set.has(el)) acc.push(el);\n\t\t\treturn acc;\n\t\t}, []));\n\t}\n\n\tisDisjointFrom(set: ASet<T>) {\n\t\treturn this.intersection(set).size == 0;\n\t}\n\n\tisSubsetOf(set: ASet<T>) {\n\t\treturn this.findIndex(el => !set.has(el)) == -1;\n\t}\n\n\tisSuperset(set: ASet<T>) {\n\t\treturn set.findIndex(el => !this.has(el)) == -1;\n\t}\n\n\tsymmetricDifference(set: ASet<T>) {\n\t\treturn new ASet([...this.difference(set), ...set.difference(this)]);\n\t}\n\n\tunion(set: ASet<T> | Array<T>) {\n\t\treturn new ASet([...this, ...set]);\n\t}\n}\n","export type ProgressCallback = (progress: number) => any;\n\nexport class PromiseProgress<T> extends Promise<T> {\n\tprivate listeners: ProgressCallback[] = [];\n\n\tprivate _progress = 0;\n\tget progress() { return this._progress; }\n\tset progress(p: number) {\n\t\tif(p == this._progress) return;\n\t\tthis._progress = p;\n\t\tthis.listeners.forEach(l => l(p));\n\t}\n\n\tconstructor(executor: (resolve: (value: T) => any, reject: (reason: any) => void, progress: (progress: number) => any) => void) {\n\t\tsuper((resolve, reject) => executor(\n\t\t\t(value: T) => resolve(value),\n\t\t\t(reason: any) => reject(reason),\n\t\t\t(progress: number) => this.progress = progress,\n\t\t));\n\t}\n\n\tstatic from<T>(promise: Promise<T>): PromiseProgress<T> {\n\t\tif(promise instanceof PromiseProgress) return promise;\n\t\treturn new PromiseProgress<T>((res, rej) => promise\n\t\t\t.then((...args) => res(...args))\n\t\t\t.catch((...args) => rej(...args)));\n\t}\n\n\tprivate from(promise: Promise<T>): PromiseProgress<T> {\n\t\tconst newPromise = PromiseProgress.from(promise);\n\t\tthis.onProgress(p => newPromise.progress = p);\n\t\treturn newPromise;\n\t}\n\n\tonProgress(callback: ProgressCallback) {\n\t\tthis.listeners.push(callback);\n\t\treturn this;\n\t}\n\n\tthen(res?: (v: T) => any, rej?: (err: any) => any): PromiseProgress<any> {\n\t\tconst resp = super.then(res, rej);\n\t\treturn this.from(resp);\n\t}\n\n\tcatch(rej?: (err: any) => any): PromiseProgress<any> {\n\t\treturn this.from(super.catch(rej));\n\t}\n\n\tfinally(res?: () => any): PromiseProgress<any> {\n\t\treturn this.from(super.finally(res));\n\t}\n}\n","import {PromiseProgress} from './promise-progress';\n\nexport function download(href: any, name: string) {\n\tconst a = document.createElement('a');\n\ta.href = href;\n\ta.download = name;\n\tdocument.body.appendChild(a);\n\ta.click();\n\tdocument.body.removeChild(a);\n}\n\nexport function downloadBlob(blob: Blob, name: string) {\n\tconst url = URL.createObjectURL(blob);\n\tdownload(url, name);\n\tURL.revokeObjectURL(url);\n}\n\nexport function fileBrowser(options: {accept?: string, multiple?: boolean} = {}): Promise<File[]> {\n\treturn new Promise(res => {\n\t\tconst input = document.createElement('input');\n\t\tinput.type = 'file';\n\t\tinput.accept = options.accept || '*';\n\t\tinput.style.display='none';\n\t\tinput.multiple = !!options.multiple;\n\t\tinput.onblur = input.onchange = async () => {\n\t\t\tres(Array.from(<any>input.files));\n\t\t\tinput.remove();\n\t\t}\n\t\tdocument.body.appendChild(input);\n\t\tinput.click();\n\t});\n}\n\nexport function uploadWithProgress<T>(options: {\n\turl: string;\n\tfiles: File[];\n\theaders?: {[key: string]: string};\n\twithCredentials?: boolean;\n}): PromiseProgress<T> {\n\treturn new PromiseProgress<T>((res, rej, prog) => {\n\t\tconst xhr = new XMLHttpRequest();\n\t\tconst formData = new FormData();\n\t\toptions.files.forEach(f => formData.append('file', f));\n\n\t\txhr.withCredentials = !!options.withCredentials\n\t\txhr.upload.addEventListener('progress', (event) => event.lengthComputable ? prog(event.loaded / event.total) : null);\n\t\txhr.upload.addEventListener('load', (resp) => res(<any>resp));\n\t\txhr.upload.addEventListener('error', (err) => rej(err));\n\n\t\txhr.open('POST', options.url);\n\t\tObject.entries(options.headers || {}).forEach(([key, value]) => xhr.setRequestHeader(key, value));\n\t\txhr.send(formData);\n\t});\n}\n","export type Listener = (...args: any[]) => any;\r\nexport type TypedEvents = {[k in string | symbol]: Listener} & {'*': (event: string, ...args: any[]) => any};\r\n\r\nexport class TypedEmitter<T extends TypedEvents = TypedEvents> {\r\n\tprivate static listeners: {[key: string]: Listener[]} = {};\r\n\r\n\tprivate listeners: { [key in keyof T]?: Listener[] } = {};\r\n\r\n\tstatic emit(event: any, ...args: any[]) {\r\n\t\t(this.listeners['*'] || []).forEach(l => l(event, ...args));\r\n\t\t(this.listeners[event.toString()] || []).forEach(l => l(...args));\r\n\t};\r\n\r\n\tstatic off(event: any, listener: Listener) {\r\n\t\tconst e = event.toString();\r\n\t\tthis.listeners[e] = (this.listeners[e] || []).filter(l => l === listener);\r\n\t}\r\n\r\n\tstatic on(event: any, listener: Listener) {\r\n\t\tconst e = event.toString();\r\n\t\tif(!this.listeners[e]) this.listeners[e] = [];\r\n\t\tthis.listeners[e]?.push(listener);\r\n\t\treturn () => this.off(event, listener);\r\n\t}\r\n\r\n\tstatic once(event: any, listener?: Listener): Promise<any> {\r\n\t\treturn new Promise(res => {\r\n\t\t\tconst unsubscribe = this.on(event, <any>((...args: any) => {\r\n\t\t\t\tres(args.length == 1 ? args[0] : args);\r\n\t\t\t\tif(listener) listener(...args);\r\n\t\t\t\tunsubscribe();\r\n\t\t\t}));\r\n\t\t});\r\n\t}\r\n\r\n\temit<K extends keyof T>(event: K, ...args: Parameters<T[K]>) {\r\n\t\t(this.listeners['*'] || []).forEach(l => l(event, ...args));\r\n\t\t(this.listeners[event] || []).forEach(l => l(...args));\r\n\t};\r\n\r\n\toff<K extends keyof T = string>(event: K, listener: T[K]) {\r\n\t\tthis.listeners[event] = (this.listeners[event] || []).filter(l => l === listener);\r\n\t}\r\n\r\n\ton<K extends keyof T = string>(event: K, listener: T[K]) {\r\n\t\tif(!this.listeners[event]) this.listeners[event] = [];\r\n\t\tthis.listeners[event]?.push(listener);\r\n\t\treturn () => this.off(event, listener);\r\n\t}\r\n\r\n\tonce<K extends keyof T = string>(event: K, listener?: T[K]): Promise<any> {\r\n\t\treturn new Promise(res => {\r\n\t\t\tconst unsubscribe = this.on(event, <any>((...args: any) => {\r\n\t\t\t\tres(args.length == 1 ? args[0] : args);\r\n\t\t\t\tif(listener) listener(...args);\r\n\t\t\t\tunsubscribe();\r\n\t\t\t}));\r\n\t\t});\r\n\t}\r\n}\r\n","export class CustomError extends Error {\r\n\tstatic code = 500;\r\n\r\n\tprivate _code?: number;\r\n\tget code(): number { return this._code || (<any>this).constructor.code; }\r\n\tset code(c: number) { this._code = c; }\r\n\r\n\tconstructor(message?: string, code?: number) {\r\n\t\tsuper(message);\r\n\t\tif(code != null) this._code = code;\r\n\t}\r\n\r\n\tstatic from(err: Error): CustomError {\r\n\t\tconst code = Number((<any>err).statusCode) ?? Number((<any>err).code);\r\n\t\tconst newErr = new this(err.message || err.toString());\r\n\t\treturn Object.assign(newErr, {\r\n\t\t\tstack: err.stack,\r\n\t\t\t...err,\r\n\t\t\tcode: code ?? undefined\r\n\t\t});\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code != undefined;\r\n\t}\r\n\r\n\ttoString() {\r\n\t\treturn this.message || super.toString();\r\n\t}\r\n}\r\n\r\nexport class BadRequestError extends CustomError {\r\n\tstatic code = 400;\r\n\r\n\tconstructor(message: string = 'Bad Request') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class UnauthorizedError extends CustomError {\r\n\tstatic code = 401;\r\n\r\n\tconstructor(message: string = 'Unauthorized') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class ForbiddenError extends CustomError {\r\n\tstatic code = 403;\r\n\r\n\tconstructor(message: string = 'Forbidden') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class NotFoundError extends CustomError {\r\n\tstatic code = 404;\r\n\r\n\tconstructor(message: string = 'Not Found') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class InternalServerError extends CustomError {\r\n\tstatic code = 500;\r\n\r\n\tconstructor(message: string = 'Internal Server Error') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n","import {clean} from './objects';\nimport {PromiseProgress} from './promise-progress';\n\nexport type DecodedResponse<T> = Response & {data: T | null}\n\nexport type HttpInterceptor = (response: Response, next: () => void) => void;\n\nexport type HttpRequestOptions = {\n\tbody?: any;\n\tdecode?: boolean;\n\tfragment?: string;\n\theaders?: {[key: string | symbol]: string | null | undefined};\n\tmethod?: 'GET' | 'POST' | 'PATCH' | 'DELETE';\n\tquery?: {key: string, value: string}[] | {[key: string]: string};\n\turl?: string;\n\t[key: string]: any;\n}\n\nexport type HttpDefaults = {\n\theaders?: {[key: string | symbol]: string | null | undefined};\n\tinterceptors?: HttpInterceptor[];\n\turl?: string;\n}\n\nexport class Http {\n\tprivate static interceptors: {[key: string]: HttpInterceptor} = {};\n\n\tstatic headers: {[key: string]: string | null | undefined} = {};\n\n\tprivate interceptors: {[key: string]: HttpInterceptor} = {}\n\n\theaders: {[key: string]: string | null | undefined} = {}\n\turl!: string | null;\n\n\tconstructor(defaults: HttpDefaults = {}) {\n\t\tthis.url = defaults.url ?? null;\n\t\tthis.headers = defaults.headers || {};\n\t\tif(defaults.interceptors) {\n\t\t\tdefaults.interceptors.forEach(i => Http.addInterceptor(i));\n\t\t}\n\t}\n\n\tstatic addInterceptor(fn: HttpInterceptor): () => void {\n\t\tconst key = Object.keys(Http.interceptors).length.toString();\n\t\tHttp.interceptors[key] = fn;\n\t\treturn () => { Http.interceptors[key] = <any>null; }\n\t}\n\n\taddInterceptor(fn: HttpInterceptor): () => void {\n\t\tconst key = Object.keys(this.interceptors).length.toString();\n\t\tthis.interceptors[key] = fn;\n\t\treturn () => { this.interceptors[key] = <any>null; }\n\t}\n\n\trequest<T>(opts: HttpRequestOptions = {}): PromiseProgress<DecodedResponse<T>> {\n\t\tif(!this.url && !opts.url) throw new Error('URL needs to be set');\n\t\tlet url = (opts.url?.startsWith('http') ? opts.url : (this.url || '') + (opts.url || '')).replace(/([^:]\\/)\\/+/g, '$1');\n\t\tif(opts.fragment) url.includes('#') ? url.replace(/#.*(\\?|\\n)/g, (match, arg1) => `#${opts.fragment}${arg1}`) : url += '#' + opts.fragment;\n\t\tif(opts.query) {\n\t\t\tconst q = Array.isArray(opts.query) ? opts.query :\n\t\t\t\tObject.keys(opts.query).map(k => ({key: k, value: (<any>opts.query)[k]}))\n\t\t\turl += (url.includes('?') ? '&' : '?') + q.map(q => `${q.key}=${q.value}`).join('&');\n\t\t}\n\n\t\t// Prep headers\n\t\tconst headers = <any>clean({\n\t\t\t'Content-Type': !opts.body ? undefined : (opts.body instanceof FormData ? 'multipart/form-data' : 'application/json'),\n\t\t\t...Http.headers,\n\t\t\t...this.headers,\n\t\t\t...opts.headers\n\t\t});\n\n\t\tif(typeof opts.body == 'object' && opts.body != null && headers['Content-Type'] == 'application/json')\n\t\t\topts.body = JSON.stringify(opts.body);\n\n\t\t// Send request\n\t\treturn new PromiseProgress((res, rej, prog) => {\n\t\t\tfetch(url, {\n\t\t\t\theaders,\n\t\t\t\tmethod: opts.method || (opts.body ? 'POST' : 'GET'),\n\t\t\t\tbody: opts.body\n\t\t\t}).then(async (resp: any) => {\n\t\t\t\tfor(let fn of [...Object.values(Http.interceptors), ...Object.values(this.interceptors)]) {\n\t\t\t\t\tawait new Promise<void>(res => fn(resp, () => res()));\n\t\t\t\t}\n\n\t\t\t\tconst contentLength = resp.headers.get('Content-Length');\n\t\t\t\tconst total = contentLength ? parseInt(contentLength, 10) : 0;\n\t\t\t\tlet loaded = 0;\n\n\t\t\t\tconst reader = resp.body?.getReader();\n\t\t\t\tconst stream = new ReadableStream({\n\t\t\t\t\tstart(controller) {\n\t\t\t\t\t\tfunction push() {\n\t\t\t\t\t\t\treader?.read().then((event: any) => {\n\t\t\t\t\t\t\t\tif(event.done) return controller.close();\n\t\t\t\t\t\t\t\tloaded += event.value.byteLength;\n\t\t\t\t\t\t\t\tprog(loaded / total);\n\t\t\t\t\t\t\t\tcontroller.enqueue(event.value);\n\t\t\t\t\t\t\t\tpush();\n\t\t\t\t\t\t\t}).catch((error: any) => controller.error(error));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpush();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tconst data = new Response(stream);\n\t\t\t\tresp.blob = data.blob;\n\t\t\t\tresp.formData = data.formData;\n\t\t\t\tresp.json = data.json;\n\t\t\t\tresp.text = data.text;\n\n\t\t\t\tif(opts.decode !== false) {\n\t\t\t\t\tconst content = resp.headers.get('Content-Type')?.toLowerCase();\n\t\t\t\t\tif(content?.includes('application')) resp.data = <T>await data.blob();\n\t\t\t\t\telse if(content?.includes('form')) resp.data = <T>await data.formData();\n\t\t\t\t\telse if(content?.includes('json')) resp.data = <T>await data.json();\n\t\t\t\t\telse if(content?.includes('text')) resp.data = <T>await data.text();\n\t\t\t\t}\n\n\t\t\t\tif(resp.ok) res(resp);\n\t\t\t\telse rej(resp);\n\t\t\t})\n\t\t});\n\t}\n}\n","import {TypedEmitter, TypedEvents} from './emitter';\r\n\r\nexport const CliEffects = {\r\n\tCLEAR: \"\\x1b[0m\",\r\n\tBRIGHT: \"\\x1b[1m\",\r\n\tDIM: \"\\x1b[2m\",\r\n\tUNDERSCORE: \"\\x1b[4m\",\r\n\tBLINK: \"\\x1b[5m\",\r\n\tREVERSE: \"\\x1b[7m\",\r\n\tHIDDEN: \"\\x1b[8m\",\r\n}\r\n\r\nexport const CliForeground = {\r\n\tBLACK: '\\x1b[30m',\r\n\tRED: '\\x1b[31m',\r\n\tGREEN: '\\x1b[32m',\r\n\tYELLOW: '\\x1b[33m',\r\n\tBLUE: '\\x1b[34m',\r\n\tMAGENTA: '\\x1b[35m',\r\n\tCYAN: '\\x1b[36m',\r\n\tLIGHT_GREY: '\\x1b[37m',\r\n\tGREY: '\\x1b[90m',\r\n\tLIGHT_RED: '\\x1b[91m',\r\n\tLIGHT_GREEN: '\\x1b[92m',\r\n\tLIGHT_YELLOW: '\\x1b[93m',\r\n\tLIGHT_BLUE: '\\x1b[94m',\r\n\tLIGHT_MAGENTA: '\\x1b[95m',\r\n\tLIGHT_CYAN: '\\x1b[96m',\r\n\tWHITE: '\\x1b[97m',\r\n}\r\n\r\nexport const CliBackground = {\r\n\tBLACK: \"\\x1b[40m\",\r\n\tRED: \"\\x1b[41m\",\r\n\tGREEN: \"\\x1b[42m\",\r\n\tYELLOW: \"\\x1b[43m\",\r\n\tBLUE: \"\\x1b[44m\",\r\n\tMAGENTA: \"\\x1b[45m\",\r\n\tCYAN: \"\\x1b[46m\",\r\n\tWHITE: \"\\x1b[47m\",\r\n\tGREY: \"\\x1b[100m\",\r\n}\r\n\r\nexport enum LOG_LEVEL {\r\n\tERROR = 0,\r\n\tWARN = 1,\r\n\tINFO = 2,\r\n\tLOG = 3,\r\n\tDEBUG = 4,\r\n}\r\n\r\nexport type LoggerEvents = TypedEvents & {\r\n\t'ERROR': (...args: any[]) => any;\r\n\t'WARN': (...args: any[]) => any;\r\n\t'INFO': (...args: any[]) => any;\r\n\t'LOG': (...args: any[]) => any;\r\n\t'DEBUG': (...args: any[]) => any;\r\n};\r\n\r\nexport class Logger extends TypedEmitter<LoggerEvents> {\r\n\tstatic LOG_LEVEL: LOG_LEVEL = LOG_LEVEL.DEBUG;\r\n\r\n\tconstructor(public readonly namespace?: string) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tprivate pad(text: any, length: number, char: string, end = false) {\r\n\t\tconst t = text.toString();\r\n\t\tconst l = length - t.length;\r\n\t\tif(l <= 0) return t;\r\n\t\tconst padding = Array(~~(l / char.length)).fill(char).join('');\r\n\t\treturn !end ? padding + t : t + padding;\r\n\t}\r\n\r\n\tprivate format(...text: string[]): string {\r\n\t\tconst now = new Date();\r\n\t\tconst timestamp = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()} ${this.pad(now.getHours().toString(), 2, '0')}:${this.pad(now.getMinutes().toString(), 2, '0')}:${this.pad(now.getSeconds().toString(), 2, '0')}.${this.pad(now.getMilliseconds().toString(), 3, '0', true)}`;\r\n\t\treturn `${timestamp}${this.namespace ? ` [${this.namespace}]` : ''} ${text.join(' ')}`;\r\n\t}\r\n\r\n\tdebug(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.DEBUG) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.DEBUG, str);\r\n\t\tconsole.debug(CliForeground.LIGHT_GREY + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\tlog(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.LOG) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.LOG, str);\r\n\t\tconsole.log(CliEffects.CLEAR + str);\r\n\t}\r\n\r\n\tinfo(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.INFO) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.INFO, str);\r\n\t\tconsole.info(CliForeground.BLUE + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\twarn(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.WARN) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.WARN, str);\r\n\t\tconsole.warn(CliForeground.YELLOW + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\terror(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.ERROR) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.ERROR, str);\r\n\t\tconsole.error(CliForeground.RED + str + CliEffects.CLEAR);\r\n\t}\r\n}\r\n","/**\n * Convert decimal number to fraction\n *\n * @example\n * ```js\n * dec2Frac(1.25) // Outputs: \"1 1/4\"\n * ```\n *\n * @param {number} num Number to convert\n * @return {string} Fraction with remainder\n */\nexport function dec2Frac(num: number) {\n\tconst gcd = (a: number, b: number): number => {\n\t\tif (b < 0.0000001) return a;\n\t\treturn gcd(b, ~~(a % b));\n\t};\n\n\tconst len = num.toString().length - 2;\n\tlet denominator = Math.pow(10, len);\n\tlet numerator = num * denominator;\n\tconst divisor = gcd(numerator, denominator);\n\tnumerator = ~~(numerator / divisor);\n\tdenominator = ~~(denominator / divisor)\n\tconst remainder = ~~(numerator / denominator);\n\tnumerator -= remainder * denominator;\n\treturn `${remainder ? remainder + ' ' : ''}${~~(numerator)}/${~~(denominator)}`;\n}\n\n/**\n * Convert fraction to decimal number\n *\n * @example\n * ```js\n * fracToDec('1 1/4') // Outputs: 1.25\n * ```\n *\n * @param {string} frac Fraction to convert\n * @return {number} Faction as a decimal\n */\nexport function fracToDec(frac: string) {\n\tlet split = frac.split(' ');\n\tconst whole = split.length == 2 ? Number(split[0]) : 0;\n\tsplit = (<string>split.pop()).split('/');\n\treturn whole + (Number(split[0]) / Number(split[1]));\n}\n","export function countChars(text: string, pattern: RegExp) {\r\n\treturn text.length - text.replaceAll(pattern, '').length;\r\n}\r\n\r\nexport function createHex(length: number) {\r\n\treturn Array(length).fill(null).map(() => Math.round(Math.random() * 0xF).toString(16)).join('');\r\n}\r\n\r\n/**\r\n * String of all letters\r\n *\r\n */\r\nconst LETTER_LIST = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\r\n\r\n/**\r\n * String of all numbers\r\n *\r\n */\r\nconst NUMBER_LIST = '0123456789';\r\n\r\n/**\r\n * String of all symbols\r\n */\r\nconst SYMBOL_LIST = '~`!@#$%^&*()_-+={[}]|\\\\:;\"\\'<,>.?/';\r\n\r\n/**\r\n * String of all letters, numbers & symbols\r\n */\r\nconst CHAR_LIST = LETTER_LIST + NUMBER_LIST + SYMBOL_LIST;\r\n\r\nexport function formatPhoneNumber(number: string) {\r\n\tconst parts = /(\\+?1)?.*?(\\d{3}).*?(\\d{3}).*?(\\d{4})/g.exec(number);\r\n\tif(!parts) throw new Error(`Number cannot be parsed: ${number}`);\r\n\treturn `${parts[1] ?? ''} (${parts[2]}) ${parts[3]}-${parts[4]}`.trim();\r\n}\r\n\r\n/**\r\n * Insert a string into another string at a given position\r\n *\r\n * @example\r\n * ```\r\n * console.log(insertAt('Hello world!', ' glorious', 5);\r\n * // Output: Hello glorious world!\r\n * ```\r\n *\r\n * @param {string} target - Parent string you want to modify\r\n * @param {string} str - Value that will be injected to parent\r\n * @param {number} index - Position to inject string at\r\n * @returns {string} - New string\r\n */\r\nexport function insertAt(target: string, str: string, index: number): String {\r\n\treturn `${target.slice(0, index)}${str}${target.slice(index + 1)}`;\r\n}\r\n\r\nexport function pad(text: any, length: number, char: string, start = true) {\r\n\tconst t = text.toString();\r\n\tconst l = length - t.length;\r\n\tif(l <= 0) return t;\r\n\tconst padding = Array(~~(l / char.length)).fill(char).join('');\r\n\treturn start ? padding + t : t + padding;\r\n}\r\n\r\n/**\r\n * Generate a string of random characters.\r\n *\r\n * @example\r\n * ```ts\r\n * const random = randomString();\r\n * const randomByte = randomString(8, \"01\")\r\n * ```\r\n *\r\n * @param {number} length - length of generated string\r\n * @param {string} pool - character pool to generate string from\r\n * @return {string} generated string\r\n */\r\nexport function randomString(length: number, pool: string = CHAR_LIST): string {\r\n\treturn Array(length).fill(null).map(() => {\r\n\t\tconst n = ~~(Math.random() * pool.length);\r\n\t\treturn pool[n];\r\n\t}).join('');\r\n}\r\n\r\n/**\r\n * Generate a random string with fine control over letters, numbers & symbols\r\n *\r\n * @example\r\n * ```ts\r\n * const randomLetter = randomString(1, true);\r\n * const randomChar = randomString(1, true, true, true);\r\n * ```\r\n *\r\n * @param {number} length - length of generated string\r\n * @param {boolean} letters - Add letters to pool\r\n * @param {boolean} numbers - Add numbers to pool\r\n * @param {boolean} symbols - Add symbols to pool\r\n * @return {string} generated string\r\n */\r\nexport function randomStringBuilder(length: number, letters = false, numbers = false, symbols = false): string {\r\n\tif(!letters && !numbers && !symbols) throw new Error('Must enable at least one: letters, numbers, symbols');\r\n\treturn Array(length).fill(null).map(() => {\r\n\t\tlet c;\r\n\t\tdo {\r\n\t\t\tconst type = ~~(Math.random() * 3);\r\n\t\t\tif(letters && type == 0) {\r\n\t\t\t\tc = LETTER_LIST[~~(Math.random() * LETTER_LIST.length)];\r\n\t\t\t} else if(numbers && type == 1) {\r\n\t\t\t\tc = NUMBER_LIST[~~(Math.random() * NUMBER_LIST.length)];\r\n\t\t\t} else if(symbols && type == 2) {\r\n\t\t\t\tc = SYMBOL_LIST[~~(Math.random() * SYMBOL_LIST.length)];\r\n\t\t\t}\r\n\t\t} while(!c);\r\n\t\treturn c;\r\n\t}).join('');\r\n}\r\n\r\n/**\r\n * Find all substrings that match a given pattern.\r\n *\r\n * Roughly based on `String.prototype.matchAll`.\r\n *\r\n * @param {string} value - String to search.\r\n * @param {RegExp | string} regex - Regular expression to match.\r\n * @return {RegExpExecArray[]} Found matches.\r\n */\r\nexport function matchAll(value: string, regex: RegExp | string): RegExpExecArray[] {\r\n\tif(typeof regex === 'string') {\r\n\t\tregex = new RegExp(regex, 'g');\r\n\t}\r\n\r\n\t// https://stackoverflow.com/a/60290199\r\n\tif(!regex.global) {\r\n\t\tthrow new TypeError('Regular expression must be global.');\r\n\t}\r\n\r\n\tlet ret: RegExpExecArray[] = [];\r\n\tlet match: RegExpExecArray | null;\r\n\twhile((match = regex.exec(value)) !== null) {\r\n\t\tret.push(match);\r\n\t}\r\n\r\n\treturn ret;\r\n}\r\n\r\n/**\r\n * Create MD5 hash using native javascript\r\n * @param d String to hash\r\n * @returns {string} Hashed string\r\n */\r\nexport function md5(d: string) {\r\n\tvar r = M(V(Y(X(d),8*d.length)));return r.toLowerCase()};\r\n\tfunction M(d:any){for(var _,m=\"0123456789ABCDEF\",f=\"\",r=0;r<d.length;r++)_=d.charCodeAt(r),f+=m.charAt(_>>>4&15)+m.charAt(15&_);return f}\r\n\tfunction X(d:any){for(var _=Array(d.length>>2),m=0;m<_.length;m++)_[m]=0;for(m=0;m<8*d.length;m+=8)_[m>>5]|=(255&d.charCodeAt(m/8))<<m%32;return _}\r\n\tfunction V(d:any){for(var _=\"\",m=0;m<32*d.length;m+=8)_+=String.fromCharCode(d[m>>5]>>>m%32&255);return _}\r\n\tfunction Y(d:any,_:any){d[_>>5]|=128<<_%32,d[14+(_+64>>>9<<4)]=_;for(var m=1732584193,f=-271733879,r=-1732584194,i=271733878,n=0;n<d.length;n+=16){var h=m,t=f,g=r,e=i;f=md5_ii(f=md5_ii(f=md5_ii(f=md5_ii(f=md5_hh(f=md5_hh(f=md5_hh(f=md5_hh(f=md5_gg(f=md5_gg(f=md5_gg(f=md5_gg(f=md5_ff(f=md5_ff(f=md5_ff(f=md5_ff(f,r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+0],7,-680876936),f,r,d[n+1],12,-389564586),m,f,d[n+2],17,606105819),i,m,d[n+3],22,-1044525330),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+4],7,-176418897),f,r,d[n+5],12,1200080426),m,f,d[n+6],17,-1473231341),i,m,d[n+7],22,-45705983),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+8],7,1770035416),f,r,d[n+9],12,-1958414417),m,f,d[n+10],17,-42063),i,m,d[n+11],22,-1990404162),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+12],7,1804603682),f,r,d[n+13],12,-40341101),m,f,d[n+14],17,-1502002290),i,m,d[n+15],22,1236535329),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+1],5,-165796510),f,r,d[n+6],9,-1069501632),m,f,d[n+11],14,643717713),i,m,d[n+0],20,-373897302),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+5],5,-701558691),f,r,d[n+10],9,38016083),m,f,d[n+15],14,-660478335),i,m,d[n+4],20,-405537848),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+9],5,568446438),f,r,d[n+14],9,-1019803690),m,f,d[n+3],14,-187363961),i,m,d[n+8],20,1163531501),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+13],5,-1444681467),f,r,d[n+2],9,-51403784),m,f,d[n+7],14,1735328473),i,m,d[n+12],20,-1926607734),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+5],4,-378558),f,r,d[n+8],11,-2022574463),m,f,d[n+11],16,1839030562),i,m,d[n+14],23,-35309556),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+1],4,-1530992060),f,r,d[n+4],11,1272893353),m,f,d[n+7],16,-155497632),i,m,d[n+10],23,-1094730640),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+13],4,681279174),f,r,d[n+0],11,-358537222),m,f,d[n+3],16,-722521979),i,m,d[n+6],23,76029189),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+9],4,-640364487),f,r,d[n+12],11,-421815835),m,f,d[n+15],16,530742520),i,m,d[n+2],23,-995338651),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+0],6,-198630844),f,r,d[n+7],10,1126891415),m,f,d[n+14],15,-1416354905),i,m,d[n+5],21,-57434055),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+12],6,1700485571),f,r,d[n+3],10,-1894986606),m,f,d[n+10],15,-1051523),i,m,d[n+1],21,-2054922799),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+8],6,1873313359),f,r,d[n+15],10,-30611744),m,f,d[n+6],15,-1560198380),i,m,d[n+13],21,1309151649),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+4],6,-145523070),f,r,d[n+11],10,-1120210379),m,f,d[n+2],15,718787259),i,m,d[n+9],21,-343485551),m=safe_add(m,h),f=safe_add(f,t),r=safe_add(r,g),i=safe_add(i,e)}return Array(m,f,r,i)}\r\n\tfunction md5_cmn(d:any,_:any,m:any,f:any,r:any,i:any){return safe_add(bit_rol(safe_add(safe_add(_,d),safe_add(f,i)),r),m)}\r\n\tfunction md5_ff(d:any,_:any,m:any,f:any,r:any,i:any,n:any){return md5_cmn(_&m|~_&f,d,_,r,i,n)}\r\n\tfunction md5_gg(d:any,_:any,m:any,f:any,r:any,i:any,n:any){return md5_cmn(_&f|m&~f,d,_,r,i,n)}\r\n\tfunction md5_hh(d:any,_:any,m:any,f:any,r:any,i:any,n:any){return md5_cmn(_^m^f,d,_,r,i,n)}\r\n\tfunction md5_ii(d:any,_:any,m:any,f:any,r:any,i:any,n:any){return md5_cmn(m^(_|~f),d,_,r,i,n)}\r\n\tfunction safe_add(d:any,_:any){var m=(65535&d)+(65535&_);return(d>>16)+(_>>16)+(m>>16)<<16|65535&m}\r\n\tfunction bit_rol(d:any,_:any){return d<<_|d>>>32-_\r\n}\r\n\r\n/**\r\n * Check if email is valid\r\n *\r\n * @param {string} email - Target\r\n * @returns {boolean} - Follows format\r\n */\r\nexport function validateEmail(email: string) {\r\n\treturn /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/.test(email);\r\n}\r\n","import {md5} from './string';\r\n\r\n/**\r\n * Convert data into a form encoded format.\r\n *\r\n * @param {any} data - data to convert\r\n * @returns {string} - Ecodeded form data\r\n */\r\nexport function formEncode(data: any): string {\r\n\treturn Object.entries(data).map(([key, value]) =>\r\n\t\tencodeURIComponent(key) + '=' + encodeURIComponent(<any>value)\r\n\t).join('&');\r\n}\r\n\r\n/**\r\n * Get profile image from Gravatar\r\n *\r\n * @param {string} email Account email address\r\n * @param {string} def Default image, can be a link or '404', see: https://docs.gravatar.com/general/images/\r\n * @returns {string} Gravatar URL\r\n */\r\nexport function gravatar(email: string, def='mp') {\r\n\tif(!email) return '';\r\n\treturn `https://www.gravatar.com/avatar/${md5(email)}?d=${def}`;\r\n}\r\n\r\n/** Parts of a URL */\r\nexport type ParsedUrl = {\r\n\tprotocol?: string,\r\n\tsubdomain?: string,\r\n\tdomain: string,\r\n\thost: string,\r\n\tport?: number,\r\n\tpath?: string,\r\n\tquery?: {[name: string]: string}\r\n\tfragment?: string\r\n}\r\n\r\n/**\r\n *\r\n * @param {string} url\r\n * @returns {RegExpExecArray}\r\n */\r\nexport function urlParser(url: string): ParsedUrl {\r\n\tconst processed = new RegExp(\r\n\t\t'(?:(?<protocol>[\\\\w\\\\d]+)\\\\:\\\\/\\\\/)?(?:(?<user>.+)\\\\@)?(?<host>(?<domain>[^:\\\\/\\\\?#@\\\\n]+)(?:\\\\:(?<port>\\\\d*))?)(?<path>\\\\/.*?)?(?:\\\\?(?<query>.*?))?(?:#(?<fragment>.*?))?$',\r\n\t\t'gm').exec(url);\r\n\tconst groups: ParsedUrl = <any>processed?.groups ?? {};\r\n\tconst domains = groups.domain.split('.');\r\n\tif(groups['port'] != null) groups.port = Number(groups.port);\r\n\tif(domains.length > 2) {\r\n\t\tgroups.domain = domains.splice(-2, 2).join('.');\r\n\t\tgroups.subdomain = domains.join('.');\r\n\t}\r\n\tif(groups.query) {\r\n\t\tconst split = (<any>groups.query).split('&'), query: any = {};\r\n\t\tsplit.forEach((q: any) => {\r\n\t\t\tconst [key, val] = q.split('=');\r\n\t\t\tquery[key] = val;\r\n\t\t});\r\n\t\tgroups.query = query;\r\n\t}\r\n\treturn groups;\r\n}\r\n","/**\r\n * Calculate the number of milliseconds until date/time\r\n *\r\n * @param {Date | number} date - Target\r\n * @returns {number} - Number of milliseconds until target\r\n */\r\nexport function timeUntil(date: Date | number): number {\r\n\treturn (date instanceof Date ? date.getTime() : date) - (new Date()).getTime();\r\n}\r\n\r\n/**\r\n * Use in conjunction with `await` to pause an async script\r\n *\r\n * @example\r\n * ```ts\r\n * async () => {\r\n * ...\r\n * await sleep(1000) // Pause for 1 second\r\n *\t ...\r\n * }\r\n * ```\r\n *\r\n * @param {number} ms - Time to pause for in milliseconds\r\n * @returns {Promise<unknown>} - Resolves promise when it's time to resume\r\n */\r\nexport function sleep(ms: number) {\r\n\treturn new Promise(res => setTimeout(res, ms));\r\n}\r\n\r\nexport function formatDate(date: Date | number | string) {\r\n\tconst d = date instanceof Date ? date : new Date(date);\r\n\treturn new Intl.DateTimeFormat(\"en-us\", {\r\n\t\tweekday: \"long\",\r\n\t\tmonth: \"short\",\r\n\t\tday: \"numeric\",\r\n\t\thour: \"numeric\",\r\n\t\tminute: \"numeric\",\r\n\t\thour12: true\r\n\t}).format(d);\r\n}\r\n"],"names":["clean","obj","undefinedOnly","o","key","value","deepCopy","deepMerge","target","sources","s","dotNotation","prop","set","arr","flattenObj","parent","result","propName","includes","values","allowMissing","e","type","isEqual","a","b","ta","tb","mixin","constructors","c","name","sanitizedJSON","space","cache","addUnique","array","el","arrayDiff","makeUnique","v1","v2","caseInsensitiveSort","aVal","bVal","flattenArr","sortByProp","reverse","findByProp","v","i","n","makeArray","ASet","elements","index","acc","PromiseProgress","executor","resolve","reject","reason","progress","__publicField","p","l","promise","res","rej","args","newPromise","callback","resp","download","href","downloadBlob","blob","url","fileBrowser","options","input","uploadWithProgress","prog","xhr","formData","f","event","err","TypedEmitter","listener","_a","unsubscribe","CustomError","message","code","newErr","BadRequestError","UnauthorizedError","ForbiddenError","NotFoundError","InternalServerError","_Http","defaults","fn","opts","match","arg1","q","k","headers","contentLength","total","loaded","reader","stream","controller","push","error","data","content","_b","Http","CliEffects","CliForeground","CliBackground","LOG_LEVEL","_Logger","namespace","text","length","char","end","t","padding","now","str","Logger","dec2Frac","num","gcd","len","denominator","numerator","divisor","remainder","fracToDec","frac","split","whole","countChars","pattern","createHex","LETTER_LIST","NUMBER_LIST","SYMBOL_LIST","CHAR_LIST","formatPhoneNumber","number","parts","insertAt","pad","start","randomString","pool","randomStringBuilder","letters","numbers","symbols","matchAll","regex","ret","md5","d","r","M","V","Y","X","_","m","h","g","md5_ii","md5_hh","md5_gg","md5_ff","safe_add","md5_cmn","bit_rol","validateEmail","email","formEncode","gravatar","def","urlParser","processed","groups","domains","query","val","timeUntil","date","sleep","ms","formatDate"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -71,10 +71,10 @@ function dt(n, e) {
|
|
|
71
71
|
return o;
|
|
72
72
|
}, e));
|
|
73
73
|
}
|
|
74
|
-
function
|
|
74
|
+
function pt(n, e) {
|
|
75
75
|
return n.indexOf(e) === -1 && n.push(e), n;
|
|
76
76
|
}
|
|
77
|
-
function
|
|
77
|
+
function yt(n, e) {
|
|
78
78
|
return V([
|
|
79
79
|
...n.filter((t) => !e.includes((r) => R(t, r))),
|
|
80
80
|
...e.filter((t) => !n.includes((r) => R(t, r)))
|
|
@@ -186,11 +186,11 @@ function Z(n, e) {
|
|
|
186
186
|
const t = document.createElement("a");
|
|
187
187
|
t.href = n, t.download = e, document.body.appendChild(t), t.click(), document.body.removeChild(t);
|
|
188
188
|
}
|
|
189
|
-
function
|
|
189
|
+
function xt(n, e) {
|
|
190
190
|
const t = URL.createObjectURL(n);
|
|
191
191
|
Z(t, e), URL.revokeObjectURL(t);
|
|
192
192
|
}
|
|
193
|
-
function
|
|
193
|
+
function bt(n = {}) {
|
|
194
194
|
return new Promise((e) => {
|
|
195
195
|
const t = document.createElement("input");
|
|
196
196
|
t.type = "file", t.accept = n.accept || "*", t.style.display = "none", t.multiple = !!n.multiple, t.onblur = t.onchange = async () => {
|
|
@@ -201,7 +201,7 @@ function xt(n = {}) {
|
|
|
201
201
|
function At(n) {
|
|
202
202
|
return new w((e, t, r) => {
|
|
203
203
|
const o = new XMLHttpRequest(), s = new FormData();
|
|
204
|
-
n.files.forEach((i) => s.append("file", i)), o.withCredentials = !!n.withCredentials, o.upload.addEventListener("progress", (i) => i.lengthComputable ? r(i.loaded / i.total) : null), o.upload.addEventListener("load", (i) => e(i)), o.upload.addEventListener("error", (i) => t(i)), o.open("POST", n.url), Object.entries(n.headers || {}).forEach(([i,
|
|
204
|
+
n.files.forEach((i) => s.append("file", i)), o.withCredentials = !!n.withCredentials, o.upload.addEventListener("progress", (i) => i.lengthComputable ? r(i.loaded / i.total) : null), o.upload.addEventListener("load", (i) => e(i)), o.upload.addEventListener("error", (i) => t(i)), o.open("POST", n.url), Object.entries(n.headers || {}).forEach(([i, p]) => o.setRequestHeader(i, p)), o.send(s);
|
|
205
205
|
});
|
|
206
206
|
}
|
|
207
207
|
class H {
|
|
@@ -246,7 +246,7 @@ class H {
|
|
|
246
246
|
}
|
|
247
247
|
}
|
|
248
248
|
a(H, "listeners", {});
|
|
249
|
-
class
|
|
249
|
+
class x extends Error {
|
|
250
250
|
constructor(t, r) {
|
|
251
251
|
super(t);
|
|
252
252
|
a(this, "_code");
|
|
@@ -273,8 +273,8 @@ class b extends Error {
|
|
|
273
273
|
return this.message || super.toString();
|
|
274
274
|
}
|
|
275
275
|
}
|
|
276
|
-
a(
|
|
277
|
-
class X extends
|
|
276
|
+
a(x, "code", 500);
|
|
277
|
+
class X extends x {
|
|
278
278
|
constructor(e = "Bad Request") {
|
|
279
279
|
super(e);
|
|
280
280
|
}
|
|
@@ -283,7 +283,7 @@ class X extends b {
|
|
|
283
283
|
}
|
|
284
284
|
}
|
|
285
285
|
a(X, "code", 400);
|
|
286
|
-
class Q extends
|
|
286
|
+
class Q extends x {
|
|
287
287
|
constructor(e = "Unauthorized") {
|
|
288
288
|
super(e);
|
|
289
289
|
}
|
|
@@ -292,7 +292,7 @@ class Q extends b {
|
|
|
292
292
|
}
|
|
293
293
|
}
|
|
294
294
|
a(Q, "code", 401);
|
|
295
|
-
class _ extends
|
|
295
|
+
class _ extends x {
|
|
296
296
|
constructor(e = "Forbidden") {
|
|
297
297
|
super(e);
|
|
298
298
|
}
|
|
@@ -301,7 +301,7 @@ class _ extends b {
|
|
|
301
301
|
}
|
|
302
302
|
}
|
|
303
303
|
a(_, "code", 403);
|
|
304
|
-
class tt extends
|
|
304
|
+
class tt extends x {
|
|
305
305
|
constructor(e = "Not Found") {
|
|
306
306
|
super(e);
|
|
307
307
|
}
|
|
@@ -310,7 +310,7 @@ class tt extends b {
|
|
|
310
310
|
}
|
|
311
311
|
}
|
|
312
312
|
a(tt, "code", 404);
|
|
313
|
-
class et extends
|
|
313
|
+
class et extends x {
|
|
314
314
|
constructor(e = "Internal Server Error") {
|
|
315
315
|
super(e);
|
|
316
316
|
}
|
|
@@ -353,7 +353,7 @@ const g = class g {
|
|
|
353
353
|
...this.headers,
|
|
354
354
|
...e.headers
|
|
355
355
|
});
|
|
356
|
-
return typeof e.body == "object" && e.body != null && r["Content-Type"] == "application/json" && (e.body = JSON.stringify(e.body)), new w((s, i,
|
|
356
|
+
return typeof e.body == "object" && e.body != null && r["Content-Type"] == "application/json" && (e.body = JSON.stringify(e.body)), new w((s, i, p) => {
|
|
357
357
|
fetch(t, {
|
|
358
358
|
headers: r,
|
|
359
359
|
method: e.method || (e.body ? "POST" : "GET"),
|
|
@@ -367,16 +367,16 @@ const g = class g {
|
|
|
367
367
|
const T = (G = c.body) == null ? void 0 : G.getReader(), Y = new ReadableStream({
|
|
368
368
|
start(u) {
|
|
369
369
|
function O() {
|
|
370
|
-
T == null || T.read().then((
|
|
371
|
-
if (
|
|
370
|
+
T == null || T.read().then((b) => {
|
|
371
|
+
if (b.done)
|
|
372
372
|
return u.close();
|
|
373
|
-
k +=
|
|
374
|
-
}).catch((
|
|
373
|
+
k += b.value.byteLength, p(k / I), u.enqueue(b.value), O();
|
|
374
|
+
}).catch((b) => u.error(b));
|
|
375
375
|
}
|
|
376
376
|
O();
|
|
377
377
|
}
|
|
378
378
|
}), m = new Response(Y);
|
|
379
|
-
if (c.
|
|
379
|
+
if (c.blob = m.blob, c.formData = m.formData, c.json = m.json, c.text = m.text, e.decode !== !1) {
|
|
380
380
|
const u = (U = c.headers.get("Content-Type")) == null ? void 0 : U.toLowerCase();
|
|
381
381
|
u != null && u.includes("application") ? c.data = await m.blob() : u != null && u.includes("form") ? c.data = await m.formData() : u != null && u.includes("json") ? c.data = await m.json() : u != null && u.includes("text") && (c.data = await m.text());
|
|
382
382
|
}
|
|
@@ -424,7 +424,7 @@ const A = {
|
|
|
424
424
|
GREY: "\x1B[100m"
|
|
425
425
|
};
|
|
426
426
|
var nt = /* @__PURE__ */ ((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))(nt || {});
|
|
427
|
-
const
|
|
427
|
+
const y = class y extends H {
|
|
428
428
|
constructor(e) {
|
|
429
429
|
super(), this.namespace = e;
|
|
430
430
|
}
|
|
@@ -432,48 +432,48 @@ const p = class p extends H {
|
|
|
432
432
|
const s = e.toString(), i = t - s.length;
|
|
433
433
|
if (i <= 0)
|
|
434
434
|
return s;
|
|
435
|
-
const
|
|
436
|
-
return o ? s +
|
|
435
|
+
const p = Array(~~(i / r.length)).fill(r).join("");
|
|
436
|
+
return o ? s + p : p + s;
|
|
437
437
|
}
|
|
438
438
|
format(...e) {
|
|
439
439
|
const t = /* @__PURE__ */ new Date();
|
|
440
440
|
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(" ")}`;
|
|
441
441
|
}
|
|
442
442
|
debug(...e) {
|
|
443
|
-
if (
|
|
443
|
+
if (y.LOG_LEVEL < 4)
|
|
444
444
|
return;
|
|
445
445
|
const t = this.format(...e);
|
|
446
|
-
|
|
446
|
+
y.emit(4, t), console.debug(C.LIGHT_GREY + t + A.CLEAR);
|
|
447
447
|
}
|
|
448
448
|
log(...e) {
|
|
449
|
-
if (
|
|
449
|
+
if (y.LOG_LEVEL < 3)
|
|
450
450
|
return;
|
|
451
451
|
const t = this.format(...e);
|
|
452
|
-
|
|
452
|
+
y.emit(3, t), console.log(A.CLEAR + t);
|
|
453
453
|
}
|
|
454
454
|
info(...e) {
|
|
455
|
-
if (
|
|
455
|
+
if (y.LOG_LEVEL < 2)
|
|
456
456
|
return;
|
|
457
457
|
const t = this.format(...e);
|
|
458
|
-
|
|
458
|
+
y.emit(2, t), console.info(C.BLUE + t + A.CLEAR);
|
|
459
459
|
}
|
|
460
460
|
warn(...e) {
|
|
461
|
-
if (
|
|
461
|
+
if (y.LOG_LEVEL < 1)
|
|
462
462
|
return;
|
|
463
463
|
const t = this.format(...e);
|
|
464
|
-
|
|
464
|
+
y.emit(1, t), console.warn(C.YELLOW + t + A.CLEAR);
|
|
465
465
|
}
|
|
466
466
|
error(...e) {
|
|
467
|
-
if (
|
|
467
|
+
if (y.LOG_LEVEL < 0)
|
|
468
468
|
return;
|
|
469
469
|
const t = this.format(...e);
|
|
470
|
-
|
|
470
|
+
y.emit(0, t), console.error(C.RED + t + A.CLEAR);
|
|
471
471
|
}
|
|
472
472
|
};
|
|
473
|
-
a(
|
|
474
|
-
let P =
|
|
473
|
+
a(y, "LOG_LEVEL", 4);
|
|
474
|
+
let P = y;
|
|
475
475
|
function Rt(n) {
|
|
476
|
-
const e = (
|
|
476
|
+
const e = (p, c) => c < 1e-7 ? p : e(c, ~~(p % c)), t = n.toString().length - 2;
|
|
477
477
|
let r = Math.pow(10, t), o = n * r;
|
|
478
478
|
const s = e(o, r);
|
|
479
479
|
o = ~~(o / s), r = ~~(r / s);
|
|
@@ -558,8 +558,8 @@ function ct(n) {
|
|
|
558
558
|
function ut(n, e) {
|
|
559
559
|
n[e >> 5] |= 128 << e % 32, n[14 + (e + 64 >>> 9 << 4)] = e;
|
|
560
560
|
for (var t = 1732584193, r = -271733879, o = -1732584194, s = 271733878, i = 0; i < n.length; i += 16) {
|
|
561
|
-
var
|
|
562
|
-
r = d(r = d(r = d(r = d(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, o = l(o, s = l(s, t = l(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 = l(o, s = l(s, t = l(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 = l(o, s = l(s, t = l(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 = l(o, s = l(s, t = l(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 = h(o, s = h(s, t = h(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 = h(o, s = h(s, t = h(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 = h(o, s = h(s, t = h(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 = h(o, s = h(s, t = h(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 = f(o, s = f(s, t = f(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 = f(o, s = f(s, t = f(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 = f(o, s = f(s, t = f(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 = f(o, s = f(s, t = f(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 = d(o, s = d(s, t = d(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 = d(o, s = d(s, t = d(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 = d(o, s = d(s, t = d(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 = d(o, s = d(s, t = d(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 = E(t,
|
|
561
|
+
var p = t, c = r, L = o, I = s;
|
|
562
|
+
r = d(r = d(r = d(r = d(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, o = l(o, s = l(s, t = l(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 = l(o, s = l(s, t = l(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 = l(o, s = l(s, t = l(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 = l(o, s = l(s, t = l(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 = h(o, s = h(s, t = h(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 = h(o, s = h(s, t = h(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 = h(o, s = h(s, t = h(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 = h(o, s = h(s, t = h(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 = f(o, s = f(s, t = f(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 = f(o, s = f(s, t = f(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 = f(o, s = f(s, t = f(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 = f(o, s = f(s, t = f(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 = d(o, s = d(s, t = d(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 = d(o, s = d(s, t = d(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 = d(o, s = d(s, t = d(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 = d(o, s = d(s, t = d(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 = E(t, p), r = E(r, c), o = E(o, L), s = E(s, I);
|
|
563
563
|
}
|
|
564
564
|
return Array(t, r, o, s);
|
|
565
565
|
}
|
|
@@ -604,8 +604,8 @@ function Ut(n) {
|
|
|
604
604
|
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) {
|
|
605
605
|
const o = t.query.split("&"), s = {};
|
|
606
606
|
o.forEach((i) => {
|
|
607
|
-
const [
|
|
608
|
-
s[
|
|
607
|
+
const [p, c] = i.split("=");
|
|
608
|
+
s[p] = c;
|
|
609
609
|
}), t.query = s;
|
|
610
610
|
}
|
|
611
611
|
return t;
|
|
@@ -633,7 +633,7 @@ export {
|
|
|
633
633
|
Bt as CliBackground,
|
|
634
634
|
A as CliEffects,
|
|
635
635
|
C as CliForeground,
|
|
636
|
-
|
|
636
|
+
x as CustomError,
|
|
637
637
|
_ as ForbiddenError,
|
|
638
638
|
q as Http,
|
|
639
639
|
et as InternalServerError,
|
|
@@ -643,8 +643,8 @@ export {
|
|
|
643
643
|
w as PromiseProgress,
|
|
644
644
|
H as TypedEmitter,
|
|
645
645
|
Q as UnauthorizedError,
|
|
646
|
-
|
|
647
|
-
|
|
646
|
+
pt as addUnique,
|
|
647
|
+
yt as arrayDiff,
|
|
648
648
|
gt as caseInsensitiveSort,
|
|
649
649
|
W as clean,
|
|
650
650
|
Ot as countChars,
|
|
@@ -654,8 +654,8 @@ export {
|
|
|
654
654
|
z as deepMerge,
|
|
655
655
|
S as dotNotation,
|
|
656
656
|
Z as download,
|
|
657
|
-
|
|
658
|
-
|
|
657
|
+
xt as downloadBlob,
|
|
658
|
+
bt as fileBrowser,
|
|
659
659
|
Et as findByProp,
|
|
660
660
|
K as flattenArr,
|
|
661
661
|
J as flattenObj,
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/objects.ts","../src/array.ts","../src/aset.ts","../src/promise-progress.ts","../src/files.ts","../src/emitter.ts","../src/errors.ts","../src/http.ts","../src/logger.ts","../src/math.ts","../src/string.ts","../src/misc.ts","../src/time.ts"],"sourcesContent":["/**\r\n * Removes any null values from an object in-place\r\n *\r\n * @example\r\n * ```ts\r\n * let test = {a: 0, b: false, c: null, d: 'abc'}\r\n * console.log(clean(test)); // Output: {a: 0, b: false, d: 'abc'}\r\n * ```\r\n *\r\n * @param {T} obj Object reference that will be cleaned\r\n * @param undefinedOnly Ignore null values\r\n * @returns {Partial<T>} Cleaned object\r\n */\r\nexport function clean<T>(obj: T, undefinedOnly = false): Partial<T> {\r\n\tif(obj == null) throw new Error(\"Cannot clean a NULL value\");\r\n\tif(Array.isArray(obj)) {\r\n\t\tobj = <any>obj.filter(o => o != null);\r\n\t} else {\r\n\t\tObject.entries(obj).forEach(([key, value]) => {\r\n\t\t\tif((undefinedOnly && value === undefined) || (!undefinedOnly && value == null)) delete (<any>obj)[key];\r\n\t\t});\r\n\t}\r\n\treturn <any>obj;\r\n}\r\n\r\n/**\r\n * Create a deep copy of an object (vs. a shallow copy of references)\r\n *\r\n * Should be replaced by `structuredClone` once released.\r\n *\r\n * @param {T} value Object to copy\r\n * @returns {T} Type\r\n */\r\nexport function deepCopy<T>(value: T): T {\r\n\treturn JSON.parse(JSON.stringify(value));\r\n}\r\n\r\n/**\r\n * Merge any number of objects into the target\r\n *\r\n * @param target Destination of all properties\r\n * @param sources Objects that will copied into target\r\n * @return {any} The des\r\n */\r\nexport function deepMerge<T>(target: any, ...sources: any[]): T {\r\n\tsources.forEach(s => {\r\n\t\tfor(const key in s) {\r\n\t\t\tif(s[key] && typeof s[key] == 'object' && !Array.isArray(s[key])) {\r\n\t\t\t\tif(!target[key]) target[key] = {};\r\n\t\t\t\tdeepMerge(target[key], s[key]);\r\n\t\t\t} else {\r\n\t\t\t\ttarget[key] = s[key];\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\treturn target;\r\n}\r\n\r\n/**\r\n * Get/set a property of an object using dot notation\r\n *\r\n * @example\r\n * ```ts\r\n * // Get a value\r\n * const name = dotNotation<string>(person, 'firstName');\r\n * const familyCarMake = dotNotation(family, 'cars[0].make');\r\n * // Set a value\r\n * dotNotation(family, 'cars[0].make', 'toyota');\r\n * ```\r\n *\r\n * @type T Return type\r\n * @param {Object} obj source object to search\r\n * @param {string} prop property name (Dot notation & indexing allowed)\r\n * @param {any} set Set object property to value, omit to fetch value instead\r\n * @return {T} property value\r\n */\r\nexport function dotNotation<T>(obj: any, prop: string, set: T): T;\r\nexport function dotNotation<T>(obj: any, prop: string): T | undefined;\r\nexport function dotNotation<T>(obj: any, prop: string, set?: T): T | undefined {\r\n\tif(obj == null || !prop) return undefined;\r\n\t// Split property string by '.' or [index]\r\n\treturn <T>prop.split(/[.[\\]]/g).filter(prop => prop.length).reduce((obj, prop, i, arr) => {\r\n\t\tif(prop[0] == '\"' || prop[0] == \"'\") prop = prop.slice(1, -1); // Take quotes out\r\n\t\tif(!obj?.hasOwnProperty(prop)) {\r\n\t\t\tif(set == undefined) return undefined;\r\n\t\t\tobj[prop] = {};\r\n\t\t}\r\n\t\tif(set !== undefined && i == arr.length - 1)\r\n\t\t\treturn obj[prop] = set;\r\n\t\treturn obj[prop];\r\n\t}, obj);\r\n}\r\n\r\n/**\r\n * Recursively flatten a nested object, while maintaining key structure.\r\n *\r\n * @example\r\n * ```ts\r\n * const car = {honda: {model: \"Civic\"}};\r\n * console.log(flattenObj(car)); //Output {honda.model: \"Civic\"}\r\n * ```\r\n *\r\n * @param obj - Object to flatten\r\n * @param parent - Recursively check if key is a parent key or not\r\n * @param result - Result\r\n * @returns {object} - Flattened object\r\n */\r\nexport function flattenObj(obj: any, parent?: any, result: any = {}) {\r\n\tif(typeof obj === \"object\" && !Array.isArray(obj)) {\r\n\t\tfor(const key of Object.keys(obj)) {\r\n\t\t\tconst propName = parent ? parent + '.' + key : key;\r\n\t\t\tif(typeof obj[key] === 'object') {\r\n\t\t\t\tflattenObj(obj[key], propName, result);\r\n\t\t\t} else {\r\n\t\t\t\tresult[propName] = obj[key];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n}\r\n\r\n/**\r\n * Check that an object has the following values\r\n *\r\n * @example\r\n * ```ts\r\n * const test = {a: 2, b: 2};\r\n * includes(test, {a: 1}); // true\r\n * includes(test, {b: 1, c: 3}); // false\r\n * ```\r\n *\r\n * @param target Object to search\r\n * @param values Criteria to check against\r\n * @param allowMissing Only check the keys that are available on the target\r\n * @returns {boolean} Does target include all the values\r\n */\r\nexport function includes(target: any, values: any, allowMissing = false): boolean {\r\n\tif(target == undefined) return allowMissing;\r\n\tif(Array.isArray(values)) return values.findIndex((e: any, i: number) => !includes(target[i], values[i], allowMissing)) == -1;\r\n\tconst type = typeof values;\r\n\tif(type != typeof target) return false;\r\n\tif(type == 'object') {\r\n\t\treturn Object.keys(values).find(key => !includes(target[key], values[key], allowMissing)) == null;\r\n\t}\r\n\tif(type == 'function') return target.toString() == values.toString();\r\n\treturn target == values;\r\n}\r\n\r\n/**\r\n * Deep check if two objects are equal\r\n *\r\n * @param {any} a - first item to compare\r\n * @param {any} b - second item to compare\r\n * @returns {boolean} True if they match\r\n */\r\nexport function isEqual(a: any, b: any): boolean {\r\n\tconst ta = typeof a, tb = typeof b;\r\n\tif((ta != 'object' || a == null) || (tb != 'object' || b == null))\r\n\t\treturn ta == 'function' && tb == 'function' ? a.toString() == b.toString() : a === b;\r\n\tconst keys = Object.keys(a);\r\n\tif(keys.length != Object.keys(b).length) return false;\r\n\treturn Object.keys(a).every(key => isEqual(a[key], b[key]));\r\n}\r\n\r\nexport function mixin(target: any, constructors: any[]) {\r\n\tconstructors.forEach(c => {\r\n\t\tObject.getOwnPropertyNames(c.prototype).forEach((name) => {\r\n\t\t\tObject.defineProperty(\r\n\t\t\t\ttarget.prototype,\r\n\t\t\t\tname,\r\n\t\t\t\tObject.getOwnPropertyDescriptor(c.prototype, name) ||\r\n\t\t\t\tObject.create(null)\r\n\t\t\t);\r\n\t\t});\r\n\t});\r\n}\r\n\r\nexport function sanitizedJSON(obj: any, space?: number) {\r\n\tlet cache: any[] = [];\r\n\treturn JSON.parse(JSON.stringify(obj, (key, value) => {\r\n\t\tif (typeof value === 'object' && value !== null) {\r\n\t\t\tif (cache.includes(value)) return;\r\n\t\t\tcache.push(value);\r\n\t\t}\r\n\t\treturn value;\r\n\t}, space));\r\n}\r\n","import {dotNotation, isEqual} from './objects';\n\nexport function addUnique<T>(array: T[], el: T): T[] {\n\tif(array.indexOf(el) === -1) array.push(el);\n\treturn array;\n}\n\nexport function arrayDiff(a: any[], b: any[]): any[] {\n\treturn makeUnique([\n\t\t...a.filter(v1 => !b.includes((v2: any) => isEqual(v1, v2))),\n\t\t...b.filter(v1 => !a.includes((v2: any) => isEqual(v1, v2))),\n\t]);\n}\n\n/**\n * Provides a shorthand for sorting arrays of complex objects by a string property\n *\n * @example\n * ```ts\n * let arr = [{a: 'Apple', b: 123}, {a: 'Carrot', b: 789}, {a: 'banana', b: 456}];\n * arr.sort(caseInsensitiveSort('a'));\n * ```\n *\n * @param {string} prop - Name of property to use, supports dot notation\n * @returns {(a, b) => (number)} - Function to handle sort (Meant to be passed to Array.prototype.sort or used in sortFn)\n */\nexport function caseInsensitiveSort(prop: string) {\n\treturn function (a: any, b: any) {\n\t\tconst aVal = dotNotation<string>(a, prop);\n\t\tconst bVal = dotNotation<string>(b, prop);\n\t\tif(typeof aVal !== 'string' || typeof bVal !== 'string') return 1;\n\t\treturn aVal.toLowerCase().localeCompare(bVal.toLowerCase());\n\t};\n}\n\n/**\n * Recursively flatten nested arrays\n *\n * @example\n * ```ts\n * const arr = [\n * {label: null, url: '/'},\n * {label: 'Model Admin', url: '/model-admin'},\n * [\n * {label: 'Elements', url: '/model-admin/elements'},\n * {label: 'Example', url: null}\n * ]\n * ];\n *\n * console.log(flattenArr(arr));\n * // Output:\n * [\n * {label: null, url: '/'},\n * {label: 'Model Admin', url: '/model-admin'},\n * {label: 'Elements', url: '/model-admin/elements'},\n * {label: 'Example', url: null}\n * ]\n * ```\n *\n * @param {any[]} arr - n-dimensional array\n * @param {any[]} result - Internal use only -- Keeps track of recursion\n * @returns {any[]} - Flattened array\n */\nexport function flattenArr(arr: any[], result: any[] = []): any[] {\n\tarr.forEach(el => Array.isArray(el) ? flattenArr(el, result) : result.push(el));\n\treturn result;\n}\n\n/**\n * Provides a shorthand for sorting arrays of complex objects\n *\n * @example\n * ```ts\n * let arr = [{a: {b: 2}}, {a: {b: 3}}, {a: {b: 1}}];\n * arr.sort(sortByProp('a.b'));\n * ```\n *\n * @param {string} prop - Name of property to use, supports dot notation\n * @param {boolean} reverse - Reverse the order of the sort\n * @returns {(a, b) => (number)} - Function to handle sort (Meant to be passed to Array.prototype.sort)\n */\nexport function sortByProp(prop: string, reverse = false) {\n\treturn function (a: any, b: any) {\n\t\tconst aVal = dotNotation<any>(a, prop);\n\t\tconst bVal = dotNotation<any>(b, prop);\n\t\tif(typeof aVal == 'number' && typeof bVal == 'number')\n\t\t\treturn (reverse ? -1 : 1) * (aVal - bVal);\n\t\tif(aVal > bVal) return reverse ? -1 : 1;\n\t\tif(aVal < bVal) return reverse ? 1 : -1;\n\t\treturn 0;\n\t};\n}\n\nexport function findByProp(prop: string, value: any) {\n\treturn (v: any) => isEqual(v[prop], value);\n}\n\nexport function makeUnique(arr: any[]) {\n\tfor(let i = arr.length - 1; i >= 0; i--) {\n\t\tif(arr.slice(0, i).find(n => isEqual(n, arr[i]))) arr.splice(i, 1);\n\t}\n\treturn arr;\n}\n\n/**\n * Make sure value is an array, if it isn't wrap it in one.\n * @param {T[] | T} value Value that should be an array\n * @returns {T[]} Value in an array\n */\nexport function makeArray<T>(value: T | T[]): T[] {\n\treturn Array.isArray(value) ? value : [value];\n}\n","export class ASet<T> extends Array {\n\tget size() {\n\t\treturn this.length;\n\t}\n\n\tconstructor(elements: T[] = []) {\n\t\tsuper();\n\t\tif(!!elements?.['forEach'])\n\t\t\telements.forEach(el => this.add(el));\n\t}\n\n\tadd(el: T) {\n\t\tif(!this.has(el)) this.push(el);\n\t}\n\n\tdelete(el: T) {\n\t\tconst index = this.indexOf(el);\n\t\tif(index != -1) this.slice(index, 1);\n\t}\n\n\tdifference(set: ASet<T>) {\n\t\treturn new ASet<T>(this.reduce((acc, el) => {\n\t\t\tif(!set.has(el)) acc.push(el);\n\t\t\treturn acc;\n\t\t}, []));\n\t}\n\n\thas(el: T) {\n\t\treturn this.indexOf(el) != -1;\n\t}\n\n\tintersection(set: ASet<T>) {\n\t\treturn new ASet<T>(this.reduce((acc, el) => {\n\t\t\tif(set.has(el)) acc.push(el);\n\t\t\treturn acc;\n\t\t}, []));\n\t}\n\n\tisDisjointFrom(set: ASet<T>) {\n\t\treturn this.intersection(set).size == 0;\n\t}\n\n\tisSubsetOf(set: ASet<T>) {\n\t\treturn this.findIndex(el => !set.has(el)) == -1;\n\t}\n\n\tisSuperset(set: ASet<T>) {\n\t\treturn set.findIndex(el => !this.has(el)) == -1;\n\t}\n\n\tsymmetricDifference(set: ASet<T>) {\n\t\treturn new ASet([...this.difference(set), ...set.difference(this)]);\n\t}\n\n\tunion(set: ASet<T> | Array<T>) {\n\t\treturn new ASet([...this, ...set]);\n\t}\n}\n","export type ProgressCallback = (progress: number) => any;\n\nexport class PromiseProgress<T> extends Promise<T> {\n\tprivate listeners: ProgressCallback[] = [];\n\n\tprivate _progress = 0;\n\tget progress() { return this._progress; }\n\tset progress(p: number) {\n\t\tif(p == this._progress) return;\n\t\tthis._progress = p;\n\t\tthis.listeners.forEach(l => l(p));\n\t}\n\n\tconstructor(executor: (resolve: (value: T) => any, reject: (reason: any) => void, progress: (progress: number) => any) => void) {\n\t\tsuper((resolve, reject) => executor(\n\t\t\t(value: T) => resolve(value),\n\t\t\t(reason: any) => reject(reason),\n\t\t\t(progress: number) => this.progress = progress,\n\t\t));\n\t}\n\n\tstatic from<T>(promise: Promise<T>): PromiseProgress<T> {\n\t\tif(promise instanceof PromiseProgress) return promise;\n\t\treturn new PromiseProgress<T>((res, rej) => promise\n\t\t\t.then((...args) => res(...args))\n\t\t\t.catch((...args) => rej(...args)));\n\t}\n\n\tprivate from(promise: Promise<T>): PromiseProgress<T> {\n\t\tconst newPromise = PromiseProgress.from(promise);\n\t\tthis.onProgress(p => newPromise.progress = p);\n\t\treturn newPromise;\n\t}\n\n\tonProgress(callback: ProgressCallback) {\n\t\tthis.listeners.push(callback);\n\t\treturn this;\n\t}\n\n\tthen(res?: (v: T) => any, rej?: (err: any) => any): PromiseProgress<any> {\n\t\tconst resp = super.then(res, rej);\n\t\treturn this.from(resp);\n\t}\n\n\tcatch(rej?: (err: any) => any): PromiseProgress<any> {\n\t\treturn this.from(super.catch(rej));\n\t}\n\n\tfinally(res?: () => any): PromiseProgress<any> {\n\t\treturn this.from(super.finally(res));\n\t}\n}\n","import {PromiseProgress} from './promise-progress';\n\nexport function download(href: any, name: string) {\n\tconst a = document.createElement('a');\n\ta.href = href;\n\ta.download = name;\n\tdocument.body.appendChild(a);\n\ta.click();\n\tdocument.body.removeChild(a);\n}\n\nexport function downloadBlob(blob: Blob, name: string) {\n\tconst url = URL.createObjectURL(blob);\n\tdownload(url, name);\n\tURL.revokeObjectURL(url);\n}\n\nexport function fileBrowser(options: {accept?: string, multiple?: boolean} = {}): Promise<File[]> {\n\treturn new Promise(res => {\n\t\tconst input = document.createElement('input');\n\t\tinput.type = 'file';\n\t\tinput.accept = options.accept || '*';\n\t\tinput.style.display='none';\n\t\tinput.multiple = !!options.multiple;\n\t\tinput.onblur = input.onchange = async () => {\n\t\t\tres(Array.from(<any>input.files));\n\t\t\tinput.remove();\n\t\t}\n\t\tdocument.body.appendChild(input);\n\t\tinput.click();\n\t});\n}\n\nexport function uploadWithProgress<T>(options: {\n\turl: string;\n\tfiles: File[];\n\theaders?: {[key: string]: string};\n\twithCredentials?: boolean;\n}): PromiseProgress<T> {\n\treturn new PromiseProgress<T>((res, rej, prog) => {\n\t\tconst xhr = new XMLHttpRequest();\n\t\tconst formData = new FormData();\n\t\toptions.files.forEach(f => formData.append('file', f));\n\n\t\txhr.withCredentials = !!options.withCredentials\n\t\txhr.upload.addEventListener('progress', (event) => event.lengthComputable ? prog(event.loaded / event.total) : null);\n\t\txhr.upload.addEventListener('load', (resp) => res(<any>resp));\n\t\txhr.upload.addEventListener('error', (err) => rej(err));\n\n\t\txhr.open('POST', options.url);\n\t\tObject.entries(options.headers || {}).forEach(([key, value]) => xhr.setRequestHeader(key, value));\n\t\txhr.send(formData);\n\t});\n}\n","export type Listener = (...args: any[]) => any;\r\nexport type TypedEvents = {[k in string | symbol]: Listener} & {'*': (event: string, ...args: any[]) => any};\r\n\r\nexport class TypedEmitter<T extends TypedEvents = TypedEvents> {\r\n\tprivate static listeners: {[key: string]: Listener[]} = {};\r\n\r\n\tprivate listeners: { [key in keyof T]?: Listener[] } = {};\r\n\r\n\tstatic emit(event: any, ...args: any[]) {\r\n\t\t(this.listeners['*'] || []).forEach(l => l(event, ...args));\r\n\t\t(this.listeners[event.toString()] || []).forEach(l => l(...args));\r\n\t};\r\n\r\n\tstatic off(event: any, listener: Listener) {\r\n\t\tconst e = event.toString();\r\n\t\tthis.listeners[e] = (this.listeners[e] || []).filter(l => l === listener);\r\n\t}\r\n\r\n\tstatic on(event: any, listener: Listener) {\r\n\t\tconst e = event.toString();\r\n\t\tif(!this.listeners[e]) this.listeners[e] = [];\r\n\t\tthis.listeners[e]?.push(listener);\r\n\t\treturn () => this.off(event, listener);\r\n\t}\r\n\r\n\tstatic once(event: any, listener?: Listener): Promise<any> {\r\n\t\treturn new Promise(res => {\r\n\t\t\tconst unsubscribe = this.on(event, <any>((...args: any) => {\r\n\t\t\t\tres(args.length == 1 ? args[0] : args);\r\n\t\t\t\tif(listener) listener(...args);\r\n\t\t\t\tunsubscribe();\r\n\t\t\t}));\r\n\t\t});\r\n\t}\r\n\r\n\temit<K extends keyof T>(event: K, ...args: Parameters<T[K]>) {\r\n\t\t(this.listeners['*'] || []).forEach(l => l(event, ...args));\r\n\t\t(this.listeners[event] || []).forEach(l => l(...args));\r\n\t};\r\n\r\n\toff<K extends keyof T = string>(event: K, listener: T[K]) {\r\n\t\tthis.listeners[event] = (this.listeners[event] || []).filter(l => l === listener);\r\n\t}\r\n\r\n\ton<K extends keyof T = string>(event: K, listener: T[K]) {\r\n\t\tif(!this.listeners[event]) this.listeners[event] = [];\r\n\t\tthis.listeners[event]?.push(listener);\r\n\t\treturn () => this.off(event, listener);\r\n\t}\r\n\r\n\tonce<K extends keyof T = string>(event: K, listener?: T[K]): Promise<any> {\r\n\t\treturn new Promise(res => {\r\n\t\t\tconst unsubscribe = this.on(event, <any>((...args: any) => {\r\n\t\t\t\tres(args.length == 1 ? args[0] : args);\r\n\t\t\t\tif(listener) listener(...args);\r\n\t\t\t\tunsubscribe();\r\n\t\t\t}));\r\n\t\t});\r\n\t}\r\n}\r\n","export class CustomError extends Error {\r\n\tstatic code = 500;\r\n\r\n\tprivate _code?: number;\r\n\tget code(): number { return this._code || (<any>this).constructor.code; }\r\n\tset code(c: number) { this._code = c; }\r\n\r\n\tconstructor(message?: string, code?: number) {\r\n\t\tsuper(message);\r\n\t\tif(code != null) this._code = code;\r\n\t}\r\n\r\n\tstatic from(err: Error): CustomError {\r\n\t\tconst code = Number((<any>err).statusCode) ?? Number((<any>err).code);\r\n\t\tconst newErr = new this(err.message || err.toString());\r\n\t\treturn Object.assign(newErr, {\r\n\t\t\tstack: err.stack,\r\n\t\t\t...err,\r\n\t\t\tcode: code ?? undefined\r\n\t\t});\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code != undefined;\r\n\t}\r\n\r\n\ttoString() {\r\n\t\treturn this.message || super.toString();\r\n\t}\r\n}\r\n\r\nexport class BadRequestError extends CustomError {\r\n\tstatic code = 400;\r\n\r\n\tconstructor(message: string = 'Bad Request') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class UnauthorizedError extends CustomError {\r\n\tstatic code = 401;\r\n\r\n\tconstructor(message: string = 'Unauthorized') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class ForbiddenError extends CustomError {\r\n\tstatic code = 403;\r\n\r\n\tconstructor(message: string = 'Forbidden') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class NotFoundError extends CustomError {\r\n\tstatic code = 404;\r\n\r\n\tconstructor(message: string = 'Not Found') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class InternalServerError extends CustomError {\r\n\tstatic code = 500;\r\n\r\n\tconstructor(message: string = 'Internal Server Error') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n","import {clean} from './objects';\nimport {PromiseProgress} from './promise-progress';\n\nexport type DecodedResponse<T> = Response & {data: T | null}\n\nexport type HttpInterceptor = (response: Response, next: () => void) => void;\n\nexport type HttpRequestOptions = {\n\tbody?: any;\n\tdecode?: boolean;\n\tfragment?: string;\n\theaders?: {[key: string | symbol]: string | null | undefined};\n\tmethod?: 'GET' | 'POST' | 'PATCH' | 'DELETE';\n\tquery?: {key: string, value: string}[] | {[key: string]: string};\n\turl?: string;\n\t[key: string]: any;\n}\n\nexport type HttpDefaults = {\n\theaders?: {[key: string | symbol]: string | null | undefined};\n\tinterceptors?: HttpInterceptor[];\n\turl?: string;\n}\n\nexport class Http {\n\tprivate static interceptors: {[key: string]: HttpInterceptor} = {};\n\n\tstatic headers: {[key: string]: string | null | undefined} = {};\n\n\tprivate interceptors: {[key: string]: HttpInterceptor} = {}\n\n\theaders: {[key: string]: string | null | undefined} = {}\n\turl!: string | null;\n\n\tconstructor(defaults: HttpDefaults = {}) {\n\t\tthis.url = defaults.url ?? null;\n\t\tthis.headers = defaults.headers || {};\n\t\tif(defaults.interceptors) {\n\t\t\tdefaults.interceptors.forEach(i => Http.addInterceptor(i));\n\t\t}\n\t}\n\n\tstatic addInterceptor(fn: HttpInterceptor): () => void {\n\t\tconst key = Object.keys(Http.interceptors).length.toString();\n\t\tHttp.interceptors[key] = fn;\n\t\treturn () => { Http.interceptors[key] = <any>null; }\n\t}\n\n\taddInterceptor(fn: HttpInterceptor): () => void {\n\t\tconst key = Object.keys(this.interceptors).length.toString();\n\t\tthis.interceptors[key] = fn;\n\t\treturn () => { this.interceptors[key] = <any>null; }\n\t}\n\n\trequest<T>(opts: HttpRequestOptions = {}): PromiseProgress<DecodedResponse<T>> {\n\t\tif(!this.url && !opts.url) throw new Error('URL needs to be set');\n\t\tlet url = (opts.url?.startsWith('http') ? opts.url : (this.url || '') + (opts.url || '')).replace(/([^:]\\/)\\/+/g, '$1');\n\t\tif(opts.fragment) url.includes('#') ? url.replace(/#.*(\\?|\\n)/g, (match, arg1) => `#${opts.fragment}${arg1}`) : url += '#' + opts.fragment;\n\t\tif(opts.query) {\n\t\t\tconst q = Array.isArray(opts.query) ? opts.query :\n\t\t\t\tObject.keys(opts.query).map(k => ({key: k, value: (<any>opts.query)[k]}))\n\t\t\turl += (url.includes('?') ? '&' : '?') + q.map(q => `${q.key}=${q.value}`).join('&');\n\t\t}\n\n\t\t// Prep headers\n\t\tconst headers = <any>clean({\n\t\t\t'Content-Type': !opts.body ? undefined : (opts.body instanceof FormData ? 'multipart/form-data' : 'application/json'),\n\t\t\t...Http.headers,\n\t\t\t...this.headers,\n\t\t\t...opts.headers\n\t\t});\n\n\t\tif(typeof opts.body == 'object' && opts.body != null && headers['Content-Type'] == 'application/json')\n\t\t\topts.body = JSON.stringify(opts.body);\n\n\t\t// Send request\n\t\treturn new PromiseProgress((res, rej, prog) => {\n\t\t\tfetch(url, {\n\t\t\t\theaders,\n\t\t\t\tmethod: opts.method || (opts.body ? 'POST' : 'GET'),\n\t\t\t\tbody: opts.body\n\t\t\t}).then(async (resp: any) => {\n\t\t\t\tfor(let fn of [...Object.values(Http.interceptors), ...Object.values(this.interceptors)]) {\n\t\t\t\t\tawait new Promise<void>(res => fn(resp, () => res()));\n\t\t\t\t}\n\n\t\t\t\tconst contentLength = resp.headers.get('Content-Length');\n\t\t\t\tconst total = contentLength ? parseInt(contentLength, 10) : 0;\n\t\t\t\tlet loaded = 0;\n\n\t\t\t\tconst reader = resp.body?.getReader();\n\t\t\t\tconst stream = new ReadableStream({\n\t\t\t\t\tstart(controller) {\n\t\t\t\t\t\tfunction push() {\n\t\t\t\t\t\t\treader?.read().then((event: any) => {\n\t\t\t\t\t\t\t\tif(event.done) return controller.close();\n\t\t\t\t\t\t\t\tloaded += event.value.byteLength;\n\t\t\t\t\t\t\t\tprog(loaded / total);\n\t\t\t\t\t\t\t\tcontroller.enqueue(event.value);\n\t\t\t\t\t\t\t\tpush();\n\t\t\t\t\t\t\t}).catch((error: any) => controller.error(error));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpush();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tconst data = new Response(stream);\n\t\t\t\tresp.body = data.body;\n\t\t\t\tresp.blob = data.blob;\n\t\t\t\tresp.formData = data.formData;\n\t\t\t\tresp.json = data.json;\n\t\t\t\tresp.text = data.text;\n\n\t\t\t\tif(opts.decode !== false) {\n\t\t\t\t\tconst content = resp.headers.get('Content-Type')?.toLowerCase();\n\t\t\t\t\tif(content?.includes('application')) resp.data = <T>await data.blob();\n\t\t\t\t\telse if(content?.includes('form')) resp.data = <T>await data.formData();\n\t\t\t\t\telse if(content?.includes('json')) resp.data = <T>await data.json();\n\t\t\t\t\telse if(content?.includes('text')) resp.data = <T>await data.text();\n\t\t\t\t}\n\n\t\t\t\tif(resp.ok) res(resp);\n\t\t\t\telse rej(resp);\n\t\t\t})\n\t\t});\n\t}\n}\n","import {TypedEmitter, TypedEvents} from './emitter';\r\n\r\nexport const CliEffects = {\r\n\tCLEAR: \"\\x1b[0m\",\r\n\tBRIGHT: \"\\x1b[1m\",\r\n\tDIM: \"\\x1b[2m\",\r\n\tUNDERSCORE: \"\\x1b[4m\",\r\n\tBLINK: \"\\x1b[5m\",\r\n\tREVERSE: \"\\x1b[7m\",\r\n\tHIDDEN: \"\\x1b[8m\",\r\n}\r\n\r\nexport const CliForeground = {\r\n\tBLACK: '\\x1b[30m',\r\n\tRED: '\\x1b[31m',\r\n\tGREEN: '\\x1b[32m',\r\n\tYELLOW: '\\x1b[33m',\r\n\tBLUE: '\\x1b[34m',\r\n\tMAGENTA: '\\x1b[35m',\r\n\tCYAN: '\\x1b[36m',\r\n\tLIGHT_GREY: '\\x1b[37m',\r\n\tGREY: '\\x1b[90m',\r\n\tLIGHT_RED: '\\x1b[91m',\r\n\tLIGHT_GREEN: '\\x1b[92m',\r\n\tLIGHT_YELLOW: '\\x1b[93m',\r\n\tLIGHT_BLUE: '\\x1b[94m',\r\n\tLIGHT_MAGENTA: '\\x1b[95m',\r\n\tLIGHT_CYAN: '\\x1b[96m',\r\n\tWHITE: '\\x1b[97m',\r\n}\r\n\r\nexport const CliBackground = {\r\n\tBLACK: \"\\x1b[40m\",\r\n\tRED: \"\\x1b[41m\",\r\n\tGREEN: \"\\x1b[42m\",\r\n\tYELLOW: \"\\x1b[43m\",\r\n\tBLUE: \"\\x1b[44m\",\r\n\tMAGENTA: \"\\x1b[45m\",\r\n\tCYAN: \"\\x1b[46m\",\r\n\tWHITE: \"\\x1b[47m\",\r\n\tGREY: \"\\x1b[100m\",\r\n}\r\n\r\nexport enum LOG_LEVEL {\r\n\tERROR = 0,\r\n\tWARN = 1,\r\n\tINFO = 2,\r\n\tLOG = 3,\r\n\tDEBUG = 4,\r\n}\r\n\r\nexport type LoggerEvents = TypedEvents & {\r\n\t'ERROR': (...args: any[]) => any;\r\n\t'WARN': (...args: any[]) => any;\r\n\t'INFO': (...args: any[]) => any;\r\n\t'LOG': (...args: any[]) => any;\r\n\t'DEBUG': (...args: any[]) => any;\r\n};\r\n\r\nexport class Logger extends TypedEmitter<LoggerEvents> {\r\n\tstatic LOG_LEVEL: LOG_LEVEL = LOG_LEVEL.DEBUG;\r\n\r\n\tconstructor(public readonly namespace?: string) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tprivate pad(text: any, length: number, char: string, end = false) {\r\n\t\tconst t = text.toString();\r\n\t\tconst l = length - t.length;\r\n\t\tif(l <= 0) return t;\r\n\t\tconst padding = Array(~~(l / char.length)).fill(char).join('');\r\n\t\treturn !end ? padding + t : t + padding;\r\n\t}\r\n\r\n\tprivate format(...text: string[]): string {\r\n\t\tconst now = new Date();\r\n\t\tconst timestamp = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()} ${this.pad(now.getHours().toString(), 2, '0')}:${this.pad(now.getMinutes().toString(), 2, '0')}:${this.pad(now.getSeconds().toString(), 2, '0')}.${this.pad(now.getMilliseconds().toString(), 3, '0', true)}`;\r\n\t\treturn `${timestamp}${this.namespace ? ` [${this.namespace}]` : ''} ${text.join(' ')}`;\r\n\t}\r\n\r\n\tdebug(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.DEBUG) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.DEBUG, str);\r\n\t\tconsole.debug(CliForeground.LIGHT_GREY + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\tlog(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.LOG) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.LOG, str);\r\n\t\tconsole.log(CliEffects.CLEAR + str);\r\n\t}\r\n\r\n\tinfo(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.INFO) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.INFO, str);\r\n\t\tconsole.info(CliForeground.BLUE + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\twarn(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.WARN) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.WARN, str);\r\n\t\tconsole.warn(CliForeground.YELLOW + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\terror(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.ERROR) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.ERROR, str);\r\n\t\tconsole.error(CliForeground.RED + str + CliEffects.CLEAR);\r\n\t}\r\n}\r\n","/**\n * Convert decimal number to fraction\n *\n * @example\n * ```js\n * dec2Frac(1.25) // Outputs: \"1 1/4\"\n * ```\n *\n * @param {number} num Number to convert\n * @return {string} Fraction with remainder\n */\nexport function dec2Frac(num: number) {\n\tconst gcd = (a: number, b: number): number => {\n\t\tif (b < 0.0000001) return a;\n\t\treturn gcd(b, ~~(a % b));\n\t};\n\n\tconst len = num.toString().length - 2;\n\tlet denominator = Math.pow(10, len);\n\tlet numerator = num * denominator;\n\tconst divisor = gcd(numerator, denominator);\n\tnumerator = ~~(numerator / divisor);\n\tdenominator = ~~(denominator / divisor)\n\tconst remainder = ~~(numerator / denominator);\n\tnumerator -= remainder * denominator;\n\treturn `${remainder ? remainder + ' ' : ''}${~~(numerator)}/${~~(denominator)}`;\n}\n\n/**\n * Convert fraction to decimal number\n *\n * @example\n * ```js\n * fracToDec('1 1/4') // Outputs: 1.25\n * ```\n *\n * @param {string} frac Fraction to convert\n * @return {number} Faction as a decimal\n */\nexport function fracToDec(frac: string) {\n\tlet split = frac.split(' ');\n\tconst whole = split.length == 2 ? Number(split[0]) : 0;\n\tsplit = (<string>split.pop()).split('/');\n\treturn whole + (Number(split[0]) / Number(split[1]));\n}\n","export function countChars(text: string, pattern: RegExp) {\r\n\treturn text.length - text.replaceAll(pattern, '').length;\r\n}\r\n\r\nexport function createHex(length: number) {\r\n\treturn Array(length).fill(null).map(() => Math.round(Math.random() * 0xF).toString(16)).join('');\r\n}\r\n\r\n/**\r\n * String of all letters\r\n *\r\n */\r\nconst LETTER_LIST = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\r\n\r\n/**\r\n * String of all numbers\r\n *\r\n */\r\nconst NUMBER_LIST = '0123456789';\r\n\r\n/**\r\n * String of all symbols\r\n */\r\nconst SYMBOL_LIST = '~`!@#$%^&*()_-+={[}]|\\\\:;\"\\'<,>.?/';\r\n\r\n/**\r\n * String of all letters, numbers & symbols\r\n */\r\nconst CHAR_LIST = LETTER_LIST + NUMBER_LIST + SYMBOL_LIST;\r\n\r\nexport function formatPhoneNumber(number: string) {\r\n\tconst parts = /(\\+?1)?.*?(\\d{3}).*?(\\d{3}).*?(\\d{4})/g.exec(number);\r\n\tif(!parts) throw new Error(`Number cannot be parsed: ${number}`);\r\n\treturn `${parts[1] ?? ''} (${parts[2]}) ${parts[3]}-${parts[4]}`.trim();\r\n}\r\n\r\n/**\r\n * Insert a string into another string at a given position\r\n *\r\n * @example\r\n * ```\r\n * console.log(insertAt('Hello world!', ' glorious', 5);\r\n * // Output: Hello glorious world!\r\n * ```\r\n *\r\n * @param {string} target - Parent string you want to modify\r\n * @param {string} str - Value that will be injected to parent\r\n * @param {number} index - Position to inject string at\r\n * @returns {string} - New string\r\n */\r\nexport function insertAt(target: string, str: string, index: number): String {\r\n\treturn `${target.slice(0, index)}${str}${target.slice(index + 1)}`;\r\n}\r\n\r\nexport function pad(text: any, length: number, char: string, start = true) {\r\n\tconst t = text.toString();\r\n\tconst l = length - t.length;\r\n\tif(l <= 0) return t;\r\n\tconst padding = Array(~~(l / char.length)).fill(char).join('');\r\n\treturn start ? padding + t : t + padding;\r\n}\r\n\r\n/**\r\n * Generate a string of random characters.\r\n *\r\n * @example\r\n * ```ts\r\n * const random = randomString();\r\n * const randomByte = randomString(8, \"01\")\r\n * ```\r\n *\r\n * @param {number} length - length of generated string\r\n * @param {string} pool - character pool to generate string from\r\n * @return {string} generated string\r\n */\r\nexport function randomString(length: number, pool: string = CHAR_LIST): string {\r\n\treturn Array(length).fill(null).map(() => {\r\n\t\tconst n = ~~(Math.random() * pool.length);\r\n\t\treturn pool[n];\r\n\t}).join('');\r\n}\r\n\r\n/**\r\n * Generate a random string with fine control over letters, numbers & symbols\r\n *\r\n * @example\r\n * ```ts\r\n * const randomLetter = randomString(1, true);\r\n * const randomChar = randomString(1, true, true, true);\r\n * ```\r\n *\r\n * @param {number} length - length of generated string\r\n * @param {boolean} letters - Add letters to pool\r\n * @param {boolean} numbers - Add numbers to pool\r\n * @param {boolean} symbols - Add symbols to pool\r\n * @return {string} generated string\r\n */\r\nexport function randomStringBuilder(length: number, letters = false, numbers = false, symbols = false): string {\r\n\tif(!letters && !numbers && !symbols) throw new Error('Must enable at least one: letters, numbers, symbols');\r\n\treturn Array(length).fill(null).map(() => {\r\n\t\tlet c;\r\n\t\tdo {\r\n\t\t\tconst type = ~~(Math.random() * 3);\r\n\t\t\tif(letters && type == 0) {\r\n\t\t\t\tc = LETTER_LIST[~~(Math.random() * LETTER_LIST.length)];\r\n\t\t\t} else if(numbers && type == 1) {\r\n\t\t\t\tc = NUMBER_LIST[~~(Math.random() * NUMBER_LIST.length)];\r\n\t\t\t} else if(symbols && type == 2) {\r\n\t\t\t\tc = SYMBOL_LIST[~~(Math.random() * SYMBOL_LIST.length)];\r\n\t\t\t}\r\n\t\t} while(!c);\r\n\t\treturn c;\r\n\t}).join('');\r\n}\r\n\r\n/**\r\n * Find all substrings that match a given pattern.\r\n *\r\n * Roughly based on `String.prototype.matchAll`.\r\n *\r\n * @param {string} value - String to search.\r\n * @param {RegExp | string} regex - Regular expression to match.\r\n * @return {RegExpExecArray[]} Found matches.\r\n */\r\nexport function matchAll(value: string, regex: RegExp | string): RegExpExecArray[] {\r\n\tif(typeof regex === 'string') {\r\n\t\tregex = new RegExp(regex, 'g');\r\n\t}\r\n\r\n\t// https://stackoverflow.com/a/60290199\r\n\tif(!regex.global) {\r\n\t\tthrow new TypeError('Regular expression must be global.');\r\n\t}\r\n\r\n\tlet ret: RegExpExecArray[] = [];\r\n\tlet match: RegExpExecArray | null;\r\n\twhile((match = regex.exec(value)) !== null) {\r\n\t\tret.push(match);\r\n\t}\r\n\r\n\treturn ret;\r\n}\r\n\r\n/**\r\n * Create MD5 hash using native javascript\r\n * @param d String to hash\r\n * @returns {string} Hashed string\r\n */\r\nexport function md5(d: string) {\r\n\tvar r = M(V(Y(X(d),8*d.length)));return r.toLowerCase()};\r\n\tfunction M(d:any){for(var _,m=\"0123456789ABCDEF\",f=\"\",r=0;r<d.length;r++)_=d.charCodeAt(r),f+=m.charAt(_>>>4&15)+m.charAt(15&_);return f}\r\n\tfunction X(d:any){for(var _=Array(d.length>>2),m=0;m<_.length;m++)_[m]=0;for(m=0;m<8*d.length;m+=8)_[m>>5]|=(255&d.charCodeAt(m/8))<<m%32;return _}\r\n\tfunction V(d:any){for(var _=\"\",m=0;m<32*d.length;m+=8)_+=String.fromCharCode(d[m>>5]>>>m%32&255);return _}\r\n\tfunction Y(d:any,_:any){d[_>>5]|=128<<_%32,d[14+(_+64>>>9<<4)]=_;for(var m=1732584193,f=-271733879,r=-1732584194,i=271733878,n=0;n<d.length;n+=16){var h=m,t=f,g=r,e=i;f=md5_ii(f=md5_ii(f=md5_ii(f=md5_ii(f=md5_hh(f=md5_hh(f=md5_hh(f=md5_hh(f=md5_gg(f=md5_gg(f=md5_gg(f=md5_gg(f=md5_ff(f=md5_ff(f=md5_ff(f=md5_ff(f,r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+0],7,-680876936),f,r,d[n+1],12,-389564586),m,f,d[n+2],17,606105819),i,m,d[n+3],22,-1044525330),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+4],7,-176418897),f,r,d[n+5],12,1200080426),m,f,d[n+6],17,-1473231341),i,m,d[n+7],22,-45705983),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+8],7,1770035416),f,r,d[n+9],12,-1958414417),m,f,d[n+10],17,-42063),i,m,d[n+11],22,-1990404162),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+12],7,1804603682),f,r,d[n+13],12,-40341101),m,f,d[n+14],17,-1502002290),i,m,d[n+15],22,1236535329),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+1],5,-165796510),f,r,d[n+6],9,-1069501632),m,f,d[n+11],14,643717713),i,m,d[n+0],20,-373897302),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+5],5,-701558691),f,r,d[n+10],9,38016083),m,f,d[n+15],14,-660478335),i,m,d[n+4],20,-405537848),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+9],5,568446438),f,r,d[n+14],9,-1019803690),m,f,d[n+3],14,-187363961),i,m,d[n+8],20,1163531501),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+13],5,-1444681467),f,r,d[n+2],9,-51403784),m,f,d[n+7],14,1735328473),i,m,d[n+12],20,-1926607734),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+5],4,-378558),f,r,d[n+8],11,-2022574463),m,f,d[n+11],16,1839030562),i,m,d[n+14],23,-35309556),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+1],4,-1530992060),f,r,d[n+4],11,1272893353),m,f,d[n+7],16,-155497632),i,m,d[n+10],23,-1094730640),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+13],4,681279174),f,r,d[n+0],11,-358537222),m,f,d[n+3],16,-722521979),i,m,d[n+6],23,76029189),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+9],4,-640364487),f,r,d[n+12],11,-421815835),m,f,d[n+15],16,530742520),i,m,d[n+2],23,-995338651),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+0],6,-198630844),f,r,d[n+7],10,1126891415),m,f,d[n+14],15,-1416354905),i,m,d[n+5],21,-57434055),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+12],6,1700485571),f,r,d[n+3],10,-1894986606),m,f,d[n+10],15,-1051523),i,m,d[n+1],21,-2054922799),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+8],6,1873313359),f,r,d[n+15],10,-30611744),m,f,d[n+6],15,-1560198380),i,m,d[n+13],21,1309151649),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+4],6,-145523070),f,r,d[n+11],10,-1120210379),m,f,d[n+2],15,718787259),i,m,d[n+9],21,-343485551),m=safe_add(m,h),f=safe_add(f,t),r=safe_add(r,g),i=safe_add(i,e)}return Array(m,f,r,i)}\r\n\tfunction md5_cmn(d:any,_:any,m:any,f:any,r:any,i:any){return safe_add(bit_rol(safe_add(safe_add(_,d),safe_add(f,i)),r),m)}\r\n\tfunction md5_ff(d:any,_:any,m:any,f:any,r:any,i:any,n:any){return md5_cmn(_&m|~_&f,d,_,r,i,n)}\r\n\tfunction md5_gg(d:any,_:any,m:any,f:any,r:any,i:any,n:any){return md5_cmn(_&f|m&~f,d,_,r,i,n)}\r\n\tfunction md5_hh(d:any,_:any,m:any,f:any,r:any,i:any,n:any){return md5_cmn(_^m^f,d,_,r,i,n)}\r\n\tfunction md5_ii(d:any,_:any,m:any,f:any,r:any,i:any,n:any){return md5_cmn(m^(_|~f),d,_,r,i,n)}\r\n\tfunction safe_add(d:any,_:any){var m=(65535&d)+(65535&_);return(d>>16)+(_>>16)+(m>>16)<<16|65535&m}\r\n\tfunction bit_rol(d:any,_:any){return d<<_|d>>>32-_\r\n}\r\n\r\n/**\r\n * Check if email is valid\r\n *\r\n * @param {string} email - Target\r\n * @returns {boolean} - Follows format\r\n */\r\nexport function validateEmail(email: string) {\r\n\treturn /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/.test(email);\r\n}\r\n","import {md5} from './string';\r\n\r\n/**\r\n * Convert data into a form encoded format.\r\n *\r\n * @param {any} data - data to convert\r\n * @returns {string} - Ecodeded form data\r\n */\r\nexport function formEncode(data: any): string {\r\n\treturn Object.entries(data).map(([key, value]) =>\r\n\t\tencodeURIComponent(key) + '=' + encodeURIComponent(<any>value)\r\n\t).join('&');\r\n}\r\n\r\n/**\r\n * Get profile image from Gravatar\r\n *\r\n * @param {string} email Account email address\r\n * @param {string} def Default image, can be a link or '404', see: https://docs.gravatar.com/general/images/\r\n * @returns {string} Gravatar URL\r\n */\r\nexport function gravatar(email: string, def='mp') {\r\n\tif(!email) return '';\r\n\treturn `https://www.gravatar.com/avatar/${md5(email)}?d=${def}`;\r\n}\r\n\r\n/** Parts of a URL */\r\nexport type ParsedUrl = {\r\n\tprotocol?: string,\r\n\tsubdomain?: string,\r\n\tdomain: string,\r\n\thost: string,\r\n\tport?: number,\r\n\tpath?: string,\r\n\tquery?: {[name: string]: string}\r\n\tfragment?: string\r\n}\r\n\r\n/**\r\n *\r\n * @param {string} url\r\n * @returns {RegExpExecArray}\r\n */\r\nexport function urlParser(url: string): ParsedUrl {\r\n\tconst processed = new RegExp(\r\n\t\t'(?:(?<protocol>[\\\\w\\\\d]+)\\\\:\\\\/\\\\/)?(?:(?<user>.+)\\\\@)?(?<host>(?<domain>[^:\\\\/\\\\?#@\\\\n]+)(?:\\\\:(?<port>\\\\d*))?)(?<path>\\\\/.*?)?(?:\\\\?(?<query>.*?))?(?:#(?<fragment>.*?))?$',\r\n\t\t'gm').exec(url);\r\n\tconst groups: ParsedUrl = <any>processed?.groups ?? {};\r\n\tconst domains = groups.domain.split('.');\r\n\tif(groups['port'] != null) groups.port = Number(groups.port);\r\n\tif(domains.length > 2) {\r\n\t\tgroups.domain = domains.splice(-2, 2).join('.');\r\n\t\tgroups.subdomain = domains.join('.');\r\n\t}\r\n\tif(groups.query) {\r\n\t\tconst split = (<any>groups.query).split('&'), query: any = {};\r\n\t\tsplit.forEach((q: any) => {\r\n\t\t\tconst [key, val] = q.split('=');\r\n\t\t\tquery[key] = val;\r\n\t\t});\r\n\t\tgroups.query = query;\r\n\t}\r\n\treturn groups;\r\n}\r\n","/**\r\n * Calculate the number of milliseconds until date/time\r\n *\r\n * @param {Date | number} date - Target\r\n * @returns {number} - Number of milliseconds until target\r\n */\r\nexport function timeUntil(date: Date | number): number {\r\n\treturn (date instanceof Date ? date.getTime() : date) - (new Date()).getTime();\r\n}\r\n\r\n/**\r\n * Use in conjunction with `await` to pause an async script\r\n *\r\n * @example\r\n * ```ts\r\n * async () => {\r\n * ...\r\n * await sleep(1000) // Pause for 1 second\r\n *\t ...\r\n * }\r\n * ```\r\n *\r\n * @param {number} ms - Time to pause for in milliseconds\r\n * @returns {Promise<unknown>} - Resolves promise when it's time to resume\r\n */\r\nexport function sleep(ms: number) {\r\n\treturn new Promise(res => setTimeout(res, ms));\r\n}\r\n\r\nexport function formatDate(date: Date | number | string) {\r\n\tconst d = date instanceof Date ? date : new Date(date);\r\n\treturn new Intl.DateTimeFormat(\"en-us\", {\r\n\t\tweekday: \"long\",\r\n\t\tmonth: \"short\",\r\n\t\tday: \"numeric\",\r\n\t\thour: \"numeric\",\r\n\t\tminute: \"numeric\",\r\n\t\thour12: true\r\n\t}).format(d);\r\n}\r\n"],"names":["clean","obj","undefinedOnly","o","key","value","deepCopy","deepMerge","target","sources","s","dotNotation","prop","set","i","arr","flattenObj","parent","result","propName","includes","values","allowMissing","e","type","isEqual","a","b","ta","tb","mixin","constructors","c","name","sanitizedJSON","space","cache","addUnique","array","el","arrayDiff","makeUnique","v1","v2","caseInsensitiveSort","aVal","bVal","flattenArr","sortByProp","reverse","findByProp","v","n","makeArray","ASet","elements","index","acc","PromiseProgress","executor","resolve","reject","reason","progress","__publicField","p","l","promise","res","rej","args","newPromise","callback","resp","download","href","downloadBlob","blob","url","fileBrowser","options","input","uploadWithProgress","prog","xhr","formData","f","event","err","TypedEmitter","listener","_a","unsubscribe","CustomError","message","code","newErr","BadRequestError","UnauthorizedError","ForbiddenError","NotFoundError","InternalServerError","_Http","defaults","fn","opts","match","arg1","q","k","headers","_b","contentLength","total","loaded","reader","stream","controller","push","error","data","content","Http","CliEffects","CliForeground","CliBackground","LOG_LEVEL","_Logger","namespace","text","length","char","end","t","padding","now","str","Logger","dec2Frac","num","gcd","len","denominator","numerator","divisor","remainder","fracToDec","frac","split","whole","countChars","pattern","createHex","LETTER_LIST","NUMBER_LIST","SYMBOL_LIST","CHAR_LIST","formatPhoneNumber","number","parts","insertAt","pad","start","randomString","pool","randomStringBuilder","letters","numbers","symbols","matchAll","regex","ret","md5","d","r","M","V","Y","X","_","m","h","g","md5_ii","md5_hh","md5_gg","md5_ff","safe_add","md5_cmn","bit_rol","validateEmail","email","formEncode","gravatar","def","urlParser","processed","groups","domains","query","val","timeUntil","date","sleep","ms","formatDate"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/objects.ts","../src/array.ts","../src/aset.ts","../src/promise-progress.ts","../src/files.ts","../src/emitter.ts","../src/errors.ts","../src/http.ts","../src/logger.ts","../src/math.ts","../src/string.ts","../src/misc.ts","../src/time.ts"],"sourcesContent":["/**\r\n * Removes any null values from an object in-place\r\n *\r\n * @example\r\n * ```ts\r\n * let test = {a: 0, b: false, c: null, d: 'abc'}\r\n * console.log(clean(test)); // Output: {a: 0, b: false, d: 'abc'}\r\n * ```\r\n *\r\n * @param {T} obj Object reference that will be cleaned\r\n * @param undefinedOnly Ignore null values\r\n * @returns {Partial<T>} Cleaned object\r\n */\r\nexport function clean<T>(obj: T, undefinedOnly = false): Partial<T> {\r\n\tif(obj == null) throw new Error(\"Cannot clean a NULL value\");\r\n\tif(Array.isArray(obj)) {\r\n\t\tobj = <any>obj.filter(o => o != null);\r\n\t} else {\r\n\t\tObject.entries(obj).forEach(([key, value]) => {\r\n\t\t\tif((undefinedOnly && value === undefined) || (!undefinedOnly && value == null)) delete (<any>obj)[key];\r\n\t\t});\r\n\t}\r\n\treturn <any>obj;\r\n}\r\n\r\n/**\r\n * Create a deep copy of an object (vs. a shallow copy of references)\r\n *\r\n * Should be replaced by `structuredClone` once released.\r\n *\r\n * @param {T} value Object to copy\r\n * @returns {T} Type\r\n */\r\nexport function deepCopy<T>(value: T): T {\r\n\treturn JSON.parse(JSON.stringify(value));\r\n}\r\n\r\n/**\r\n * Merge any number of objects into the target\r\n *\r\n * @param target Destination of all properties\r\n * @param sources Objects that will copied into target\r\n * @return {any} The des\r\n */\r\nexport function deepMerge<T>(target: any, ...sources: any[]): T {\r\n\tsources.forEach(s => {\r\n\t\tfor(const key in s) {\r\n\t\t\tif(s[key] && typeof s[key] == 'object' && !Array.isArray(s[key])) {\r\n\t\t\t\tif(!target[key]) target[key] = {};\r\n\t\t\t\tdeepMerge(target[key], s[key]);\r\n\t\t\t} else {\r\n\t\t\t\ttarget[key] = s[key];\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\treturn target;\r\n}\r\n\r\n/**\r\n * Get/set a property of an object using dot notation\r\n *\r\n * @example\r\n * ```ts\r\n * // Get a value\r\n * const name = dotNotation<string>(person, 'firstName');\r\n * const familyCarMake = dotNotation(family, 'cars[0].make');\r\n * // Set a value\r\n * dotNotation(family, 'cars[0].make', 'toyota');\r\n * ```\r\n *\r\n * @type T Return type\r\n * @param {Object} obj source object to search\r\n * @param {string} prop property name (Dot notation & indexing allowed)\r\n * @param {any} set Set object property to value, omit to fetch value instead\r\n * @return {T} property value\r\n */\r\nexport function dotNotation<T>(obj: any, prop: string, set: T): T;\r\nexport function dotNotation<T>(obj: any, prop: string): T | undefined;\r\nexport function dotNotation<T>(obj: any, prop: string, set?: T): T | undefined {\r\n\tif(obj == null || !prop) return undefined;\r\n\t// Split property string by '.' or [index]\r\n\treturn <T>prop.split(/[.[\\]]/g).filter(prop => prop.length).reduce((obj, prop, i, arr) => {\r\n\t\tif(prop[0] == '\"' || prop[0] == \"'\") prop = prop.slice(1, -1); // Take quotes out\r\n\t\tif(!obj?.hasOwnProperty(prop)) {\r\n\t\t\tif(set == undefined) return undefined;\r\n\t\t\tobj[prop] = {};\r\n\t\t}\r\n\t\tif(set !== undefined && i == arr.length - 1)\r\n\t\t\treturn obj[prop] = set;\r\n\t\treturn obj[prop];\r\n\t}, obj);\r\n}\r\n\r\n/**\r\n * Recursively flatten a nested object, while maintaining key structure.\r\n *\r\n * @example\r\n * ```ts\r\n * const car = {honda: {model: \"Civic\"}};\r\n * console.log(flattenObj(car)); //Output {honda.model: \"Civic\"}\r\n * ```\r\n *\r\n * @param obj - Object to flatten\r\n * @param parent - Recursively check if key is a parent key or not\r\n * @param result - Result\r\n * @returns {object} - Flattened object\r\n */\r\nexport function flattenObj(obj: any, parent?: any, result: any = {}) {\r\n\tif(typeof obj === \"object\" && !Array.isArray(obj)) {\r\n\t\tfor(const key of Object.keys(obj)) {\r\n\t\t\tconst propName = parent ? parent + '.' + key : key;\r\n\t\t\tif(typeof obj[key] === 'object') {\r\n\t\t\t\tflattenObj(obj[key], propName, result);\r\n\t\t\t} else {\r\n\t\t\t\tresult[propName] = obj[key];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n}\r\n\r\n/**\r\n * Check that an object has the following values\r\n *\r\n * @example\r\n * ```ts\r\n * const test = {a: 2, b: 2};\r\n * includes(test, {a: 1}); // true\r\n * includes(test, {b: 1, c: 3}); // false\r\n * ```\r\n *\r\n * @param target Object to search\r\n * @param values Criteria to check against\r\n * @param allowMissing Only check the keys that are available on the target\r\n * @returns {boolean} Does target include all the values\r\n */\r\nexport function includes(target: any, values: any, allowMissing = false): boolean {\r\n\tif(target == undefined) return allowMissing;\r\n\tif(Array.isArray(values)) return values.findIndex((e: any, i: number) => !includes(target[i], values[i], allowMissing)) == -1;\r\n\tconst type = typeof values;\r\n\tif(type != typeof target) return false;\r\n\tif(type == 'object') {\r\n\t\treturn Object.keys(values).find(key => !includes(target[key], values[key], allowMissing)) == null;\r\n\t}\r\n\tif(type == 'function') return target.toString() == values.toString();\r\n\treturn target == values;\r\n}\r\n\r\n/**\r\n * Deep check if two objects are equal\r\n *\r\n * @param {any} a - first item to compare\r\n * @param {any} b - second item to compare\r\n * @returns {boolean} True if they match\r\n */\r\nexport function isEqual(a: any, b: any): boolean {\r\n\tconst ta = typeof a, tb = typeof b;\r\n\tif((ta != 'object' || a == null) || (tb != 'object' || b == null))\r\n\t\treturn ta == 'function' && tb == 'function' ? a.toString() == b.toString() : a === b;\r\n\tconst keys = Object.keys(a);\r\n\tif(keys.length != Object.keys(b).length) return false;\r\n\treturn Object.keys(a).every(key => isEqual(a[key], b[key]));\r\n}\r\n\r\nexport function mixin(target: any, constructors: any[]) {\r\n\tconstructors.forEach(c => {\r\n\t\tObject.getOwnPropertyNames(c.prototype).forEach((name) => {\r\n\t\t\tObject.defineProperty(\r\n\t\t\t\ttarget.prototype,\r\n\t\t\t\tname,\r\n\t\t\t\tObject.getOwnPropertyDescriptor(c.prototype, name) ||\r\n\t\t\t\tObject.create(null)\r\n\t\t\t);\r\n\t\t});\r\n\t});\r\n}\r\n\r\nexport function sanitizedJSON(obj: any, space?: number) {\r\n\tlet cache: any[] = [];\r\n\treturn JSON.parse(JSON.stringify(obj, (key, value) => {\r\n\t\tif (typeof value === 'object' && value !== null) {\r\n\t\t\tif (cache.includes(value)) return;\r\n\t\t\tcache.push(value);\r\n\t\t}\r\n\t\treturn value;\r\n\t}, space));\r\n}\r\n","import {dotNotation, isEqual} from './objects';\n\nexport function addUnique<T>(array: T[], el: T): T[] {\n\tif(array.indexOf(el) === -1) array.push(el);\n\treturn array;\n}\n\nexport function arrayDiff(a: any[], b: any[]): any[] {\n\treturn makeUnique([\n\t\t...a.filter(v1 => !b.includes((v2: any) => isEqual(v1, v2))),\n\t\t...b.filter(v1 => !a.includes((v2: any) => isEqual(v1, v2))),\n\t]);\n}\n\n/**\n * Provides a shorthand for sorting arrays of complex objects by a string property\n *\n * @example\n * ```ts\n * let arr = [{a: 'Apple', b: 123}, {a: 'Carrot', b: 789}, {a: 'banana', b: 456}];\n * arr.sort(caseInsensitiveSort('a'));\n * ```\n *\n * @param {string} prop - Name of property to use, supports dot notation\n * @returns {(a, b) => (number)} - Function to handle sort (Meant to be passed to Array.prototype.sort or used in sortFn)\n */\nexport function caseInsensitiveSort(prop: string) {\n\treturn function (a: any, b: any) {\n\t\tconst aVal = dotNotation<string>(a, prop);\n\t\tconst bVal = dotNotation<string>(b, prop);\n\t\tif(typeof aVal !== 'string' || typeof bVal !== 'string') return 1;\n\t\treturn aVal.toLowerCase().localeCompare(bVal.toLowerCase());\n\t};\n}\n\n/**\n * Recursively flatten nested arrays\n *\n * @example\n * ```ts\n * const arr = [\n * {label: null, url: '/'},\n * {label: 'Model Admin', url: '/model-admin'},\n * [\n * {label: 'Elements', url: '/model-admin/elements'},\n * {label: 'Example', url: null}\n * ]\n * ];\n *\n * console.log(flattenArr(arr));\n * // Output:\n * [\n * {label: null, url: '/'},\n * {label: 'Model Admin', url: '/model-admin'},\n * {label: 'Elements', url: '/model-admin/elements'},\n * {label: 'Example', url: null}\n * ]\n * ```\n *\n * @param {any[]} arr - n-dimensional array\n * @param {any[]} result - Internal use only -- Keeps track of recursion\n * @returns {any[]} - Flattened array\n */\nexport function flattenArr(arr: any[], result: any[] = []): any[] {\n\tarr.forEach(el => Array.isArray(el) ? flattenArr(el, result) : result.push(el));\n\treturn result;\n}\n\n/**\n * Provides a shorthand for sorting arrays of complex objects\n *\n * @example\n * ```ts\n * let arr = [{a: {b: 2}}, {a: {b: 3}}, {a: {b: 1}}];\n * arr.sort(sortByProp('a.b'));\n * ```\n *\n * @param {string} prop - Name of property to use, supports dot notation\n * @param {boolean} reverse - Reverse the order of the sort\n * @returns {(a, b) => (number)} - Function to handle sort (Meant to be passed to Array.prototype.sort)\n */\nexport function sortByProp(prop: string, reverse = false) {\n\treturn function (a: any, b: any) {\n\t\tconst aVal = dotNotation<any>(a, prop);\n\t\tconst bVal = dotNotation<any>(b, prop);\n\t\tif(typeof aVal == 'number' && typeof bVal == 'number')\n\t\t\treturn (reverse ? -1 : 1) * (aVal - bVal);\n\t\tif(aVal > bVal) return reverse ? -1 : 1;\n\t\tif(aVal < bVal) return reverse ? 1 : -1;\n\t\treturn 0;\n\t};\n}\n\nexport function findByProp(prop: string, value: any) {\n\treturn (v: any) => isEqual(v[prop], value);\n}\n\nexport function makeUnique(arr: any[]) {\n\tfor(let i = arr.length - 1; i >= 0; i--) {\n\t\tif(arr.slice(0, i).find(n => isEqual(n, arr[i]))) arr.splice(i, 1);\n\t}\n\treturn arr;\n}\n\n/**\n * Make sure value is an array, if it isn't wrap it in one.\n * @param {T[] | T} value Value that should be an array\n * @returns {T[]} Value in an array\n */\nexport function makeArray<T>(value: T | T[]): T[] {\n\treturn Array.isArray(value) ? value : [value];\n}\n","export class ASet<T> extends Array {\n\tget size() {\n\t\treturn this.length;\n\t}\n\n\tconstructor(elements: T[] = []) {\n\t\tsuper();\n\t\tif(!!elements?.['forEach'])\n\t\t\telements.forEach(el => this.add(el));\n\t}\n\n\tadd(el: T) {\n\t\tif(!this.has(el)) this.push(el);\n\t}\n\n\tdelete(el: T) {\n\t\tconst index = this.indexOf(el);\n\t\tif(index != -1) this.slice(index, 1);\n\t}\n\n\tdifference(set: ASet<T>) {\n\t\treturn new ASet<T>(this.reduce((acc, el) => {\n\t\t\tif(!set.has(el)) acc.push(el);\n\t\t\treturn acc;\n\t\t}, []));\n\t}\n\n\thas(el: T) {\n\t\treturn this.indexOf(el) != -1;\n\t}\n\n\tintersection(set: ASet<T>) {\n\t\treturn new ASet<T>(this.reduce((acc, el) => {\n\t\t\tif(set.has(el)) acc.push(el);\n\t\t\treturn acc;\n\t\t}, []));\n\t}\n\n\tisDisjointFrom(set: ASet<T>) {\n\t\treturn this.intersection(set).size == 0;\n\t}\n\n\tisSubsetOf(set: ASet<T>) {\n\t\treturn this.findIndex(el => !set.has(el)) == -1;\n\t}\n\n\tisSuperset(set: ASet<T>) {\n\t\treturn set.findIndex(el => !this.has(el)) == -1;\n\t}\n\n\tsymmetricDifference(set: ASet<T>) {\n\t\treturn new ASet([...this.difference(set), ...set.difference(this)]);\n\t}\n\n\tunion(set: ASet<T> | Array<T>) {\n\t\treturn new ASet([...this, ...set]);\n\t}\n}\n","export type ProgressCallback = (progress: number) => any;\n\nexport class PromiseProgress<T> extends Promise<T> {\n\tprivate listeners: ProgressCallback[] = [];\n\n\tprivate _progress = 0;\n\tget progress() { return this._progress; }\n\tset progress(p: number) {\n\t\tif(p == this._progress) return;\n\t\tthis._progress = p;\n\t\tthis.listeners.forEach(l => l(p));\n\t}\n\n\tconstructor(executor: (resolve: (value: T) => any, reject: (reason: any) => void, progress: (progress: number) => any) => void) {\n\t\tsuper((resolve, reject) => executor(\n\t\t\t(value: T) => resolve(value),\n\t\t\t(reason: any) => reject(reason),\n\t\t\t(progress: number) => this.progress = progress,\n\t\t));\n\t}\n\n\tstatic from<T>(promise: Promise<T>): PromiseProgress<T> {\n\t\tif(promise instanceof PromiseProgress) return promise;\n\t\treturn new PromiseProgress<T>((res, rej) => promise\n\t\t\t.then((...args) => res(...args))\n\t\t\t.catch((...args) => rej(...args)));\n\t}\n\n\tprivate from(promise: Promise<T>): PromiseProgress<T> {\n\t\tconst newPromise = PromiseProgress.from(promise);\n\t\tthis.onProgress(p => newPromise.progress = p);\n\t\treturn newPromise;\n\t}\n\n\tonProgress(callback: ProgressCallback) {\n\t\tthis.listeners.push(callback);\n\t\treturn this;\n\t}\n\n\tthen(res?: (v: T) => any, rej?: (err: any) => any): PromiseProgress<any> {\n\t\tconst resp = super.then(res, rej);\n\t\treturn this.from(resp);\n\t}\n\n\tcatch(rej?: (err: any) => any): PromiseProgress<any> {\n\t\treturn this.from(super.catch(rej));\n\t}\n\n\tfinally(res?: () => any): PromiseProgress<any> {\n\t\treturn this.from(super.finally(res));\n\t}\n}\n","import {PromiseProgress} from './promise-progress';\n\nexport function download(href: any, name: string) {\n\tconst a = document.createElement('a');\n\ta.href = href;\n\ta.download = name;\n\tdocument.body.appendChild(a);\n\ta.click();\n\tdocument.body.removeChild(a);\n}\n\nexport function downloadBlob(blob: Blob, name: string) {\n\tconst url = URL.createObjectURL(blob);\n\tdownload(url, name);\n\tURL.revokeObjectURL(url);\n}\n\nexport function fileBrowser(options: {accept?: string, multiple?: boolean} = {}): Promise<File[]> {\n\treturn new Promise(res => {\n\t\tconst input = document.createElement('input');\n\t\tinput.type = 'file';\n\t\tinput.accept = options.accept || '*';\n\t\tinput.style.display='none';\n\t\tinput.multiple = !!options.multiple;\n\t\tinput.onblur = input.onchange = async () => {\n\t\t\tres(Array.from(<any>input.files));\n\t\t\tinput.remove();\n\t\t}\n\t\tdocument.body.appendChild(input);\n\t\tinput.click();\n\t});\n}\n\nexport function uploadWithProgress<T>(options: {\n\turl: string;\n\tfiles: File[];\n\theaders?: {[key: string]: string};\n\twithCredentials?: boolean;\n}): PromiseProgress<T> {\n\treturn new PromiseProgress<T>((res, rej, prog) => {\n\t\tconst xhr = new XMLHttpRequest();\n\t\tconst formData = new FormData();\n\t\toptions.files.forEach(f => formData.append('file', f));\n\n\t\txhr.withCredentials = !!options.withCredentials\n\t\txhr.upload.addEventListener('progress', (event) => event.lengthComputable ? prog(event.loaded / event.total) : null);\n\t\txhr.upload.addEventListener('load', (resp) => res(<any>resp));\n\t\txhr.upload.addEventListener('error', (err) => rej(err));\n\n\t\txhr.open('POST', options.url);\n\t\tObject.entries(options.headers || {}).forEach(([key, value]) => xhr.setRequestHeader(key, value));\n\t\txhr.send(formData);\n\t});\n}\n","export type Listener = (...args: any[]) => any;\r\nexport type TypedEvents = {[k in string | symbol]: Listener} & {'*': (event: string, ...args: any[]) => any};\r\n\r\nexport class TypedEmitter<T extends TypedEvents = TypedEvents> {\r\n\tprivate static listeners: {[key: string]: Listener[]} = {};\r\n\r\n\tprivate listeners: { [key in keyof T]?: Listener[] } = {};\r\n\r\n\tstatic emit(event: any, ...args: any[]) {\r\n\t\t(this.listeners['*'] || []).forEach(l => l(event, ...args));\r\n\t\t(this.listeners[event.toString()] || []).forEach(l => l(...args));\r\n\t};\r\n\r\n\tstatic off(event: any, listener: Listener) {\r\n\t\tconst e = event.toString();\r\n\t\tthis.listeners[e] = (this.listeners[e] || []).filter(l => l === listener);\r\n\t}\r\n\r\n\tstatic on(event: any, listener: Listener) {\r\n\t\tconst e = event.toString();\r\n\t\tif(!this.listeners[e]) this.listeners[e] = [];\r\n\t\tthis.listeners[e]?.push(listener);\r\n\t\treturn () => this.off(event, listener);\r\n\t}\r\n\r\n\tstatic once(event: any, listener?: Listener): Promise<any> {\r\n\t\treturn new Promise(res => {\r\n\t\t\tconst unsubscribe = this.on(event, <any>((...args: any) => {\r\n\t\t\t\tres(args.length == 1 ? args[0] : args);\r\n\t\t\t\tif(listener) listener(...args);\r\n\t\t\t\tunsubscribe();\r\n\t\t\t}));\r\n\t\t});\r\n\t}\r\n\r\n\temit<K extends keyof T>(event: K, ...args: Parameters<T[K]>) {\r\n\t\t(this.listeners['*'] || []).forEach(l => l(event, ...args));\r\n\t\t(this.listeners[event] || []).forEach(l => l(...args));\r\n\t};\r\n\r\n\toff<K extends keyof T = string>(event: K, listener: T[K]) {\r\n\t\tthis.listeners[event] = (this.listeners[event] || []).filter(l => l === listener);\r\n\t}\r\n\r\n\ton<K extends keyof T = string>(event: K, listener: T[K]) {\r\n\t\tif(!this.listeners[event]) this.listeners[event] = [];\r\n\t\tthis.listeners[event]?.push(listener);\r\n\t\treturn () => this.off(event, listener);\r\n\t}\r\n\r\n\tonce<K extends keyof T = string>(event: K, listener?: T[K]): Promise<any> {\r\n\t\treturn new Promise(res => {\r\n\t\t\tconst unsubscribe = this.on(event, <any>((...args: any) => {\r\n\t\t\t\tres(args.length == 1 ? args[0] : args);\r\n\t\t\t\tif(listener) listener(...args);\r\n\t\t\t\tunsubscribe();\r\n\t\t\t}));\r\n\t\t});\r\n\t}\r\n}\r\n","export class CustomError extends Error {\r\n\tstatic code = 500;\r\n\r\n\tprivate _code?: number;\r\n\tget code(): number { return this._code || (<any>this).constructor.code; }\r\n\tset code(c: number) { this._code = c; }\r\n\r\n\tconstructor(message?: string, code?: number) {\r\n\t\tsuper(message);\r\n\t\tif(code != null) this._code = code;\r\n\t}\r\n\r\n\tstatic from(err: Error): CustomError {\r\n\t\tconst code = Number((<any>err).statusCode) ?? Number((<any>err).code);\r\n\t\tconst newErr = new this(err.message || err.toString());\r\n\t\treturn Object.assign(newErr, {\r\n\t\t\tstack: err.stack,\r\n\t\t\t...err,\r\n\t\t\tcode: code ?? undefined\r\n\t\t});\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code != undefined;\r\n\t}\r\n\r\n\ttoString() {\r\n\t\treturn this.message || super.toString();\r\n\t}\r\n}\r\n\r\nexport class BadRequestError extends CustomError {\r\n\tstatic code = 400;\r\n\r\n\tconstructor(message: string = 'Bad Request') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class UnauthorizedError extends CustomError {\r\n\tstatic code = 401;\r\n\r\n\tconstructor(message: string = 'Unauthorized') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class ForbiddenError extends CustomError {\r\n\tstatic code = 403;\r\n\r\n\tconstructor(message: string = 'Forbidden') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class NotFoundError extends CustomError {\r\n\tstatic code = 404;\r\n\r\n\tconstructor(message: string = 'Not Found') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class InternalServerError extends CustomError {\r\n\tstatic code = 500;\r\n\r\n\tconstructor(message: string = 'Internal Server Error') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n","import {clean} from './objects';\nimport {PromiseProgress} from './promise-progress';\n\nexport type DecodedResponse<T> = Response & {data: T | null}\n\nexport type HttpInterceptor = (response: Response, next: () => void) => void;\n\nexport type HttpRequestOptions = {\n\tbody?: any;\n\tdecode?: boolean;\n\tfragment?: string;\n\theaders?: {[key: string | symbol]: string | null | undefined};\n\tmethod?: 'GET' | 'POST' | 'PATCH' | 'DELETE';\n\tquery?: {key: string, value: string}[] | {[key: string]: string};\n\turl?: string;\n\t[key: string]: any;\n}\n\nexport type HttpDefaults = {\n\theaders?: {[key: string | symbol]: string | null | undefined};\n\tinterceptors?: HttpInterceptor[];\n\turl?: string;\n}\n\nexport class Http {\n\tprivate static interceptors: {[key: string]: HttpInterceptor} = {};\n\n\tstatic headers: {[key: string]: string | null | undefined} = {};\n\n\tprivate interceptors: {[key: string]: HttpInterceptor} = {}\n\n\theaders: {[key: string]: string | null | undefined} = {}\n\turl!: string | null;\n\n\tconstructor(defaults: HttpDefaults = {}) {\n\t\tthis.url = defaults.url ?? null;\n\t\tthis.headers = defaults.headers || {};\n\t\tif(defaults.interceptors) {\n\t\t\tdefaults.interceptors.forEach(i => Http.addInterceptor(i));\n\t\t}\n\t}\n\n\tstatic addInterceptor(fn: HttpInterceptor): () => void {\n\t\tconst key = Object.keys(Http.interceptors).length.toString();\n\t\tHttp.interceptors[key] = fn;\n\t\treturn () => { Http.interceptors[key] = <any>null; }\n\t}\n\n\taddInterceptor(fn: HttpInterceptor): () => void {\n\t\tconst key = Object.keys(this.interceptors).length.toString();\n\t\tthis.interceptors[key] = fn;\n\t\treturn () => { this.interceptors[key] = <any>null; }\n\t}\n\n\trequest<T>(opts: HttpRequestOptions = {}): PromiseProgress<DecodedResponse<T>> {\n\t\tif(!this.url && !opts.url) throw new Error('URL needs to be set');\n\t\tlet url = (opts.url?.startsWith('http') ? opts.url : (this.url || '') + (opts.url || '')).replace(/([^:]\\/)\\/+/g, '$1');\n\t\tif(opts.fragment) url.includes('#') ? url.replace(/#.*(\\?|\\n)/g, (match, arg1) => `#${opts.fragment}${arg1}`) : url += '#' + opts.fragment;\n\t\tif(opts.query) {\n\t\t\tconst q = Array.isArray(opts.query) ? opts.query :\n\t\t\t\tObject.keys(opts.query).map(k => ({key: k, value: (<any>opts.query)[k]}))\n\t\t\turl += (url.includes('?') ? '&' : '?') + q.map(q => `${q.key}=${q.value}`).join('&');\n\t\t}\n\n\t\t// Prep headers\n\t\tconst headers = <any>clean({\n\t\t\t'Content-Type': !opts.body ? undefined : (opts.body instanceof FormData ? 'multipart/form-data' : 'application/json'),\n\t\t\t...Http.headers,\n\t\t\t...this.headers,\n\t\t\t...opts.headers\n\t\t});\n\n\t\tif(typeof opts.body == 'object' && opts.body != null && headers['Content-Type'] == 'application/json')\n\t\t\topts.body = JSON.stringify(opts.body);\n\n\t\t// Send request\n\t\treturn new PromiseProgress((res, rej, prog) => {\n\t\t\tfetch(url, {\n\t\t\t\theaders,\n\t\t\t\tmethod: opts.method || (opts.body ? 'POST' : 'GET'),\n\t\t\t\tbody: opts.body\n\t\t\t}).then(async (resp: any) => {\n\t\t\t\tfor(let fn of [...Object.values(Http.interceptors), ...Object.values(this.interceptors)]) {\n\t\t\t\t\tawait new Promise<void>(res => fn(resp, () => res()));\n\t\t\t\t}\n\n\t\t\t\tconst contentLength = resp.headers.get('Content-Length');\n\t\t\t\tconst total = contentLength ? parseInt(contentLength, 10) : 0;\n\t\t\t\tlet loaded = 0;\n\n\t\t\t\tconst reader = resp.body?.getReader();\n\t\t\t\tconst stream = new ReadableStream({\n\t\t\t\t\tstart(controller) {\n\t\t\t\t\t\tfunction push() {\n\t\t\t\t\t\t\treader?.read().then((event: any) => {\n\t\t\t\t\t\t\t\tif(event.done) return controller.close();\n\t\t\t\t\t\t\t\tloaded += event.value.byteLength;\n\t\t\t\t\t\t\t\tprog(loaded / total);\n\t\t\t\t\t\t\t\tcontroller.enqueue(event.value);\n\t\t\t\t\t\t\t\tpush();\n\t\t\t\t\t\t\t}).catch((error: any) => controller.error(error));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpush();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tconst data = new Response(stream);\n\t\t\t\tresp.blob = data.blob;\n\t\t\t\tresp.formData = data.formData;\n\t\t\t\tresp.json = data.json;\n\t\t\t\tresp.text = data.text;\n\n\t\t\t\tif(opts.decode !== false) {\n\t\t\t\t\tconst content = resp.headers.get('Content-Type')?.toLowerCase();\n\t\t\t\t\tif(content?.includes('application')) resp.data = <T>await data.blob();\n\t\t\t\t\telse if(content?.includes('form')) resp.data = <T>await data.formData();\n\t\t\t\t\telse if(content?.includes('json')) resp.data = <T>await data.json();\n\t\t\t\t\telse if(content?.includes('text')) resp.data = <T>await data.text();\n\t\t\t\t}\n\n\t\t\t\tif(resp.ok) res(resp);\n\t\t\t\telse rej(resp);\n\t\t\t})\n\t\t});\n\t}\n}\n","import {TypedEmitter, TypedEvents} from './emitter';\r\n\r\nexport const CliEffects = {\r\n\tCLEAR: \"\\x1b[0m\",\r\n\tBRIGHT: \"\\x1b[1m\",\r\n\tDIM: \"\\x1b[2m\",\r\n\tUNDERSCORE: \"\\x1b[4m\",\r\n\tBLINK: \"\\x1b[5m\",\r\n\tREVERSE: \"\\x1b[7m\",\r\n\tHIDDEN: \"\\x1b[8m\",\r\n}\r\n\r\nexport const CliForeground = {\r\n\tBLACK: '\\x1b[30m',\r\n\tRED: '\\x1b[31m',\r\n\tGREEN: '\\x1b[32m',\r\n\tYELLOW: '\\x1b[33m',\r\n\tBLUE: '\\x1b[34m',\r\n\tMAGENTA: '\\x1b[35m',\r\n\tCYAN: '\\x1b[36m',\r\n\tLIGHT_GREY: '\\x1b[37m',\r\n\tGREY: '\\x1b[90m',\r\n\tLIGHT_RED: '\\x1b[91m',\r\n\tLIGHT_GREEN: '\\x1b[92m',\r\n\tLIGHT_YELLOW: '\\x1b[93m',\r\n\tLIGHT_BLUE: '\\x1b[94m',\r\n\tLIGHT_MAGENTA: '\\x1b[95m',\r\n\tLIGHT_CYAN: '\\x1b[96m',\r\n\tWHITE: '\\x1b[97m',\r\n}\r\n\r\nexport const CliBackground = {\r\n\tBLACK: \"\\x1b[40m\",\r\n\tRED: \"\\x1b[41m\",\r\n\tGREEN: \"\\x1b[42m\",\r\n\tYELLOW: \"\\x1b[43m\",\r\n\tBLUE: \"\\x1b[44m\",\r\n\tMAGENTA: \"\\x1b[45m\",\r\n\tCYAN: \"\\x1b[46m\",\r\n\tWHITE: \"\\x1b[47m\",\r\n\tGREY: \"\\x1b[100m\",\r\n}\r\n\r\nexport enum LOG_LEVEL {\r\n\tERROR = 0,\r\n\tWARN = 1,\r\n\tINFO = 2,\r\n\tLOG = 3,\r\n\tDEBUG = 4,\r\n}\r\n\r\nexport type LoggerEvents = TypedEvents & {\r\n\t'ERROR': (...args: any[]) => any;\r\n\t'WARN': (...args: any[]) => any;\r\n\t'INFO': (...args: any[]) => any;\r\n\t'LOG': (...args: any[]) => any;\r\n\t'DEBUG': (...args: any[]) => any;\r\n};\r\n\r\nexport class Logger extends TypedEmitter<LoggerEvents> {\r\n\tstatic LOG_LEVEL: LOG_LEVEL = LOG_LEVEL.DEBUG;\r\n\r\n\tconstructor(public readonly namespace?: string) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tprivate pad(text: any, length: number, char: string, end = false) {\r\n\t\tconst t = text.toString();\r\n\t\tconst l = length - t.length;\r\n\t\tif(l <= 0) return t;\r\n\t\tconst padding = Array(~~(l / char.length)).fill(char).join('');\r\n\t\treturn !end ? padding + t : t + padding;\r\n\t}\r\n\r\n\tprivate format(...text: string[]): string {\r\n\t\tconst now = new Date();\r\n\t\tconst timestamp = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()} ${this.pad(now.getHours().toString(), 2, '0')}:${this.pad(now.getMinutes().toString(), 2, '0')}:${this.pad(now.getSeconds().toString(), 2, '0')}.${this.pad(now.getMilliseconds().toString(), 3, '0', true)}`;\r\n\t\treturn `${timestamp}${this.namespace ? ` [${this.namespace}]` : ''} ${text.join(' ')}`;\r\n\t}\r\n\r\n\tdebug(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.DEBUG) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.DEBUG, str);\r\n\t\tconsole.debug(CliForeground.LIGHT_GREY + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\tlog(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.LOG) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.LOG, str);\r\n\t\tconsole.log(CliEffects.CLEAR + str);\r\n\t}\r\n\r\n\tinfo(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.INFO) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.INFO, str);\r\n\t\tconsole.info(CliForeground.BLUE + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\twarn(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.WARN) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.WARN, str);\r\n\t\tconsole.warn(CliForeground.YELLOW + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\terror(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.ERROR) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.ERROR, str);\r\n\t\tconsole.error(CliForeground.RED + str + CliEffects.CLEAR);\r\n\t}\r\n}\r\n","/**\n * Convert decimal number to fraction\n *\n * @example\n * ```js\n * dec2Frac(1.25) // Outputs: \"1 1/4\"\n * ```\n *\n * @param {number} num Number to convert\n * @return {string} Fraction with remainder\n */\nexport function dec2Frac(num: number) {\n\tconst gcd = (a: number, b: number): number => {\n\t\tif (b < 0.0000001) return a;\n\t\treturn gcd(b, ~~(a % b));\n\t};\n\n\tconst len = num.toString().length - 2;\n\tlet denominator = Math.pow(10, len);\n\tlet numerator = num * denominator;\n\tconst divisor = gcd(numerator, denominator);\n\tnumerator = ~~(numerator / divisor);\n\tdenominator = ~~(denominator / divisor)\n\tconst remainder = ~~(numerator / denominator);\n\tnumerator -= remainder * denominator;\n\treturn `${remainder ? remainder + ' ' : ''}${~~(numerator)}/${~~(denominator)}`;\n}\n\n/**\n * Convert fraction to decimal number\n *\n * @example\n * ```js\n * fracToDec('1 1/4') // Outputs: 1.25\n * ```\n *\n * @param {string} frac Fraction to convert\n * @return {number} Faction as a decimal\n */\nexport function fracToDec(frac: string) {\n\tlet split = frac.split(' ');\n\tconst whole = split.length == 2 ? Number(split[0]) : 0;\n\tsplit = (<string>split.pop()).split('/');\n\treturn whole + (Number(split[0]) / Number(split[1]));\n}\n","export function countChars(text: string, pattern: RegExp) {\r\n\treturn text.length - text.replaceAll(pattern, '').length;\r\n}\r\n\r\nexport function createHex(length: number) {\r\n\treturn Array(length).fill(null).map(() => Math.round(Math.random() * 0xF).toString(16)).join('');\r\n}\r\n\r\n/**\r\n * String of all letters\r\n *\r\n */\r\nconst LETTER_LIST = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\r\n\r\n/**\r\n * String of all numbers\r\n *\r\n */\r\nconst NUMBER_LIST = '0123456789';\r\n\r\n/**\r\n * String of all symbols\r\n */\r\nconst SYMBOL_LIST = '~`!@#$%^&*()_-+={[}]|\\\\:;\"\\'<,>.?/';\r\n\r\n/**\r\n * String of all letters, numbers & symbols\r\n */\r\nconst CHAR_LIST = LETTER_LIST + NUMBER_LIST + SYMBOL_LIST;\r\n\r\nexport function formatPhoneNumber(number: string) {\r\n\tconst parts = /(\\+?1)?.*?(\\d{3}).*?(\\d{3}).*?(\\d{4})/g.exec(number);\r\n\tif(!parts) throw new Error(`Number cannot be parsed: ${number}`);\r\n\treturn `${parts[1] ?? ''} (${parts[2]}) ${parts[3]}-${parts[4]}`.trim();\r\n}\r\n\r\n/**\r\n * Insert a string into another string at a given position\r\n *\r\n * @example\r\n * ```\r\n * console.log(insertAt('Hello world!', ' glorious', 5);\r\n * // Output: Hello glorious world!\r\n * ```\r\n *\r\n * @param {string} target - Parent string you want to modify\r\n * @param {string} str - Value that will be injected to parent\r\n * @param {number} index - Position to inject string at\r\n * @returns {string} - New string\r\n */\r\nexport function insertAt(target: string, str: string, index: number): String {\r\n\treturn `${target.slice(0, index)}${str}${target.slice(index + 1)}`;\r\n}\r\n\r\nexport function pad(text: any, length: number, char: string, start = true) {\r\n\tconst t = text.toString();\r\n\tconst l = length - t.length;\r\n\tif(l <= 0) return t;\r\n\tconst padding = Array(~~(l / char.length)).fill(char).join('');\r\n\treturn start ? padding + t : t + padding;\r\n}\r\n\r\n/**\r\n * Generate a string of random characters.\r\n *\r\n * @example\r\n * ```ts\r\n * const random = randomString();\r\n * const randomByte = randomString(8, \"01\")\r\n * ```\r\n *\r\n * @param {number} length - length of generated string\r\n * @param {string} pool - character pool to generate string from\r\n * @return {string} generated string\r\n */\r\nexport function randomString(length: number, pool: string = CHAR_LIST): string {\r\n\treturn Array(length).fill(null).map(() => {\r\n\t\tconst n = ~~(Math.random() * pool.length);\r\n\t\treturn pool[n];\r\n\t}).join('');\r\n}\r\n\r\n/**\r\n * Generate a random string with fine control over letters, numbers & symbols\r\n *\r\n * @example\r\n * ```ts\r\n * const randomLetter = randomString(1, true);\r\n * const randomChar = randomString(1, true, true, true);\r\n * ```\r\n *\r\n * @param {number} length - length of generated string\r\n * @param {boolean} letters - Add letters to pool\r\n * @param {boolean} numbers - Add numbers to pool\r\n * @param {boolean} symbols - Add symbols to pool\r\n * @return {string} generated string\r\n */\r\nexport function randomStringBuilder(length: number, letters = false, numbers = false, symbols = false): string {\r\n\tif(!letters && !numbers && !symbols) throw new Error('Must enable at least one: letters, numbers, symbols');\r\n\treturn Array(length).fill(null).map(() => {\r\n\t\tlet c;\r\n\t\tdo {\r\n\t\t\tconst type = ~~(Math.random() * 3);\r\n\t\t\tif(letters && type == 0) {\r\n\t\t\t\tc = LETTER_LIST[~~(Math.random() * LETTER_LIST.length)];\r\n\t\t\t} else if(numbers && type == 1) {\r\n\t\t\t\tc = NUMBER_LIST[~~(Math.random() * NUMBER_LIST.length)];\r\n\t\t\t} else if(symbols && type == 2) {\r\n\t\t\t\tc = SYMBOL_LIST[~~(Math.random() * SYMBOL_LIST.length)];\r\n\t\t\t}\r\n\t\t} while(!c);\r\n\t\treturn c;\r\n\t}).join('');\r\n}\r\n\r\n/**\r\n * Find all substrings that match a given pattern.\r\n *\r\n * Roughly based on `String.prototype.matchAll`.\r\n *\r\n * @param {string} value - String to search.\r\n * @param {RegExp | string} regex - Regular expression to match.\r\n * @return {RegExpExecArray[]} Found matches.\r\n */\r\nexport function matchAll(value: string, regex: RegExp | string): RegExpExecArray[] {\r\n\tif(typeof regex === 'string') {\r\n\t\tregex = new RegExp(regex, 'g');\r\n\t}\r\n\r\n\t// https://stackoverflow.com/a/60290199\r\n\tif(!regex.global) {\r\n\t\tthrow new TypeError('Regular expression must be global.');\r\n\t}\r\n\r\n\tlet ret: RegExpExecArray[] = [];\r\n\tlet match: RegExpExecArray | null;\r\n\twhile((match = regex.exec(value)) !== null) {\r\n\t\tret.push(match);\r\n\t}\r\n\r\n\treturn ret;\r\n}\r\n\r\n/**\r\n * Create MD5 hash using native javascript\r\n * @param d String to hash\r\n * @returns {string} Hashed string\r\n */\r\nexport function md5(d: string) {\r\n\tvar r = M(V(Y(X(d),8*d.length)));return r.toLowerCase()};\r\n\tfunction M(d:any){for(var _,m=\"0123456789ABCDEF\",f=\"\",r=0;r<d.length;r++)_=d.charCodeAt(r),f+=m.charAt(_>>>4&15)+m.charAt(15&_);return f}\r\n\tfunction X(d:any){for(var _=Array(d.length>>2),m=0;m<_.length;m++)_[m]=0;for(m=0;m<8*d.length;m+=8)_[m>>5]|=(255&d.charCodeAt(m/8))<<m%32;return _}\r\n\tfunction V(d:any){for(var _=\"\",m=0;m<32*d.length;m+=8)_+=String.fromCharCode(d[m>>5]>>>m%32&255);return _}\r\n\tfunction Y(d:any,_:any){d[_>>5]|=128<<_%32,d[14+(_+64>>>9<<4)]=_;for(var m=1732584193,f=-271733879,r=-1732584194,i=271733878,n=0;n<d.length;n+=16){var h=m,t=f,g=r,e=i;f=md5_ii(f=md5_ii(f=md5_ii(f=md5_ii(f=md5_hh(f=md5_hh(f=md5_hh(f=md5_hh(f=md5_gg(f=md5_gg(f=md5_gg(f=md5_gg(f=md5_ff(f=md5_ff(f=md5_ff(f=md5_ff(f,r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+0],7,-680876936),f,r,d[n+1],12,-389564586),m,f,d[n+2],17,606105819),i,m,d[n+3],22,-1044525330),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+4],7,-176418897),f,r,d[n+5],12,1200080426),m,f,d[n+6],17,-1473231341),i,m,d[n+7],22,-45705983),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+8],7,1770035416),f,r,d[n+9],12,-1958414417),m,f,d[n+10],17,-42063),i,m,d[n+11],22,-1990404162),r=md5_ff(r,i=md5_ff(i,m=md5_ff(m,f,r,i,d[n+12],7,1804603682),f,r,d[n+13],12,-40341101),m,f,d[n+14],17,-1502002290),i,m,d[n+15],22,1236535329),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+1],5,-165796510),f,r,d[n+6],9,-1069501632),m,f,d[n+11],14,643717713),i,m,d[n+0],20,-373897302),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+5],5,-701558691),f,r,d[n+10],9,38016083),m,f,d[n+15],14,-660478335),i,m,d[n+4],20,-405537848),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+9],5,568446438),f,r,d[n+14],9,-1019803690),m,f,d[n+3],14,-187363961),i,m,d[n+8],20,1163531501),r=md5_gg(r,i=md5_gg(i,m=md5_gg(m,f,r,i,d[n+13],5,-1444681467),f,r,d[n+2],9,-51403784),m,f,d[n+7],14,1735328473),i,m,d[n+12],20,-1926607734),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+5],4,-378558),f,r,d[n+8],11,-2022574463),m,f,d[n+11],16,1839030562),i,m,d[n+14],23,-35309556),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+1],4,-1530992060),f,r,d[n+4],11,1272893353),m,f,d[n+7],16,-155497632),i,m,d[n+10],23,-1094730640),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+13],4,681279174),f,r,d[n+0],11,-358537222),m,f,d[n+3],16,-722521979),i,m,d[n+6],23,76029189),r=md5_hh(r,i=md5_hh(i,m=md5_hh(m,f,r,i,d[n+9],4,-640364487),f,r,d[n+12],11,-421815835),m,f,d[n+15],16,530742520),i,m,d[n+2],23,-995338651),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+0],6,-198630844),f,r,d[n+7],10,1126891415),m,f,d[n+14],15,-1416354905),i,m,d[n+5],21,-57434055),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+12],6,1700485571),f,r,d[n+3],10,-1894986606),m,f,d[n+10],15,-1051523),i,m,d[n+1],21,-2054922799),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+8],6,1873313359),f,r,d[n+15],10,-30611744),m,f,d[n+6],15,-1560198380),i,m,d[n+13],21,1309151649),r=md5_ii(r,i=md5_ii(i,m=md5_ii(m,f,r,i,d[n+4],6,-145523070),f,r,d[n+11],10,-1120210379),m,f,d[n+2],15,718787259),i,m,d[n+9],21,-343485551),m=safe_add(m,h),f=safe_add(f,t),r=safe_add(r,g),i=safe_add(i,e)}return Array(m,f,r,i)}\r\n\tfunction md5_cmn(d:any,_:any,m:any,f:any,r:any,i:any){return safe_add(bit_rol(safe_add(safe_add(_,d),safe_add(f,i)),r),m)}\r\n\tfunction md5_ff(d:any,_:any,m:any,f:any,r:any,i:any,n:any){return md5_cmn(_&m|~_&f,d,_,r,i,n)}\r\n\tfunction md5_gg(d:any,_:any,m:any,f:any,r:any,i:any,n:any){return md5_cmn(_&f|m&~f,d,_,r,i,n)}\r\n\tfunction md5_hh(d:any,_:any,m:any,f:any,r:any,i:any,n:any){return md5_cmn(_^m^f,d,_,r,i,n)}\r\n\tfunction md5_ii(d:any,_:any,m:any,f:any,r:any,i:any,n:any){return md5_cmn(m^(_|~f),d,_,r,i,n)}\r\n\tfunction safe_add(d:any,_:any){var m=(65535&d)+(65535&_);return(d>>16)+(_>>16)+(m>>16)<<16|65535&m}\r\n\tfunction bit_rol(d:any,_:any){return d<<_|d>>>32-_\r\n}\r\n\r\n/**\r\n * Check if email is valid\r\n *\r\n * @param {string} email - Target\r\n * @returns {boolean} - Follows format\r\n */\r\nexport function validateEmail(email: string) {\r\n\treturn /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/.test(email);\r\n}\r\n","import {md5} from './string';\r\n\r\n/**\r\n * Convert data into a form encoded format.\r\n *\r\n * @param {any} data - data to convert\r\n * @returns {string} - Ecodeded form data\r\n */\r\nexport function formEncode(data: any): string {\r\n\treturn Object.entries(data).map(([key, value]) =>\r\n\t\tencodeURIComponent(key) + '=' + encodeURIComponent(<any>value)\r\n\t).join('&');\r\n}\r\n\r\n/**\r\n * Get profile image from Gravatar\r\n *\r\n * @param {string} email Account email address\r\n * @param {string} def Default image, can be a link or '404', see: https://docs.gravatar.com/general/images/\r\n * @returns {string} Gravatar URL\r\n */\r\nexport function gravatar(email: string, def='mp') {\r\n\tif(!email) return '';\r\n\treturn `https://www.gravatar.com/avatar/${md5(email)}?d=${def}`;\r\n}\r\n\r\n/** Parts of a URL */\r\nexport type ParsedUrl = {\r\n\tprotocol?: string,\r\n\tsubdomain?: string,\r\n\tdomain: string,\r\n\thost: string,\r\n\tport?: number,\r\n\tpath?: string,\r\n\tquery?: {[name: string]: string}\r\n\tfragment?: string\r\n}\r\n\r\n/**\r\n *\r\n * @param {string} url\r\n * @returns {RegExpExecArray}\r\n */\r\nexport function urlParser(url: string): ParsedUrl {\r\n\tconst processed = new RegExp(\r\n\t\t'(?:(?<protocol>[\\\\w\\\\d]+)\\\\:\\\\/\\\\/)?(?:(?<user>.+)\\\\@)?(?<host>(?<domain>[^:\\\\/\\\\?#@\\\\n]+)(?:\\\\:(?<port>\\\\d*))?)(?<path>\\\\/.*?)?(?:\\\\?(?<query>.*?))?(?:#(?<fragment>.*?))?$',\r\n\t\t'gm').exec(url);\r\n\tconst groups: ParsedUrl = <any>processed?.groups ?? {};\r\n\tconst domains = groups.domain.split('.');\r\n\tif(groups['port'] != null) groups.port = Number(groups.port);\r\n\tif(domains.length > 2) {\r\n\t\tgroups.domain = domains.splice(-2, 2).join('.');\r\n\t\tgroups.subdomain = domains.join('.');\r\n\t}\r\n\tif(groups.query) {\r\n\t\tconst split = (<any>groups.query).split('&'), query: any = {};\r\n\t\tsplit.forEach((q: any) => {\r\n\t\t\tconst [key, val] = q.split('=');\r\n\t\t\tquery[key] = val;\r\n\t\t});\r\n\t\tgroups.query = query;\r\n\t}\r\n\treturn groups;\r\n}\r\n","/**\r\n * Calculate the number of milliseconds until date/time\r\n *\r\n * @param {Date | number} date - Target\r\n * @returns {number} - Number of milliseconds until target\r\n */\r\nexport function timeUntil(date: Date | number): number {\r\n\treturn (date instanceof Date ? date.getTime() : date) - (new Date()).getTime();\r\n}\r\n\r\n/**\r\n * Use in conjunction with `await` to pause an async script\r\n *\r\n * @example\r\n * ```ts\r\n * async () => {\r\n * ...\r\n * await sleep(1000) // Pause for 1 second\r\n *\t ...\r\n * }\r\n * ```\r\n *\r\n * @param {number} ms - Time to pause for in milliseconds\r\n * @returns {Promise<unknown>} - Resolves promise when it's time to resume\r\n */\r\nexport function sleep(ms: number) {\r\n\treturn new Promise(res => setTimeout(res, ms));\r\n}\r\n\r\nexport function formatDate(date: Date | number | string) {\r\n\tconst d = date instanceof Date ? date : new Date(date);\r\n\treturn new Intl.DateTimeFormat(\"en-us\", {\r\n\t\tweekday: \"long\",\r\n\t\tmonth: \"short\",\r\n\t\tday: \"numeric\",\r\n\t\thour: \"numeric\",\r\n\t\tminute: \"numeric\",\r\n\t\thour12: true\r\n\t}).format(d);\r\n}\r\n"],"names":["clean","obj","undefinedOnly","o","key","value","deepCopy","deepMerge","target","sources","s","dotNotation","prop","set","i","arr","flattenObj","parent","result","propName","includes","values","allowMissing","e","type","isEqual","a","b","ta","tb","mixin","constructors","c","name","sanitizedJSON","space","cache","addUnique","array","el","arrayDiff","makeUnique","v1","v2","caseInsensitiveSort","aVal","bVal","flattenArr","sortByProp","reverse","findByProp","v","n","makeArray","ASet","elements","index","acc","PromiseProgress","executor","resolve","reject","reason","progress","__publicField","p","l","promise","res","rej","args","newPromise","callback","resp","download","href","downloadBlob","blob","url","fileBrowser","options","input","uploadWithProgress","prog","xhr","formData","f","event","err","TypedEmitter","listener","_a","unsubscribe","CustomError","message","code","newErr","BadRequestError","UnauthorizedError","ForbiddenError","NotFoundError","InternalServerError","_Http","defaults","fn","opts","match","arg1","q","k","headers","_b","contentLength","total","loaded","reader","stream","controller","push","error","data","content","Http","CliEffects","CliForeground","CliBackground","LOG_LEVEL","_Logger","namespace","text","length","char","end","t","padding","now","str","Logger","dec2Frac","num","gcd","len","denominator","numerator","divisor","remainder","fracToDec","frac","split","whole","countChars","pattern","createHex","LETTER_LIST","NUMBER_LIST","SYMBOL_LIST","CHAR_LIST","formatPhoneNumber","number","parts","insertAt","pad","start","randomString","pool","randomStringBuilder","letters","numbers","symbols","matchAll","regex","ret","md5","d","r","M","V","Y","X","_","m","h","g","md5_ii","md5_hh","md5_gg","md5_ff","safe_add","md5_cmn","bit_rol","validateEmail","email","formEncode","gravatar","def","urlParser","processed","groups","domains","query","val","timeUntil","date","sleep","ms","formatDate"],"mappings":"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"}
|