balda-js 0.0.31 → 0.0.32
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/lib/index.cjs +1 -1
- package/lib/index.cjs.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
package/lib/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var Mt=Object.create;var te=Object.defineProperty;var Ke=Object.getOwnPropertyDescriptor;var At=Object.getOwnPropertyNames;var Ht=Object.getPrototypeOf,Ft=Object.prototype.hasOwnProperty;var kt=(s,e)=>{for(var t in e)te(s,t,{get:e[t],enumerable:!0})},et=(s,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of At(e))!Ft.call(s,o)&&o!==t&&te(s,o,{get:()=>e[o],enumerable:!(r=Ke(e,o))||r.enumerable});return s};var T=(s,e,t)=>(t=s!=null?Mt(Ht(s)):{},et(e||!s||!s.__esModule?te(t,"default",{value:s,enumerable:!0}):t,s)),_t=s=>et(te({},"__esModule",{value:!0}),s),E=(s,e,t,r)=>{for(var o=r>1?void 0:r?Ke(e,t):e,n=s.length-1,a;n>=0;n--)(a=s[n])&&(o=(r?a(e,t,o):a(o))||o);return r&&o&&te(e,t,o),o};var wr={};kt(wr,{ARG_SYMBOL:()=>Jt,BasePlugin:()=>Qe,Command:()=>x,CommandRegistry:()=>ue,CronService:()=>M,Request:()=>A,Response:()=>D,Server:()=>Xe,VALIDATION_ERROR_SYMBOL:()=>j,arg:()=>L,commandRegistry:()=>_e,controller:()=>jt,cookie:()=>De,cors:()=>Ve,cron:()=>Qt,defineLoggerConfig:()=>Yt,del:()=>Nt,fileParser:()=>Ge,flag:()=>N,get:()=>Dt,getContentType:()=>he,helmet:()=>Je,json:()=>We,log:()=>Ie,logger:()=>v,middleware:()=>zt,patch:()=>It,post:()=>qt,put:()=>Bt,rateLimiter:()=>qe,router:()=>vr,serialize:()=>Lt,serveStatic:()=>Ne,session:()=>Be,setCronGlobalErrorHandler:()=>Xt,timeout:()=>Ue,trustProxy:()=>Le,urlencoded:()=>ze,validate:()=>Vt});module.exports=_t(wr);var tt=require("path");var l=class{static metadata=new WeakMap;static set(e,t,r){this.metadata.has(e)||this.metadata.set(e,new Map),this.metadata.get(e).set(t,r)}static get(e,t){return this.metadata.get(e)?.get(t)}static getAll(e){return this.metadata.get(e)||new Map}static delete(e,t){this.metadata.get(e)?.delete(t.toString())}static clear(e){this.metadata.delete(e)}};var X=class{staticChildren;paramChild;wildcardChild;middleware;handler;constructor(){this.staticChildren=new Map,this.paramChild=null,this.wildcardChild=null,this.middleware=null,this.handler=null}},Ce=class s{trees;routes;middlewares;basePath;constructor(e="",t=[]){this.trees=new Map,this.routes=[],this.middlewares=t,this.basePath=this.normalizeBasePath(e)}getRoutes(){return this.routes.slice()}addOrUpdate(e,t,r,o,n){e=e.toUpperCase();let a=this.trees.get(e);a||(a=new X,this.trees.set(e,a));let d=t.split("?")[0].replace(/^\/+|\/+$/g,""),i=d.length===0?[]:d.split("/"),c=a;for(let m of i){if(m==="*"){c.wildcardChild||(c.wildcardChild=new X),c=c.wildcardChild;break}if(m.startsWith(":")){let h=m.slice(1);c.paramChild||(c.paramChild={node:new X,name:h}),c=c.paramChild.node;continue}c.staticChildren.has(m)||c.staticChildren.set(m,new X),c=c.staticChildren.get(m)}c.middleware=r,c.handler=o;let u=this.routes.findIndex(m=>m.method===e&&m.path===t);if(u!==-1){this.routes[u].middleware=r,this.routes[u].handler=o;return}this.routes.push({method:e,path:t,middleware:r,handler:o,swaggerOptions:n})}find(e,t){e=e.toUpperCase();let r=this.trees.get(e);if(!r)return null;let n=t.split("?")[0].replace(/^\/+|\/+$/g,""),a=n.length===0?[]:n.split("/"),p={},d=r;for(let i=0;i<a.length;i++){let c=a[i];if(d.staticChildren.has(c)){d=d.staticChildren.get(c);continue}if(d.paramChild){p[d.paramChild.name]=c,d=d.paramChild.node;continue}if(d.wildcardChild){p["*"]=a.slice(i).join("/"),d=d.wildcardChild;break}return null}return!d.handler||!d.middleware?null:{middleware:d.middleware,handler:d.handler,params:p}}get(e,t,r,o){let n=this.joinPath(e),a=typeof t=="function"&&t.length!==3,p=a?t:r,d=a?[]:Array.isArray(t)?t:[t],i=[...this.middlewares,...d],c=a?r:o;this.addOrUpdate("GET",n,i,p,c)}post(e,t,r,o){let n=this.joinPath(e),a=typeof t=="function"&&t.length!==3,p=a?t:r,d=a?[]:Array.isArray(t)?t:[t],i=[...this.middlewares,...d],c=a?r:o;this.addOrUpdate("POST",n,i,p,c)}patch(e,t,r,o){let n=this.joinPath(e),a=typeof t=="function"&&t.length!==3,p=a?t:r,d=a?[]:Array.isArray(t)?t:[t],i=[...this.middlewares,...d],c=a?r:o;this.addOrUpdate("PATCH",n,i,p,c)}put(e,t,r,o){let n=this.joinPath(e),a=typeof t=="function"&&t.length!==3,p=a?t:r,d=a?[]:Array.isArray(t)?t:[t],i=[...this.middlewares,...d],c=a?r:o;this.addOrUpdate("PUT",n,i,p,c)}delete(e,t,r,o){let n=this.joinPath(e),a=typeof t=="function"&&t.length!==3,p=a?t:r,d=a?[]:Array.isArray(t)?t:[t],i=[...this.middlewares,...d],c=a?r:o;this.addOrUpdate("DELETE",n,i,p,c)}options(e,t,r,o){let n=this.joinPath(e),a=typeof t=="function"&&t.length!==3,p=a?t:r,d=a?[]:Array.isArray(t)?t:[t],i=[...this.middlewares,...d],c=a?r:o;this.addOrUpdate("OPTIONS",n,i,p,c)}group(e,t,r){let o=Array.isArray(t)?t:typeof t=="function"?[]:t?[t]:[],n=Array.isArray(t)?r:typeof t=="function"?t:void 0,a=this.joinPath(e),p=new s(a,[...this.middlewares,...o]);n?.(p);for(let d of p.getRoutes())this.addOrUpdate(d.method,d.path,d.middleware,d.handler,d.swaggerOptions)}applyGlobalMiddlewaresToAllRoutes(e){for(let t of this.routes)this.addOrUpdate(t.method,t.path,[...e,...t.middleware||[]],t.handler)}normalizeBasePath(e){if(!e)return"";let t=e.replace(/\s+/g,"");return t=t.replace(/\/+/g,"/"),t.startsWith("/")||(t="/"+t),t.length>1&&(t=t.replace(/\/+$/g,"")),t}joinPath(e){let r=[this.basePath,e].filter(o=>typeof o=="string"&&o.length>0).join("/");return r=r.replace(/\/+/g,"/"),r.startsWith("/")||(r="/"+r),r.length>1&&(r=r.replace(/\/+$/g,"")),r}},g=new Ce;var jt=(s,e)=>t=>{let o=l.get(t.prototype,"__class__")?.middlewares||[],n=l.getAll(t.prototype);for(let[a,p]of n.entries()){if(!p.route)continue;let d=t.prototype[a],i=s?(0,tt.join)(s,p.route.path):p.route.path,c=[...o,...p.middlewares||[]];g.addOrUpdate(p.route.method,i,c,d,{service:t.name.replace(/Controller$/,""),...e,...p.documentation})}l.clear(t.prototype)};var Nt=(s,e)=>(t,r,o)=>{let n=l.get(t,r);return n||(n={middlewares:[],route:{path:s,method:"DELETE"}}),n.documentation={...n.documentation||{},name:r,...e},n.route={path:s,method:"DELETE"},l.set(t,r,n),o};var Dt=(s,e)=>(t,r,o)=>{let n=l.get(t,r);return n||(n={middlewares:[],route:{path:s,method:"GET"}}),n.documentation={...n.documentation||{},name:r,...e},n.route={path:s,method:"GET"},l.set(t,r,n),o};var It=(s,e)=>(t,r,o)=>{let n=l.get(t,r);return n||(n={middlewares:[],route:{path:s,method:"PATCH"}}),n.documentation={...n.documentation||{},name:r,...e},n.route={path:s,method:"PATCH"},l.set(t,r,n),o};var qt=(s,e)=>(t,r,o)=>{let n=l.get(t,r);return n||(n={middlewares:[],route:{path:s,method:"POST"}}),n.documentation={...n.documentation||{},name:r,...e},n.route={path:s,method:"POST"},l.set(t,r,n),o};var Bt=(s,e)=>(t,r,o)=>{let n=l.get(t,r);return n||(n={middlewares:[],route:{path:s,method:"PUT"}}),n.documentation={...n.documentation||{},name:r,...e},n.route={path:s,method:"PUT"},l.set(t,r,n),o};var ot=require("ajv");var ae=T(require("ajv"),1),rt=T(require("ajv-formats"),1),Ut=(0,rt.default)(new ae.default,["date-time","time","date","email","hostname","ipv4","ipv6","uri","uri-reference","uuid","uri-template","json-pointer","relative-json-pointer","regex","password","binary","byte","iso-date-time","iso-time"]),k=(s,e,t=!1)=>{let r=Ut.compile(s);if(!r(e)){if(t)return e;throw new ae.ValidationError(r.errors||[])}return e};var st=Symbol("serializeWrapped"),Q=Symbol("serializeMetadata"),Lt=(s,e)=>(t,r,o)=>{let n=l.get(t,r)||{middlewares:[],route:{}};n.documentation||(n.documentation={}),n.documentation.responses||(n.documentation.responses={}),n.serializeOptions||(n.serializeOptions={});let a=Number(e?.status??200);if(n.documentation.responses[a]=s,n.serializeOptions[a]=e?.safe??!0,l.set(t,r,n),o.value[Q]||(o.value[Q]={}),o.value[Q][a]={schema:s,safe:e?.safe??!0},!o.value[st]){let p=o.value;o.value=async function(...d){let i=d[1];await p.apply(this,d);let c=i.responseStatus,u=p[Q],m=u?.[c]?.schema,h=u?.[c]?.safe??!0;if(m&&!h){let f=i.getBody();try{i.send(k(m,f,h))}catch(w){if(w instanceof ot.ValidationError){i.internalServerError({received:f,schema:m,error:w.errors});return}throw w}}},o.value[st]=!0,o.value[Q]=p[Q]}};var zt=s=>(e,t,r)=>{if(typeof t>"u"){let n=l.get(e.prototype,"__class__");if(n||(n={middlewares:[]}),n.middlewares||(n.middlewares=[]),!s)throw new Error(`Middleware ${String(s)} not found, are you sure you defined it before using it?`);return Array.isArray(s)||(s=[s]),n.middlewares.push(...s),l.set(e.prototype,"__class__",n),e}let o=l.get(e,t);return o||(o={middlewares:[]}),o.middlewares||(o.middlewares=[]),Array.isArray(s)||(s=[s]),o.middlewares.push(...s),l.set(e,t,o),r};var nt=require("ajv");var B=s=>(e,t,r)=>{let o=r.value,n=l.get(e,t);return n||(n={middlewares:[],route:{}}),n.documentation||(n.documentation={}),s.body&&(n.documentation.requestBody=s.body),s.query&&(n.documentation.query=s.query),l.set(e,t,n),r.value=async function(...a){let p=a[0],d=a[1];try{let i,c,u;s.body&&(i=p.validate(s.body,s.safe)),s.query&&(c=p.validateQuery(s.query,s.safe)),s.all&&(u=p.validateAll(s.all,s.safe));let m=[...a];return i!==void 0&&m.push(i),c!==void 0&&m.push(c),u!==void 0&&m.push(u),o.apply(this,m)}catch(i){if(!(i instanceof nt.ValidationError))throw i;return s.customError?d.status(s.customError.status||400).json({received:p.body,schema:s.body,error:i.errors}):d.badRequest(i)}},r};B.query=(s,e)=>B({query:s,customError:e});B.body=(s,e)=>B({body:s,customError:e});B.all=(s,e)=>B({all:s,customError:e});var Vt=B;var Pe=class{type;constructor(){this.type=this.getRunTime()}getRunTime(){if(typeof Bun<"u")return"bun";if(typeof Deno<"u")return"deno";if(typeof process<"u")return"node";throw new Error("No environment detected")}},y=new Pe;var $e=class{getCliArgs(){switch(y.type){case"bun":return this.getBunArgs();case"node":return this.getNodeArgs();case"deno":return Deno.args;default:throw new Error("Unsupported runtime")}}getBunArgs(){let e=Bun.argv,t=this.findScriptIndex(e);return e.slice(t+1)}getNodeArgs(){let e=process.argv,t=this.findScriptIndex(e);return e.slice(t+1)}findScriptIndex(e){if(e.length>=3&&e[1].includes(".bin/"))return 1;for(let t=0;t<e.length;t++){let r=e[t],o=r.split("/").pop()||r;if(!r.startsWith("-")){if(o==="yarn"&&t+1<e.length&&e[t+1]==="run"||o==="npx"&&t+1<e.length)return t+1;if(o==="yarn"||o==="pnpm")return t;if(o==="npm"&&t+1<e.length&&e[t+1]==="run"||o==="bun"&&t+1<e.length&&e[t+1]==="run")return t+1;if(/\.(js|ts|mjs|cjs)$/.test(r))return t;if(/^(tsx|ts-node|node|bun)$/.test(o)){for(let n=t+1;n<e.length;n++)if(!e[n].startsWith("-")&&/\.(js|ts|mjs|cjs)$/.test(e[n]))return n;return t}}}for(let t=e.length-1;t>=0;t--)if(!e[t].startsWith("-"))return t;return 1}},Ee=new $e;var Gt=s=>{if(!s||s==="-"||s==="--")return null;let e=s.indexOf("=");if(e>0){let t=s.substring(0,e),r=s.substring(e+1);return{name:t,value:it(r)}}return{name:s,value:!0}},it=s=>{if(s.toLowerCase()==="true")return!0;if(s.toLowerCase()==="false")return!1;let e=Number(s);return!Number.isNaN(e)&&Number.isFinite(e)?e:s},U=()=>{let s=Ee.getCliArgs(),e=[],t={};if(!s||!s.length)return{args:e,flags:t};for(let r=0;r<s.length;r++){let o=s[r];if(!(!o||typeof o!="string")){if(o.startsWith("-")){let n=Gt(o);if(n){if(n.value===!0&&r+1<s.length){let a=s[r+1];a&&typeof a=="string"&&!a.startsWith("-")&&(n.value=it(a),r++)}t[n.name]=n.value}continue}e.push(o)}}return{args:e,flags:t}};var de=()=>Ee.getCliArgs()[0]||null;var j="VALIDATION_ERROR",Jt="ARG",at=U().args.slice(1),L=s=>(e,t)=>{let r=de();if(!r||r!==e.commandName)return;let o=t;l.set(e,t,{type:"arg",name:o,description:s.description});let n=at.length?at.shift():s.defaultValue;if(s.required&&!n){let a=l.get(e,j);l.set(e,j,[...a||[],{type:"arg",name:o,message:"Required argument not provided"}]);return}s.parse&&n&&(n=s.parse(n)),Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0})};var z=s=>(e,t)=>{let r=de();if(!r||r!==e.commandName)return;let o=s.name||t,n=U().flags,a=s.aliases||[],p=[o,...a],d=s.defaultValue;for(let i of p){let c=[i,`-${i}`,`--${i}`];for(let u of c)if(u in n){d=n[u],s.type==="boolean"?d=!!d:s.type==="number"&&(d=Number(d)),s.parse&&(d=s.parse(d));break}if(d!==s.defaultValue)break}if(l.set(e,t,{type:"flag",name:o,aliases:a||[],description:s.description}),s.required&&!d){let i=l.get(e,j);l.set(e,j,[...i||[],{type:"flag",name:o,message:"Required flag not provided"}]);return}Object.defineProperty(e,t,{value:d,enumerable:!0,configurable:!0,writable:!0})};z.boolean=s=>z({...s,type:"boolean"});z.string=s=>z({...s,type:"string"});z.number=s=>z({...s,type:"number"});var N=z;var dt=require("glob");var C=class extends Error{constructor(e){super(e)}};var Me=T(require("pino"),1),Wt=()=>(0,Me.default)({level:"info",formatters:{level:e=>({level:e})}}),v=Wt(),Yt=s=>{v=(0,Me.default)(s)};var Ae=class{getCwd(){switch(y.type){case"node":case"bun":return process.cwd();case"deno":return Deno.cwd();default:throw new Error("Unsupported runtime")}}},_=new Ae;var M=class{static scheduledJobs=[];static register(e,...t){t[2]={name:e,...t[2]},this.scheduledJobs.push({name:e,args:t})}static async run(){let e=(await import("node-cron").catch(()=>{throw new C("node-cron not installed as a dependency, it is required in order to run cron jobs with the @cron decorator")})).default;if(v.info("Scheduling cron jobs"),!this.scheduledJobs.length){v.info("No cron jobs to schedule");return}for(let{name:t,args:r}of this.scheduledJobs)v.info(`Scheduling cron job: ${t}`),e.schedule(...r).on("execution:failed",n=>this.globalErrorHandler(n));v.info("Cron jobs scheduled")}static globalErrorHandler(e){v.error(e.execution?.error)}static async massiveImportCronJobs(e){let t=[];for(let r of e){let o=await(0,dt.glob)(r,{absolute:!0,cwd:_.getCwd()});t.push(...o)}await Promise.all(t.map(async r=>{await import(r).catch(o=>{v.error(`Error importing cron job: ${r}`),v.error(o)})}))}},Xt=s=>{M.globalErrorHandler=s.bind(M)};var Qt=(s,e)=>function(t,r,o){let n=o.value,a=async(...p)=>{let d=new t.constructor;return await n.apply(d,p)};return M.register(`${t.constructor.name}.${r}`,s,a,e),o};var ct=require("glob");var pe=require("path");var He=class{exit(e){switch(y.type){case"bun":case"node":process.exit(e);case"deno":Deno.exit(e);default:throw new Error("Unsupported runtime")}}},Fe=new He;var x=class{static commandName=this.name;static description="";static help=[];static options={keepAlive:!1};static args=U().args.slice(1);static flags=U().flags;static logger=v;static handle(){throw new Error(`Handle method not implemented in command class ${this.name}`)}static handleHelpFlag(e){let t=["-h","--help"];if(!Object.keys(e).some(i=>t.includes(i)))return;let o=this.commandName,n=this.description||"No description available",a=this.help||[],p=this.options,d=this.generateHelpOutput({name:o,description:n,helpText:a,options:p,args:this.args,flags:this.flags},this);console.log(d),Fe.exit(0)}static generateHelpOutput=(e,t)=>{let{name:r,description:o,helpText:n,options:a,args:p,flags:d}=e,i={title:"\x1B[1;36m",subtitle:"\x1B[1;33m",description:"\x1B[0;37m",code:"\x1B[0;32m",flag:"\x1B[0;35m",reset:"\x1B[0m",error:"\x1B[0;31m",success:"\x1B[0;32m",info:"\x1B[0;34m"},c=[`${i.title}${r}${i.reset}`,`${i.description}${o}${i.reset}`,"",`${i.subtitle}Usage:${i.reset}`,` ${i.code}${r}${i.reset} [options] [arguments]`,"",`${i.subtitle}Options:${i.reset}`,` ${i.flag}-h, --help${i.reset} Show this help message`,"",`${i.subtitle}Command Options:${i.reset}`,` ${i.flag}keepAlive${i.reset} ${a?.keepAlive??!1?i.success+"Enabled"+i.reset:i.error+"Disabled"+i.reset}`,""];if(n){let f=Array.isArray(n)?n:[n];c.push(`${i.subtitle}Help:${i.reset}`),f.forEach(w=>{c.push(` ${i.description}${w}${i.reset}`)}),c.push("")}let u=l.getAll(t),m=Array.from(u.values()).filter(f=>f.type==="arg"),h=Array.from(u.values()).filter(f=>f.type==="flag");return m.length&&(c.push(`${i.subtitle}Available Arguments:${i.reset}`),m.forEach(f=>{let w=f.required?` ${i.error}(required)${i.reset}`:"",S=f.description?` ${i.description}${f.description}${i.reset}`:"";c.push(` ${i.code}${f.name}${i.reset}${w}${S}`)}),c.push("")),h.length&&(c.push(`${i.subtitle}Available Flags:${i.reset}`),h.forEach(f=>{f.aliases&&!Array.isArray(f.aliases)&&(f.aliases=[f.aliases]);let w=f.aliases.length?` ${i.flag}(${f.aliases.join(", ")})${i.reset}`:"",S=f.required?` ${i.error}(required)${i.reset}`:"",P=f.description?` ${i.description}${f.description}${i.reset}`:"";c.push(` ${i.flag}--${f.name}${w}${i.reset}${S}${P}`)}),c.push("")),((p?.length??0)>0||d&&Object.keys(d).length>0)&&(c.push(`${i.subtitle}Current Context:${i.reset}`),p?.length&&c.push(` ${i.info}Provided Arguments:${i.reset} ${i.code}${p.join(" ")}${i.reset}`),d&&Object.keys(d).length>0&&(c.push(` ${i.info}Provided Flags:${i.reset}`),Object.keys(d).forEach(f=>{let w=d[f],S=w!=null?` = ${i.code}${w}${i.reset}`:"";c.push(` ${i.flag}${f}${i.reset}${S}`)})),c.push("")),n&&(Array.isArray(n)?n.some(f=>f.includes("example")):n.includes("example"))&&(c.push(`${i.subtitle}Examples:${i.reset}`),(Array.isArray(n)?n.filter(w=>w.includes("example")):[n.split("example")[1].trim()]).forEach(w=>{c.push(` ${i.code}${w}${i.reset}`)}),c.push("")),c.join(`
|
|
1
|
+
"use strict";var Mt=Object.create;var te=Object.defineProperty;var Ke=Object.getOwnPropertyDescriptor;var At=Object.getOwnPropertyNames;var Ht=Object.getPrototypeOf,Ft=Object.prototype.hasOwnProperty;var kt=(s,e)=>{for(var t in e)te(s,t,{get:e[t],enumerable:!0})},et=(s,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of At(e))!Ft.call(s,o)&&o!==t&&te(s,o,{get:()=>e[o],enumerable:!(r=Ke(e,o))||r.enumerable});return s};var T=(s,e,t)=>(t=s!=null?Mt(Ht(s)):{},et(e||!s||!s.__esModule?te(t,"default",{value:s,enumerable:!0}):t,s)),_t=s=>et(te({},"__esModule",{value:!0}),s),E=(s,e,t,r)=>{for(var o=r>1?void 0:r?Ke(e,t):e,n=s.length-1,a;n>=0;n--)(a=s[n])&&(o=(r?a(e,t,o):a(o))||o);return r&&o&&te(e,t,o),o};var wr={};kt(wr,{ARG_SYMBOL:()=>Jt,BasePlugin:()=>Qe,Command:()=>x,CommandRegistry:()=>ue,CronService:()=>M,Request:()=>A,Response:()=>D,Server:()=>Xe,VALIDATION_ERROR_SYMBOL:()=>j,arg:()=>L,commandRegistry:()=>_e,controller:()=>jt,cookie:()=>De,cors:()=>Ve,cron:()=>Qt,defineLoggerConfig:()=>Yt,del:()=>Nt,fileParser:()=>Ge,flag:()=>N,get:()=>Dt,getContentType:()=>he,helmet:()=>Je,json:()=>We,log:()=>Ie,logger:()=>v,middleware:()=>zt,patch:()=>It,post:()=>qt,put:()=>Bt,rateLimiter:()=>qe,router:()=>vr,serialize:()=>Lt,serveStatic:()=>Ne,session:()=>Be,setCronGlobalErrorHandler:()=>Xt,timeout:()=>Ue,trustProxy:()=>Le,urlencoded:()=>ze,validate:()=>Vt});module.exports=_t(wr);var tt=require("path");var l=class{static metadata=new WeakMap;static set(e,t,r){this.metadata.has(e)||this.metadata.set(e,new Map),this.metadata.get(e).set(t,r)}static get(e,t){return this.metadata.get(e)?.get(t)}static getAll(e){return this.metadata.get(e)||new Map}static delete(e,t){this.metadata.get(e)?.delete(t.toString())}static clear(e){this.metadata.delete(e)}};var X=class{staticChildren;paramChild;wildcardChild;middleware;handler;constructor(){this.staticChildren=new Map,this.paramChild=null,this.wildcardChild=null,this.middleware=null,this.handler=null}},Ce=class s{trees;routes;middlewares;basePath;constructor(e="",t=[]){this.trees=new Map,this.routes=[],this.middlewares=t,this.basePath=this.normalizeBasePath(e)}getRoutes(){return this.routes.slice()}addOrUpdate(e,t,r,o,n){e=e.toUpperCase();let a=this.trees.get(e);a||(a=new X,this.trees.set(e,a));let d=t.split("?")[0].replace(/^\/+|\/+$/g,""),i=d.length===0?[]:d.split("/"),c=a;for(let m of i){if(m==="*"){c.wildcardChild||(c.wildcardChild=new X),c=c.wildcardChild;break}if(m.startsWith(":")){let h=m.slice(1);c.paramChild||(c.paramChild={node:new X,name:h}),c=c.paramChild.node;continue}c.staticChildren.has(m)||c.staticChildren.set(m,new X),c=c.staticChildren.get(m)}c.middleware=r,c.handler=o;let u=this.routes.findIndex(m=>m.method===e&&m.path===t);if(u!==-1){this.routes[u].middleware=r,this.routes[u].handler=o;return}this.routes.push({method:e,path:t,middleware:r,handler:o,swaggerOptions:n})}find(e,t){e=e.toUpperCase();let r=this.trees.get(e);if(!r)return null;let n=t.split("?")[0].replace(/^\/+|\/+$/g,""),a=n.length===0?[]:n.split("/"),p={},d=r;for(let i=0;i<a.length;i++){let c=a[i];if(d.staticChildren.has(c)){d=d.staticChildren.get(c);continue}if(d.paramChild){p[d.paramChild.name]=c,d=d.paramChild.node;continue}if(d.wildcardChild){p["*"]=a.slice(i).join("/"),d=d.wildcardChild;break}return null}return!d.handler||!d.middleware?null:{middleware:d.middleware,handler:d.handler,params:p}}get(e,t,r,o){let n=this.joinPath(e),a=typeof t=="function"&&t.length!==3,p=a?t:r,d=a?[]:Array.isArray(t)?t:[t],i=[...this.middlewares,...d],c=a?r:o;this.addOrUpdate("GET",n,i,p,c)}post(e,t,r,o){let n=this.joinPath(e),a=typeof t=="function"&&t.length!==3,p=a?t:r,d=a?[]:Array.isArray(t)?t:[t],i=[...this.middlewares,...d],c=a?r:o;this.addOrUpdate("POST",n,i,p,c)}patch(e,t,r,o){let n=this.joinPath(e),a=typeof t=="function"&&t.length!==3,p=a?t:r,d=a?[]:Array.isArray(t)?t:[t],i=[...this.middlewares,...d],c=a?r:o;this.addOrUpdate("PATCH",n,i,p,c)}put(e,t,r,o){let n=this.joinPath(e),a=typeof t=="function"&&t.length!==3,p=a?t:r,d=a?[]:Array.isArray(t)?t:[t],i=[...this.middlewares,...d],c=a?r:o;this.addOrUpdate("PUT",n,i,p,c)}delete(e,t,r,o){let n=this.joinPath(e),a=typeof t=="function"&&t.length!==3,p=a?t:r,d=a?[]:Array.isArray(t)?t:[t],i=[...this.middlewares,...d],c=a?r:o;this.addOrUpdate("DELETE",n,i,p,c)}options(e,t,r,o){let n=this.joinPath(e),a=typeof t=="function"&&t.length!==3,p=a?t:r,d=a?[]:Array.isArray(t)?t:[t],i=[...this.middlewares,...d],c=a?r:o;this.addOrUpdate("OPTIONS",n,i,p,c)}group(e,t,r){let o=Array.isArray(t)?t:typeof t=="function"?[]:t?[t]:[],n=Array.isArray(t)?r:typeof t=="function"?t:void 0,a=this.joinPath(e),p=new s(a,[...this.middlewares,...o]);n?.(p);for(let d of p.getRoutes())this.addOrUpdate(d.method,d.path,d.middleware,d.handler,d.swaggerOptions)}applyGlobalMiddlewaresToAllRoutes(e){for(let t of this.routes)this.addOrUpdate(t.method,t.path,[...e,...t.middleware||[]],t.handler)}normalizeBasePath(e){if(!e)return"";let t=e.replace(/\s+/g,"");return t=t.replace(/\/+/g,"/"),t.startsWith("/")||(t="/"+t),t.length>1&&(t=t.replace(/\/+$/g,"")),t}joinPath(e){let r=[this.basePath,e].filter(o=>typeof o=="string"&&o.length>0).join("/");return r=r.replace(/\/+/g,"/"),r.startsWith("/")||(r="/"+r),r.length>1&&(r=r.replace(/\/+$/g,"")),r}},g=new Ce;var jt=(s,e)=>t=>{let o=l.get(t.prototype,"__class__")?.middlewares||[],n=l.getAll(t.prototype),a=new t;for(let[p,d]of n.entries()){if(!d.route)continue;let i=t.prototype[p].bind(a),c=s?(0,tt.join)(s,d.route.path):d.route.path,u=[...o,...d.middlewares||[]];g.addOrUpdate(d.route.method,c,u,i,{service:t.name.replace(/Controller$/,""),...e,...d.documentation})}l.clear(t.prototype)};var Nt=(s,e)=>(t,r,o)=>{let n=l.get(t,r);return n||(n={middlewares:[],route:{path:s,method:"DELETE"}}),n.documentation={...n.documentation||{},name:r,...e},n.route={path:s,method:"DELETE"},l.set(t,r,n),o};var Dt=(s,e)=>(t,r,o)=>{let n=l.get(t,r);return n||(n={middlewares:[],route:{path:s,method:"GET"}}),n.documentation={...n.documentation||{},name:r,...e},n.route={path:s,method:"GET"},l.set(t,r,n),o};var It=(s,e)=>(t,r,o)=>{let n=l.get(t,r);return n||(n={middlewares:[],route:{path:s,method:"PATCH"}}),n.documentation={...n.documentation||{},name:r,...e},n.route={path:s,method:"PATCH"},l.set(t,r,n),o};var qt=(s,e)=>(t,r,o)=>{let n=l.get(t,r);return n||(n={middlewares:[],route:{path:s,method:"POST"}}),n.documentation={...n.documentation||{},name:r,...e},n.route={path:s,method:"POST"},l.set(t,r,n),o};var Bt=(s,e)=>(t,r,o)=>{let n=l.get(t,r);return n||(n={middlewares:[],route:{path:s,method:"PUT"}}),n.documentation={...n.documentation||{},name:r,...e},n.route={path:s,method:"PUT"},l.set(t,r,n),o};var ot=require("ajv");var ae=T(require("ajv"),1),rt=T(require("ajv-formats"),1),Ut=(0,rt.default)(new ae.default,["date-time","time","date","email","hostname","ipv4","ipv6","uri","uri-reference","uuid","uri-template","json-pointer","relative-json-pointer","regex","password","binary","byte","iso-date-time","iso-time"]),k=(s,e,t=!1)=>{let r=Ut.compile(s);if(!r(e)){if(t)return e;throw new ae.ValidationError(r.errors||[])}return e};var st=Symbol("serializeWrapped"),Q=Symbol("serializeMetadata"),Lt=(s,e)=>(t,r,o)=>{let n=l.get(t,r)||{middlewares:[],route:{}};n.documentation||(n.documentation={}),n.documentation.responses||(n.documentation.responses={}),n.serializeOptions||(n.serializeOptions={});let a=Number(e?.status??200);if(n.documentation.responses[a]=s,n.serializeOptions[a]=e?.safe??!0,l.set(t,r,n),o.value[Q]||(o.value[Q]={}),o.value[Q][a]={schema:s,safe:e?.safe??!0},!o.value[st]){let p=o.value;o.value=async function(...d){let i=d[1];await p.apply(this,d);let c=i.responseStatus,u=p[Q],m=u?.[c]?.schema,h=u?.[c]?.safe??!0;if(m&&!h){let f=i.getBody();try{i.send(k(m,f,h))}catch(w){if(w instanceof ot.ValidationError){i.internalServerError({received:f,schema:m,error:w.errors});return}throw w}}},o.value[st]=!0,o.value[Q]=p[Q]}};var zt=s=>(e,t,r)=>{if(typeof t>"u"){let n=l.get(e.prototype,"__class__");if(n||(n={middlewares:[]}),n.middlewares||(n.middlewares=[]),!s)throw new Error(`Middleware ${String(s)} not found, are you sure you defined it before using it?`);return Array.isArray(s)||(s=[s]),n.middlewares.push(...s),l.set(e.prototype,"__class__",n),e}let o=l.get(e,t);return o||(o={middlewares:[]}),o.middlewares||(o.middlewares=[]),Array.isArray(s)||(s=[s]),o.middlewares.push(...s),l.set(e,t,o),r};var nt=require("ajv");var B=s=>(e,t,r)=>{let o=r.value,n=l.get(e,t);return n||(n={middlewares:[],route:{}}),n.documentation||(n.documentation={}),s.body&&(n.documentation.requestBody=s.body),s.query&&(n.documentation.query=s.query),l.set(e,t,n),r.value=async function(...a){let p=a[0],d=a[1];try{let i,c,u;s.body&&(i=p.validate(s.body,s.safe)),s.query&&(c=p.validateQuery(s.query,s.safe)),s.all&&(u=p.validateAll(s.all,s.safe));let m=[...a];return i!==void 0&&m.push(i),c!==void 0&&m.push(c),u!==void 0&&m.push(u),o.apply(this,m)}catch(i){if(!(i instanceof nt.ValidationError))throw i;return s.customError?d.status(s.customError.status||400).json({received:p.body,schema:s.body,error:i.errors}):d.badRequest(i)}},r};B.query=(s,e)=>B({query:s,customError:e});B.body=(s,e)=>B({body:s,customError:e});B.all=(s,e)=>B({all:s,customError:e});var Vt=B;var Pe=class{type;constructor(){this.type=this.getRunTime()}getRunTime(){if(typeof Bun<"u")return"bun";if(typeof Deno<"u")return"deno";if(typeof process<"u")return"node";throw new Error("No environment detected")}},y=new Pe;var $e=class{getCliArgs(){switch(y.type){case"bun":return this.getBunArgs();case"node":return this.getNodeArgs();case"deno":return Deno.args;default:throw new Error("Unsupported runtime")}}getBunArgs(){let e=Bun.argv,t=this.findScriptIndex(e);return e.slice(t+1)}getNodeArgs(){let e=process.argv,t=this.findScriptIndex(e);return e.slice(t+1)}findScriptIndex(e){if(e.length>=3&&e[1].includes(".bin/"))return 1;for(let t=0;t<e.length;t++){let r=e[t],o=r.split("/").pop()||r;if(!r.startsWith("-")){if(o==="yarn"&&t+1<e.length&&e[t+1]==="run"||o==="npx"&&t+1<e.length)return t+1;if(o==="yarn"||o==="pnpm")return t;if(o==="npm"&&t+1<e.length&&e[t+1]==="run"||o==="bun"&&t+1<e.length&&e[t+1]==="run")return t+1;if(/\.(js|ts|mjs|cjs)$/.test(r))return t;if(/^(tsx|ts-node|node|bun)$/.test(o)){for(let n=t+1;n<e.length;n++)if(!e[n].startsWith("-")&&/\.(js|ts|mjs|cjs)$/.test(e[n]))return n;return t}}}for(let t=e.length-1;t>=0;t--)if(!e[t].startsWith("-"))return t;return 1}},Ee=new $e;var Gt=s=>{if(!s||s==="-"||s==="--")return null;let e=s.indexOf("=");if(e>0){let t=s.substring(0,e),r=s.substring(e+1);return{name:t,value:it(r)}}return{name:s,value:!0}},it=s=>{if(s.toLowerCase()==="true")return!0;if(s.toLowerCase()==="false")return!1;let e=Number(s);return!Number.isNaN(e)&&Number.isFinite(e)?e:s},U=()=>{let s=Ee.getCliArgs(),e=[],t={};if(!s||!s.length)return{args:e,flags:t};for(let r=0;r<s.length;r++){let o=s[r];if(!(!o||typeof o!="string")){if(o.startsWith("-")){let n=Gt(o);if(n){if(n.value===!0&&r+1<s.length){let a=s[r+1];a&&typeof a=="string"&&!a.startsWith("-")&&(n.value=it(a),r++)}t[n.name]=n.value}continue}e.push(o)}}return{args:e,flags:t}};var de=()=>Ee.getCliArgs()[0]||null;var j="VALIDATION_ERROR",Jt="ARG",at=U().args.slice(1),L=s=>(e,t)=>{let r=de();if(!r||r!==e.commandName)return;let o=t;l.set(e,t,{type:"arg",name:o,description:s.description});let n=at.length?at.shift():s.defaultValue;if(s.required&&!n){let a=l.get(e,j);l.set(e,j,[...a||[],{type:"arg",name:o,message:"Required argument not provided"}]);return}s.parse&&n&&(n=s.parse(n)),Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0})};var z=s=>(e,t)=>{let r=de();if(!r||r!==e.commandName)return;let o=s.name||t,n=U().flags,a=s.aliases||[],p=[o,...a],d=s.defaultValue;for(let i of p){let c=[i,`-${i}`,`--${i}`];for(let u of c)if(u in n){d=n[u],s.type==="boolean"?d=!!d:s.type==="number"&&(d=Number(d)),s.parse&&(d=s.parse(d));break}if(d!==s.defaultValue)break}if(l.set(e,t,{type:"flag",name:o,aliases:a||[],description:s.description}),s.required&&!d){let i=l.get(e,j);l.set(e,j,[...i||[],{type:"flag",name:o,message:"Required flag not provided"}]);return}Object.defineProperty(e,t,{value:d,enumerable:!0,configurable:!0,writable:!0})};z.boolean=s=>z({...s,type:"boolean"});z.string=s=>z({...s,type:"string"});z.number=s=>z({...s,type:"number"});var N=z;var dt=require("glob");var C=class extends Error{constructor(e){super(e)}};var Me=T(require("pino"),1),Wt=()=>(0,Me.default)({level:"info",formatters:{level:e=>({level:e})}}),v=Wt(),Yt=s=>{v=(0,Me.default)(s)};var Ae=class{getCwd(){switch(y.type){case"node":case"bun":return process.cwd();case"deno":return Deno.cwd();default:throw new Error("Unsupported runtime")}}},_=new Ae;var M=class{static scheduledJobs=[];static register(e,...t){t[2]={name:e,...t[2]},this.scheduledJobs.push({name:e,args:t})}static async run(){let e=(await import("node-cron").catch(()=>{throw new C("node-cron not installed as a dependency, it is required in order to run cron jobs with the @cron decorator")})).default;if(v.info("Scheduling cron jobs"),!this.scheduledJobs.length){v.info("No cron jobs to schedule");return}for(let{name:t,args:r}of this.scheduledJobs)v.info(`Scheduling cron job: ${t}`),e.schedule(...r).on("execution:failed",n=>this.globalErrorHandler(n));v.info("Cron jobs scheduled")}static globalErrorHandler(e){v.error(e.execution?.error)}static async massiveImportCronJobs(e){let t=[];for(let r of e){let o=await(0,dt.glob)(r,{absolute:!0,cwd:_.getCwd()});t.push(...o)}await Promise.all(t.map(async r=>{await import(r).catch(o=>{v.error(`Error importing cron job: ${r}`),v.error(o)})}))}},Xt=s=>{M.globalErrorHandler=s.bind(M)};var Qt=(s,e)=>function(t,r,o){let n=o.value,a=async(...p)=>{let d=new t.constructor;return await n.apply(d,p)};return M.register(`${t.constructor.name}.${r}`,s,a,e),o};var ct=require("glob");var pe=require("path");var He=class{exit(e){switch(y.type){case"bun":case"node":process.exit(e);case"deno":Deno.exit(e);default:throw new Error("Unsupported runtime")}}},Fe=new He;var x=class{static commandName=this.name;static description="";static help=[];static options={keepAlive:!1};static args=U().args.slice(1);static flags=U().flags;static logger=v;static handle(){throw new Error(`Handle method not implemented in command class ${this.name}`)}static handleHelpFlag(e){let t=["-h","--help"];if(!Object.keys(e).some(i=>t.includes(i)))return;let o=this.commandName,n=this.description||"No description available",a=this.help||[],p=this.options,d=this.generateHelpOutput({name:o,description:n,helpText:a,options:p,args:this.args,flags:this.flags},this);console.log(d),Fe.exit(0)}static generateHelpOutput=(e,t)=>{let{name:r,description:o,helpText:n,options:a,args:p,flags:d}=e,i={title:"\x1B[1;36m",subtitle:"\x1B[1;33m",description:"\x1B[0;37m",code:"\x1B[0;32m",flag:"\x1B[0;35m",reset:"\x1B[0m",error:"\x1B[0;31m",success:"\x1B[0;32m",info:"\x1B[0;34m"},c=[`${i.title}${r}${i.reset}`,`${i.description}${o}${i.reset}`,"",`${i.subtitle}Usage:${i.reset}`,` ${i.code}${r}${i.reset} [options] [arguments]`,"",`${i.subtitle}Options:${i.reset}`,` ${i.flag}-h, --help${i.reset} Show this help message`,"",`${i.subtitle}Command Options:${i.reset}`,` ${i.flag}keepAlive${i.reset} ${a?.keepAlive??!1?i.success+"Enabled"+i.reset:i.error+"Disabled"+i.reset}`,""];if(n){let f=Array.isArray(n)?n:[n];c.push(`${i.subtitle}Help:${i.reset}`),f.forEach(w=>{c.push(` ${i.description}${w}${i.reset}`)}),c.push("")}let u=l.getAll(t),m=Array.from(u.values()).filter(f=>f.type==="arg"),h=Array.from(u.values()).filter(f=>f.type==="flag");return m.length&&(c.push(`${i.subtitle}Available Arguments:${i.reset}`),m.forEach(f=>{let w=f.required?` ${i.error}(required)${i.reset}`:"",S=f.description?` ${i.description}${f.description}${i.reset}`:"";c.push(` ${i.code}${f.name}${i.reset}${w}${S}`)}),c.push("")),h.length&&(c.push(`${i.subtitle}Available Flags:${i.reset}`),h.forEach(f=>{f.aliases&&!Array.isArray(f.aliases)&&(f.aliases=[f.aliases]);let w=f.aliases.length?` ${i.flag}(${f.aliases.join(", ")})${i.reset}`:"",S=f.required?` ${i.error}(required)${i.reset}`:"",P=f.description?` ${i.description}${f.description}${i.reset}`:"";c.push(` ${i.flag}--${f.name}${w}${i.reset}${S}${P}`)}),c.push("")),((p?.length??0)>0||d&&Object.keys(d).length>0)&&(c.push(`${i.subtitle}Current Context:${i.reset}`),p?.length&&c.push(` ${i.info}Provided Arguments:${i.reset} ${i.code}${p.join(" ")}${i.reset}`),d&&Object.keys(d).length>0&&(c.push(` ${i.info}Provided Flags:${i.reset}`),Object.keys(d).forEach(f=>{let w=d[f],S=w!=null?` = ${i.code}${w}${i.reset}`:"";c.push(` ${i.flag}${f}${i.reset}${S}`)})),c.push("")),n&&(Array.isArray(n)?n.some(f=>f.includes("example")):n.includes("example"))&&(c.push(`${i.subtitle}Examples:${i.reset}`),(Array.isArray(n)?n.filter(w=>w.includes("example")):[n.split("example")[1].trim()]).forEach(w=>{c.push(` ${i.code}${w}${i.reset}`)}),c.push("")),c.join(`
|
|
2
2
|
`)};static validateContext=e=>{let t=Array.from(l.get(e,j)||[]);if(t.length){let r={error:"\x1B[0;31m",title:"\x1B[1;31m",reset:"\x1B[0m",info:"\x1B[0;34m",code:"\x1B[0;32m"};console.error(`${r.title}\u274C Validation Errors:${r.reset}`),console.error(""),t.forEach((o,n)=>{let a=`${r.info}${n+1}.${r.reset}`,p=`${r.error}${o.type.toUpperCase()}${r.reset}`,d=`${r.code}${o.name}${r.reset}`;console.error(` ${a} ${p} ${d}: ${r.error}${o.message}${r.reset}`)}),console.error(""),console.error(`${r.info}\u{1F4A1} Tip: Use --help for usage information${r.reset}`),Fe.exit(1)}}};var ke=class{async mkdir(e,t){switch(y.type){case"bun":case"node":await(await import("fs/promises")).mkdir(e,{recursive:t?.recursive??!1});break;case"deno":await Deno.mkdir(e,{recursive:t?.recursive??!1});break}}async exists(e){switch(y.type){case"node":return(await import("fs")).existsSync(e);case"bun":return Bun.file(e).exists();case"deno":return Deno.stat(e).then(()=>!0).catch(()=>!1);default:throw new Error("Unsupported runtime")}}async readFile(e){switch(y.type){case"node":let r=await(await import("fs/promises")).readFile(e);return new Uint8Array(r);case"bun":let o=await Bun.file(e).arrayBuffer();return new Uint8Array(o);case"deno":return new Uint8Array(await Deno.readFile(e))}}async writeFile(e,t){switch(y.type){case"node":await(await import("fs/promises")).writeFile(e,t);break;case"bun":await Bun.write(e,t);break;case"deno":await Deno.writeFile(e,t);break}}async stat(e){switch(y.type){case"node":let r=await(await import("fs/promises")).stat(e);return{isDirectory:r.isDirectory(),isFile:r.isFile(),isSymbolicLink:r.isSymbolicLink(),size:r.size};case"bun":let o=await Bun.file(e).stat();return{isDirectory:o.isDirectory(),isFile:o.isFile(),isSymbolicLink:o.isSymbolicLink(),size:o.size};case"deno":let n=await Deno.stat(e);return{isDirectory:n.isDirectory,isFile:n.isFile,isSymbolicLink:!1,size:n.size}}}async unlink(e){switch(y.type){case"node":await(await import("fs/promises")).unlink(e);break;case"bun":await Bun.file(e).delete();break;case"deno":await Deno.remove(e);break;default:throw new Error("Unsupported runtime")}}},R=new ke;var Z=class extends x{static commandName="generate-command";static description="Generate a new command in the specified path";static help=["Generate a new cli command in the specified path","Example: npx balda generate-command my-command -p src/commands"];static path="src/commands";static name;static async handle(){let e=this.getCommandTemplate();this.path=(0,pe.join)(this.path,`${this.name}.ts`),await R.exists((0,pe.join)(process.cwd(),this.path))||await R.mkdir((0,pe.join)(process.cwd(),this.path.split("/").slice(0,-1).join("/")),{recursive:!0}),await R.writeFile(this.path,new TextEncoder().encode(e)),this.logger.info(`Command ${this.name} created successfully at ${this.path}`)}static getCommandTemplate(){return`import { Command, CommandOptions } from "balda-js";
|
|
3
3
|
|
|
4
4
|
export default class extends Command {
|