UNPKG

easy-api.ts

Version:

A powerful library to create your own API with ease.

1 lines 4.29 kB
Object.defineProperty(exports,"__esModule",{value:!0}),exports.Util=void 0;let tslib_1=require("tslib"),Compiler_1=require("../core/Compiler"),FunctionManager_1=require("../managers/FunctionManager"),crypto_1=require("crypto"),fs_1=require("fs"),lodash_1=tslib_1.__importDefault(require("lodash")),path_1=require("path");class Util{static areBracketsBalanced(e){return(e.match(/\[/g)?.length??0)===(e.match(/\]/g)?.length??0)}static booleanify(e){e=e.toLowerCase();let t;return["true","yes","1","!0","!false"].includes(e)&&(t=!0),(t=!["false","no","0","!1","!true"].includes(e)&&t)??!0}static clone(e){if(Array.isArray(e)){let t=[];return e.forEach(e=>{t.push(Util.clone(e))}),t}if(e instanceof Date)return new Date(e);if(e instanceof FunctionManager_1.FunctionManager){var t,r,i=new FunctionManager_1.FunctionManager;for([t,r]of e.entries())i.set(Util.clone(t),Util.clone(r));return i}if(e instanceof Map){var n,a,s=new Map;for([n,a]of e.entries())s.set(Util.clone(n),Util.clone(a));return s}if(e instanceof RegExp)return new RegExp(e);var l;if(e instanceof Set)return l=e.values(),new Set(l);if(e instanceof Object){var o,c,u={};for([o,c]of Object.entries(e))u[Util.clone(o)]=Util.clone(c);return u}return e}static fallbackNullString(e){return e??"null"}static fillText(c,a,s,l,u,f,p,d){var h=Number(c.font.match(/[\d]{1,5}px/g)[0].replace("px",""));if(!(u<=0||f<=0||h<=0)){let e=l+f,t=l+f/2+h/2,r,o=("right"===p?(r=s+u,c.textAlign="right"):"left"===p?(r=s,c.textAlign="left"):(r=s+u/2,c.textAlign="center"),[]),i=(a.split("\n").forEach(a=>{let s=c.measureText(a).width;if(s<=u)o.push(a);else{let e=a,t=u,r,i,n;for(s=c.measureText(e).width;s>t;){for(r=0,i=0,n="";i<t;)r++,n=e.substr(0,r),i=c.measureText(e.substr(0,r)).width;r--,n=n.substr(0,r);var l=r;if(" "!=e.substr(r,1)){for(;" "!=e.substr(r,1)&&0!=r;)r--;0==r&&(r=l),n=e.substr(0,r)}n=n,e=e.substr(r),s=c.measureText(e).width,o.push(n)}0<s&&o.push(e)}}),Util.getTextHeight(c,a,c.font)),n=(p=i*(o.length-1),l);"top"===d?t=l+h:"bottom"===d?(t=e-p,n=e):(n=l+f/2,t-=p/2),o.forEach(e=>{e=e.trim(),c.fillText(e,r,t),t+=i})}}static getTextHeight(e,t,r){var i=e.textBaseline,n=e.font,{actualBoundingBoxAscent:r,actualBoundingBoxDescent:t}=(e.textBaseline="bottom",e.font=r,e.measureText(t));return e.textBaseline=i,e.font=n,r+t+1.7}static hash(e=5){let t="";do{var r=(0,crypto_1.randomUUID)().match(/[^\d+-]/g)}while((t+=r.join("")).length<e);return t.slice(0,5)}static isFunctionLike(e){return"name"in e&&"string"==typeof e.name&&"description"in e&&"string"==typeof e.description&&"compile"in e&&"boolean"==typeof e.compile&&"run"in e&&"function"==typeof e.run}static loadObject(e){try{return JSON.parse(e)}catch{return null}}static molde(e,t,r,i,n,a){e.beginPath(),e.moveTo(t+a,r),e.lineTo(t+i-a,r),e.quadraticCurveTo(t+i,r,t+i,r+a),e.lineTo(t+i,r+n-a),e.quadraticCurveTo(t+i,r+n,t+i-a,r+n),e.lineTo(t+a,r+n),e.quadraticCurveTo(t,r+n,t,r+n-a),e.lineTo(t,r+a),e.quadraticCurveTo(t,r,t+a,r),e.closePath()}static isNumber(e){return!isNaN(parseFloat(e))}static isValidHex(e){return!!e&&/^([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(e.replace(/(#)/g,""))}static parse(e){return e?"undefined"===e?void 0:"null"===e?null:"true"===e||"false"===e?"true"===e:e.match(/\d+n/)?BigInt(e.replace("n","")):void 0:null}static parseArrayLike(e){let t;return lodash_1.default.isArrayLike(e)&&e.startsWith("[")&&e.endsWith("]")?t=Util.loadObject(e):lodash_1.default.isArrayLike(e)&&Util.SPLIT_PATTERN.test(e)&&!e.startsWith("[")&&!e.endsWith("]")?null!==(t=e.match(Util.SPLIT_PATTERN))&&(t=t.map(e=>e.slice(0,null===e.charAt(-1).match(/(\w|\d)/g)?void 0:-1)),""!==(e=e.replace(Util.SPLIT_PATTERN,"")))&&t.push(e):t=null,t}static async resolveCode(e,t,r="code"){var{comments:i,interpreter:n,reverse:a}=e,t=(new Compiler_1.Compiler).remap(t,e.server.rs,!0),n=await n.run(t,{comments:i,data:e,reverse:a});return"code"===r?n.code??"":n}static resolvePercent(e){return e/100}static SPLIT_PATTERN=/(\w|\d)+[^(\w|\d)+]+/g;static stringBool(e){return String(e)}static recursiveCollectFiles(e,t){var r,i=[];for(r of(0,fs_1.readdirSync)(e))(0,fs_1.lstatSync)((0,path_1.join)(e,r)).isDirectory()?i.push(...Util.recursiveCollectFiles((0,path_1.join)(e,r),t)):t&&!t(r)||i.push({name:r,path:(0,path_1.join)(e,r),extension:r.split(".").pop()});return i}}exports.Util=Util;