@ztimson/utils 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/utils.cjs +1 -1
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.mjs +114 -103
- package/dist/utils.mjs.map +1 -1
- package/dist/xhr.d.ts +5 -0
- package/package.json +1 -1
package/dist/utils.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(c,d){typeof exports=="object"&&typeof module<"u"?d(exports):typeof define=="function"&&define.amd?define(["exports"],d):(c=typeof globalThis<"u"?globalThis:c||self,d(c.utils={}))})(this,function(c){"use strict";var Ot=Object.defineProperty;var pt=(c,d,B)=>d in c?Ot(c,d,{enumerable:!0,configurable:!0,writable:!0,value:B}):c[d]=B;var f=(c,d,B)=>(pt(c,typeof d!="symbol"?d+"":d,B),B);function d(n,e=!1){if(n==null)throw new Error("Cannot clean a NULL value");return Array.isArray(n)?n=n.filter(t=>t!=null):Object.entries(n).forEach(([t,r])=>{(e&&r===void 0||!e&&r==null)&&delete n[t]}),n}function B(n){return JSON.parse(JSON.stringify(n))}function T(n,e,t){if(!(n==null||!e))return e.split(/[.[\]]/g).filter(r=>r.length).reduce((r,o,i,s)=>{if((o[0]=='"'||o[0]=="'")&&(o=o.slice(1,-1)),!(r!=null&&r.hasOwnProperty(o))){if(t==null)return;r[o]={}}return t!==void 0&&i==s.length-1?r[o]=t:r[o]},n)}function H(n,e,t={}){if(typeof n=="object"&&!Array.isArray(n)){for(const r of Object.keys(n)){const o=e?e+"."+r:r;typeof n[r]=="object"?H(n[r],o,t):t[o]=n[r]}return t}}function b(n,e,t=!1){if(n==null)return t;if(Array.isArray(e))return e.findIndex((o,i)=>!b(n[i],e[i],t))==-1;const r=typeof e;return r!=typeof n?!1:r=="object"?Object.keys(e).find(o=>!b(n[o],e[o],t))==null:r=="function"?n.toString()==e.toString():n==e}function A(n,e){const t=typeof n,r=typeof e;return t!="object"||n==null||r!="object"||e==null?t=="function"&&r=="function"?n.toString()==e.toString():n===e:Object.keys(n).length!=Object.keys(e).length?!1:Object.keys(n).every(i=>A(n[i],e[i]))}function z(n,e){e.forEach(t=>{Object.getOwnPropertyNames(t.prototype).forEach(r=>{Object.defineProperty(n.prototype,r,Object.getOwnPropertyDescriptor(t.prototype,r)||Object.create(null))})})}function J(n,e){let t=[];return JSON.parse(JSON.stringify(n,(r,o)=>{if(typeof o=="object"&&o!==null){if(t.includes(o))return;t.push(o)}return o},e))}function V(n,e){return n.indexOf(e)===-1&&n.push(e),n}function K(n,e){return F([...n.filter(t=>!e.includes(r=>A(t,r))),...e.filter(t=>!n.includes(r=>A(t,r)))])}function Z(n){return function(e,t){const r=T(e,n),o=T(t,n);return typeof r!="string"||typeof o!="string"?1:r.toLowerCase().localeCompare(o.toLowerCase())}}function Y(n,e=[]){return n.forEach(t=>Array.isArray(t)?Y(t,e):e.push(t)),e}function Q(n,e=!1){return function(t,r){const o=T(t,n),i=T(r,n);return typeof o=="number"&&typeof i=="number"?(e?-1:1)*(o-i):o>i?e?-1:1:o<i?e?1:-1:0}}function X(n,e){return t=>A(t[n],e)}function F(n){for(let e=n.length-1;e>=0;e--)n.slice(0,e).find(t=>A(t,n[e]))&&n.splice(e,1);return n}function _(n){return Array.isArray(n)?n:[n]}class S extends Array{get size(){return this.length}constructor(e=[]){super(),e!=null&&e.forEach&&e.forEach(t=>this.add(t))}add(e){this.has(e)||this.push(e)}delete(e){const t=this.indexOf(e);t!=-1&&this.slice(t,1)}difference(e){return new S(this.reduce((t,r)=>(e.has(r)||t.push(r),t),[]))}has(e){return this.indexOf(e)!=-1}intersection(e){return new S(this.reduce((t,r)=>(e.has(r)&&t.push(r),t),[]))}isDisjointFrom(e){return this.intersection(e).size==0}isSubsetOf(e){return this.findIndex(t=>!e.has(t))==-1}isSuperset(e){return e.findIndex(t=>!this.has(t))==-1}symmetricDifference(e){return new S([...this.difference(e),...e.difference(this)])}union(e){return new S([...this,...e])}}class L{constructor(){f(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()})})}}f(L,"listeners",{});const g=class g{constructor(e={}){f(this,"interceptors",{});f(this,"headers",{});this.opts=e,this.headers=e.headers||{},e.interceptors&&e.interceptors.forEach(t=>g.addInterceptor(t))}static addInterceptor(e){const t=Object.keys(g.interceptors).length.toString();return g.interceptors[t]=e,()=>{g.interceptors[t]=null}}addInterceptor(e){const t=Object.keys(this.interceptors).length.toString();return this.interceptors[t]=e,()=>{this.interceptors[t]=null}}async request(e={}){var o,i;if(!this.opts.url&&!e.url)throw new Error("URL needs to be set");const t=((o=e.url)!=null&&o.startsWith("http")?e.url:(this.opts.url||"")+(e.url||"")).replace(/([^:]\/)\/+/g,"$1"),r=d({"Content-Type":e.body&&!(e.body instanceof FormData)?"application/json":void 0,...g.headers,...this.headers,...e.headers});return fetch(t,{headers:r,method:e.method||(e.body?"POST":"GET"),body:(i=r["Content-Type"])!=null&&i.startsWith("application/json")&&e.body?JSON.stringify(e.body):e.body}).then(async s=>{var E,p;for(let M of[...Object.values(g.interceptors),...Object.values(this.interceptors)])await new Promise(q=>M(s,()=>q()));if(!s.ok)throw new Error(s.statusText);return(E=s.headers.get("Content-Type"))!=null&&E.startsWith("application/json")?await s.json():(p=s.headers.get("Content-Type"))!=null&&p.startsWith("text/plain")?await s.text():s})}};f(g,"interceptors",{}),f(g,"headers",{});let R=g;R.addInterceptor((n,e)=>{if(n.status==200)return e();throw n.status==400?new I(n.statusText):n.status==401?new D(n.statusText):n.status==403?new $(n.statusText):n.status==404?new k(n.statusText):n.status==500?new G(n.statusText):new m(n.statusText,n.status)});class m extends Error{constructor(t,r){super(t);f(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()}}f(m,"code",500);class I extends m{constructor(e="Bad Request"){super(e)}static instanceof(e){return e.constructor.code==this.code}}f(I,"code",400);class D extends m{constructor(e="Unauthorized"){super(e)}static instanceof(e){return e.constructor.code==this.code}}f(D,"code",401);class $ extends m{constructor(e="Forbidden"){super(e)}static instanceof(e){return e.constructor.code==this.code}}f($,"code",403);class k extends m{constructor(e="Not Found"){super(e)}static instanceof(e){return e.constructor.code==this.code}}f(k,"code",404);class G extends m{constructor(e="Internal Server Error"){super(e)}static instanceof(e){return e.constructor.code==this.code}}f(G,"code",500);const O={CLEAR:"\x1B[0m",BRIGHT:"\x1B[1m",DIM:"\x1B[2m",UNDERSCORE:"\x1B[4m",BLINK:"\x1B[5m",REVERSE:"\x1B[7m",HIDDEN:"\x1B[8m"},C={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"},tt={BLACK:"\x1B[40m",RED:"\x1B[41m",GREEN:"\x1B[42m",YELLOW:"\x1B[43m",BLUE:"\x1B[44m",MAGENTA:"\x1B[45m",CYAN:"\x1B[46m",WHITE:"\x1B[47m",GREY:"\x1B[100m"};var W=(n=>(n[n.ERROR=0]="ERROR",n[n.WARN=1]="WARN",n[n.INFO=2]="INFO",n[n.LOG=3]="LOG",n[n.DEBUG=4]="DEBUG",n))(W||{});const y=class y extends L{constructor(e){super(),this.namespace=e}pad(e,t,r,o=!1){const i=e.toString(),s=t-i.length;if(s<=0)return i;const 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(y.LOG_LEVEL<4)return;const t=this.format(...e);y.emit(4,t),console.debug(C.LIGHT_GREY+t+O.CLEAR)}log(...e){if(y.LOG_LEVEL<3)return;const t=this.format(...e);y.emit(3,t),console.log(O.CLEAR+t)}info(...e){if(y.LOG_LEVEL<2)return;const t=this.format(...e);y.emit(2,t),console.info(C.BLUE+t+O.CLEAR)}warn(...e){if(y.LOG_LEVEL<1)return;const t=this.format(...e);y.emit(1,t),console.warn(C.YELLOW+t+O.CLEAR)}error(...e){if(y.LOG_LEVEL<0)return;const t=this.format(...e);y.emit(0,t),console.error(C.RED+t+O.CLEAR)}};f(y,"LOG_LEVEL",4);let j=y;function et(n,e){return n.length-n.replaceAll(e,"").length}function nt(n){return Array(n).fill(null).map(()=>Math.round(Math.random()*15).toString(16)).join("")}const U="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",P="0123456789",x="~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/",rt=U+P+x;function ot(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 it(n,e,t){return`${n.slice(0,t)}${e}${n.slice(t+1)}`}function st(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 ct(n,e=rt){return Array(n).fill(null).map(()=>{const t=~~(Math.random()*e.length);return e[t]}).join("")}function ut(n,e=!1,t=!1,r=!1){if(!e&&!t&&!r)throw new Error("Must enable at least one: letters, numbers, symbols");return Array(n).fill(null).map(()=>{let o;do{const i=~~(Math.random()*3);e&&i==0?o=U[~~(Math.random()*U.length)]:t&&i==1?o=P[~~(Math.random()*P.length)]:r&&i==2&&(o=x[~~(Math.random()*x.length)])}while(!o);return o}).join("")}function at(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 v(n){var e=lt(ft(dt(ht(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 ht(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 ft(n){for(var e="",t=0;t<32*n.length;t+=8)e+=String.fromCharCode(n[t>>5]>>>t%32&255);return e}function dt(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,p=r,M=o,q=i;r=h(r=h(r=h(r=h(r=l(r=l(r=l(r=l(r=a(r=a(r=a(r=a(r=u(r=u(r=u(r=u(r,o=u(o,i=u(i,t=u(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=u(o,i=u(i,t=u(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=u(o,i=u(i,t=u(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=u(o,i=u(i,t=u(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=a(o,i=a(i,t=a(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=a(o,i=a(i,t=a(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=a(o,i=a(i,t=a(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=a(o,i=a(i,t=a(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=l(o,i=l(i,t=l(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=l(o,i=l(i,t=l(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=l(o,i=l(i,t=l(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=l(o,i=l(i,t=l(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=h(o,i=h(i,t=h(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=h(o,i=h(i,t=h(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=h(o,i=h(i,t=h(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=h(o,i=h(i,t=h(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,p),o=w(o,M),i=w(i,q)}return Array(t,r,o,i)}function N(n,e,t,r,o,i){return w(yt(w(w(e,n),w(r,i)),o),t)}function u(n,e,t,r,o,i,s){return N(e&t|~e&r,n,e,o,i,s)}function a(n,e,t,r,o,i,s){return N(e&r|t&~r,n,e,o,i,s)}function l(n,e,t,r,o,i,s){return N(e^t^r,n,e,o,i,s)}function h(n,e,t,r,o,i,s){return N(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 yt(n,e){return n<<e|n>>>32-e}function gt(n){return/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/.test(n)}function Et(n){return Object.entries(n).map(([e,t])=>encodeURIComponent(e)+"="+encodeURIComponent(t)).join("&")}function mt(n,e="mp"){return n?`https://www.gravatar.com/avatar/${v(n)}?d=${e}`:""}function wt(n){const e=new RegExp("(?:(?<protocol>[\\w\\d]+)\\:\\/\\/)?(?:(?<user>.+)\\@)?(?<host>(?<domain>[^:\\/\\?#@\\n]+)(?:\\:(?<port>\\d*))?)(?<path>\\/.*?)?(?:\\?(?<query>.*?))?(?:#(?<fragment>.*?))?$","gm").exec(n),t=(e==null?void 0:e.groups)??{},r=t.domain.split(".");if(t.port!=null&&(t.port=Number(t.port)),r.length>2&&(t.domain=r.splice(-2,2).join("."),t.subdomain=r.join(".")),t.query){const o=t.query.split("&"),i={};o.forEach(s=>{const[E,p]=s.split("=");i[E]=p}),t.query=i}return t}function Bt(n){return(n instanceof Date?n.getTime():n)-new Date().getTime()}function At(n){return new Promise(e=>setTimeout(e,n))}function St(n){const e=n instanceof Date?n:new Date(n);return new Intl.DateTimeFormat("en-us",{weekday:"long",month:"short",day:"numeric",hour:"numeric",minute:"numeric",hour12:!0}).format(e)}c.ASet=S,c.BadRequestError=I,c.CliBackground=tt,c.CliEffects=O,c.CliForeground=C,c.CustomError=m,c.ForbiddenError=$,c.InternalServerError=G,c.LOG_LEVEL=W,c.Logger=j,c.NotFoundError=k,c.TypedEmitter=L,c.UnauthorizedError=D,c.XHR=R,c.addUnique=V,c.arrayDiff=K,c.caseInsensitiveSort=Z,c.clean=d,c.countChars=et,c.createHex=nt,c.deepCopy=B,c.dotNotation=T,c.findByProp=X,c.flattenArr=Y,c.flattenObj=H,c.formEncode=Et,c.formatDate=St,c.formatPhoneNumber=ot,c.gravatar=mt,c.includes=b,c.insertAt=it,c.isEqual=A,c.makeArray=_,c.makeUnique=F,c.matchAll=at,c.md5=v,c.mixin=z,c.pad=st,c.randomString=ct,c.randomStringBuilder=ut,c.sanitizedJSON=J,c.sleep=At,c.sortByProp=Q,c.timeUntil=Bt,c.urlParser=wt,c.validateEmail=gt,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(c,d){typeof exports=="object"&&typeof module<"u"?d(exports):typeof define=="function"&&define.amd?define(["exports"],d):(c=typeof globalThis<"u"?globalThis:c||self,d(c.utils={}))})(this,function(c){"use strict";var pt=Object.defineProperty;var Ot=(c,d,B)=>d in c?pt(c,d,{enumerable:!0,configurable:!0,writable:!0,value:B}):c[d]=B;var f=(c,d,B)=>(Ot(c,typeof d!="symbol"?d+"":d,B),B);function d(n,e=!1){if(n==null)throw new Error("Cannot clean a NULL value");return Array.isArray(n)?n=n.filter(t=>t!=null):Object.entries(n).forEach(([t,r])=>{(e&&r===void 0||!e&&r==null)&&delete n[t]}),n}function B(n){return JSON.parse(JSON.stringify(n))}function O(n,e,t){if(!(n==null||!e))return e.split(/[.[\]]/g).filter(r=>r.length).reduce((r,o,i,s)=>{if((o[0]=='"'||o[0]=="'")&&(o=o.slice(1,-1)),!(r!=null&&r.hasOwnProperty(o))){if(t==null)return;r[o]={}}return t!==void 0&&i==s.length-1?r[o]=t:r[o]},n)}function v(n,e,t={}){if(typeof n=="object"&&!Array.isArray(n)){for(const r of Object.keys(n)){const o=e?e+"."+r:r;typeof n[r]=="object"?v(n[r],o,t):t[o]=n[r]}return t}}function L(n,e,t=!1){if(n==null)return t;if(Array.isArray(e))return e.findIndex((o,i)=>!L(n[i],e[i],t))==-1;const r=typeof e;return r!=typeof n?!1:r=="object"?Object.keys(e).find(o=>!L(n[o],e[o],t))==null:r=="function"?n.toString()==e.toString():n==e}function A(n,e){const t=typeof n,r=typeof e;return t!="object"||n==null||r!="object"||e==null?t=="function"&&r=="function"?n.toString()==e.toString():n===e:Object.keys(n).length!=Object.keys(e).length?!1:Object.keys(n).every(i=>A(n[i],e[i]))}function J(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 V(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 K(n,e){return n.indexOf(e)===-1&&n.push(e),n}function Z(n,e){return Y([...n.filter(t=>!e.includes(r=>A(t,r))),...e.filter(t=>!n.includes(r=>A(t,r)))])}function Q(n){return function(e,t){const r=O(e,n),o=O(t,n);return typeof r!="string"||typeof o!="string"?1:r.toLowerCase().localeCompare(o.toLowerCase())}}function H(n,e=[]){return n.forEach(t=>Array.isArray(t)?H(t,e):e.push(t)),e}function X(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 _(n,e){return t=>A(t[n],e)}function Y(n){for(let e=n.length-1;e>=0;e--)n.slice(0,e).find(t=>A(t,n[e]))&&n.splice(e,1);return n}function tt(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 N{constructor(){f(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()})})}}f(N,"listeners",{});const g=class g{constructor(e={}){f(this,"interceptors",{});f(this,"headers",{});this.opts=e,this.headers=e.headers||{},e.interceptors&&e.interceptors.forEach(t=>g.addInterceptor(t))}static addInterceptor(e){const t=Object.keys(g.interceptors).length.toString();return g.interceptors[t]=e,()=>{g.interceptors[t]=null}}addInterceptor(e){const t=Object.keys(this.interceptors).length.toString();return this.interceptors[t]=e,()=>{this.interceptors[t]=null}}download(e){this.request({...e,skipConverting:!0}).then(async t=>{const r=await t.blob();F(URL.createObjectURL(r),e.url.split("/").pop()),URL.revokeObjectURL(e.url)})}async request(e={}){var o,i;if(!this.opts.url&&!e.url)throw new Error("URL needs to be set");const t=((o=e.url)!=null&&o.startsWith("http")?e.url:(this.opts.url||"")+(e.url||"")).replace(/([^:]\/)\/+/g,"$1"),r=d({"Content-Type":e.body&&!(e.body instanceof FormData)?"application/json":void 0,...g.headers,...this.headers,...e.headers});return fetch(t,{headers:r,method:e.method||(e.body?"POST":"GET"),body:(i=r["Content-Type"])!=null&&i.startsWith("application/json")&&e.body?JSON.stringify(e.body):e.body}).then(async s=>{var E,p;for(let x of[...Object.values(g.interceptors),...Object.values(this.interceptors)])await new Promise(q=>x(s,()=>q()));if(!s.ok)throw new Error(s.statusText);return!e.skipConverting&&((E=s.headers.get("Content-Type"))!=null&&E.startsWith("application/json"))?await s.json():!e.skipConverting&&((p=s.headers.get("Content-Type"))!=null&&p.startsWith("text/plain"))?await s.text():s})}};f(g,"interceptors",{}),f(g,"headers",{});let R=g;function F(n,e){const t=document.createElement("a");t.href=n,t.download=e,document.body.appendChild(t),t.click(),document.body.removeChild(t)}R.addInterceptor((n,e)=>{if(n.status==200)return e();throw n.status==400?new I(n.statusText):n.status==401?new k(n.statusText):n.status==403?new D(n.statusText):n.status==404?new $(n.statusText):n.status==500?new U(n.statusText):new m(n.statusText,n.status)});class m extends Error{constructor(t,r){super(t);f(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()}}f(m,"code",500);class I extends m{constructor(e="Bad Request"){super(e)}static instanceof(e){return e.constructor.code==this.code}}f(I,"code",400);class k extends m{constructor(e="Unauthorized"){super(e)}static instanceof(e){return e.constructor.code==this.code}}f(k,"code",401);class D extends m{constructor(e="Forbidden"){super(e)}static instanceof(e){return e.constructor.code==this.code}}f(D,"code",403);class $ extends m{constructor(e="Not Found"){super(e)}static instanceof(e){return e.constructor.code==this.code}}f($,"code",404);class U extends m{constructor(e="Internal Server Error"){super(e)}static instanceof(e){return e.constructor.code==this.code}}f(U,"code",500);const S={CLEAR:"\x1B[0m",BRIGHT:"\x1B[1m",DIM:"\x1B[2m",UNDERSCORE:"\x1B[4m",BLINK:"\x1B[5m",REVERSE:"\x1B[7m",HIDDEN:"\x1B[8m"},b={BLACK:"\x1B[30m",RED:"\x1B[31m",GREEN:"\x1B[32m",YELLOW:"\x1B[33m",BLUE:"\x1B[34m",MAGENTA:"\x1B[35m",CYAN:"\x1B[36m",LIGHT_GREY:"\x1B[37m",GREY:"\x1B[90m",LIGHT_RED:"\x1B[91m",LIGHT_GREEN:"\x1B[92m",LIGHT_YELLOW:"\x1B[93m",LIGHT_BLUE:"\x1B[94m",LIGHT_MAGENTA:"\x1B[95m",LIGHT_CYAN:"\x1B[96m",WHITE:"\x1B[97m"},et={BLACK:"\x1B[40m",RED:"\x1B[41m",GREEN:"\x1B[42m",YELLOW:"\x1B[43m",BLUE:"\x1B[44m",MAGENTA:"\x1B[45m",CYAN:"\x1B[46m",WHITE:"\x1B[47m",GREY:"\x1B[100m"};var W=(n=>(n[n.ERROR=0]="ERROR",n[n.WARN=1]="WARN",n[n.INFO=2]="INFO",n[n.LOG=3]="LOG",n[n.DEBUG=4]="DEBUG",n))(W||{});const y=class y extends N{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(y.LOG_LEVEL<4)return;const t=this.format(...e);y.emit(4,t),console.debug(b.LIGHT_GREY+t+S.CLEAR)}log(...e){if(y.LOG_LEVEL<3)return;const t=this.format(...e);y.emit(3,t),console.log(S.CLEAR+t)}info(...e){if(y.LOG_LEVEL<2)return;const t=this.format(...e);y.emit(2,t),console.info(b.BLUE+t+S.CLEAR)}warn(...e){if(y.LOG_LEVEL<1)return;const t=this.format(...e);y.emit(1,t),console.warn(b.YELLOW+t+S.CLEAR)}error(...e){if(y.LOG_LEVEL<0)return;const t=this.format(...e);y.emit(0,t),console.error(b.RED+t+S.CLEAR)}};f(y,"LOG_LEVEL",4);let j=y;function nt(n,e){return n.length-n.replaceAll(e,"").length}function rt(n){return Array(n).fill(null).map(()=>Math.round(Math.random()*15).toString(16)).join("")}const G="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",P="0123456789",M="~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/",ot=G+P+M;function it(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 st(n,e,t){return`${n.slice(0,t)}${e}${n.slice(t+1)}`}function ct(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 ut(n,e=ot){return Array(n).fill(null).map(()=>{const t=~~(Math.random()*e.length);return e[t]}).join("")}function at(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=G[~~(Math.random()*G.length)]:t&&i==1?o=P[~~(Math.random()*P.length)]:r&&i==2&&(o=M[~~(Math.random()*M.length)])}while(!o);return o}).join("")}function lt(n,e){if(typeof e=="string"&&(e=new RegExp(e,"g")),!e.global)throw new TypeError("Regular expression must be global.");let t=[],r;for(;(r=e.exec(n))!==null;)t.push(r);return t}function z(n){var e=ht(dt(yt(ft(n),8*n.length)));return e.toLowerCase()}function ht(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 ft(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 dt(n){for(var e="",t=0;t<32*n.length;t+=8)e+=String.fromCharCode(n[t>>5]>>>t%32&255);return e}function yt(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,p=r,x=o,q=i;r=h(r=h(r=h(r=h(r=l(r=l(r=l(r=l(r=a(r=a(r=a(r=a(r=u(r=u(r=u(r=u(r,o=u(o,i=u(i,t=u(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=u(o,i=u(i,t=u(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=u(o,i=u(i,t=u(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=u(o,i=u(i,t=u(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=a(o,i=a(i,t=a(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=a(o,i=a(i,t=a(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=a(o,i=a(i,t=a(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=a(o,i=a(i,t=a(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=l(o,i=l(i,t=l(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=l(o,i=l(i,t=l(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=l(o,i=l(i,t=l(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=l(o,i=l(i,t=l(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=h(o,i=h(i,t=h(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=h(o,i=h(i,t=h(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=h(o,i=h(i,t=h(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=h(o,i=h(i,t=h(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,p),o=w(o,x),i=w(i,q)}return Array(t,r,o,i)}function T(n,e,t,r,o,i){return w(gt(w(w(e,n),w(r,i)),o),t)}function u(n,e,t,r,o,i,s){return T(e&t|~e&r,n,e,o,i,s)}function a(n,e,t,r,o,i,s){return T(e&r|t&~r,n,e,o,i,s)}function l(n,e,t,r,o,i,s){return T(e^t^r,n,e,o,i,s)}function h(n,e,t,r,o,i,s){return T(t^(e|~r),n,e,o,i,s)}function w(n,e){var t=(65535&n)+(65535&e);return(n>>16)+(e>>16)+(t>>16)<<16|65535&t}function gt(n,e){return n<<e|n>>>32-e}function Et(n){return/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/.test(n)}function mt(n){return Object.entries(n).map(([e,t])=>encodeURIComponent(e)+"="+encodeURIComponent(t)).join("&")}function wt(n,e="mp"){return n?`https://www.gravatar.com/avatar/${z(n)}?d=${e}`:""}function Bt(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,p]=s.split("=");i[E]=p}),t.query=i}return t}function At(n){return(n instanceof Date?n.getTime():n)-new Date().getTime()}function Ct(n){return new Promise(e=>setTimeout(e,n))}function St(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=I,c.CliBackground=et,c.CliEffects=S,c.CliForeground=b,c.CustomError=m,c.ForbiddenError=D,c.InternalServerError=U,c.LOG_LEVEL=W,c.Logger=j,c.NotFoundError=$,c.TypedEmitter=N,c.UnauthorizedError=k,c.XHR=R,c.addUnique=K,c.arrayDiff=Z,c.caseInsensitiveSort=Q,c.clean=d,c.countChars=nt,c.createHex=rt,c.deepCopy=B,c.dotNotation=O,c.download=F,c.findByProp=_,c.flattenArr=H,c.flattenObj=v,c.formEncode=mt,c.formatDate=St,c.formatPhoneNumber=it,c.gravatar=wt,c.includes=L,c.insertAt=st,c.isEqual=A,c.makeArray=tt,c.makeUnique=Y,c.matchAll=lt,c.md5=z,c.mixin=J,c.pad=ct,c.randomString=ut,c.randomStringBuilder=at,c.sanitizedJSON=V,c.sleep=Ct,c.sortByProp=X,c.timeUntil=At,c.urlParser=Bt,c.validateEmail=Et,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})});
|
|
2
2
|
//# sourceMappingURL=utils.cjs.map
|
package/dist/utils.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.cjs","sources":["../src/objects.ts","../src/array.ts","../src/aset.ts","../src/emitter.ts","../src/xhr.ts","../src/errors.ts","../src/logger.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 * 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 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","import {clean} from './objects';\r\n\r\nexport type Interceptor = (request: Response, next: () => void) => void;\r\n\r\nexport type RequestOptions = {\r\n\turl?: string;\r\n\tmethod?: 'GET' | 'POST' | 'PATCH' | 'DELETE';\r\n\tbody?: any;\r\n\theaders?: {[key: string | symbol]: string | null | undefined};\r\n\t[key: string]: any;\r\n}\r\n\r\nexport type XhrOptions = {\r\n\theaders?: {[key: string | symbol]: string | null | undefined};\r\n\tinterceptors?: Interceptor[];\r\n\turl?: string;\r\n}\r\n\r\nexport class XHR {\r\n\tprivate static interceptors: {[key: string]: Interceptor} = {};\r\n\r\n\tstatic headers: {[key: string]: string | null | undefined} = {};\r\n\r\n\tprivate interceptors: {[key: string]: Interceptor} = {}\r\n\r\n\theaders: {[key: string]: string | null | undefined} = {}\r\n\r\n\tconstructor(public readonly opts: XhrOptions = {}) {\r\n\t\tthis.headers = opts.headers || {};\r\n\t\tif(opts.interceptors) {\r\n\t\t\topts.interceptors.forEach(i => XHR.addInterceptor(i));\r\n\t\t}\r\n\t}\r\n\r\n\tstatic addInterceptor(fn: Interceptor): () => void {\r\n\t\tconst key = Object.keys(XHR.interceptors).length.toString();\r\n\t\tXHR.interceptors[key] = fn;\r\n\t\treturn () => { XHR.interceptors[key] = <any>null; }\r\n\t}\r\n\r\n\taddInterceptor(fn: Interceptor): () => void {\r\n\t\tconst key = Object.keys(this.interceptors).length.toString();\r\n\t\tthis.interceptors[key] = fn;\r\n\t\treturn () => { this.interceptors[key] = <any>null; }\r\n\t}\r\n\r\n\tasync request<T>(opts: RequestOptions = {}): Promise<T> {\r\n\t\tif(!this.opts.url && !opts.url) throw new Error('URL needs to be set');\r\n\t\tconst url = (opts.url?.startsWith('http') ? opts.url : (this.opts.url || '') + (opts.url || '')).replace(/([^:]\\/)\\/+/g, '$1');\r\n\r\n\t\t// Prep headers\r\n\t\tconst headers = <any>clean({\r\n\t\t\t'Content-Type': (opts.body && !(opts.body instanceof FormData)) ? 'application/json' : undefined,\r\n\t\t\t...XHR.headers,\r\n\t\t\t...this.headers,\r\n\t\t\t...opts.headers\r\n\t\t});\r\n\r\n\t\t// Send request\r\n\t\treturn fetch(url, {\r\n\t\t\theaders,\r\n\t\t\tmethod: opts.method || (opts.body ? 'POST' : 'GET'),\r\n\t\t\tbody: (headers['Content-Type']?.startsWith('application/json') && opts.body) ? JSON.stringify(opts.body) : opts.body\r\n\t\t}).then(async resp => {\r\n\t\t\tfor(let fn of [...Object.values(XHR.interceptors), ...Object.values(this.interceptors)]) {\r\n\t\t\t\tawait new Promise<void>(res => fn(resp, () => res()));\r\n\t\t\t}\r\n\r\n\t\t\tif(!resp.ok) throw new Error(resp.statusText);\r\n\t\t\tif(resp.headers.get('Content-Type')?.startsWith('application/json')) return await resp.json();\r\n\t\t\tif(resp.headers.get('Content-Type')?.startsWith('text/plain')) return await <any>resp.text();\r\n\t\t\treturn resp;\r\n\t\t});\r\n\t}\r\n}\r\n","import {XHR} from './xhr';\r\n\r\nXHR.addInterceptor((resp: Response, next: () => void) => {\r\n\tif(resp.status == 200) return next();\r\n\tif(resp.status == 400) throw new BadRequestError(resp.statusText);\r\n\tif(resp.status == 401) throw new UnauthorizedError(resp.statusText);\r\n\tif(resp.status == 403) throw new ForbiddenError(resp.statusText);\r\n\tif(resp.status == 404) throw new NotFoundError(resp.statusText);\r\n\tif(resp.status == 500) throw new InternalServerError(resp.statusText);\r\n\tthrow new CustomError(resp.statusText, resp.status);\r\n});\r\n\r\nexport class CustomError extends Error {\r\n\tstatic code = 500;\r\n\r\n\tprivate _code?: number;\r\n\tget code(): number { return this._code || (<any>this).constructor.code; }\r\n\tset code(c: number) { this._code = c; }\r\n\r\n\tconstructor(message?: string, code?: number) {\r\n\t\tsuper(message);\r\n\t\tif(code != null) this._code = code;\r\n\t}\r\n\r\n\tstatic from(err: Error): CustomError {\r\n\t\tconst code = Number((<any>err).statusCode) ?? Number((<any>err).code);\r\n\t\tconst newErr = new this(err.message || err.toString());\r\n\t\treturn Object.assign(newErr, {\r\n\t\t\tstack: err.stack,\r\n\t\t\t...err,\r\n\t\t\tcode: code ?? undefined\r\n\t\t});\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code != undefined;\r\n\t}\r\n\r\n\ttoString() {\r\n\t\treturn this.message || super.toString();\r\n\t}\r\n}\r\n\r\nexport class BadRequestError extends CustomError {\r\n\tstatic code = 400;\r\n\r\n\tconstructor(message: string = 'Bad Request') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class UnauthorizedError extends CustomError {\r\n\tstatic code = 401;\r\n\r\n\tconstructor(message: string = 'Unauthorized') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class ForbiddenError extends CustomError {\r\n\tstatic code = 403;\r\n\r\n\tconstructor(message: string = 'Forbidden') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class NotFoundError extends CustomError {\r\n\tstatic code = 404;\r\n\r\n\tconstructor(message: string = 'Not Found') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class InternalServerError extends CustomError {\r\n\tstatic code = 500;\r\n\r\n\tconstructor(message: string = 'Internal Server Error') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n","import {TypedEmitter, TypedEvents} from './emitter';\r\n\r\nexport const CliEffects = {\r\n\tCLEAR: \"\\x1b[0m\",\r\n\tBRIGHT: \"\\x1b[1m\",\r\n\tDIM: \"\\x1b[2m\",\r\n\tUNDERSCORE: \"\\x1b[4m\",\r\n\tBLINK: \"\\x1b[5m\",\r\n\tREVERSE: \"\\x1b[7m\",\r\n\tHIDDEN: \"\\x1b[8m\",\r\n}\r\n\r\nexport const CliForeground = {\r\n\tBLACK: '\\x1b[30m',\r\n\tRED: '\\x1b[31m',\r\n\tGREEN: '\\x1b[32m',\r\n\tYELLOW: '\\x1b[33m',\r\n\tBLUE: '\\x1b[34m',\r\n\tMAGENTA: '\\x1b[35m',\r\n\tCYAN: '\\x1b[36m',\r\n\tLIGHT_GREY: '\\x1b[37m',\r\n\tGREY: '\\x1b[90m',\r\n\tLIGHT_RED: '\\x1b[91m',\r\n\tLIGHT_GREEN: '\\x1b[92m',\r\n\tLIGHT_YELLOW: '\\x1b[93m',\r\n\tLIGHT_BLUE: '\\x1b[94m',\r\n\tLIGHT_MAGENTA: '\\x1b[95m',\r\n\tLIGHT_CYAN: '\\x1b[96m',\r\n\tWHITE: '\\x1b[97m',\r\n}\r\n\r\nexport const CliBackground = {\r\n\tBLACK: \"\\x1b[40m\",\r\n\tRED: \"\\x1b[41m\",\r\n\tGREEN: \"\\x1b[42m\",\r\n\tYELLOW: \"\\x1b[43m\",\r\n\tBLUE: \"\\x1b[44m\",\r\n\tMAGENTA: \"\\x1b[45m\",\r\n\tCYAN: \"\\x1b[46m\",\r\n\tWHITE: \"\\x1b[47m\",\r\n\tGREY: \"\\x1b[100m\",\r\n}\r\n\r\nexport enum LOG_LEVEL {\r\n\tERROR = 0,\r\n\tWARN = 1,\r\n\tINFO = 2,\r\n\tLOG = 3,\r\n\tDEBUG = 4,\r\n}\r\n\r\nexport type LoggerEvents = TypedEvents & {\r\n\t'ERROR': (...args: any[]) => any;\r\n\t'WARN': (...args: any[]) => any;\r\n\t'INFO': (...args: any[]) => any;\r\n\t'LOG': (...args: any[]) => any;\r\n\t'DEBUG': (...args: any[]) => any;\r\n};\r\n\r\nexport class Logger extends TypedEmitter<LoggerEvents> {\r\n\tstatic LOG_LEVEL: LOG_LEVEL = LOG_LEVEL.DEBUG;\r\n\r\n\tconstructor(public readonly namespace?: string) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tprivate pad(text: any, length: number, char: string, end = false) {\r\n\t\tconst t = text.toString();\r\n\t\tconst l = length - t.length;\r\n\t\tif(l <= 0) return t;\r\n\t\tconst padding = Array(~~(l / char.length)).fill(char).join('');\r\n\t\treturn !end ? padding + t : t + padding;\r\n\t}\r\n\r\n\tprivate format(...text: string[]): string {\r\n\t\tconst now = new Date();\r\n\t\tconst timestamp = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()} ${this.pad(now.getHours().toString(), 2, '0')}:${this.pad(now.getMinutes().toString(), 2, '0')}:${this.pad(now.getSeconds().toString(), 2, '0')}.${this.pad(now.getMilliseconds().toString(), 3, '0', true)}`;\r\n\t\treturn `${timestamp}${this.namespace ? ` [${this.namespace}]` : ''} ${text.join(' ')}`;\r\n\t}\r\n\r\n\tdebug(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.DEBUG) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.DEBUG, str);\r\n\t\tconsole.debug(CliForeground.LIGHT_GREY + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\tlog(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.LOG) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.LOG, str);\r\n\t\tconsole.log(CliEffects.CLEAR + str);\r\n\t}\r\n\r\n\tinfo(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.INFO) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.INFO, str);\r\n\t\tconsole.info(CliForeground.BLUE + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\twarn(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.WARN) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.WARN, str);\r\n\t\tconsole.warn(CliForeground.YELLOW + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\terror(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.ERROR) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.ERROR, str);\r\n\t\tconsole.error(CliForeground.RED + str + CliEffects.CLEAR);\r\n\t}\r\n}\r\n","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","dotNotation","prop","set","arr","flattenObj","parent","result","propName","includes","target","values","allowMissing","e","type","isEqual","a","b","ta","tb","mixin","constructors","c","name","sanitizedJSON","space","cache","addUnique","array","el","arrayDiff","makeUnique","v1","v2","caseInsensitiveSort","aVal","bVal","flattenArr","sortByProp","reverse","findByProp","v","i","n","makeArray","ASet","elements","index","acc","TypedEmitter","__publicField","event","args","l","listener","_a","res","unsubscribe","_XHR","opts","fn","url","headers","_b","resp","XHR","next","BadRequestError","UnauthorizedError","ForbiddenError","NotFoundError","InternalServerError","CustomError","message","code","err","newErr","CliEffects","CliForeground","CliBackground","LOG_LEVEL","_Logger","namespace","text","length","char","end","t","padding","now","str","Logger","countChars","pattern","createHex","LETTER_LIST","NUMBER_LIST","SYMBOL_LIST","CHAR_LIST","formatPhoneNumber","number","parts","insertAt","pad","start","randomString","pool","randomStringBuilder","letters","numbers","symbols","matchAll","regex","ret","match","md5","d","r","M","V","Y","X","_","m","f","h","g","md5_ii","md5_hh","md5_gg","md5_ff","safe_add","md5_cmn","bit_rol","validateEmail","email","formEncode","data","gravatar","def","urlParser","processed","groups","domains","split","query","q","val","timeUntil","date","sleep","ms","formatDate"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.cjs","sources":["../src/objects.ts","../src/array.ts","../src/aset.ts","../src/emitter.ts","../src/xhr.ts","../src/errors.ts","../src/logger.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 * 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 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","import {clean} from './objects';\r\n\r\nexport type Interceptor = (request: Response, next: () => void) => void;\r\n\r\nexport type RequestOptions = {\r\n\turl?: string;\r\n\tmethod?: 'GET' | 'POST' | 'PATCH' | 'DELETE';\r\n\tbody?: any;\r\n\theaders?: {[key: string | symbol]: string | null | undefined};\r\n\tskipConverting?: boolean;\r\n\t[key: string]: any;\r\n}\r\n\r\nexport type XhrOptions = {\r\n\theaders?: {[key: string | symbol]: string | null | undefined};\r\n\tinterceptors?: Interceptor[];\r\n\turl?: string;\r\n}\r\n\r\nexport class XHR {\r\n\tprivate static interceptors: {[key: string]: Interceptor} = {};\r\n\r\n\tstatic headers: {[key: string]: string | null | undefined} = {};\r\n\r\n\tprivate interceptors: {[key: string]: Interceptor} = {}\r\n\r\n\theaders: {[key: string]: string | null | undefined} = {}\r\n\r\n\tconstructor(public readonly opts: XhrOptions = {}) {\r\n\t\tthis.headers = opts.headers || {};\r\n\t\tif(opts.interceptors) {\r\n\t\t\topts.interceptors.forEach(i => XHR.addInterceptor(i));\r\n\t\t}\r\n\t}\r\n\r\n\tstatic addInterceptor(fn: Interceptor): () => void {\r\n\t\tconst key = Object.keys(XHR.interceptors).length.toString();\r\n\t\tXHR.interceptors[key] = fn;\r\n\t\treturn () => { XHR.interceptors[key] = <any>null; }\r\n\t}\r\n\r\n\taddInterceptor(fn: Interceptor): () => void {\r\n\t\tconst key = Object.keys(this.interceptors).length.toString();\r\n\t\tthis.interceptors[key] = fn;\r\n\t\treturn () => { this.interceptors[key] = <any>null; }\r\n\t}\r\n\r\n\tdownload(opts: RequestOptions & {url: string}) {\r\n\t\tthis.request<Response>({...opts, skipConverting: true}).then(async resp => {\r\n\t\t\tconst blob = await resp.blob();\r\n\t\t\tdownload(URL.createObjectURL(blob), <string>opts.url.split('/').pop());\r\n\t\t\tURL.revokeObjectURL(opts.url);\r\n\t\t});\r\n\t}\r\n\r\n\tasync request<T>(opts: RequestOptions = {}): Promise<T> {\r\n\t\tif(!this.opts.url && !opts.url) throw new Error('URL needs to be set');\r\n\t\tconst url = (opts.url?.startsWith('http') ? opts.url : (this.opts.url || '') + (opts.url || '')).replace(/([^:]\\/)\\/+/g, '$1');\r\n\r\n\t\t// Prep headers\r\n\t\tconst headers = <any>clean({\r\n\t\t\t'Content-Type': (opts.body && !(opts.body instanceof FormData)) ? 'application/json' : undefined,\r\n\t\t\t...XHR.headers,\r\n\t\t\t...this.headers,\r\n\t\t\t...opts.headers\r\n\t\t});\r\n\r\n\t\t// Send request\r\n\t\treturn fetch(url, {\r\n\t\t\theaders,\r\n\t\t\tmethod: opts.method || (opts.body ? 'POST' : 'GET'),\r\n\t\t\tbody: (headers['Content-Type']?.startsWith('application/json') && opts.body) ? JSON.stringify(opts.body) : opts.body\r\n\t\t}).then(async resp => {\r\n\t\t\tfor(let fn of [...Object.values(XHR.interceptors), ...Object.values(this.interceptors)]) {\r\n\t\t\t\tawait new Promise<void>(res => fn(resp, () => res()));\r\n\t\t\t}\r\n\r\n\t\t\tif(!resp.ok) throw new Error(resp.statusText);\r\n\t\t\tif(!opts.skipConverting && resp.headers.get('Content-Type')?.startsWith('application/json')) return await resp.json();\r\n\t\t\tif(!opts.skipConverting && resp.headers.get('Content-Type')?.startsWith('text/plain')) return await <any>resp.text();\r\n\t\t\treturn resp;\r\n\t\t});\r\n\t}\r\n}\r\n\r\nexport function download(href: any, name: string) {\r\n\tconst a = document.createElement('a');\r\n\ta.href = href;\r\n\ta.download = name;\r\n\tdocument.body.appendChild(a);\r\n\ta.click();\r\n\tdocument.body.removeChild(a);\r\n}\r\n","import {XHR} from './xhr';\r\n\r\nXHR.addInterceptor((resp: Response, next: () => void) => {\r\n\tif(resp.status == 200) return next();\r\n\tif(resp.status == 400) throw new BadRequestError(resp.statusText);\r\n\tif(resp.status == 401) throw new UnauthorizedError(resp.statusText);\r\n\tif(resp.status == 403) throw new ForbiddenError(resp.statusText);\r\n\tif(resp.status == 404) throw new NotFoundError(resp.statusText);\r\n\tif(resp.status == 500) throw new InternalServerError(resp.statusText);\r\n\tthrow new CustomError(resp.statusText, resp.status);\r\n});\r\n\r\nexport class CustomError extends Error {\r\n\tstatic code = 500;\r\n\r\n\tprivate _code?: number;\r\n\tget code(): number { return this._code || (<any>this).constructor.code; }\r\n\tset code(c: number) { this._code = c; }\r\n\r\n\tconstructor(message?: string, code?: number) {\r\n\t\tsuper(message);\r\n\t\tif(code != null) this._code = code;\r\n\t}\r\n\r\n\tstatic from(err: Error): CustomError {\r\n\t\tconst code = Number((<any>err).statusCode) ?? Number((<any>err).code);\r\n\t\tconst newErr = new this(err.message || err.toString());\r\n\t\treturn Object.assign(newErr, {\r\n\t\t\tstack: err.stack,\r\n\t\t\t...err,\r\n\t\t\tcode: code ?? undefined\r\n\t\t});\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code != undefined;\r\n\t}\r\n\r\n\ttoString() {\r\n\t\treturn this.message || super.toString();\r\n\t}\r\n}\r\n\r\nexport class BadRequestError extends CustomError {\r\n\tstatic code = 400;\r\n\r\n\tconstructor(message: string = 'Bad Request') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class UnauthorizedError extends CustomError {\r\n\tstatic code = 401;\r\n\r\n\tconstructor(message: string = 'Unauthorized') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class ForbiddenError extends CustomError {\r\n\tstatic code = 403;\r\n\r\n\tconstructor(message: string = 'Forbidden') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class NotFoundError extends CustomError {\r\n\tstatic code = 404;\r\n\r\n\tconstructor(message: string = 'Not Found') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class InternalServerError extends CustomError {\r\n\tstatic code = 500;\r\n\r\n\tconstructor(message: string = 'Internal Server Error') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n","import {TypedEmitter, TypedEvents} from './emitter';\r\n\r\nexport const CliEffects = {\r\n\tCLEAR: \"\\x1b[0m\",\r\n\tBRIGHT: \"\\x1b[1m\",\r\n\tDIM: \"\\x1b[2m\",\r\n\tUNDERSCORE: \"\\x1b[4m\",\r\n\tBLINK: \"\\x1b[5m\",\r\n\tREVERSE: \"\\x1b[7m\",\r\n\tHIDDEN: \"\\x1b[8m\",\r\n}\r\n\r\nexport const CliForeground = {\r\n\tBLACK: '\\x1b[30m',\r\n\tRED: '\\x1b[31m',\r\n\tGREEN: '\\x1b[32m',\r\n\tYELLOW: '\\x1b[33m',\r\n\tBLUE: '\\x1b[34m',\r\n\tMAGENTA: '\\x1b[35m',\r\n\tCYAN: '\\x1b[36m',\r\n\tLIGHT_GREY: '\\x1b[37m',\r\n\tGREY: '\\x1b[90m',\r\n\tLIGHT_RED: '\\x1b[91m',\r\n\tLIGHT_GREEN: '\\x1b[92m',\r\n\tLIGHT_YELLOW: '\\x1b[93m',\r\n\tLIGHT_BLUE: '\\x1b[94m',\r\n\tLIGHT_MAGENTA: '\\x1b[95m',\r\n\tLIGHT_CYAN: '\\x1b[96m',\r\n\tWHITE: '\\x1b[97m',\r\n}\r\n\r\nexport const CliBackground = {\r\n\tBLACK: \"\\x1b[40m\",\r\n\tRED: \"\\x1b[41m\",\r\n\tGREEN: \"\\x1b[42m\",\r\n\tYELLOW: \"\\x1b[43m\",\r\n\tBLUE: \"\\x1b[44m\",\r\n\tMAGENTA: \"\\x1b[45m\",\r\n\tCYAN: \"\\x1b[46m\",\r\n\tWHITE: \"\\x1b[47m\",\r\n\tGREY: \"\\x1b[100m\",\r\n}\r\n\r\nexport enum LOG_LEVEL {\r\n\tERROR = 0,\r\n\tWARN = 1,\r\n\tINFO = 2,\r\n\tLOG = 3,\r\n\tDEBUG = 4,\r\n}\r\n\r\nexport type LoggerEvents = TypedEvents & {\r\n\t'ERROR': (...args: any[]) => any;\r\n\t'WARN': (...args: any[]) => any;\r\n\t'INFO': (...args: any[]) => any;\r\n\t'LOG': (...args: any[]) => any;\r\n\t'DEBUG': (...args: any[]) => any;\r\n};\r\n\r\nexport class Logger extends TypedEmitter<LoggerEvents> {\r\n\tstatic LOG_LEVEL: LOG_LEVEL = LOG_LEVEL.DEBUG;\r\n\r\n\tconstructor(public readonly namespace?: string) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tprivate pad(text: any, length: number, char: string, end = false) {\r\n\t\tconst t = text.toString();\r\n\t\tconst l = length - t.length;\r\n\t\tif(l <= 0) return t;\r\n\t\tconst padding = Array(~~(l / char.length)).fill(char).join('');\r\n\t\treturn !end ? padding + t : t + padding;\r\n\t}\r\n\r\n\tprivate format(...text: string[]): string {\r\n\t\tconst now = new Date();\r\n\t\tconst timestamp = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()} ${this.pad(now.getHours().toString(), 2, '0')}:${this.pad(now.getMinutes().toString(), 2, '0')}:${this.pad(now.getSeconds().toString(), 2, '0')}.${this.pad(now.getMilliseconds().toString(), 3, '0', true)}`;\r\n\t\treturn `${timestamp}${this.namespace ? ` [${this.namespace}]` : ''} ${text.join(' ')}`;\r\n\t}\r\n\r\n\tdebug(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.DEBUG) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.DEBUG, str);\r\n\t\tconsole.debug(CliForeground.LIGHT_GREY + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\tlog(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.LOG) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.LOG, str);\r\n\t\tconsole.log(CliEffects.CLEAR + str);\r\n\t}\r\n\r\n\tinfo(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.INFO) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.INFO, str);\r\n\t\tconsole.info(CliForeground.BLUE + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\twarn(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.WARN) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.WARN, str);\r\n\t\tconsole.warn(CliForeground.YELLOW + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\terror(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.ERROR) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.ERROR, str);\r\n\t\tconsole.error(CliForeground.RED + str + CliEffects.CLEAR);\r\n\t}\r\n}\r\n","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","dotNotation","prop","set","arr","flattenObj","parent","result","propName","includes","target","values","allowMissing","e","type","isEqual","a","b","ta","tb","mixin","constructors","c","name","sanitizedJSON","space","cache","addUnique","array","el","arrayDiff","makeUnique","v1","v2","caseInsensitiveSort","aVal","bVal","flattenArr","sortByProp","reverse","findByProp","v","i","n","makeArray","ASet","elements","index","acc","TypedEmitter","__publicField","event","args","l","listener","_a","res","unsubscribe","_XHR","opts","fn","resp","blob","download","url","headers","_b","XHR","href","next","BadRequestError","UnauthorizedError","ForbiddenError","NotFoundError","InternalServerError","CustomError","message","code","err","newErr","CliEffects","CliForeground","CliBackground","LOG_LEVEL","_Logger","namespace","text","length","char","end","t","padding","now","str","Logger","countChars","pattern","createHex","LETTER_LIST","NUMBER_LIST","SYMBOL_LIST","CHAR_LIST","formatPhoneNumber","number","parts","insertAt","pad","start","randomString","pool","randomStringBuilder","letters","numbers","symbols","matchAll","regex","ret","match","md5","d","r","M","V","Y","X","_","m","f","h","g","md5_ii","md5_hh","md5_gg","md5_ff","safe_add","md5_cmn","bit_rol","validateEmail","email","formEncode","data","gravatar","def","urlParser","processed","groups","domains","split","query","q","val","timeUntil","date","sleep","ms","formatDate"],"mappings":"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"}
|
package/dist/utils.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var
|
|
2
|
-
var Y = (n, e, t) => e in n ?
|
|
1
|
+
var M = Object.defineProperty;
|
|
2
|
+
var Y = (n, e, t) => e in n ? M(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t;
|
|
3
3
|
var l = (n, e, t) => (Y(n, typeof e != "symbol" ? e + "" : e, t), t);
|
|
4
4
|
function P(n, e = !1) {
|
|
5
5
|
if (n == null)
|
|
@@ -8,10 +8,10 @@ function P(n, e = !1) {
|
|
|
8
8
|
(e && r === void 0 || !e && r == null) && delete n[t];
|
|
9
9
|
}), n;
|
|
10
10
|
}
|
|
11
|
-
function
|
|
11
|
+
function tt(n) {
|
|
12
12
|
return JSON.parse(JSON.stringify(n));
|
|
13
13
|
}
|
|
14
|
-
function
|
|
14
|
+
function A(n, e, t) {
|
|
15
15
|
if (!(n == null || !e))
|
|
16
16
|
return e.split(/[.[\]]/g).filter((r) => r.length).reduce((r, o, s, i) => {
|
|
17
17
|
if ((o[0] == '"' || o[0] == "'") && (o = o.slice(1, -1)), !(r != null && r.hasOwnProperty(o))) {
|
|
@@ -31,19 +31,19 @@ function H(n, e, t = {}) {
|
|
|
31
31
|
return t;
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
|
-
function
|
|
34
|
+
function N(n, e, t = !1) {
|
|
35
35
|
if (n == null)
|
|
36
36
|
return t;
|
|
37
37
|
if (Array.isArray(e))
|
|
38
|
-
return e.findIndex((o, s) => !
|
|
38
|
+
return e.findIndex((o, s) => !N(n[s], e[s], t)) == -1;
|
|
39
39
|
const r = typeof e;
|
|
40
|
-
return r != typeof n ? !1 : r == "object" ? Object.keys(e).find((o) => !
|
|
40
|
+
return r != typeof n ? !1 : r == "object" ? Object.keys(e).find((o) => !N(n[o], e[o], t)) == null : r == "function" ? n.toString() == e.toString() : n == e;
|
|
41
41
|
}
|
|
42
42
|
function B(n, e) {
|
|
43
43
|
const t = typeof n, r = typeof e;
|
|
44
44
|
return t != "object" || n == null || r != "object" || e == null ? t == "function" && r == "function" ? n.toString() == e.toString() : n === e : Object.keys(n).length != Object.keys(e).length ? !1 : Object.keys(n).every((s) => B(n[s], e[s]));
|
|
45
45
|
}
|
|
46
|
-
function
|
|
46
|
+
function et(n, e) {
|
|
47
47
|
e.forEach((t) => {
|
|
48
48
|
Object.getOwnPropertyNames(t.prototype).forEach((r) => {
|
|
49
49
|
Object.defineProperty(
|
|
@@ -54,7 +54,7 @@ function tt(n, e) {
|
|
|
54
54
|
});
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
|
-
function
|
|
57
|
+
function nt(n, e) {
|
|
58
58
|
let t = [];
|
|
59
59
|
return JSON.parse(JSON.stringify(n, (r, o) => {
|
|
60
60
|
if (typeof o == "object" && o !== null) {
|
|
@@ -65,31 +65,31 @@ function et(n, e) {
|
|
|
65
65
|
return o;
|
|
66
66
|
}, e));
|
|
67
67
|
}
|
|
68
|
-
function
|
|
68
|
+
function rt(n, e) {
|
|
69
69
|
return n.indexOf(e) === -1 && n.push(e), n;
|
|
70
70
|
}
|
|
71
|
-
function
|
|
71
|
+
function ot(n, e) {
|
|
72
72
|
return q([
|
|
73
73
|
...n.filter((t) => !e.includes((r) => B(t, r))),
|
|
74
74
|
...e.filter((t) => !n.includes((r) => B(t, r)))
|
|
75
75
|
]);
|
|
76
76
|
}
|
|
77
|
-
function
|
|
77
|
+
function st(n) {
|
|
78
78
|
return function(e, t) {
|
|
79
|
-
const r =
|
|
79
|
+
const r = A(e, n), o = A(t, n);
|
|
80
80
|
return typeof r != "string" || typeof o != "string" ? 1 : r.toLowerCase().localeCompare(o.toLowerCase());
|
|
81
81
|
};
|
|
82
82
|
}
|
|
83
83
|
function W(n, e = []) {
|
|
84
84
|
return n.forEach((t) => Array.isArray(t) ? W(t, e) : e.push(t)), e;
|
|
85
85
|
}
|
|
86
|
-
function
|
|
86
|
+
function it(n, e = !1) {
|
|
87
87
|
return function(t, r) {
|
|
88
|
-
const o =
|
|
88
|
+
const o = A(t, n), s = A(r, n);
|
|
89
89
|
return typeof o == "number" && typeof s == "number" ? (e ? -1 : 1) * (o - s) : o > s ? e ? -1 : 1 : o < s ? e ? 1 : -1 : 0;
|
|
90
90
|
};
|
|
91
91
|
}
|
|
92
|
-
function
|
|
92
|
+
function ct(n, e) {
|
|
93
93
|
return (t) => B(t[n], e);
|
|
94
94
|
}
|
|
95
95
|
function q(n) {
|
|
@@ -97,10 +97,10 @@ function q(n) {
|
|
|
97
97
|
n.slice(0, e).find((t) => B(t, n[e])) && n.splice(e, 1);
|
|
98
98
|
return n;
|
|
99
99
|
}
|
|
100
|
-
function
|
|
100
|
+
function ut(n) {
|
|
101
101
|
return Array.isArray(n) ? n : [n];
|
|
102
102
|
}
|
|
103
|
-
class
|
|
103
|
+
class x extends Array {
|
|
104
104
|
get size() {
|
|
105
105
|
return this.length;
|
|
106
106
|
}
|
|
@@ -115,13 +115,13 @@ class w extends Array {
|
|
|
115
115
|
t != -1 && this.slice(t, 1);
|
|
116
116
|
}
|
|
117
117
|
difference(e) {
|
|
118
|
-
return new
|
|
118
|
+
return new x(this.reduce((t, r) => (e.has(r) || t.push(r), t), []));
|
|
119
119
|
}
|
|
120
120
|
has(e) {
|
|
121
121
|
return this.indexOf(e) != -1;
|
|
122
122
|
}
|
|
123
123
|
intersection(e) {
|
|
124
|
-
return new
|
|
124
|
+
return new x(this.reduce((t, r) => (e.has(r) && t.push(r), t), []));
|
|
125
125
|
}
|
|
126
126
|
isDisjointFrom(e) {
|
|
127
127
|
return this.intersection(e).size == 0;
|
|
@@ -133,10 +133,10 @@ class w extends Array {
|
|
|
133
133
|
return e.findIndex((t) => !this.has(t)) == -1;
|
|
134
134
|
}
|
|
135
135
|
symmetricDifference(e) {
|
|
136
|
-
return new
|
|
136
|
+
return new x([...this.difference(e), ...e.difference(this)]);
|
|
137
137
|
}
|
|
138
138
|
union(e) {
|
|
139
|
-
return new
|
|
139
|
+
return new x([...this, ...e]);
|
|
140
140
|
}
|
|
141
141
|
}
|
|
142
142
|
class $ {
|
|
@@ -199,6 +199,12 @@ const d = class d {
|
|
|
199
199
|
this.interceptors[t] = null;
|
|
200
200
|
};
|
|
201
201
|
}
|
|
202
|
+
download(e) {
|
|
203
|
+
this.request({ ...e, skipConverting: !0 }).then(async (t) => {
|
|
204
|
+
const r = await t.blob();
|
|
205
|
+
v(URL.createObjectURL(r), e.url.split("/").pop()), URL.revokeObjectURL(e.url);
|
|
206
|
+
});
|
|
207
|
+
}
|
|
202
208
|
async request(e = {}) {
|
|
203
209
|
var o, s;
|
|
204
210
|
if (!this.opts.url && !e.url)
|
|
@@ -215,20 +221,24 @@ const d = class d {
|
|
|
215
221
|
body: (s = r["Content-Type"]) != null && s.startsWith("application/json") && e.body ? JSON.stringify(e.body) : e.body
|
|
216
222
|
}).then(async (i) => {
|
|
217
223
|
var y, E;
|
|
218
|
-
for (let
|
|
219
|
-
await new Promise((
|
|
224
|
+
for (let R of [...Object.values(d.interceptors), ...Object.values(this.interceptors)])
|
|
225
|
+
await new Promise((C) => R(i, () => C()));
|
|
220
226
|
if (!i.ok)
|
|
221
227
|
throw new Error(i.statusText);
|
|
222
|
-
return (y = i.headers.get("Content-Type")) != null && y.startsWith("application/json") ? await i.json() : (E = i.headers.get("Content-Type")) != null && E.startsWith("text/plain") ? await i.text() : i;
|
|
228
|
+
return !e.skipConverting && ((y = i.headers.get("Content-Type")) != null && y.startsWith("application/json")) ? await i.json() : !e.skipConverting && ((E = i.headers.get("Content-Type")) != null && E.startsWith("text/plain")) ? await i.text() : i;
|
|
223
229
|
});
|
|
224
230
|
}
|
|
225
231
|
};
|
|
226
232
|
l(d, "interceptors", {}), l(d, "headers", {});
|
|
227
|
-
let
|
|
228
|
-
|
|
233
|
+
let b = d;
|
|
234
|
+
function v(n, e) {
|
|
235
|
+
const t = document.createElement("a");
|
|
236
|
+
t.href = n, t.download = e, document.body.appendChild(t), t.click(), document.body.removeChild(t);
|
|
237
|
+
}
|
|
238
|
+
b.addInterceptor((n, e) => {
|
|
229
239
|
if (n.status == 200)
|
|
230
240
|
return e();
|
|
231
|
-
throw n.status == 400 ? new
|
|
241
|
+
throw n.status == 400 ? new k(n.statusText) : n.status == 401 ? new D(n.statusText) : n.status == 403 ? new G(n.statusText) : n.status == 404 ? new j(n.statusText) : n.status == 500 ? new U(n.statusText) : new p(n.statusText, n.status);
|
|
232
242
|
});
|
|
233
243
|
class p extends Error {
|
|
234
244
|
constructor(t, r) {
|
|
@@ -258,7 +268,7 @@ class p extends Error {
|
|
|
258
268
|
}
|
|
259
269
|
}
|
|
260
270
|
l(p, "code", 500);
|
|
261
|
-
class
|
|
271
|
+
class k extends p {
|
|
262
272
|
constructor(e = "Bad Request") {
|
|
263
273
|
super(e);
|
|
264
274
|
}
|
|
@@ -266,8 +276,8 @@ class D extends p {
|
|
|
266
276
|
return e.constructor.code == this.code;
|
|
267
277
|
}
|
|
268
278
|
}
|
|
269
|
-
l(
|
|
270
|
-
class
|
|
279
|
+
l(k, "code", 400);
|
|
280
|
+
class D extends p {
|
|
271
281
|
constructor(e = "Unauthorized") {
|
|
272
282
|
super(e);
|
|
273
283
|
}
|
|
@@ -275,8 +285,8 @@ class G extends p {
|
|
|
275
285
|
return e.constructor.code == this.code;
|
|
276
286
|
}
|
|
277
287
|
}
|
|
278
|
-
l(
|
|
279
|
-
class
|
|
288
|
+
l(D, "code", 401);
|
|
289
|
+
class G extends p {
|
|
280
290
|
constructor(e = "Forbidden") {
|
|
281
291
|
super(e);
|
|
282
292
|
}
|
|
@@ -284,7 +294,7 @@ class k extends p {
|
|
|
284
294
|
return e.constructor.code == this.code;
|
|
285
295
|
}
|
|
286
296
|
}
|
|
287
|
-
l(
|
|
297
|
+
l(G, "code", 403);
|
|
288
298
|
class j extends p {
|
|
289
299
|
constructor(e = "Not Found") {
|
|
290
300
|
super(e);
|
|
@@ -294,7 +304,7 @@ class j extends p {
|
|
|
294
304
|
}
|
|
295
305
|
}
|
|
296
306
|
l(j, "code", 404);
|
|
297
|
-
class
|
|
307
|
+
class U extends p {
|
|
298
308
|
constructor(e = "Internal Server Error") {
|
|
299
309
|
super(e);
|
|
300
310
|
}
|
|
@@ -302,8 +312,8 @@ class M extends p {
|
|
|
302
312
|
return e.constructor.code == this.code;
|
|
303
313
|
}
|
|
304
314
|
}
|
|
305
|
-
l(
|
|
306
|
-
const
|
|
315
|
+
l(U, "code", 500);
|
|
316
|
+
const w = {
|
|
307
317
|
CLEAR: "\x1B[0m",
|
|
308
318
|
BRIGHT: "\x1B[1m",
|
|
309
319
|
DIM: "\x1B[2m",
|
|
@@ -311,7 +321,7 @@ const x = {
|
|
|
311
321
|
BLINK: "\x1B[5m",
|
|
312
322
|
REVERSE: "\x1B[7m",
|
|
313
323
|
HIDDEN: "\x1B[8m"
|
|
314
|
-
},
|
|
324
|
+
}, m = {
|
|
315
325
|
BLACK: "\x1B[30m",
|
|
316
326
|
RED: "\x1B[31m",
|
|
317
327
|
GREEN: "\x1B[32m",
|
|
@@ -328,7 +338,7 @@ const x = {
|
|
|
328
338
|
LIGHT_MAGENTA: "\x1B[95m",
|
|
329
339
|
LIGHT_CYAN: "\x1B[96m",
|
|
330
340
|
WHITE: "\x1B[97m"
|
|
331
|
-
},
|
|
341
|
+
}, at = {
|
|
332
342
|
BLACK: "\x1B[40m",
|
|
333
343
|
RED: "\x1B[41m",
|
|
334
344
|
GREEN: "\x1B[42m",
|
|
@@ -359,77 +369,77 @@ const f = class f extends $ {
|
|
|
359
369
|
if (f.LOG_LEVEL < 4)
|
|
360
370
|
return;
|
|
361
371
|
const t = this.format(...e);
|
|
362
|
-
f.emit(4, t), console.debug(
|
|
372
|
+
f.emit(4, t), console.debug(m.LIGHT_GREY + t + w.CLEAR);
|
|
363
373
|
}
|
|
364
374
|
log(...e) {
|
|
365
375
|
if (f.LOG_LEVEL < 3)
|
|
366
376
|
return;
|
|
367
377
|
const t = this.format(...e);
|
|
368
|
-
f.emit(3, t), console.log(
|
|
378
|
+
f.emit(3, t), console.log(w.CLEAR + t);
|
|
369
379
|
}
|
|
370
380
|
info(...e) {
|
|
371
381
|
if (f.LOG_LEVEL < 2)
|
|
372
382
|
return;
|
|
373
383
|
const t = this.format(...e);
|
|
374
|
-
f.emit(2, t), console.info(
|
|
384
|
+
f.emit(2, t), console.info(m.BLUE + t + w.CLEAR);
|
|
375
385
|
}
|
|
376
386
|
warn(...e) {
|
|
377
387
|
if (f.LOG_LEVEL < 1)
|
|
378
388
|
return;
|
|
379
389
|
const t = this.format(...e);
|
|
380
|
-
f.emit(1, t), console.warn(
|
|
390
|
+
f.emit(1, t), console.warn(m.YELLOW + t + w.CLEAR);
|
|
381
391
|
}
|
|
382
392
|
error(...e) {
|
|
383
393
|
if (f.LOG_LEVEL < 0)
|
|
384
394
|
return;
|
|
385
395
|
const t = this.format(...e);
|
|
386
|
-
f.emit(0, t), console.error(
|
|
396
|
+
f.emit(0, t), console.error(m.RED + t + w.CLEAR);
|
|
387
397
|
}
|
|
388
398
|
};
|
|
389
399
|
l(f, "LOG_LEVEL", 4);
|
|
390
|
-
let
|
|
391
|
-
function
|
|
400
|
+
let I = f;
|
|
401
|
+
function ht(n, e) {
|
|
392
402
|
return n.length - n.replaceAll(e, "").length;
|
|
393
403
|
}
|
|
394
|
-
function
|
|
404
|
+
function lt(n) {
|
|
395
405
|
return Array(n).fill(null).map(() => Math.round(Math.random() * 15).toString(16)).join("");
|
|
396
406
|
}
|
|
397
|
-
const
|
|
398
|
-
function
|
|
407
|
+
const S = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", T = "0123456789", L = "~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/", z = S + T + L;
|
|
408
|
+
function ft(n) {
|
|
399
409
|
const e = /(\+?1)?.*?(\d{3}).*?(\d{3}).*?(\d{4})/g.exec(n);
|
|
400
410
|
if (!e)
|
|
401
411
|
throw new Error(`Number cannot be parsed: ${n}`);
|
|
402
412
|
return `${e[1] ?? ""} (${e[2]}) ${e[3]}-${e[4]}`.trim();
|
|
403
413
|
}
|
|
404
|
-
function
|
|
414
|
+
function dt(n, e, t) {
|
|
405
415
|
return `${n.slice(0, t)}${e}${n.slice(t + 1)}`;
|
|
406
416
|
}
|
|
407
|
-
function
|
|
417
|
+
function yt(n, e, t, r = !0) {
|
|
408
418
|
const o = n.toString(), s = e - o.length;
|
|
409
419
|
if (s <= 0)
|
|
410
420
|
return o;
|
|
411
421
|
const i = Array(~~(s / t.length)).fill(t).join("");
|
|
412
422
|
return r ? i + o : o + i;
|
|
413
423
|
}
|
|
414
|
-
function
|
|
424
|
+
function gt(n, e = z) {
|
|
415
425
|
return Array(n).fill(null).map(() => {
|
|
416
426
|
const t = ~~(Math.random() * e.length);
|
|
417
427
|
return e[t];
|
|
418
428
|
}).join("");
|
|
419
429
|
}
|
|
420
|
-
function
|
|
430
|
+
function pt(n, e = !1, t = !1, r = !1) {
|
|
421
431
|
if (!e && !t && !r)
|
|
422
432
|
throw new Error("Must enable at least one: letters, numbers, symbols");
|
|
423
433
|
return Array(n).fill(null).map(() => {
|
|
424
434
|
let o;
|
|
425
435
|
do {
|
|
426
436
|
const s = ~~(Math.random() * 3);
|
|
427
|
-
e && s == 0 ? o =
|
|
437
|
+
e && s == 0 ? o = S[~~(Math.random() * S.length)] : t && s == 1 ? o = T[~~(Math.random() * T.length)] : r && s == 2 && (o = L[~~(Math.random() * L.length)]);
|
|
428
438
|
} while (!o);
|
|
429
439
|
return o;
|
|
430
440
|
}).join("");
|
|
431
441
|
}
|
|
432
|
-
function
|
|
442
|
+
function Et(n, e) {
|
|
433
443
|
if (typeof e == "string" && (e = new RegExp(e, "g")), !e.global)
|
|
434
444
|
throw new TypeError("Regular expression must be global.");
|
|
435
445
|
let t = [], r;
|
|
@@ -438,36 +448,36 @@ function pt(n, e) {
|
|
|
438
448
|
return t;
|
|
439
449
|
}
|
|
440
450
|
function J(n) {
|
|
441
|
-
var e =
|
|
451
|
+
var e = K(Z(Q(V(n), 8 * n.length)));
|
|
442
452
|
return e.toLowerCase();
|
|
443
453
|
}
|
|
444
|
-
function
|
|
454
|
+
function K(n) {
|
|
445
455
|
for (var e, t = "0123456789ABCDEF", r = "", o = 0; o < n.length; o++)
|
|
446
456
|
e = n.charCodeAt(o), r += t.charAt(e >>> 4 & 15) + t.charAt(15 & e);
|
|
447
457
|
return r;
|
|
448
458
|
}
|
|
449
|
-
function
|
|
459
|
+
function V(n) {
|
|
450
460
|
for (var e = Array(n.length >> 2), t = 0; t < e.length; t++)
|
|
451
461
|
e[t] = 0;
|
|
452
462
|
for (t = 0; t < 8 * n.length; t += 8)
|
|
453
463
|
e[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32;
|
|
454
464
|
return e;
|
|
455
465
|
}
|
|
456
|
-
function
|
|
466
|
+
function Z(n) {
|
|
457
467
|
for (var e = "", t = 0; t < 32 * n.length; t += 8)
|
|
458
468
|
e += String.fromCharCode(n[t >> 5] >>> t % 32 & 255);
|
|
459
469
|
return e;
|
|
460
470
|
}
|
|
461
|
-
function
|
|
471
|
+
function Q(n, e) {
|
|
462
472
|
n[e >> 5] |= 128 << e % 32, n[14 + (e + 64 >>> 9 << 4)] = e;
|
|
463
473
|
for (var t = 1732584193, r = -271733879, o = -1732584194, s = 271733878, i = 0; i < n.length; i += 16) {
|
|
464
|
-
var y = t, E = r,
|
|
465
|
-
r = h(r = h(r = h(r = h(r = a(r = a(r = a(r = a(r = u(r = u(r = u(r = u(r = c(r = c(r = c(r = c(r, o = c(o, s = c(s, t = c(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 = c(o, s = c(s, t = c(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 = c(o, s = c(s, t = c(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 = c(o, s = c(s, t = c(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 = u(o, s = u(s, t = u(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 = u(o, s = u(s, t = u(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 = u(o, s = u(s, t = u(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 = u(o, s = u(s, t = u(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 = a(o, s = a(s, t = a(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 = a(o, s = a(s, t = a(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 = a(o, s = a(s, t = a(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 = a(o, s = a(s, t = a(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 = h(o, s = h(s, t = h(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 = h(o, s = h(s, t = h(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 = h(o, s = h(s, t = h(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 = h(o, s = h(s, t = h(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 = g(t, y), r = g(r, E), o = g(o,
|
|
474
|
+
var y = t, E = r, R = o, C = s;
|
|
475
|
+
r = h(r = h(r = h(r = h(r = a(r = a(r = a(r = a(r = u(r = u(r = u(r = u(r = c(r = c(r = c(r = c(r, o = c(o, s = c(s, t = c(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 = c(o, s = c(s, t = c(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 = c(o, s = c(s, t = c(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 = c(o, s = c(s, t = c(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 = u(o, s = u(s, t = u(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 = u(o, s = u(s, t = u(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 = u(o, s = u(s, t = u(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 = u(o, s = u(s, t = u(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 = a(o, s = a(s, t = a(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 = a(o, s = a(s, t = a(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 = a(o, s = a(s, t = a(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 = a(o, s = a(s, t = a(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 = h(o, s = h(s, t = h(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 = h(o, s = h(s, t = h(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 = h(o, s = h(s, t = h(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 = h(o, s = h(s, t = h(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 = g(t, y), r = g(r, E), o = g(o, R), s = g(s, C);
|
|
466
476
|
}
|
|
467
477
|
return Array(t, r, o, s);
|
|
468
478
|
}
|
|
469
479
|
function O(n, e, t, r, o, s) {
|
|
470
|
-
return g(
|
|
480
|
+
return g(X(g(g(e, n), g(r, s)), o), t);
|
|
471
481
|
}
|
|
472
482
|
function c(n, e, t, r, o, s, i) {
|
|
473
483
|
return O(e & t | ~e & r, n, e, o, s, i);
|
|
@@ -485,10 +495,10 @@ function g(n, e) {
|
|
|
485
495
|
var t = (65535 & n) + (65535 & e);
|
|
486
496
|
return (n >> 16) + (e >> 16) + (t >> 16) << 16 | 65535 & t;
|
|
487
497
|
}
|
|
488
|
-
function
|
|
498
|
+
function X(n, e) {
|
|
489
499
|
return n << e | n >>> 32 - e;
|
|
490
500
|
}
|
|
491
|
-
function
|
|
501
|
+
function wt(n) {
|
|
492
502
|
return /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/.test(n);
|
|
493
503
|
}
|
|
494
504
|
function xt(n) {
|
|
@@ -496,10 +506,10 @@ function xt(n) {
|
|
|
496
506
|
([e, t]) => encodeURIComponent(e) + "=" + encodeURIComponent(t)
|
|
497
507
|
).join("&");
|
|
498
508
|
}
|
|
499
|
-
function
|
|
509
|
+
function Bt(n, e = "mp") {
|
|
500
510
|
return n ? `https://www.gravatar.com/avatar/${J(n)}?d=${e}` : "";
|
|
501
511
|
}
|
|
502
|
-
function
|
|
512
|
+
function mt(n) {
|
|
503
513
|
const e = new RegExp(
|
|
504
514
|
"(?:(?<protocol>[\\w\\d]+)\\:\\/\\/)?(?:(?<user>.+)\\@)?(?<host>(?<domain>[^:\\/\\?#@\\n]+)(?:\\:(?<port>\\d*))?)(?<path>\\/.*?)?(?:\\?(?<query>.*?))?(?:#(?<fragment>.*?))?$",
|
|
505
515
|
"gm"
|
|
@@ -516,10 +526,10 @@ function Bt(n) {
|
|
|
516
526
|
function At(n) {
|
|
517
527
|
return (n instanceof Date ? n.getTime() : n) - (/* @__PURE__ */ new Date()).getTime();
|
|
518
528
|
}
|
|
519
|
-
function
|
|
529
|
+
function Ot(n) {
|
|
520
530
|
return new Promise((e) => setTimeout(e, n));
|
|
521
531
|
}
|
|
522
|
-
function
|
|
532
|
+
function Rt(n) {
|
|
523
533
|
const e = n instanceof Date ? n : new Date(n);
|
|
524
534
|
return new Intl.DateTimeFormat("en-us", {
|
|
525
535
|
weekday: "long",
|
|
@@ -531,51 +541,52 @@ function Ot(n) {
|
|
|
531
541
|
}).format(e);
|
|
532
542
|
}
|
|
533
543
|
export {
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
544
|
+
x as ASet,
|
|
545
|
+
k as BadRequestError,
|
|
546
|
+
at as CliBackground,
|
|
547
|
+
w as CliEffects,
|
|
548
|
+
m as CliForeground,
|
|
539
549
|
p as CustomError,
|
|
540
|
-
|
|
541
|
-
|
|
550
|
+
G as ForbiddenError,
|
|
551
|
+
U as InternalServerError,
|
|
542
552
|
F as LOG_LEVEL,
|
|
543
|
-
|
|
553
|
+
I as Logger,
|
|
544
554
|
j as NotFoundError,
|
|
545
555
|
$ as TypedEmitter,
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
556
|
+
D as UnauthorizedError,
|
|
557
|
+
b as XHR,
|
|
558
|
+
rt as addUnique,
|
|
559
|
+
ot as arrayDiff,
|
|
560
|
+
st as caseInsensitiveSort,
|
|
551
561
|
P as clean,
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
562
|
+
ht as countChars,
|
|
563
|
+
lt as createHex,
|
|
564
|
+
tt as deepCopy,
|
|
565
|
+
A as dotNotation,
|
|
566
|
+
v as download,
|
|
567
|
+
ct as findByProp,
|
|
557
568
|
W as flattenArr,
|
|
558
569
|
H as flattenObj,
|
|
559
570
|
xt as formEncode,
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
571
|
+
Rt as formatDate,
|
|
572
|
+
ft as formatPhoneNumber,
|
|
573
|
+
Bt as gravatar,
|
|
574
|
+
N as includes,
|
|
575
|
+
dt as insertAt,
|
|
565
576
|
B as isEqual,
|
|
566
|
-
|
|
577
|
+
ut as makeArray,
|
|
567
578
|
q as makeUnique,
|
|
568
|
-
|
|
579
|
+
Et as matchAll,
|
|
569
580
|
J as md5,
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
581
|
+
et as mixin,
|
|
582
|
+
yt as pad,
|
|
583
|
+
gt as randomString,
|
|
584
|
+
pt as randomStringBuilder,
|
|
585
|
+
nt as sanitizedJSON,
|
|
586
|
+
Ot as sleep,
|
|
587
|
+
it as sortByProp,
|
|
577
588
|
At as timeUntil,
|
|
578
|
-
|
|
579
|
-
|
|
589
|
+
mt as urlParser,
|
|
590
|
+
wt as validateEmail
|
|
580
591
|
};
|
|
581
592
|
//# sourceMappingURL=utils.mjs.map
|
package/dist/utils.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.mjs","sources":["../src/objects.ts","../src/array.ts","../src/aset.ts","../src/emitter.ts","../src/xhr.ts","../src/errors.ts","../src/logger.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 * 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 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","import {clean} from './objects';\r\n\r\nexport type Interceptor = (request: Response, next: () => void) => void;\r\n\r\nexport type RequestOptions = {\r\n\turl?: string;\r\n\tmethod?: 'GET' | 'POST' | 'PATCH' | 'DELETE';\r\n\tbody?: any;\r\n\theaders?: {[key: string | symbol]: string | null | undefined};\r\n\t[key: string]: any;\r\n}\r\n\r\nexport type XhrOptions = {\r\n\theaders?: {[key: string | symbol]: string | null | undefined};\r\n\tinterceptors?: Interceptor[];\r\n\turl?: string;\r\n}\r\n\r\nexport class XHR {\r\n\tprivate static interceptors: {[key: string]: Interceptor} = {};\r\n\r\n\tstatic headers: {[key: string]: string | null | undefined} = {};\r\n\r\n\tprivate interceptors: {[key: string]: Interceptor} = {}\r\n\r\n\theaders: {[key: string]: string | null | undefined} = {}\r\n\r\n\tconstructor(public readonly opts: XhrOptions = {}) {\r\n\t\tthis.headers = opts.headers || {};\r\n\t\tif(opts.interceptors) {\r\n\t\t\topts.interceptors.forEach(i => XHR.addInterceptor(i));\r\n\t\t}\r\n\t}\r\n\r\n\tstatic addInterceptor(fn: Interceptor): () => void {\r\n\t\tconst key = Object.keys(XHR.interceptors).length.toString();\r\n\t\tXHR.interceptors[key] = fn;\r\n\t\treturn () => { XHR.interceptors[key] = <any>null; }\r\n\t}\r\n\r\n\taddInterceptor(fn: Interceptor): () => void {\r\n\t\tconst key = Object.keys(this.interceptors).length.toString();\r\n\t\tthis.interceptors[key] = fn;\r\n\t\treturn () => { this.interceptors[key] = <any>null; }\r\n\t}\r\n\r\n\tasync request<T>(opts: RequestOptions = {}): Promise<T> {\r\n\t\tif(!this.opts.url && !opts.url) throw new Error('URL needs to be set');\r\n\t\tconst url = (opts.url?.startsWith('http') ? opts.url : (this.opts.url || '') + (opts.url || '')).replace(/([^:]\\/)\\/+/g, '$1');\r\n\r\n\t\t// Prep headers\r\n\t\tconst headers = <any>clean({\r\n\t\t\t'Content-Type': (opts.body && !(opts.body instanceof FormData)) ? 'application/json' : undefined,\r\n\t\t\t...XHR.headers,\r\n\t\t\t...this.headers,\r\n\t\t\t...opts.headers\r\n\t\t});\r\n\r\n\t\t// Send request\r\n\t\treturn fetch(url, {\r\n\t\t\theaders,\r\n\t\t\tmethod: opts.method || (opts.body ? 'POST' : 'GET'),\r\n\t\t\tbody: (headers['Content-Type']?.startsWith('application/json') && opts.body) ? JSON.stringify(opts.body) : opts.body\r\n\t\t}).then(async resp => {\r\n\t\t\tfor(let fn of [...Object.values(XHR.interceptors), ...Object.values(this.interceptors)]) {\r\n\t\t\t\tawait new Promise<void>(res => fn(resp, () => res()));\r\n\t\t\t}\r\n\r\n\t\t\tif(!resp.ok) throw new Error(resp.statusText);\r\n\t\t\tif(resp.headers.get('Content-Type')?.startsWith('application/json')) return await resp.json();\r\n\t\t\tif(resp.headers.get('Content-Type')?.startsWith('text/plain')) return await <any>resp.text();\r\n\t\t\treturn resp;\r\n\t\t});\r\n\t}\r\n}\r\n","import {XHR} from './xhr';\r\n\r\nXHR.addInterceptor((resp: Response, next: () => void) => {\r\n\tif(resp.status == 200) return next();\r\n\tif(resp.status == 400) throw new BadRequestError(resp.statusText);\r\n\tif(resp.status == 401) throw new UnauthorizedError(resp.statusText);\r\n\tif(resp.status == 403) throw new ForbiddenError(resp.statusText);\r\n\tif(resp.status == 404) throw new NotFoundError(resp.statusText);\r\n\tif(resp.status == 500) throw new InternalServerError(resp.statusText);\r\n\tthrow new CustomError(resp.statusText, resp.status);\r\n});\r\n\r\nexport class CustomError extends Error {\r\n\tstatic code = 500;\r\n\r\n\tprivate _code?: number;\r\n\tget code(): number { return this._code || (<any>this).constructor.code; }\r\n\tset code(c: number) { this._code = c; }\r\n\r\n\tconstructor(message?: string, code?: number) {\r\n\t\tsuper(message);\r\n\t\tif(code != null) this._code = code;\r\n\t}\r\n\r\n\tstatic from(err: Error): CustomError {\r\n\t\tconst code = Number((<any>err).statusCode) ?? Number((<any>err).code);\r\n\t\tconst newErr = new this(err.message || err.toString());\r\n\t\treturn Object.assign(newErr, {\r\n\t\t\tstack: err.stack,\r\n\t\t\t...err,\r\n\t\t\tcode: code ?? undefined\r\n\t\t});\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code != undefined;\r\n\t}\r\n\r\n\ttoString() {\r\n\t\treturn this.message || super.toString();\r\n\t}\r\n}\r\n\r\nexport class BadRequestError extends CustomError {\r\n\tstatic code = 400;\r\n\r\n\tconstructor(message: string = 'Bad Request') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class UnauthorizedError extends CustomError {\r\n\tstatic code = 401;\r\n\r\n\tconstructor(message: string = 'Unauthorized') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class ForbiddenError extends CustomError {\r\n\tstatic code = 403;\r\n\r\n\tconstructor(message: string = 'Forbidden') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class NotFoundError extends CustomError {\r\n\tstatic code = 404;\r\n\r\n\tconstructor(message: string = 'Not Found') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class InternalServerError extends CustomError {\r\n\tstatic code = 500;\r\n\r\n\tconstructor(message: string = 'Internal Server Error') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n","import {TypedEmitter, TypedEvents} from './emitter';\r\n\r\nexport const CliEffects = {\r\n\tCLEAR: \"\\x1b[0m\",\r\n\tBRIGHT: \"\\x1b[1m\",\r\n\tDIM: \"\\x1b[2m\",\r\n\tUNDERSCORE: \"\\x1b[4m\",\r\n\tBLINK: \"\\x1b[5m\",\r\n\tREVERSE: \"\\x1b[7m\",\r\n\tHIDDEN: \"\\x1b[8m\",\r\n}\r\n\r\nexport const CliForeground = {\r\n\tBLACK: '\\x1b[30m',\r\n\tRED: '\\x1b[31m',\r\n\tGREEN: '\\x1b[32m',\r\n\tYELLOW: '\\x1b[33m',\r\n\tBLUE: '\\x1b[34m',\r\n\tMAGENTA: '\\x1b[35m',\r\n\tCYAN: '\\x1b[36m',\r\n\tLIGHT_GREY: '\\x1b[37m',\r\n\tGREY: '\\x1b[90m',\r\n\tLIGHT_RED: '\\x1b[91m',\r\n\tLIGHT_GREEN: '\\x1b[92m',\r\n\tLIGHT_YELLOW: '\\x1b[93m',\r\n\tLIGHT_BLUE: '\\x1b[94m',\r\n\tLIGHT_MAGENTA: '\\x1b[95m',\r\n\tLIGHT_CYAN: '\\x1b[96m',\r\n\tWHITE: '\\x1b[97m',\r\n}\r\n\r\nexport const CliBackground = {\r\n\tBLACK: \"\\x1b[40m\",\r\n\tRED: \"\\x1b[41m\",\r\n\tGREEN: \"\\x1b[42m\",\r\n\tYELLOW: \"\\x1b[43m\",\r\n\tBLUE: \"\\x1b[44m\",\r\n\tMAGENTA: \"\\x1b[45m\",\r\n\tCYAN: \"\\x1b[46m\",\r\n\tWHITE: \"\\x1b[47m\",\r\n\tGREY: \"\\x1b[100m\",\r\n}\r\n\r\nexport enum LOG_LEVEL {\r\n\tERROR = 0,\r\n\tWARN = 1,\r\n\tINFO = 2,\r\n\tLOG = 3,\r\n\tDEBUG = 4,\r\n}\r\n\r\nexport type LoggerEvents = TypedEvents & {\r\n\t'ERROR': (...args: any[]) => any;\r\n\t'WARN': (...args: any[]) => any;\r\n\t'INFO': (...args: any[]) => any;\r\n\t'LOG': (...args: any[]) => any;\r\n\t'DEBUG': (...args: any[]) => any;\r\n};\r\n\r\nexport class Logger extends TypedEmitter<LoggerEvents> {\r\n\tstatic LOG_LEVEL: LOG_LEVEL = LOG_LEVEL.DEBUG;\r\n\r\n\tconstructor(public readonly namespace?: string) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tprivate pad(text: any, length: number, char: string, end = false) {\r\n\t\tconst t = text.toString();\r\n\t\tconst l = length - t.length;\r\n\t\tif(l <= 0) return t;\r\n\t\tconst padding = Array(~~(l / char.length)).fill(char).join('');\r\n\t\treturn !end ? padding + t : t + padding;\r\n\t}\r\n\r\n\tprivate format(...text: string[]): string {\r\n\t\tconst now = new Date();\r\n\t\tconst timestamp = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()} ${this.pad(now.getHours().toString(), 2, '0')}:${this.pad(now.getMinutes().toString(), 2, '0')}:${this.pad(now.getSeconds().toString(), 2, '0')}.${this.pad(now.getMilliseconds().toString(), 3, '0', true)}`;\r\n\t\treturn `${timestamp}${this.namespace ? ` [${this.namespace}]` : ''} ${text.join(' ')}`;\r\n\t}\r\n\r\n\tdebug(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.DEBUG) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.DEBUG, str);\r\n\t\tconsole.debug(CliForeground.LIGHT_GREY + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\tlog(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.LOG) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.LOG, str);\r\n\t\tconsole.log(CliEffects.CLEAR + str);\r\n\t}\r\n\r\n\tinfo(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.INFO) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.INFO, str);\r\n\t\tconsole.info(CliForeground.BLUE + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\twarn(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.WARN) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.WARN, str);\r\n\t\tconsole.warn(CliForeground.YELLOW + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\terror(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.ERROR) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.ERROR, str);\r\n\t\tconsole.error(CliForeground.RED + str + CliEffects.CLEAR);\r\n\t}\r\n}\r\n","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","dotNotation","prop","set","i","arr","flattenObj","parent","result","propName","includes","target","values","allowMissing","e","type","isEqual","a","b","ta","tb","mixin","constructors","c","name","sanitizedJSON","space","cache","addUnique","array","el","arrayDiff","makeUnique","v1","v2","caseInsensitiveSort","aVal","bVal","flattenArr","sortByProp","reverse","findByProp","v","n","makeArray","ASet","elements","index","acc","TypedEmitter","__publicField","event","args","l","listener","_a","res","unsubscribe","_XHR","opts","fn","_b","url","headers","resp","XHR","next","BadRequestError","UnauthorizedError","ForbiddenError","NotFoundError","InternalServerError","CustomError","message","code","err","newErr","CliEffects","CliForeground","CliBackground","LOG_LEVEL","_Logger","namespace","text","length","char","end","t","padding","now","str","Logger","countChars","pattern","createHex","LETTER_LIST","NUMBER_LIST","SYMBOL_LIST","CHAR_LIST","formatPhoneNumber","number","parts","insertAt","pad","start","randomString","pool","randomStringBuilder","letters","numbers","symbols","matchAll","regex","ret","match","md5","d","r","M","Y","X","_","m","f","h","g","md5_ii","md5_hh","md5_gg","md5_ff","safe_add","md5_cmn","bit_rol","validateEmail","email","formEncode","data","gravatar","def","urlParser","processed","groups","domains","split","query","q","val","timeUntil","date","sleep","ms","formatDate"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.mjs","sources":["../src/objects.ts","../src/array.ts","../src/aset.ts","../src/emitter.ts","../src/xhr.ts","../src/errors.ts","../src/logger.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 * 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 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","import {clean} from './objects';\r\n\r\nexport type Interceptor = (request: Response, next: () => void) => void;\r\n\r\nexport type RequestOptions = {\r\n\turl?: string;\r\n\tmethod?: 'GET' | 'POST' | 'PATCH' | 'DELETE';\r\n\tbody?: any;\r\n\theaders?: {[key: string | symbol]: string | null | undefined};\r\n\tskipConverting?: boolean;\r\n\t[key: string]: any;\r\n}\r\n\r\nexport type XhrOptions = {\r\n\theaders?: {[key: string | symbol]: string | null | undefined};\r\n\tinterceptors?: Interceptor[];\r\n\turl?: string;\r\n}\r\n\r\nexport class XHR {\r\n\tprivate static interceptors: {[key: string]: Interceptor} = {};\r\n\r\n\tstatic headers: {[key: string]: string | null | undefined} = {};\r\n\r\n\tprivate interceptors: {[key: string]: Interceptor} = {}\r\n\r\n\theaders: {[key: string]: string | null | undefined} = {}\r\n\r\n\tconstructor(public readonly opts: XhrOptions = {}) {\r\n\t\tthis.headers = opts.headers || {};\r\n\t\tif(opts.interceptors) {\r\n\t\t\topts.interceptors.forEach(i => XHR.addInterceptor(i));\r\n\t\t}\r\n\t}\r\n\r\n\tstatic addInterceptor(fn: Interceptor): () => void {\r\n\t\tconst key = Object.keys(XHR.interceptors).length.toString();\r\n\t\tXHR.interceptors[key] = fn;\r\n\t\treturn () => { XHR.interceptors[key] = <any>null; }\r\n\t}\r\n\r\n\taddInterceptor(fn: Interceptor): () => void {\r\n\t\tconst key = Object.keys(this.interceptors).length.toString();\r\n\t\tthis.interceptors[key] = fn;\r\n\t\treturn () => { this.interceptors[key] = <any>null; }\r\n\t}\r\n\r\n\tdownload(opts: RequestOptions & {url: string}) {\r\n\t\tthis.request<Response>({...opts, skipConverting: true}).then(async resp => {\r\n\t\t\tconst blob = await resp.blob();\r\n\t\t\tdownload(URL.createObjectURL(blob), <string>opts.url.split('/').pop());\r\n\t\t\tURL.revokeObjectURL(opts.url);\r\n\t\t});\r\n\t}\r\n\r\n\tasync request<T>(opts: RequestOptions = {}): Promise<T> {\r\n\t\tif(!this.opts.url && !opts.url) throw new Error('URL needs to be set');\r\n\t\tconst url = (opts.url?.startsWith('http') ? opts.url : (this.opts.url || '') + (opts.url || '')).replace(/([^:]\\/)\\/+/g, '$1');\r\n\r\n\t\t// Prep headers\r\n\t\tconst headers = <any>clean({\r\n\t\t\t'Content-Type': (opts.body && !(opts.body instanceof FormData)) ? 'application/json' : undefined,\r\n\t\t\t...XHR.headers,\r\n\t\t\t...this.headers,\r\n\t\t\t...opts.headers\r\n\t\t});\r\n\r\n\t\t// Send request\r\n\t\treturn fetch(url, {\r\n\t\t\theaders,\r\n\t\t\tmethod: opts.method || (opts.body ? 'POST' : 'GET'),\r\n\t\t\tbody: (headers['Content-Type']?.startsWith('application/json') && opts.body) ? JSON.stringify(opts.body) : opts.body\r\n\t\t}).then(async resp => {\r\n\t\t\tfor(let fn of [...Object.values(XHR.interceptors), ...Object.values(this.interceptors)]) {\r\n\t\t\t\tawait new Promise<void>(res => fn(resp, () => res()));\r\n\t\t\t}\r\n\r\n\t\t\tif(!resp.ok) throw new Error(resp.statusText);\r\n\t\t\tif(!opts.skipConverting && resp.headers.get('Content-Type')?.startsWith('application/json')) return await resp.json();\r\n\t\t\tif(!opts.skipConverting && resp.headers.get('Content-Type')?.startsWith('text/plain')) return await <any>resp.text();\r\n\t\t\treturn resp;\r\n\t\t});\r\n\t}\r\n}\r\n\r\nexport function download(href: any, name: string) {\r\n\tconst a = document.createElement('a');\r\n\ta.href = href;\r\n\ta.download = name;\r\n\tdocument.body.appendChild(a);\r\n\ta.click();\r\n\tdocument.body.removeChild(a);\r\n}\r\n","import {XHR} from './xhr';\r\n\r\nXHR.addInterceptor((resp: Response, next: () => void) => {\r\n\tif(resp.status == 200) return next();\r\n\tif(resp.status == 400) throw new BadRequestError(resp.statusText);\r\n\tif(resp.status == 401) throw new UnauthorizedError(resp.statusText);\r\n\tif(resp.status == 403) throw new ForbiddenError(resp.statusText);\r\n\tif(resp.status == 404) throw new NotFoundError(resp.statusText);\r\n\tif(resp.status == 500) throw new InternalServerError(resp.statusText);\r\n\tthrow new CustomError(resp.statusText, resp.status);\r\n});\r\n\r\nexport class CustomError extends Error {\r\n\tstatic code = 500;\r\n\r\n\tprivate _code?: number;\r\n\tget code(): number { return this._code || (<any>this).constructor.code; }\r\n\tset code(c: number) { this._code = c; }\r\n\r\n\tconstructor(message?: string, code?: number) {\r\n\t\tsuper(message);\r\n\t\tif(code != null) this._code = code;\r\n\t}\r\n\r\n\tstatic from(err: Error): CustomError {\r\n\t\tconst code = Number((<any>err).statusCode) ?? Number((<any>err).code);\r\n\t\tconst newErr = new this(err.message || err.toString());\r\n\t\treturn Object.assign(newErr, {\r\n\t\t\tstack: err.stack,\r\n\t\t\t...err,\r\n\t\t\tcode: code ?? undefined\r\n\t\t});\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code != undefined;\r\n\t}\r\n\r\n\ttoString() {\r\n\t\treturn this.message || super.toString();\r\n\t}\r\n}\r\n\r\nexport class BadRequestError extends CustomError {\r\n\tstatic code = 400;\r\n\r\n\tconstructor(message: string = 'Bad Request') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class UnauthorizedError extends CustomError {\r\n\tstatic code = 401;\r\n\r\n\tconstructor(message: string = 'Unauthorized') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class ForbiddenError extends CustomError {\r\n\tstatic code = 403;\r\n\r\n\tconstructor(message: string = 'Forbidden') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class NotFoundError extends CustomError {\r\n\tstatic code = 404;\r\n\r\n\tconstructor(message: string = 'Not Found') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n\r\nexport class InternalServerError extends CustomError {\r\n\tstatic code = 500;\r\n\r\n\tconstructor(message: string = 'Internal Server Error') {\r\n\t\tsuper(message);\r\n\t}\r\n\r\n\tstatic instanceof(err: Error) {\r\n\t\treturn (<any>err).constructor.code == this.code;\r\n\t}\r\n}\r\n","import {TypedEmitter, TypedEvents} from './emitter';\r\n\r\nexport const CliEffects = {\r\n\tCLEAR: \"\\x1b[0m\",\r\n\tBRIGHT: \"\\x1b[1m\",\r\n\tDIM: \"\\x1b[2m\",\r\n\tUNDERSCORE: \"\\x1b[4m\",\r\n\tBLINK: \"\\x1b[5m\",\r\n\tREVERSE: \"\\x1b[7m\",\r\n\tHIDDEN: \"\\x1b[8m\",\r\n}\r\n\r\nexport const CliForeground = {\r\n\tBLACK: '\\x1b[30m',\r\n\tRED: '\\x1b[31m',\r\n\tGREEN: '\\x1b[32m',\r\n\tYELLOW: '\\x1b[33m',\r\n\tBLUE: '\\x1b[34m',\r\n\tMAGENTA: '\\x1b[35m',\r\n\tCYAN: '\\x1b[36m',\r\n\tLIGHT_GREY: '\\x1b[37m',\r\n\tGREY: '\\x1b[90m',\r\n\tLIGHT_RED: '\\x1b[91m',\r\n\tLIGHT_GREEN: '\\x1b[92m',\r\n\tLIGHT_YELLOW: '\\x1b[93m',\r\n\tLIGHT_BLUE: '\\x1b[94m',\r\n\tLIGHT_MAGENTA: '\\x1b[95m',\r\n\tLIGHT_CYAN: '\\x1b[96m',\r\n\tWHITE: '\\x1b[97m',\r\n}\r\n\r\nexport const CliBackground = {\r\n\tBLACK: \"\\x1b[40m\",\r\n\tRED: \"\\x1b[41m\",\r\n\tGREEN: \"\\x1b[42m\",\r\n\tYELLOW: \"\\x1b[43m\",\r\n\tBLUE: \"\\x1b[44m\",\r\n\tMAGENTA: \"\\x1b[45m\",\r\n\tCYAN: \"\\x1b[46m\",\r\n\tWHITE: \"\\x1b[47m\",\r\n\tGREY: \"\\x1b[100m\",\r\n}\r\n\r\nexport enum LOG_LEVEL {\r\n\tERROR = 0,\r\n\tWARN = 1,\r\n\tINFO = 2,\r\n\tLOG = 3,\r\n\tDEBUG = 4,\r\n}\r\n\r\nexport type LoggerEvents = TypedEvents & {\r\n\t'ERROR': (...args: any[]) => any;\r\n\t'WARN': (...args: any[]) => any;\r\n\t'INFO': (...args: any[]) => any;\r\n\t'LOG': (...args: any[]) => any;\r\n\t'DEBUG': (...args: any[]) => any;\r\n};\r\n\r\nexport class Logger extends TypedEmitter<LoggerEvents> {\r\n\tstatic LOG_LEVEL: LOG_LEVEL = LOG_LEVEL.DEBUG;\r\n\r\n\tconstructor(public readonly namespace?: string) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tprivate pad(text: any, length: number, char: string, end = false) {\r\n\t\tconst t = text.toString();\r\n\t\tconst l = length - t.length;\r\n\t\tif(l <= 0) return t;\r\n\t\tconst padding = Array(~~(l / char.length)).fill(char).join('');\r\n\t\treturn !end ? padding + t : t + padding;\r\n\t}\r\n\r\n\tprivate format(...text: string[]): string {\r\n\t\tconst now = new Date();\r\n\t\tconst timestamp = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()} ${this.pad(now.getHours().toString(), 2, '0')}:${this.pad(now.getMinutes().toString(), 2, '0')}:${this.pad(now.getSeconds().toString(), 2, '0')}.${this.pad(now.getMilliseconds().toString(), 3, '0', true)}`;\r\n\t\treturn `${timestamp}${this.namespace ? ` [${this.namespace}]` : ''} ${text.join(' ')}`;\r\n\t}\r\n\r\n\tdebug(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.DEBUG) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.DEBUG, str);\r\n\t\tconsole.debug(CliForeground.LIGHT_GREY + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\tlog(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.LOG) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.LOG, str);\r\n\t\tconsole.log(CliEffects.CLEAR + str);\r\n\t}\r\n\r\n\tinfo(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.INFO) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.INFO, str);\r\n\t\tconsole.info(CliForeground.BLUE + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\twarn(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.WARN) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.WARN, str);\r\n\t\tconsole.warn(CliForeground.YELLOW + str + CliEffects.CLEAR);\r\n\t}\r\n\r\n\terror(...args: string[]) {\r\n\t\tif(Logger.LOG_LEVEL < LOG_LEVEL.ERROR) return;\r\n\t\tconst str = this.format(...args);\r\n\t\tLogger.emit(LOG_LEVEL.ERROR, str);\r\n\t\tconsole.error(CliForeground.RED + str + CliEffects.CLEAR);\r\n\t}\r\n}\r\n","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","dotNotation","prop","set","i","arr","flattenObj","parent","result","propName","includes","target","values","allowMissing","e","type","isEqual","a","b","ta","tb","mixin","constructors","c","name","sanitizedJSON","space","cache","addUnique","array","el","arrayDiff","makeUnique","v1","v2","caseInsensitiveSort","aVal","bVal","flattenArr","sortByProp","reverse","findByProp","v","n","makeArray","ASet","elements","index","acc","TypedEmitter","__publicField","event","args","l","listener","_a","res","unsubscribe","_XHR","opts","fn","resp","blob","download","_b","url","headers","XHR","href","next","BadRequestError","UnauthorizedError","ForbiddenError","NotFoundError","InternalServerError","CustomError","message","code","err","newErr","CliEffects","CliForeground","CliBackground","LOG_LEVEL","_Logger","namespace","text","length","char","end","t","padding","now","str","Logger","countChars","pattern","createHex","LETTER_LIST","NUMBER_LIST","SYMBOL_LIST","CHAR_LIST","formatPhoneNumber","number","parts","insertAt","pad","start","randomString","pool","randomStringBuilder","letters","numbers","symbols","matchAll","regex","ret","match","md5","d","r","M","V","Y","X","_","m","f","h","g","md5_ii","md5_hh","md5_gg","md5_ff","safe_add","md5_cmn","bit_rol","validateEmail","email","formEncode","data","gravatar","def","urlParser","processed","groups","domains","split","query","q","val","timeUntil","date","sleep","ms","formatDate"],"mappings":"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"}
|
package/dist/xhr.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export type RequestOptions = {
|
|
|
6
6
|
headers?: {
|
|
7
7
|
[key: string | symbol]: string | null | undefined;
|
|
8
8
|
};
|
|
9
|
+
skipConverting?: boolean;
|
|
9
10
|
[key: string]: any;
|
|
10
11
|
};
|
|
11
12
|
export type XhrOptions = {
|
|
@@ -28,5 +29,9 @@ export declare class XHR {
|
|
|
28
29
|
constructor(opts?: XhrOptions);
|
|
29
30
|
static addInterceptor(fn: Interceptor): () => void;
|
|
30
31
|
addInterceptor(fn: Interceptor): () => void;
|
|
32
|
+
download(opts: RequestOptions & {
|
|
33
|
+
url: string;
|
|
34
|
+
}): void;
|
|
31
35
|
request<T>(opts?: RequestOptions): Promise<T>;
|
|
32
36
|
}
|
|
37
|
+
export declare function download(href: any, name: string): void;
|