diesel-core 1.6.2 → 1.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ export declare const supportedMethods: string[];
package/dist/ctx.js CHANGED
@@ -51,4 +51,4 @@ try {
51
51
  `;break;case $.modes.ESCAPED:this.source+=" ; __append(escapeFn("+K1(f)+`))
52
52
  `;break;case $.modes.RAW:this.source+=" ; __append("+K1(f)+`)
53
53
  `;break;case $.modes.COMMENT:break;case $.modes.LITERAL:this._addOutput(f);break}}else this._addOutput(f)}if(v.opts.compileDebug&&b)this.currentLine+=b,this.source+=" ; __line = "+this.currentLine+`
54
- `}};$1.escapeXML=Z.escapeXML;$1.__express=$1.renderFile;$1.VERSION=d1;$1.name=i1;if(typeof window!="undefined")window.ejs=$1});function P(f){switch(f.split(".").pop()?.toLowerCase()){case"js":return"application/javascript";case"css":return"text/css";case"html":return"text/html";case"json":return"application/json";case"png":return"image/png";case"jpg":case"jpeg":return"image/jpeg";case"svg":return"image/svg+xml";case"gif":return"image/gif";case"woff":return"font/woff";case"woff2":return"font/woff2";default:return"application/octet-stream"}}var k=null;async function j0(){if(!k){let f=await Promise.resolve().then(() => H1(G1(),1));k=f.default||f}return k}var z0={string:"text/plain; charset=utf-8",object:"application/json; charset=utf-8",Uint8Array:"application/octet-stream",ArrayBuffer:"application/octet-stream"};class K0{req;server;path;routePattern;paramNames;env;executionContext;headers=new Headers;parsedQuery=null;parsedParams=null;parsedCookies=null;parsedBody=null;contextData={};urlObject=null;constructor(f,v,g,A,C,b,w){this.req=f,this.server=v,this.path=g,this.routePattern=A,this.executionContext=w,this.env=b,this.paramNames=C}setHeader(f,v){return this.headers.set(f,v),this}removeHeader(f){return this.headers.delete(f),this}set(f,v){return this.contextData[f]=v,this}get(f){return this.contextData[f]}get ip(){if(this.server)return this.server.requestIP(this.req)?.address??null;return this.req.headers.get("CF-Connecting-IP")||null}get url(){if(!this.urlObject)this.urlObject=new URL(this.req.url);return this.urlObject}get query(){if(!this.parsedQuery)this.parsedQuery=this.url.search?Object.fromEntries(this.url.searchParams):{};return this.parsedQuery}get params(){if(!this.parsedParams)try{this.parsedParams=Z0(this.paramNames,this.path)}catch(f){let v=f instanceof Error?f.message:String(f);throw new Error(`Failed to extract route parameters: ${v}`)}return this.parsedParams??{}}get body(){if(this.req.method==="GET")return Promise.resolve({});if(!this.parsedBody)this.parsedBody=(async()=>{try{let f=await $0(this.req);if(f.error)throw new Error(f.error);return Object.keys(f).length===0?null:f}catch(f){throw new Error("Invalid request body format")}})();return this.parsedBody}text(f,v=200){return new Response(f,{status:v,headers:this.headers})}send(f,v=200){let g;if(f instanceof Uint8Array)g="Uint8Array";else if(f instanceof ArrayBuffer)g="ArrayBuffer";else g=typeof f;if(!this.headers.has("Content-Type"))this.headers.set("Content-Type",z0[g]??"text/plain; charset=utf-8");let A=g==="object"&&f!==null?JSON.stringify(f):f;return new Response(A,{status:v,headers:this.headers})}json(f,v=200){return Response.json(f,{status:v,headers:this.headers})}file(f,v,g=200){let A=Bun.file(f);if(!this.headers.has("Content-Type"))this.headers.set("Content-Type",v??P(f));return new Response(A,{status:g,headers:this.headers})}async ejs(f,v={},g=200){let A=await j0();try{let C=await Bun.file(f).text(),b=A.render(C,v),w=new Headers({"Content-Type":"text/html; charset=utf-8"});return new Response(b,{status:g,headers:w})}catch(C){return console.error("EJS Rendering Error:",C),new Response("Error rendering template",{status:500})}}redirect(f,v=302){return this.headers.set("Location",f),new Response(null,{status:v,headers:this.headers})}setCookie(f,v,g={}){let A=`${encodeURIComponent(f)}=${encodeURIComponent(v)}`;if(g.maxAge)A+=`; Max-Age=${g.maxAge}`;if(g.expires)A+=`; Expires=${g.expires.toUTCString()}`;if(g.path)A+=`; Path=${g.path}`;if(g.domain)A+=`; Domain=${g.domain}`;if(g.secure)A+="; Secure";if(g.httpOnly)A+="; HttpOnly";if(g.sameSite)A+=`; SameSite=${g.sameSite}`;return this.headers.append("Set-Cookie",A),this}get cookies(){if(!this.parsedCookies){let f=this.req.headers.get("cookie");this.parsedCookies=f?Y0(f):{}}return this.parsedCookies}stream(f){let v=new Headers(this.headers),g=new ReadableStream({async start(A){await f(A),A.close()}});return new Response(g,{headers:v})}yieldStream(f){return new Response}}function Y0(f){return Object.fromEntries(f.split(";").map((v)=>{let[g,...A]=v.trim().split("=");return[g,decodeURIComponent(A.join("="))]}))}function Z0(f,v){let g={},[A]=v.split("?"),C=A.split("/").filter((w)=>w!==""),b=C.length-f.length;for(let w=0;w<f.length;w++)g[f[w]]=C[b+w];return g}function H0(f,v){let g={},A=f.split("/"),[C]=v.split("?"),b=C.split("/");if(A.length!==b.length)return null;for(let w=0;w<A.length;w++){let j=A[w];if(j.charCodeAt(0)===58)g[j.slice(1)]=b[w]}return g}async function $0(f){let v=f.headers.get("Content-Type")||"";if(!v)return{};if(f.headers.get("Content-Length")==="0"||!f.body)return{};if(v.startsWith("application/json"))return await f.json();if(v.startsWith("application/x-www-form-urlencoded")){let A=await f.text();return Object.fromEntries(new URLSearchParams(A))}if(v.startsWith("multipart/form-data")){let A=await f.formData(),C={};for(let[b,w]of A.entries())C[b]=w;return C}return{error:"Unknown request body type"}}export{Z0 as extractParam,H0 as extractDynamicParams,K0 as Context};
54
+ `}};$1.escapeXML=Z.escapeXML;$1.__express=$1.renderFile;$1.VERSION=d1;$1.name=i1;if(typeof window!="undefined")window.ejs=$1});function P(f){switch(f.split(".").pop()?.toLowerCase()){case"js":return"application/javascript";case"css":return"text/css";case"html":return"text/html";case"json":return"application/json";case"png":return"image/png";case"jpg":case"jpeg":return"image/jpeg";case"svg":return"image/svg+xml";case"gif":return"image/gif";case"woff":return"font/woff";case"woff2":return"font/woff2";default:return"application/octet-stream"}}var k=null;async function j0(){if(!k){let f=await Promise.resolve().then(() => H1(G1(),1));k=f.default||f}return k}var z0={string:"text/plain; charset=utf-8",object:"application/json; charset=utf-8",Uint8Array:"application/octet-stream",ArrayBuffer:"application/octet-stream"};class K0{req;server;path;routePattern;paramNames;env;executionContext;headers=new Headers;parsedQuery=null;parsedParams=null;parsedCookies=null;parsedBody=null;contextData={};urlObject=null;constructor(f,v,g,A,C,b,w){this.req=f,this.server=v,this.path=g,this.routePattern=A,this.executionContext=w,this.env=b,this.paramNames=C}setHeader(f,v){return this.headers.set(f,v),this}removeHeader(f){return this.headers.delete(f),this}set(f,v){return this.contextData[f]=v,this}get(f){return this.contextData[f]}get ip(){if(this.server)return this.server.requestIP(this.req)?.address??null;return this.req.headers.get("CF-Connecting-IP")||null}get url(){if(!this.urlObject)this.urlObject=new URL(this.req.url);return this.urlObject}get query(){if(!this.parsedQuery)this.parsedQuery=this.url.search?Object.fromEntries(this.url.searchParams):{};return this.parsedQuery}get params(){if(!Array.isArray(this.paramNames))return this.paramNames;if(!this.parsedParams)try{this.parsedParams=Z0(this.paramNames,this.path)}catch(f){let v=f instanceof Error?f.message:String(f);throw new Error(`Failed to extract route parameters: ${v}`)}return this.parsedParams??{}}get body(){if(this.req.method==="GET")return Promise.resolve({});if(!this.parsedBody)this.parsedBody=(async()=>{try{let f=await $0(this.req);if(f.error)throw new Error(f.error);return Object.keys(f).length===0?null:f}catch(f){throw new Error("Invalid request body format")}})();return this.parsedBody}text(f,v=200){return new Response(f,{status:v,headers:this.headers})}send(f,v=200){let g;if(f instanceof Uint8Array)g="Uint8Array";else if(f instanceof ArrayBuffer)g="ArrayBuffer";else g=typeof f;if(!this.headers.has("Content-Type"))this.headers.set("Content-Type",z0[g]??"text/plain; charset=utf-8");let A=g==="object"&&f!==null?JSON.stringify(f):f;return new Response(A,{status:v,headers:this.headers})}json(f,v=200){return Response.json(f,{status:v,headers:this.headers})}file(f,v,g=200){let A=Bun.file(f);if(!this.headers.has("Content-Type"))this.headers.set("Content-Type",v??P(f));return new Response(A,{status:g,headers:this.headers})}async ejs(f,v={},g=200){let A=await j0();try{let C=await Bun.file(f).text(),b=A.render(C,v),w=new Headers({"Content-Type":"text/html; charset=utf-8"});return new Response(b,{status:g,headers:w})}catch(C){return console.error("EJS Rendering Error:",C),new Response("Error rendering template",{status:500})}}redirect(f,v=302){return this.headers.set("Location",f),new Response(null,{status:v,headers:this.headers})}setCookie(f,v,g={}){let A=`${encodeURIComponent(f)}=${encodeURIComponent(v)}`;if(g.maxAge)A+=`; Max-Age=${g.maxAge}`;if(g.expires)A+=`; Expires=${g.expires.toUTCString()}`;if(g.path)A+=`; Path=${g.path}`;if(g.domain)A+=`; Domain=${g.domain}`;if(g.secure)A+="; Secure";if(g.httpOnly)A+="; HttpOnly";if(g.sameSite)A+=`; SameSite=${g.sameSite}`;return this.headers.append("Set-Cookie",A),this}get cookies(){if(!this.parsedCookies){let f=this.req.headers.get("cookie");this.parsedCookies=f?Y0(f):{}}return this.parsedCookies}stream(f){let v=new Headers(this.headers),g=new ReadableStream({async start(A){await f(A),A.close()}});return new Response(g,{headers:v})}yieldStream(f){return new Response}}function Y0(f){return Object.fromEntries(f.split(";").map((v)=>{let[g,...A]=v.trim().split("=");return[g,decodeURIComponent(A.join("="))]}))}function Z0(f,v){let g={},[A]=v.split("?"),C=A.split("/").filter((w)=>w!==""),b=C.length-f.length;for(let w=0;w<f.length;w++)g[f[w]]=C[b+w];return g}function H0(f,v){let g={},A=f.split("/"),[C]=v.split("?"),b=C.split("/");if(A.length!==b.length)return null;for(let w=0;w<A.length;w++){let j=A[w];if(j.charCodeAt(0)===58)g[j.slice(1)]=b[w]}return g}async function $0(f){let v=f.headers.get("Content-Type")||"";if(!v)return{};if(f.headers.get("Content-Length")==="0"||!f.body)return{};if(v.startsWith("application/json"))return await f.json();if(v.startsWith("application/x-www-form-urlencoded")){let A=await f.text();return Object.fromEntries(new URLSearchParams(A))}if(v.startsWith("multipart/form-data")){let A=await f.formData(),C={};for(let[b,w]of A.entries())C[b]=w;return C}return{error:"Unknown request body type"}}export{Z0 as extractParam,H0 as extractDynamicParams,K0 as Context};
@@ -1,4 +1,4 @@
1
- var Of=Object.create;var{getPrototypeOf:Lf,defineProperty:M,getOwnPropertyNames:i,getOwnPropertyDescriptor:Sf}=Object,u=Object.prototype.hasOwnProperty;var bf=(f,w,g)=>{g=f!=null?Of(Lf(f)):{};let A=w||!f||!f.__esModule?M(g,"default",{value:f,enumerable:!0}):g;for(let $ of i(f))if(!u.call(A,$))M(A,$,{get:()=>f[$],enumerable:!0});return A},r=new WeakMap,Ef=(f)=>{var w=r.get(f),g;if(w)return w;if(w=M({},"__esModule",{value:!0}),f&&typeof f==="object"||typeof f==="function")i(f).map((A)=>!u.call(w,A)&&M(w,A,{get:()=>f[A],enumerable:!(g=Sf(f,A))||g.enumerable}));return r.set(f,w),w},L=(f,w)=>()=>(w||f((w={exports:{}}).exports,w),w.exports);var qf=(f,w)=>{for(var g in w)M(f,g,{get:w[g],enumerable:!0,configurable:!0,set:(A)=>w[g]=()=>A})};var Tf=(f,w)=>()=>(f&&(w=f(f=0)),w);var cf=((f)=>typeof require!=="undefined"?require:typeof Proxy!=="undefined"?new Proxy(f,{get:(w,g)=>(typeof require!=="undefined"?require:w)[g]}):f)(function(f){if(typeof require!=="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+f+'" is not supported')});var wf={};qf(wf,{sep:()=>e,resolve:()=>K,relative:()=>d,posix:()=>gf,parse:()=>t,normalize:()=>S,join:()=>m,isAbsolute:()=>h,format:()=>p,extname:()=>a,dirname:()=>o,delimiter:()=>ff,default:()=>_f,basename:()=>s,_makeLong:()=>l});function W(f){if(typeof f!=="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(f))}function n(f,w){var g="",A=0,$=-1,z=0,J;for(var Y=0;Y<=f.length;++Y){if(Y<f.length)J=f.charCodeAt(Y);else if(J===47)break;else J=47;if(J===47){if($===Y-1||z===1);else if($!==Y-1&&z===2){if(g.length<2||A!==2||g.charCodeAt(g.length-1)!==46||g.charCodeAt(g.length-2)!==46){if(g.length>2){var j=g.lastIndexOf("/");if(j!==g.length-1){if(j===-1)g="",A=0;else g=g.slice(0,j),A=g.length-1-g.lastIndexOf("/");$=Y,z=0;continue}}else if(g.length===2||g.length===1){g="",A=0,$=Y,z=0;continue}}if(w){if(g.length>0)g+="/..";else g="..";A=2}}else{if(g.length>0)g+="/"+f.slice($+1,Y);else g=f.slice($+1,Y);A=Y-$-1}$=Y,z=0}else if(J===46&&z!==-1)++z;else z=-1}return g}function Pf(f,w){var g=w.dir||w.root,A=w.base||(w.name||"")+(w.ext||"");if(!g)return A;if(g===w.root)return g+A;return g+f+A}function K(){var f="",w=!1,g;for(var A=arguments.length-1;A>=-1&&!w;A--){var $;if(A>=0)$=arguments[A];else{if(g===void 0)g=process.cwd();$=g}if(W($),$.length===0)continue;f=$+"/"+f,w=$.charCodeAt(0)===47}if(f=n(f,!w),w)if(f.length>0)return"/"+f;else return"/";else if(f.length>0)return f;else return"."}function S(f){if(W(f),f.length===0)return".";var w=f.charCodeAt(0)===47,g=f.charCodeAt(f.length-1)===47;if(f=n(f,!w),f.length===0&&!w)f=".";if(f.length>0&&g)f+="/";if(w)return"/"+f;return f}function h(f){return W(f),f.length>0&&f.charCodeAt(0)===47}function m(){if(arguments.length===0)return".";var f;for(var w=0;w<arguments.length;++w){var g=arguments[w];if(W(g),g.length>0)if(f===void 0)f=g;else f+="/"+g}if(f===void 0)return".";return S(f)}function d(f,w){if(W(f),W(w),f===w)return"";if(f=K(f),w=K(w),f===w)return"";var g=1;for(;g<f.length;++g)if(f.charCodeAt(g)!==47)break;var A=f.length,$=A-g,z=1;for(;z<w.length;++z)if(w.charCodeAt(z)!==47)break;var J=w.length,Y=J-z,j=$<Y?$:Y,V=-1,Z=0;for(;Z<=j;++Z){if(Z===j){if(Y>j){if(w.charCodeAt(z+Z)===47)return w.slice(z+Z+1);else if(Z===0)return w.slice(z+Z)}else if($>j){if(f.charCodeAt(g+Z)===47)V=Z;else if(Z===0)V=0}break}var F=f.charCodeAt(g+Z),B=w.charCodeAt(z+Z);if(F!==B)break;else if(F===47)V=Z}var G="";for(Z=g+V+1;Z<=A;++Z)if(Z===A||f.charCodeAt(Z)===47)if(G.length===0)G+="..";else G+="/..";if(G.length>0)return G+w.slice(z+V);else{if(z+=V,w.charCodeAt(z)===47)++z;return w.slice(z)}}function l(f){return f}function o(f){if(W(f),f.length===0)return".";var w=f.charCodeAt(0),g=w===47,A=-1,$=!0;for(var z=f.length-1;z>=1;--z)if(w=f.charCodeAt(z),w===47){if(!$){A=z;break}}else $=!1;if(A===-1)return g?"/":".";if(g&&A===1)return"//";return f.slice(0,A)}function s(f,w){if(w!==void 0&&typeof w!=="string")throw new TypeError('"ext" argument must be a string');W(f);var g=0,A=-1,$=!0,z;if(w!==void 0&&w.length>0&&w.length<=f.length){if(w.length===f.length&&w===f)return"";var J=w.length-1,Y=-1;for(z=f.length-1;z>=0;--z){var j=f.charCodeAt(z);if(j===47){if(!$){g=z+1;break}}else{if(Y===-1)$=!1,Y=z+1;if(J>=0)if(j===w.charCodeAt(J)){if(--J===-1)A=z}else J=-1,A=Y}}if(g===A)A=Y;else if(A===-1)A=f.length;return f.slice(g,A)}else{for(z=f.length-1;z>=0;--z)if(f.charCodeAt(z)===47){if(!$){g=z+1;break}}else if(A===-1)$=!1,A=z+1;if(A===-1)return"";return f.slice(g,A)}}function a(f){W(f);var w=-1,g=0,A=-1,$=!0,z=0;for(var J=f.length-1;J>=0;--J){var Y=f.charCodeAt(J);if(Y===47){if(!$){g=J+1;break}continue}if(A===-1)$=!1,A=J+1;if(Y===46){if(w===-1)w=J;else if(z!==1)z=1}else if(w!==-1)z=-1}if(w===-1||A===-1||z===0||z===1&&w===A-1&&w===g+1)return"";return f.slice(w,A)}function p(f){if(f===null||typeof f!=="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof f);return Pf("/",f)}function t(f){W(f);var w={root:"",dir:"",base:"",ext:"",name:""};if(f.length===0)return w;var g=f.charCodeAt(0),A=g===47,$;if(A)w.root="/",$=1;else $=0;var z=-1,J=0,Y=-1,j=!0,V=f.length-1,Z=0;for(;V>=$;--V){if(g=f.charCodeAt(V),g===47){if(!j){J=V+1;break}continue}if(Y===-1)j=!1,Y=V+1;if(g===46){if(z===-1)z=V;else if(Z!==1)Z=1}else if(z!==-1)Z=-1}if(z===-1||Y===-1||Z===0||Z===1&&z===Y-1&&z===J+1){if(Y!==-1)if(J===0&&A)w.base=w.name=f.slice(1,Y);else w.base=w.name=f.slice(J,Y)}else{if(J===0&&A)w.name=f.slice(1,z),w.base=f.slice(1,Y);else w.name=f.slice(J,z),w.base=f.slice(J,Y);w.ext=f.slice(z,Y)}if(J>0)w.dir=f.slice(0,J-1);else if(A)w.dir="/";return w}var e="/",ff=":",gf,_f;var Af=Tf(()=>{gf=((f)=>(f.posix=f,f))({resolve:K,normalize:S,isAbsolute:h,join:m,relative:d,_makeLong:l,dirname:o,basename:s,extname:a,format:p,parse:t,sep:e,delimiter:ff,win32:null,posix:null}),_f=gf});var Jf=L((nf)=>{var yf=/[|\\{}()[\]^$+*?.]/g,kf=Object.prototype.hasOwnProperty,E=function(f,w){return kf.apply(f,[w])};nf.escapeRegExpChars=function(f){if(!f)return"";return String(f).replace(yf,"\\$&")};var If={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&#34;","'":"&#39;"},xf=/[&<>'"]/g;function rf(f){return If[f]||f}var uf=`var _ENCODE_HTML_RULES = {
1
+ var bf=Object.create;var{getPrototypeOf:Sf,defineProperty:R,getOwnPropertyNames:n,getOwnPropertyDescriptor:cf}=Object,i=Object.prototype.hasOwnProperty;var Ef=(f,w,g)=>{g=f!=null?bf(Sf(f)):{};let A=w||!f||!f.__esModule?R(g,"default",{value:f,enumerable:!0}):g;for(let $ of n(f))if(!i.call(A,$))R(A,$,{get:()=>f[$],enumerable:!0});return A},r=new WeakMap,qf=(f)=>{var w=r.get(f),g;if(w)return w;if(w=R({},"__esModule",{value:!0}),f&&typeof f==="object"||typeof f==="function")n(f).map((A)=>!i.call(w,A)&&R(w,A,{get:()=>f[A],enumerable:!(g=cf(f,A))||g.enumerable}));return r.set(f,w),w},L=(f,w)=>()=>(w||f((w={exports:{}}).exports,w),w.exports);var Tf=(f,w)=>{for(var g in w)R(f,g,{get:w[g],enumerable:!0,configurable:!0,set:(A)=>w[g]=()=>A})};var Pf=(f,w)=>()=>(f&&(w=f(f=0)),w);var yf=((f)=>typeof require!=="undefined"?require:typeof Proxy!=="undefined"?new Proxy(f,{get:(w,g)=>(typeof require!=="undefined"?require:w)[g]}):f)(function(f){if(typeof require!=="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+f+'" is not supported')});var wf={};Tf(wf,{sep:()=>e,resolve:()=>K,relative:()=>d,posix:()=>gf,parse:()=>t,normalize:()=>b,join:()=>m,isAbsolute:()=>h,format:()=>p,extname:()=>a,dirname:()=>o,delimiter:()=>ff,default:()=>kf,basename:()=>s,_makeLong:()=>l});function W(f){if(typeof f!=="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(f))}function u(f,w){var g="",A=0,$=-1,j=0,z;for(var J=0;J<=f.length;++J){if(J<f.length)z=f.charCodeAt(J);else if(z===47)break;else z=47;if(z===47){if($===J-1||j===1);else if($!==J-1&&j===2){if(g.length<2||A!==2||g.charCodeAt(g.length-1)!==46||g.charCodeAt(g.length-2)!==46){if(g.length>2){var Z=g.lastIndexOf("/");if(Z!==g.length-1){if(Z===-1)g="",A=0;else g=g.slice(0,Z),A=g.length-1-g.lastIndexOf("/");$=J,j=0;continue}}else if(g.length===2||g.length===1){g="",A=0,$=J,j=0;continue}}if(w){if(g.length>0)g+="/..";else g="..";A=2}}else{if(g.length>0)g+="/"+f.slice($+1,J);else g=f.slice($+1,J);A=J-$-1}$=J,j=0}else if(z===46&&j!==-1)++j;else j=-1}return g}function _f(f,w){var g=w.dir||w.root,A=w.base||(w.name||"")+(w.ext||"");if(!g)return A;if(g===w.root)return g+A;return g+f+A}function K(){var f="",w=!1,g;for(var A=arguments.length-1;A>=-1&&!w;A--){var $;if(A>=0)$=arguments[A];else{if(g===void 0)g=process.cwd();$=g}if(W($),$.length===0)continue;f=$+"/"+f,w=$.charCodeAt(0)===47}if(f=u(f,!w),w)if(f.length>0)return"/"+f;else return"/";else if(f.length>0)return f;else return"."}function b(f){if(W(f),f.length===0)return".";var w=f.charCodeAt(0)===47,g=f.charCodeAt(f.length-1)===47;if(f=u(f,!w),f.length===0&&!w)f=".";if(f.length>0&&g)f+="/";if(w)return"/"+f;return f}function h(f){return W(f),f.length>0&&f.charCodeAt(0)===47}function m(){if(arguments.length===0)return".";var f;for(var w=0;w<arguments.length;++w){var g=arguments[w];if(W(g),g.length>0)if(f===void 0)f=g;else f+="/"+g}if(f===void 0)return".";return b(f)}function d(f,w){if(W(f),W(w),f===w)return"";if(f=K(f),w=K(w),f===w)return"";var g=1;for(;g<f.length;++g)if(f.charCodeAt(g)!==47)break;var A=f.length,$=A-g,j=1;for(;j<w.length;++j)if(w.charCodeAt(j)!==47)break;var z=w.length,J=z-j,Z=$<J?$:J,V=-1,Y=0;for(;Y<=Z;++Y){if(Y===Z){if(J>Z){if(w.charCodeAt(j+Y)===47)return w.slice(j+Y+1);else if(Y===0)return w.slice(j+Y)}else if($>Z){if(f.charCodeAt(g+Y)===47)V=Y;else if(Y===0)V=0}break}var C=f.charCodeAt(g+Y),B=w.charCodeAt(j+Y);if(C!==B)break;else if(C===47)V=Y}var G="";for(Y=g+V+1;Y<=A;++Y)if(Y===A||f.charCodeAt(Y)===47)if(G.length===0)G+="..";else G+="/..";if(G.length>0)return G+w.slice(j+V);else{if(j+=V,w.charCodeAt(j)===47)++j;return w.slice(j)}}function l(f){return f}function o(f){if(W(f),f.length===0)return".";var w=f.charCodeAt(0),g=w===47,A=-1,$=!0;for(var j=f.length-1;j>=1;--j)if(w=f.charCodeAt(j),w===47){if(!$){A=j;break}}else $=!1;if(A===-1)return g?"/":".";if(g&&A===1)return"//";return f.slice(0,A)}function s(f,w){if(w!==void 0&&typeof w!=="string")throw new TypeError('"ext" argument must be a string');W(f);var g=0,A=-1,$=!0,j;if(w!==void 0&&w.length>0&&w.length<=f.length){if(w.length===f.length&&w===f)return"";var z=w.length-1,J=-1;for(j=f.length-1;j>=0;--j){var Z=f.charCodeAt(j);if(Z===47){if(!$){g=j+1;break}}else{if(J===-1)$=!1,J=j+1;if(z>=0)if(Z===w.charCodeAt(z)){if(--z===-1)A=j}else z=-1,A=J}}if(g===A)A=J;else if(A===-1)A=f.length;return f.slice(g,A)}else{for(j=f.length-1;j>=0;--j)if(f.charCodeAt(j)===47){if(!$){g=j+1;break}}else if(A===-1)$=!1,A=j+1;if(A===-1)return"";return f.slice(g,A)}}function a(f){W(f);var w=-1,g=0,A=-1,$=!0,j=0;for(var z=f.length-1;z>=0;--z){var J=f.charCodeAt(z);if(J===47){if(!$){g=z+1;break}continue}if(A===-1)$=!1,A=z+1;if(J===46){if(w===-1)w=z;else if(j!==1)j=1}else if(w!==-1)j=-1}if(w===-1||A===-1||j===0||j===1&&w===A-1&&w===g+1)return"";return f.slice(w,A)}function p(f){if(f===null||typeof f!=="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof f);return _f("/",f)}function t(f){W(f);var w={root:"",dir:"",base:"",ext:"",name:""};if(f.length===0)return w;var g=f.charCodeAt(0),A=g===47,$;if(A)w.root="/",$=1;else $=0;var j=-1,z=0,J=-1,Z=!0,V=f.length-1,Y=0;for(;V>=$;--V){if(g=f.charCodeAt(V),g===47){if(!Z){z=V+1;break}continue}if(J===-1)Z=!1,J=V+1;if(g===46){if(j===-1)j=V;else if(Y!==1)Y=1}else if(j!==-1)Y=-1}if(j===-1||J===-1||Y===0||Y===1&&j===J-1&&j===z+1){if(J!==-1)if(z===0&&A)w.base=w.name=f.slice(1,J);else w.base=w.name=f.slice(z,J)}else{if(z===0&&A)w.name=f.slice(1,j),w.base=f.slice(1,J);else w.name=f.slice(z,j),w.base=f.slice(z,J);w.ext=f.slice(j,J)}if(z>0)w.dir=f.slice(0,z-1);else if(A)w.dir="/";return w}var e="/",ff=":",gf,kf;var Af=Pf(()=>{gf=((f)=>(f.posix=f,f))({resolve:K,normalize:b,isAbsolute:h,join:m,relative:d,_makeLong:l,dirname:o,basename:s,extname:a,format:p,parse:t,sep:e,delimiter:ff,win32:null,posix:null}),kf=gf});var zf=L((mf)=>{var If=/[|\\{}()[\]^$+*?.]/g,xf=Object.prototype.hasOwnProperty,c=function(f,w){return xf.apply(f,[w])};mf.escapeRegExpChars=function(f){if(!f)return"";return String(f).replace(If,"\\$&")};var rf={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&#34;","'":"&#39;"},nf=/[&<>'"]/g;function uf(f){return rf[f]||f}var hf=`var _ENCODE_HTML_RULES = {
2
2
  "&": "&amp;"
3
3
  , "<": "&lt;"
4
4
  , ">": "&gt;"
@@ -9,46 +9,46 @@ var Of=Object.create;var{getPrototypeOf:Lf,defineProperty:M,getOwnPropertyNames:
9
9
  function encode_char(c) {
10
10
  return _ENCODE_HTML_RULES[c] || c;
11
11
  };
12
- `;nf.escapeXML=function(f){return f==null?"":String(f).replace(xf,rf)};function $f(){return Function.prototype.toString.call(this)+`;
13
- `+uf}try{if(typeof Object.defineProperty==="function")Object.defineProperty(nf.escapeXML,"toString",{value:$f});else nf.escapeXML.toString=$f}catch(f){console.warn("Unable to set escapeXML.toString (is the Function prototype frozen?)")}nf.shallowCopy=function(f,w){if(w=w||{},f!==null&&f!==void 0)for(var g in w){if(!E(w,g))continue;if(g==="__proto__"||g==="constructor")continue;f[g]=w[g]}return f};nf.shallowCopyFromList=function(f,w,g){if(g=g||[],w=w||{},f!==null&&f!==void 0)for(var A=0;A<g.length;A++){var $=g[A];if(typeof w[$]!="undefined"){if(!E(w,$))continue;if($==="__proto__"||$==="constructor")continue;f[$]=w[$]}}return f};nf.cache={_data:{},set:function(f,w){this._data[f]=w},get:function(f){return this._data[f]},remove:function(f){delete this._data[f]},reset:function(){this._data={}}};nf.hyphenToCamel=function(f){return f.replace(/-[a-z]/g,function(w){return w[1].toUpperCase()})};nf.createNullProtoObjWherePossible=function(){if(typeof Object.create=="function")return function(){return Object.create(null)};if(!({__proto__:null}instanceof Object))return function(){return{__proto__:null}};return function(){return{}}}();nf.hasOwnOnlyObject=function(f){var w=nf.createNullProtoObjWherePossible();for(var g in f)if(E(f,g))w[g]=f[g];return w}});var Yf=L((L1,af)=>{af.exports={name:"ejs",description:"Embedded JavaScript templates",keywords:["template","engine","ejs"],version:"3.1.10",author:"Matthew Eernisse <mde@fleegix.org> (http://fleegix.org)",license:"Apache-2.0",bin:{ejs:"./bin/cli.js"},main:"./lib/ejs.js",jsdelivr:"ejs.min.js",unpkg:"ejs.min.js",repository:{type:"git",url:"git://github.com/mde/ejs.git"},bugs:"https://github.com/mde/ejs/issues",homepage:"https://github.com/mde/ejs",dependencies:{jake:"^10.8.5"},devDependencies:{browserify:"^16.5.1",eslint:"^6.8.0","git-directory-deploy":"^1.5.1",jsdoc:"^4.0.2","lru-cache":"^4.0.1",mocha:"^10.2.0","uglify-js":"^3.3.16"},engines:{node:">=0.10.0"},scripts:{test:"npx jake test"}}});var Uf=L((Gf)=>{var c=(()=>({})),R=(Af(),Ef(wf)),Q=Jf(),Zf=!1,pf=Yf().version,tf="<",ef=">",f1="%",Cf="locals",g1="ejs",w1="(<%%|%%>|<%=|<%-|<%_|<%#|<%|%>|-%>|_%>)",Ff=["delimiter","scope","context","debug","compileDebug","client","_with","rmWhitespace","strict","filename","async"],A1=Ff.concat("cache"),jf=/^\uFEFF/,q=/^[a-zA-Z_$][0-9a-zA-Z_$]*$/;Gf.cache=Q.cache;Gf.fileLoader=c.readFileSync;Gf.localsName=Cf;Gf.promiseImpl=new Function("return this;")().Promise;Gf.resolveInclude=function(f,w,g){var{dirname:A,extname:$,resolve:z}=R,J=z(g?w:A(w),f),Y=$(f);if(!Y)J+=".ejs";return J};function Vf(f,w){var g;if(w.some(function(A){return g=Gf.resolveInclude(f,A,!0),c.existsSync(g)}))return g}function $1(f,w){var g,A,$=w.views,z=/^[A-Za-z]+:\\|^\//.exec(f);if(z&&z.length)if(f=f.replace(/^\/*/,""),Array.isArray(w.root))g=Vf(f,w.root);else g=Gf.resolveInclude(f,w.root||"/",!0);else{if(w.filename){if(A=Gf.resolveInclude(f,w.filename),c.existsSync(A))g=A}if(!g&&Array.isArray($))g=Vf(f,$);if(!g&&typeof w.includer!=="function")throw new Error('Could not find the include file "'+w.escapeFunction(f)+'"')}return g}function U(f,w){var g,A=f.filename,$=arguments.length>1;if(f.cache){if(!A)throw new Error("cache option requires a filename");if(g=Gf.cache.get(A),g)return g;if(!$)w=Bf(A).toString().replace(jf,"")}else if(!$){if(!A)throw new Error("Internal EJS error: no file name or template provided");w=Bf(A).toString().replace(jf,"")}if(g=Gf.compile(w,f),f.cache)Gf.cache.set(A,g);return g}function z1(f,w,g){var A;if(!g)if(typeof Gf.promiseImpl=="function")return new Gf.promiseImpl(function($,z){try{A=U(f)(w),$(A)}catch(J){z(J)}});else throw new Error("Please provide a callback function");else{try{A=U(f)(w)}catch($){return g($)}g(null,A)}}function Bf(f){return Gf.fileLoader(f)}function J1(f,w){var g=Q.shallowCopy(Q.createNullProtoObjWherePossible(),w);if(g.filename=$1(f,g),typeof w.includer==="function"){var A=w.includer(f,g.filename);if(A){if(A.filename)g.filename=A.filename;if(A.template)return U(g,A.template)}}return U(g)}function Qf(f,w,g,A,$){var z=w.split(`
14
- `),J=Math.max(A-3,0),Y=Math.min(z.length,A+3),j=$(g),V=z.slice(J,Y).map(function(Z,F){var B=F+J+1;return(B==A?" >> ":" ")+B+"| "+Z}).join(`
15
- `);throw f.path=j,f.message=(j||"ejs")+":"+A+`
12
+ `;mf.escapeXML=function(f){return f==null?"":String(f).replace(nf,uf)};function $f(){return Function.prototype.toString.call(this)+`;
13
+ `+hf}try{if(typeof Object.defineProperty==="function")Object.defineProperty(mf.escapeXML,"toString",{value:$f});else mf.escapeXML.toString=$f}catch(f){console.warn("Unable to set escapeXML.toString (is the Function prototype frozen?)")}mf.shallowCopy=function(f,w){if(w=w||{},f!==null&&f!==void 0)for(var g in w){if(!c(w,g))continue;if(g==="__proto__"||g==="constructor")continue;f[g]=w[g]}return f};mf.shallowCopyFromList=function(f,w,g){if(g=g||[],w=w||{},f!==null&&f!==void 0)for(var A=0;A<g.length;A++){var $=g[A];if(typeof w[$]!="undefined"){if(!c(w,$))continue;if($==="__proto__"||$==="constructor")continue;f[$]=w[$]}}return f};mf.cache={_data:{},set:function(f,w){this._data[f]=w},get:function(f){return this._data[f]},remove:function(f){delete this._data[f]},reset:function(){this._data={}}};mf.hyphenToCamel=function(f){return f.replace(/-[a-z]/g,function(w){return w[1].toUpperCase()})};mf.createNullProtoObjWherePossible=function(){if(typeof Object.create=="function")return function(){return Object.create(null)};if(!({__proto__:null}instanceof Object))return function(){return{__proto__:null}};return function(){return{}}}();mf.hasOwnOnlyObject=function(f){var w=mf.createNullProtoObjWherePossible();for(var g in f)if(c(f,g))w[g]=f[g];return w}});var Jf=L((S1,tf)=>{tf.exports={name:"ejs",description:"Embedded JavaScript templates",keywords:["template","engine","ejs"],version:"3.1.10",author:"Matthew Eernisse <mde@fleegix.org> (http://fleegix.org)",license:"Apache-2.0",bin:{ejs:"./bin/cli.js"},main:"./lib/ejs.js",jsdelivr:"ejs.min.js",unpkg:"ejs.min.js",repository:{type:"git",url:"git://github.com/mde/ejs.git"},bugs:"https://github.com/mde/ejs/issues",homepage:"https://github.com/mde/ejs",dependencies:{jake:"^10.8.5"},devDependencies:{browserify:"^16.5.1",eslint:"^6.8.0","git-directory-deploy":"^1.5.1",jsdoc:"^4.0.2","lru-cache":"^4.0.1",mocha:"^10.2.0","uglify-js":"^3.3.16"},engines:{node:">=0.10.0"},scripts:{test:"npx jake test"}}});var Uf=L((Gf)=>{var T=(()=>({})),M=(Af(),qf(wf)),F=zf(),Yf=!1,ef=Jf().version,f1="<",g1=">",w1="%",Xf="locals",A1="ejs",$1="(<%%|%%>|<%=|<%-|<%_|<%#|<%|%>|-%>|_%>)",Cf=["delimiter","scope","context","debug","compileDebug","client","_with","rmWhitespace","strict","filename","async"],j1=Cf.concat("cache"),Zf=/^\uFEFF/,E=/^[a-zA-Z_$][0-9a-zA-Z_$]*$/;Gf.cache=F.cache;Gf.fileLoader=T.readFileSync;Gf.localsName=Xf;Gf.promiseImpl=new Function("return this;")().Promise;Gf.resolveInclude=function(f,w,g){var{dirname:A,extname:$,resolve:j}=M,z=j(g?w:A(w),f),J=$(f);if(!J)z+=".ejs";return z};function Vf(f,w){var g;if(w.some(function(A){return g=Gf.resolveInclude(f,A,!0),T.existsSync(g)}))return g}function z1(f,w){var g,A,$=w.views,j=/^[A-Za-z]+:\\|^\//.exec(f);if(j&&j.length)if(f=f.replace(/^\/*/,""),Array.isArray(w.root))g=Vf(f,w.root);else g=Gf.resolveInclude(f,w.root||"/",!0);else{if(w.filename){if(A=Gf.resolveInclude(f,w.filename),T.existsSync(A))g=A}if(!g&&Array.isArray($))g=Vf(f,$);if(!g&&typeof w.includer!=="function")throw new Error('Could not find the include file "'+w.escapeFunction(f)+'"')}return g}function U(f,w){var g,A=f.filename,$=arguments.length>1;if(f.cache){if(!A)throw new Error("cache option requires a filename");if(g=Gf.cache.get(A),g)return g;if(!$)w=Bf(A).toString().replace(Zf,"")}else if(!$){if(!A)throw new Error("Internal EJS error: no file name or template provided");w=Bf(A).toString().replace(Zf,"")}if(g=Gf.compile(w,f),f.cache)Gf.cache.set(A,g);return g}function J1(f,w,g){var A;if(!g)if(typeof Gf.promiseImpl=="function")return new Gf.promiseImpl(function($,j){try{A=U(f)(w),$(A)}catch(z){j(z)}});else throw new Error("Please provide a callback function");else{try{A=U(f)(w)}catch($){return g($)}g(null,A)}}function Bf(f){return Gf.fileLoader(f)}function Y1(f,w){var g=F.shallowCopy(F.createNullProtoObjWherePossible(),w);if(g.filename=z1(f,g),typeof w.includer==="function"){var A=w.includer(f,g.filename);if(A){if(A.filename)g.filename=A.filename;if(A.template)return U(g,A.template)}}return U(g)}function Ff(f,w,g,A,$){var j=w.split(`
14
+ `),z=Math.max(A-3,0),J=Math.min(j.length,A+3),Z=$(g),V=j.slice(z,J).map(function(Y,C){var B=C+z+1;return(B==A?" >> ":" ")+B+"| "+Y}).join(`
15
+ `);throw f.path=Z,f.message=(Z||"ejs")+":"+A+`
16
16
  `+V+`
17
17
 
18
- `+f.message,f}function Xf(f){return f.replace(/;(\s*$)/,"$1")}Gf.compile=function f(w,g){var A;if(g&&g.scope){if(!Zf)console.warn("`scope` option is deprecated and will be removed in EJS 3"),Zf=!0;if(!g.context)g.context=g.scope;delete g.scope}return A=new X(w,g),A.compile()};Gf.render=function(f,w,g){var A=w||Q.createNullProtoObjWherePossible(),$=g||Q.createNullProtoObjWherePossible();if(arguments.length==2)Q.shallowCopyFromList($,A,Ff);return U($,f)(A)};Gf.renderFile=function(){var f=Array.prototype.slice.call(arguments),w=f.shift(),g,A={filename:w},$,z;if(typeof arguments[arguments.length-1]=="function")g=f.pop();if(f.length){if($=f.shift(),f.length)Q.shallowCopy(A,f.pop());else{if($.settings){if($.settings.views)A.views=$.settings.views;if($.settings["view cache"])A.cache=!0;if(z=$.settings["view options"],z)Q.shallowCopy(A,z)}Q.shallowCopyFromList(A,$,A1)}A.filename=w}else $=Q.createNullProtoObjWherePossible();return z1(A,$,g)};Gf.Template=X;Gf.clearCache=function(){Gf.cache.reset()};function X(f,w){var g=Q.hasOwnOnlyObject(w),A=Q.createNullProtoObjWherePossible();if(this.templateText=f,this.mode=null,this.truncate=!1,this.currentLine=1,this.source="",A.client=g.client||!1,A.escapeFunction=g.escape||g.escapeFunction||Q.escapeXML,A.compileDebug=g.compileDebug!==!1,A.debug=!!g.debug,A.filename=g.filename,A.openDelimiter=g.openDelimiter||Gf.openDelimiter||tf,A.closeDelimiter=g.closeDelimiter||Gf.closeDelimiter||ef,A.delimiter=g.delimiter||Gf.delimiter||f1,A.strict=g.strict||!1,A.context=g.context,A.cache=g.cache||!1,A.rmWhitespace=g.rmWhitespace,A.root=g.root,A.includer=g.includer,A.outputFunctionName=g.outputFunctionName,A.localsName=g.localsName||Gf.localsName||Cf,A.views=g.views,A.async=g.async,A.destructuredLocals=g.destructuredLocals,A.legacyInclude=typeof g.legacyInclude!="undefined"?!!g.legacyInclude:!0,A.strict)A._with=!1;else A._with=typeof g._with!="undefined"?g._with:!0;this.opts=A,this.regex=this.createRegex()}X.modes={EVAL:"eval",ESCAPED:"escaped",RAW:"raw",COMMENT:"comment",LITERAL:"literal"};X.prototype={createRegex:function(){var f=w1,w=Q.escapeRegExpChars(this.opts.delimiter),g=Q.escapeRegExpChars(this.opts.openDelimiter),A=Q.escapeRegExpChars(this.opts.closeDelimiter);return f=f.replace(/%/g,w).replace(/</g,g).replace(/>/g,A),new RegExp(f)},compile:function(){var f,w,g=this.opts,A="",$="",z=g.escapeFunction,J,Y=g.filename?JSON.stringify(g.filename):"undefined";if(!this.source){if(this.generateSource(),A+=` var __output = "";
18
+ `+f.message,f}function Qf(f){return f.replace(/;(\s*$)/,"$1")}Gf.compile=function f(w,g){var A;if(g&&g.scope){if(!Yf)console.warn("`scope` option is deprecated and will be removed in EJS 3"),Yf=!0;if(!g.context)g.context=g.scope;delete g.scope}return A=new Q(w,g),A.compile()};Gf.render=function(f,w,g){var A=w||F.createNullProtoObjWherePossible(),$=g||F.createNullProtoObjWherePossible();if(arguments.length==2)F.shallowCopyFromList($,A,Cf);return U($,f)(A)};Gf.renderFile=function(){var f=Array.prototype.slice.call(arguments),w=f.shift(),g,A={filename:w},$,j;if(typeof arguments[arguments.length-1]=="function")g=f.pop();if(f.length){if($=f.shift(),f.length)F.shallowCopy(A,f.pop());else{if($.settings){if($.settings.views)A.views=$.settings.views;if($.settings["view cache"])A.cache=!0;if(j=$.settings["view options"],j)F.shallowCopy(A,j)}F.shallowCopyFromList(A,$,j1)}A.filename=w}else $=F.createNullProtoObjWherePossible();return J1(A,$,g)};Gf.Template=Q;Gf.clearCache=function(){Gf.cache.reset()};function Q(f,w){var g=F.hasOwnOnlyObject(w),A=F.createNullProtoObjWherePossible();if(this.templateText=f,this.mode=null,this.truncate=!1,this.currentLine=1,this.source="",A.client=g.client||!1,A.escapeFunction=g.escape||g.escapeFunction||F.escapeXML,A.compileDebug=g.compileDebug!==!1,A.debug=!!g.debug,A.filename=g.filename,A.openDelimiter=g.openDelimiter||Gf.openDelimiter||f1,A.closeDelimiter=g.closeDelimiter||Gf.closeDelimiter||g1,A.delimiter=g.delimiter||Gf.delimiter||w1,A.strict=g.strict||!1,A.context=g.context,A.cache=g.cache||!1,A.rmWhitespace=g.rmWhitespace,A.root=g.root,A.includer=g.includer,A.outputFunctionName=g.outputFunctionName,A.localsName=g.localsName||Gf.localsName||Xf,A.views=g.views,A.async=g.async,A.destructuredLocals=g.destructuredLocals,A.legacyInclude=typeof g.legacyInclude!="undefined"?!!g.legacyInclude:!0,A.strict)A._with=!1;else A._with=typeof g._with!="undefined"?g._with:!0;this.opts=A,this.regex=this.createRegex()}Q.modes={EVAL:"eval",ESCAPED:"escaped",RAW:"raw",COMMENT:"comment",LITERAL:"literal"};Q.prototype={createRegex:function(){var f=$1,w=F.escapeRegExpChars(this.opts.delimiter),g=F.escapeRegExpChars(this.opts.openDelimiter),A=F.escapeRegExpChars(this.opts.closeDelimiter);return f=f.replace(/%/g,w).replace(/</g,g).replace(/>/g,A),new RegExp(f)},compile:function(){var f,w,g=this.opts,A="",$="",j=g.escapeFunction,z,J=g.filename?JSON.stringify(g.filename):"undefined";if(!this.source){if(this.generateSource(),A+=` var __output = "";
19
19
  function __append(s) { if (s !== undefined && s !== null) __output += s }
20
- `,g.outputFunctionName){if(!q.test(g.outputFunctionName))throw new Error("outputFunctionName is not a valid JS identifier.");A+=" var "+g.outputFunctionName+` = __append;
21
- `}if(g.localsName&&!q.test(g.localsName))throw new Error("localsName is not a valid JS identifier.");if(g.destructuredLocals&&g.destructuredLocals.length){var j=" var __locals = ("+g.localsName+` || {}),
22
- `;for(var V=0;V<g.destructuredLocals.length;V++){var Z=g.destructuredLocals[V];if(!q.test(Z))throw new Error("destructuredLocals["+V+"] is not a valid JS identifier.");if(V>0)j+=`,
23
- `;j+=Z+" = __locals."+Z}A+=j+`;
20
+ `,g.outputFunctionName){if(!E.test(g.outputFunctionName))throw new Error("outputFunctionName is not a valid JS identifier.");A+=" var "+g.outputFunctionName+` = __append;
21
+ `}if(g.localsName&&!E.test(g.localsName))throw new Error("localsName is not a valid JS identifier.");if(g.destructuredLocals&&g.destructuredLocals.length){var Z=" var __locals = ("+g.localsName+` || {}),
22
+ `;for(var V=0;V<g.destructuredLocals.length;V++){var Y=g.destructuredLocals[V];if(!E.test(Y))throw new Error("destructuredLocals["+V+"] is not a valid JS identifier.");if(V>0)Z+=`,
23
+ `;Z+=Y+" = __locals."+Y}A+=Z+`;
24
24
  `}if(g._with!==!1)A+=" with ("+g.localsName+` || {}) {
25
25
  `,$+=` }
26
26
  `;$+=` return __output;
27
27
  `,this.source=A+this.source+$}if(g.compileDebug)f=`var __line = 1
28
28
  , __lines = `+JSON.stringify(this.templateText)+`
29
- , __filename = `+Y+`;
29
+ , __filename = `+J+`;
30
30
  try {
31
31
  `+this.source+`} catch (e) {
32
32
  rethrow(e, __lines, __filename, __line, escapeFn);
33
33
  }
34
- `;else f=this.source;if(g.client){if(f="escapeFn = escapeFn || "+z.toString()+`;
35
- `+f,g.compileDebug)f="rethrow = rethrow || "+Qf.toString()+`;
34
+ `;else f=this.source;if(g.client){if(f="escapeFn = escapeFn || "+j.toString()+`;
35
+ `+f,g.compileDebug)f="rethrow = rethrow || "+Ff.toString()+`;
36
36
  `+f}if(g.strict)f=`"use strict";
37
37
  `+f;if(g.debug)console.log(f);if(g.compileDebug&&g.filename)f=f+`
38
- //# sourceURL=`+Y+`
39
- `;try{if(g.async)try{J=new Function("return (async function(){}).constructor;")()}catch(C){if(C instanceof SyntaxError)throw new Error("This environment does not support async/await");else throw C}else J=Function;w=new J(g.localsName+", escapeFn, include, rethrow",f)}catch(C){if(C instanceof SyntaxError){if(g.filename)C.message+=" in "+g.filename;if(C.message+=` while compiling ejs
38
+ //# sourceURL=`+J+`
39
+ `;try{if(g.async)try{z=new Function("return (async function(){}).constructor;")()}catch(X){if(X instanceof SyntaxError)throw new Error("This environment does not support async/await");else throw X}else z=Function;w=new z(g.localsName+", escapeFn, include, rethrow",f)}catch(X){if(X instanceof SyntaxError){if(g.filename)X.message+=" in "+g.filename;if(X.message+=` while compiling ejs
40
40
 
41
- `,C.message+=`If the above error is not helpful, you may want to try EJS-Lint:
42
- `,C.message+="https://github.com/RyanZim/EJS-Lint",!g.async)C.message+=`
43
- `,C.message+="Or, if you meant to create an async function, pass `async: true` as an option."}throw C}var F=g.client?w:function C(I){var Hf=function(Nf,x){var O=Q.shallowCopy(Q.createNullProtoObjWherePossible(),I);if(x)O=Q.shallowCopy(O,x);return J1(Nf,g)(O)};return w.apply(g.context,[I||Q.createNullProtoObjWherePossible(),z,Hf,Qf])};if(g.filename&&typeof Object.defineProperty==="function"){var B=g.filename,G=R.basename(B,R.extname(B));try{Object.defineProperty(F,"name",{value:G,writable:!1,enumerable:!1,configurable:!0})}catch(C){}}return F},generateSource:function(){var f=this.opts;if(f.rmWhitespace)this.templateText=this.templateText.replace(/[\r\n]+/g,`
44
- `).replace(/^\s+|\s+$/gm,"");this.templateText=this.templateText.replace(/[ \t]*<%_/gm,"<%_").replace(/_%>[ \t]*/gm,"_%>");var w=this,g=this.parseTemplateText(),A=this.opts.delimiter,$=this.opts.openDelimiter,z=this.opts.closeDelimiter;if(g&&g.length)g.forEach(function(J,Y){var j;if(J.indexOf($+A)===0&&J.indexOf($+A+A)!==0){if(j=g[Y+2],!(j==A+z||j=="-"+A+z||j=="_"+A+z))throw new Error('Could not find matching close tag for "'+J+'".')}w.scanLine(J)})},parseTemplateText:function(){var f=this.templateText,w=this.regex,g=w.exec(f),A=[],$;while(g){if($=g.index,$!==0)A.push(f.substring(0,$)),f=f.slice($);A.push(g[0]),f=f.slice(g[0].length),g=w.exec(f)}if(f)A.push(f);return A},_addOutput:function(f){if(this.truncate)f=f.replace(/^(?:\r\n|\r|\n)/,""),this.truncate=!1;if(!f)return f;f=f.replace(/\\/g,"\\\\"),f=f.replace(/\n/g,"\\n"),f=f.replace(/\r/g,"\\r"),f=f.replace(/"/g,"\\\""),this.source+=' ; __append("'+f+`")
45
- `},scanLine:function(f){var w=this,g=this.opts.delimiter,A=this.opts.openDelimiter,$=this.opts.closeDelimiter,z=0;switch(z=f.split(`
46
- `).length-1,f){case A+g:case A+g+"_":this.mode=X.modes.EVAL;break;case A+g+"=":this.mode=X.modes.ESCAPED;break;case A+g+"-":this.mode=X.modes.RAW;break;case A+g+"#":this.mode=X.modes.COMMENT;break;case A+g+g:this.mode=X.modes.LITERAL,this.source+=' ; __append("'+f.replace(A+g+g,A+g)+`")
47
- `;break;case g+g+$:this.mode=X.modes.LITERAL,this.source+=' ; __append("'+f.replace(g+g+$,g+$)+`")
48
- `;break;case g+$:case"-"+g+$:case"_"+g+$:if(this.mode==X.modes.LITERAL)this._addOutput(f);this.mode=null,this.truncate=f.indexOf("-")===0||f.indexOf("_")===0;break;default:if(this.mode){switch(this.mode){case X.modes.EVAL:case X.modes.ESCAPED:case X.modes.RAW:if(f.lastIndexOf("//")>f.lastIndexOf(`
41
+ `,X.message+=`If the above error is not helpful, you may want to try EJS-Lint:
42
+ `,X.message+="https://github.com/RyanZim/EJS-Lint",!g.async)X.message+=`
43
+ `,X.message+="Or, if you meant to create an async function, pass `async: true` as an option."}throw X}var C=g.client?w:function X(I){var Of=function(Lf,x){var O=F.shallowCopy(F.createNullProtoObjWherePossible(),I);if(x)O=F.shallowCopy(O,x);return Y1(Lf,g)(O)};return w.apply(g.context,[I||F.createNullProtoObjWherePossible(),j,Of,Ff])};if(g.filename&&typeof Object.defineProperty==="function"){var B=g.filename,G=M.basename(B,M.extname(B));try{Object.defineProperty(C,"name",{value:G,writable:!1,enumerable:!1,configurable:!0})}catch(X){}}return C},generateSource:function(){var f=this.opts;if(f.rmWhitespace)this.templateText=this.templateText.replace(/[\r\n]+/g,`
44
+ `).replace(/^\s+|\s+$/gm,"");this.templateText=this.templateText.replace(/[ \t]*<%_/gm,"<%_").replace(/_%>[ \t]*/gm,"_%>");var w=this,g=this.parseTemplateText(),A=this.opts.delimiter,$=this.opts.openDelimiter,j=this.opts.closeDelimiter;if(g&&g.length)g.forEach(function(z,J){var Z;if(z.indexOf($+A)===0&&z.indexOf($+A+A)!==0){if(Z=g[J+2],!(Z==A+j||Z=="-"+A+j||Z=="_"+A+j))throw new Error('Could not find matching close tag for "'+z+'".')}w.scanLine(z)})},parseTemplateText:function(){var f=this.templateText,w=this.regex,g=w.exec(f),A=[],$;while(g){if($=g.index,$!==0)A.push(f.substring(0,$)),f=f.slice($);A.push(g[0]),f=f.slice(g[0].length),g=w.exec(f)}if(f)A.push(f);return A},_addOutput:function(f){if(this.truncate)f=f.replace(/^(?:\r\n|\r|\n)/,""),this.truncate=!1;if(!f)return f;f=f.replace(/\\/g,"\\\\"),f=f.replace(/\n/g,"\\n"),f=f.replace(/\r/g,"\\r"),f=f.replace(/"/g,"\\\""),this.source+=' ; __append("'+f+`")
45
+ `},scanLine:function(f){var w=this,g=this.opts.delimiter,A=this.opts.openDelimiter,$=this.opts.closeDelimiter,j=0;switch(j=f.split(`
46
+ `).length-1,f){case A+g:case A+g+"_":this.mode=Q.modes.EVAL;break;case A+g+"=":this.mode=Q.modes.ESCAPED;break;case A+g+"-":this.mode=Q.modes.RAW;break;case A+g+"#":this.mode=Q.modes.COMMENT;break;case A+g+g:this.mode=Q.modes.LITERAL,this.source+=' ; __append("'+f.replace(A+g+g,A+g)+`")
47
+ `;break;case g+g+$:this.mode=Q.modes.LITERAL,this.source+=' ; __append("'+f.replace(g+g+$,g+$)+`")
48
+ `;break;case g+$:case"-"+g+$:case"_"+g+$:if(this.mode==Q.modes.LITERAL)this._addOutput(f);this.mode=null,this.truncate=f.indexOf("-")===0||f.indexOf("_")===0;break;default:if(this.mode){switch(this.mode){case Q.modes.EVAL:case Q.modes.ESCAPED:case Q.modes.RAW:if(f.lastIndexOf("//")>f.lastIndexOf(`
49
49
  `))f+=`
50
- `}switch(this.mode){case X.modes.EVAL:this.source+=" ; "+f+`
51
- `;break;case X.modes.ESCAPED:this.source+=" ; __append(escapeFn("+Xf(f)+`))
52
- `;break;case X.modes.RAW:this.source+=" ; __append("+Xf(f)+`)
53
- `;break;case X.modes.COMMENT:break;case X.modes.LITERAL:this._addOutput(f);break}}else this._addOutput(f)}if(w.opts.compileDebug&&z)this.currentLine+=z,this.source+=" ; __line = "+this.currentLine+`
54
- `}};Gf.escapeXML=Q.escapeXML;Gf.__express=Gf.renderFile;Gf.VERSION=pf;Gf.name=g1;if(typeof window!="undefined")window.ejs=Gf});function D(f){switch(f.split(".").pop()?.toLowerCase()){case"js":return"application/javascript";case"css":return"text/css";case"html":return"text/html";case"json":return"application/json";case"png":return"image/png";case"jpg":case"jpeg":return"image/jpeg";case"svg":return"image/svg+xml";case"gif":return"image/gif";case"woff":return"font/woff";case"woff2":return"font/woff2";default:return"application/octet-stream"}}var P=null;async function F1(){if(!P){let f=await Promise.resolve().then(() => bf(Uf(),1));P=f.default||f}return P}var G1={string:"text/plain; charset=utf-8",object:"application/json; charset=utf-8",Uint8Array:"application/octet-stream",ArrayBuffer:"application/octet-stream"};class _{req;server;path;routePattern;paramNames;env;executionContext;headers=new Headers;parsedQuery=null;parsedParams=null;parsedCookies=null;parsedBody=null;contextData={};urlObject=null;constructor(f,w,g,A,$,z,J){this.req=f,this.server=w,this.path=g,this.routePattern=A,this.executionContext=J,this.env=z,this.paramNames=$}setHeader(f,w){return this.headers.set(f,w),this}removeHeader(f){return this.headers.delete(f),this}set(f,w){return this.contextData[f]=w,this}get(f){return this.contextData[f]}get ip(){if(this.server)return this.server.requestIP(this.req)?.address??null;return this.req.headers.get("CF-Connecting-IP")||null}get url(){if(!this.urlObject)this.urlObject=new URL(this.req.url);return this.urlObject}get query(){if(!this.parsedQuery)this.parsedQuery=this.url.search?Object.fromEntries(this.url.searchParams):{};return this.parsedQuery}get params(){if(!this.parsedParams)try{this.parsedParams=M1(this.paramNames,this.path)}catch(f){let w=f instanceof Error?f.message:String(f);throw new Error(`Failed to extract route parameters: ${w}`)}return this.parsedParams??{}}get body(){if(this.req.method==="GET")return Promise.resolve({});if(!this.parsedBody)this.parsedBody=(async()=>{try{let f=await R1(this.req);if(f.error)throw new Error(f.error);return Object.keys(f).length===0?null:f}catch(f){throw new Error("Invalid request body format")}})();return this.parsedBody}text(f,w=200){return new Response(f,{status:w,headers:this.headers})}send(f,w=200){let g;if(f instanceof Uint8Array)g="Uint8Array";else if(f instanceof ArrayBuffer)g="ArrayBuffer";else g=typeof f;if(!this.headers.has("Content-Type"))this.headers.set("Content-Type",G1[g]??"text/plain; charset=utf-8");let A=g==="object"&&f!==null?JSON.stringify(f):f;return new Response(A,{status:w,headers:this.headers})}json(f,w=200){return Response.json(f,{status:w,headers:this.headers})}file(f,w,g=200){let A=Bun.file(f);if(!this.headers.has("Content-Type"))this.headers.set("Content-Type",w??D(f));return new Response(A,{status:g,headers:this.headers})}async ejs(f,w={},g=200){let A=await F1();try{let $=await Bun.file(f).text(),z=A.render($,w),J=new Headers({"Content-Type":"text/html; charset=utf-8"});return new Response(z,{status:g,headers:J})}catch($){return console.error("EJS Rendering Error:",$),new Response("Error rendering template",{status:500})}}redirect(f,w=302){return this.headers.set("Location",f),new Response(null,{status:w,headers:this.headers})}setCookie(f,w,g={}){let A=`${encodeURIComponent(f)}=${encodeURIComponent(w)}`;if(g.maxAge)A+=`; Max-Age=${g.maxAge}`;if(g.expires)A+=`; Expires=${g.expires.toUTCString()}`;if(g.path)A+=`; Path=${g.path}`;if(g.domain)A+=`; Domain=${g.domain}`;if(g.secure)A+="; Secure";if(g.httpOnly)A+="; HttpOnly";if(g.sameSite)A+=`; SameSite=${g.sameSite}`;return this.headers.append("Set-Cookie",A),this}get cookies(){if(!this.parsedCookies){let f=this.req.headers.get("cookie");this.parsedCookies=f?W1(f):{}}return this.parsedCookies}stream(f){let w=new Headers(this.headers),g=new ReadableStream({async start(A){await f(A),A.close()}});return new Response(g,{headers:w})}yieldStream(f){return new Response}}function W1(f){return Object.fromEntries(f.split(";").map((w)=>{let[g,...A]=w.trim().split("=");return[g,decodeURIComponent(A.join("="))]}))}function M1(f,w){let g={},[A]=w.split("?"),$=A.split("/").filter((J)=>J!==""),z=$.length-f.length;for(let J=0;J<f.length;J++)g[f[J]]=$[z+J];return g}function c1(f,w){let g={},A=f.split("/"),[$]=w.split("?"),z=$.split("/");if(A.length!==z.length)return null;for(let J=0;J<A.length;J++){let Y=A[J];if(Y.charCodeAt(0)===58)g[Y.slice(1)]=z[J]}return g}async function R1(f){let w=f.headers.get("Content-Type")||"";if(!w)return{};if(f.headers.get("Content-Length")==="0"||!f.body)return{};if(w.startsWith("application/json"))return await f.json();if(w.startsWith("application/x-www-form-urlencoded")){let A=await f.text();return Object.fromEntries(new URLSearchParams(A))}if(w.startsWith("multipart/form-data")){let A=await f.formData(),$={};for(let[z,J]of A.entries())$[z]=J;return $}return{error:"Unknown request body type"}}var U1=(f,w)=>{try{return w(f)}catch{return f.replace(/(?:%[0-9A-Fa-f]{2})+/g,(g)=>{try{return w(g)}catch{return g}})}},y=(f)=>U1(f,decodeURI),_1=(f)=>{let w=f.indexOf("/",f.indexOf(":")+4),g=w;for(;g<f.length;g++){let A=f.charCodeAt(g);if(A===37){let $=f.indexOf("?",g),z=f.slice(w,$===-1?void 0:$);return y(z.includes("%25")?z.replace(/%25/g,"%2525"):z)}else if(A===63)break}return f.slice(w,g)};async function N(f,w,g){if(!w?.length)return;for(let A=0;A<w.length;A++){let $=w[A](...g),z=$ instanceof Promise?await $:$;if(z&&f!=="onRequest")return z}}async function Df(f,w,g){let A=f.globalMiddlewares;if(A.length)for(let z of A){let J=await z(g);if(J)return J}let $=f.middlewares.get(w);if($&&$.length)for(let z of $){let J=await z(g);if(J)return J}return null}async function I1(f,w,g){for(let A of f){let $=await A(w,g);if($)return $}}async function Kf(f,w,g){let A=await D1(f,w,g),$=A instanceof Promise?await A:A;if($)return $}async function D1(f,w,g){if(w.endsWith("/"))w=w.slice(0,-1);if(!f.filters.has(w))if(f.filterFunction.length)for(let A of f.filterFunction){let $=await A(g);if($)return $}else return Response.json({error:"Protected route, authentication required"},{status:401})}async function vf(f,w,g){if(f.staticPath){let $=!0;if(f.staticRequestPath)$=g.startsWith(f.staticRequestPath);if($){let z=await K1(f,g,w);if(z)return z;let J=f.router.find(w.req.method,"*");if(J?.handler)return await J.handler(w)}}let A=f.routeNotFoundFunc(w);return A instanceof Promise?await A:A||k(404,`404 Route not found for ${g}`)}function k(f,w){return new Response(JSON.stringify({error:w}),{status:f,headers:{"Content-Type":"application/json"}})}async function K1(f,w,g){if(!f.staticPath)return null;let A=`${f.staticPath}${w}`;if(await Bun.file(A).exists()){let z=D(A);return g.file(A,z,200)}return null}async function v1(f,w,g,A,$){let z,J=f.url.indexOf("/",f.url.indexOf(":")+4),Y=J;for(;Y<f.url.length;Y++){let B=f.url.charCodeAt(Y);if(B===37){let G=f.url.indexOf("?",Y),C=f.url.slice(J,G===-1?void 0:G);z=y(C.includes("%25")?C.replace(/%25/g,"%2525"):C);break}else if(B===63)break}if(!z)z=f.url.slice(J,Y);let j=g.router.find(f.method,z),V=new _(f,w,z,j?.path,A,$);if(g.hasOnReqHook)await N("onRequest",g.hooks.onRequest,[f,z,w]);if(g.hasMiddleware){let B=await Df(g,z,V);if(B)return B}if(g.hasFilterEnabled){let B=await Kf(g,z,V);if(B)return B}if(!j)return await vf(g,V,z);if(g.hasPreHandlerHook){let B=await N("preHandler",g.hooks.preHandler,[V]);if(B)return B}let Z=j.handler(V),F=Z instanceof Promise?await Z:Z;if(g.hasOnSendHook){let B=await N("onSend",g.hooks.onSend,[V,F]);if(B)return B}if(F instanceof Response)return F;return k(500,"No response returned from handler.")}export{v1 as default};
50
+ `}switch(this.mode){case Q.modes.EVAL:this.source+=" ; "+f+`
51
+ `;break;case Q.modes.ESCAPED:this.source+=" ; __append(escapeFn("+Qf(f)+`))
52
+ `;break;case Q.modes.RAW:this.source+=" ; __append("+Qf(f)+`)
53
+ `;break;case Q.modes.COMMENT:break;case Q.modes.LITERAL:this._addOutput(f);break}}else this._addOutput(f)}if(w.opts.compileDebug&&j)this.currentLine+=j,this.source+=" ; __line = "+this.currentLine+`
54
+ `}};Gf.escapeXML=F.escapeXML;Gf.__express=Gf.renderFile;Gf.VERSION=ef;Gf.name=A1;if(typeof window!="undefined")window.ejs=Gf});function D(f){switch(f.split(".").pop()?.toLowerCase()){case"js":return"application/javascript";case"css":return"text/css";case"html":return"text/html";case"json":return"application/json";case"png":return"image/png";case"jpg":case"jpeg":return"image/jpeg";case"svg":return"image/svg+xml";case"gif":return"image/gif";case"woff":return"font/woff";case"woff2":return"font/woff2";default:return"application/octet-stream"}}var P=null;async function W1(){if(!P){let f=await Promise.resolve().then(() => Ef(Uf(),1));P=f.default||f}return P}var R1={string:"text/plain; charset=utf-8",object:"application/json; charset=utf-8",Uint8Array:"application/octet-stream",ArrayBuffer:"application/octet-stream"};class y{req;server;path;routePattern;paramNames;env;executionContext;headers=new Headers;parsedQuery=null;parsedParams=null;parsedCookies=null;parsedBody=null;contextData={};urlObject=null;constructor(f,w,g,A,$,j,z){this.req=f,this.server=w,this.path=g,this.routePattern=A,this.executionContext=z,this.env=j,this.paramNames=$}setHeader(f,w){return this.headers.set(f,w),this}removeHeader(f){return this.headers.delete(f),this}set(f,w){return this.contextData[f]=w,this}get(f){return this.contextData[f]}get ip(){if(this.server)return this.server.requestIP(this.req)?.address??null;return this.req.headers.get("CF-Connecting-IP")||null}get url(){if(!this.urlObject)this.urlObject=new URL(this.req.url);return this.urlObject}get query(){if(!this.parsedQuery)this.parsedQuery=this.url.search?Object.fromEntries(this.url.searchParams):{};return this.parsedQuery}get params(){if(!Array.isArray(this.paramNames))return this.paramNames;if(!this.parsedParams)try{this.parsedParams=U1(this.paramNames,this.path)}catch(f){let w=f instanceof Error?f.message:String(f);throw new Error(`Failed to extract route parameters: ${w}`)}return this.parsedParams??{}}get body(){if(this.req.method==="GET")return Promise.resolve({});if(!this.parsedBody)this.parsedBody=(async()=>{try{let f=await D1(this.req);if(f.error)throw new Error(f.error);return Object.keys(f).length===0?null:f}catch(f){throw new Error("Invalid request body format")}})();return this.parsedBody}text(f,w=200){return new Response(f,{status:w,headers:this.headers})}send(f,w=200){let g;if(f instanceof Uint8Array)g="Uint8Array";else if(f instanceof ArrayBuffer)g="ArrayBuffer";else g=typeof f;if(!this.headers.has("Content-Type"))this.headers.set("Content-Type",R1[g]??"text/plain; charset=utf-8");let A=g==="object"&&f!==null?JSON.stringify(f):f;return new Response(A,{status:w,headers:this.headers})}json(f,w=200){return Response.json(f,{status:w,headers:this.headers})}file(f,w,g=200){let A=Bun.file(f);if(!this.headers.has("Content-Type"))this.headers.set("Content-Type",w??D(f));return new Response(A,{status:g,headers:this.headers})}async ejs(f,w={},g=200){let A=await W1();try{let $=await Bun.file(f).text(),j=A.render($,w),z=new Headers({"Content-Type":"text/html; charset=utf-8"});return new Response(j,{status:g,headers:z})}catch($){return console.error("EJS Rendering Error:",$),new Response("Error rendering template",{status:500})}}redirect(f,w=302){return this.headers.set("Location",f),new Response(null,{status:w,headers:this.headers})}setCookie(f,w,g={}){let A=`${encodeURIComponent(f)}=${encodeURIComponent(w)}`;if(g.maxAge)A+=`; Max-Age=${g.maxAge}`;if(g.expires)A+=`; Expires=${g.expires.toUTCString()}`;if(g.path)A+=`; Path=${g.path}`;if(g.domain)A+=`; Domain=${g.domain}`;if(g.secure)A+="; Secure";if(g.httpOnly)A+="; HttpOnly";if(g.sameSite)A+=`; SameSite=${g.sameSite}`;return this.headers.append("Set-Cookie",A),this}get cookies(){if(!this.parsedCookies){let f=this.req.headers.get("cookie");this.parsedCookies=f?M1(f):{}}return this.parsedCookies}stream(f){let w=new Headers(this.headers),g=new ReadableStream({async start(A){await f(A),A.close()}});return new Response(g,{headers:w})}yieldStream(f){return new Response}}function M1(f){return Object.fromEntries(f.split(";").map((w)=>{let[g,...A]=w.trim().split("=");return[g,decodeURIComponent(A.join("="))]}))}function U1(f,w){let g={},[A]=w.split("?"),$=A.split("/").filter((z)=>z!==""),j=$.length-f.length;for(let z=0;z<f.length;z++)g[f[z]]=$[j+z];return g}function y1(f,w){let g={},A=f.split("/"),[$]=w.split("?"),j=$.split("/");if(A.length!==j.length)return null;for(let z=0;z<A.length;z++){let J=A[z];if(J.charCodeAt(0)===58)g[J.slice(1)]=j[z]}return g}async function D1(f){let w=f.headers.get("Content-Type")||"";if(!w)return{};if(f.headers.get("Content-Length")==="0"||!f.body)return{};if(w.startsWith("application/json"))return await f.json();if(w.startsWith("application/x-www-form-urlencoded")){let A=await f.text();return Object.fromEntries(new URLSearchParams(A))}if(w.startsWith("multipart/form-data")){let A=await f.formData(),$={};for(let[j,z]of A.entries())$[j]=z;return $}return{error:"Unknown request body type"}}var K1=(f,w)=>{try{return w(f)}catch{return f.replace(/(?:%[0-9A-Fa-f]{2})+/g,(g)=>{try{return w(g)}catch{return g}})}},_=(f)=>K1(f,decodeURI),k1=(f)=>{let w=f.indexOf("/",f.indexOf(":")+4),g=w;for(;g<f.length;g++){let A=f.charCodeAt(g);if(A===37){let $=f.indexOf("?",g),j=f.slice(w,$===-1?void 0:$);return _(j.includes("%25")?j.replace(/%25/g,"%2525"):j)}else if(A===63)break}return f.slice(w,g)};var Df=(f)=>f!==null&&typeof f==="object"&&typeof f.then==="function",Kf=(f)=>f!==null&&typeof f==="object"&&typeof f.status==="number"&&typeof f.headers==="object";async function N(f,w,g){if(!w?.length)return;for(let A=0;A<w.length;A++){let $=w[A](...g),j=$ instanceof Promise?await $:$;if(j&&f!=="onRequest")return j}}async function Hf(f,w,g){let A=f.globalMiddlewares;if(A.length)for(let j of A){let z=await j(g);if(z)return z}let $=f.middlewares.get(w);if($&&$.length)for(let j of $){let z=await j(g);if(z)return z}return null}async function i1(f,w,g){for(let A of f){let $=await A(w,g);if($)return $}}async function vf(f,w,g){let A=await H1(f,w,g),$=Df(A)?await A:A;if($)return $}async function H1(f,w,g){if(w.endsWith("/"))w=w.slice(0,-1);if(!f.filters.has(w))if(f.filterFunction.length)for(let A of f.filterFunction){let $=await A(g);if($)return $}else return Response.json({error:"Protected route, authentication required"},{status:401})}async function Nf(f,w,g){if(f.staticPath){let Z=!0;if(f.staticRequestPath)Z=g.startsWith(f.staticRequestPath);if(Z){let V=await v1(f,g,w);if(V)return V}}let z=await(f.router.find(w.req.method,"*")?.handler).slice(-1)[0](w);if(Kf(z))return z;let J=f.routeNotFoundFunc(w);return J instanceof Promise?await J:J||k(404,`404 Route not found for ${g}`)}function k(f,w){return new Response(JSON.stringify({error:w}),{status:f,headers:{"Content-Type":"application/json"}})}async function v1(f,w,g){if(!f.staticPath)return null;let A=`${f.staticPath}${w}`;if(await Bun.file(A).exists()){let j=D(A);return g.file(A,j,200)}return null}async function N1(f,w,g,A,$){let j,z=f.url.indexOf("/",f.url.indexOf(":")+4),J=z;for(;J<f.url.length;J++){let B=f.url.charCodeAt(J);if(B===37){let G=f.url.indexOf("?",J),X=f.url.slice(z,G===-1?void 0:G);j=_(X.includes("%25")?X.replace(/%25/g,"%2525"):X);break}else if(B===63)break}if(!j)j=f.url.slice(z,J);let Z=g.router.find(f.method,j),V=new y(f,w,j,Z?.path,A,$);if(g.hasOnReqHook)await N("onRequest",g.hooks.onRequest,[f,j,w]);if(g.hasMiddleware){let B=await Hf(g,j,V);if(B)return B}if(g.hasFilterEnabled){let B=await vf(g,j,V);if(B)return B}if(!Z)return await Nf(g,V,j);if(g.hasPreHandlerHook){let B=await N("preHandler",g.hooks.preHandler,[V]);if(B)return B}let Y=Z.handler(V),C=Y instanceof Promise?await Y:Y;if(g.hasOnSendHook){let B=await N("onSend",g.hooks.onSend,[V,C]);if(B)return B}if(C instanceof Response)return C;return k(500,"No response returned from handler.")}export{N1 as default};
package/dist/main.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { CompileConfig, ContextType, corsT, DieselOptions, errorFormat, FilterMethods, HookType, listenArgsT, middlewareFunc, RouteNotFoundHandler, type handlerFunction, type Hooks } from "./types.js";
1
+ import { CompileConfig, ContextType, corsT, DieselOptions, errorFormat, FilterMethods, HookType, listenArgsT, middlewareFunc, RouteHandler, RouteNotFoundHandler, type Hooks } from "./types.js";
2
2
  import { Server } from "bun";
3
3
  import { AdvancedLoggerOptions, LoggerOptions } from "./middlewares/logger/logger.js";
4
4
  import { EventEmitter } from 'events';
@@ -24,7 +24,7 @@ export default class Diesel {
24
24
  private serverInstance;
25
25
  staticFiles: any;
26
26
  user_jwt_secret: string;
27
- private baseApiUrl;
27
+ baseApiUrl: string;
28
28
  private enableFileRouter;
29
29
  idleTimeOut: number;
30
30
  routeNotFoundFunc: (c: ContextType) => void | Promise<void> | Promise<Response> | Response;
@@ -35,6 +35,15 @@ export default class Diesel {
35
35
  platform: string;
36
36
  staticPath: any;
37
37
  staticRequestPath: string | undefined;
38
+ get: RouteHandler;
39
+ post: RouteHandler;
40
+ put: RouteHandler;
41
+ patch: RouteHandler;
42
+ delete: RouteHandler;
43
+ any: RouteHandler;
44
+ head: RouteHandler;
45
+ options: RouteHandler;
46
+ propfind: RouteHandler;
38
47
  constructor(options?: DieselOptions);
39
48
  static router(prefix: string): Diesel;
40
49
  /**
@@ -49,16 +58,13 @@ export default class Diesel {
49
58
  static(path: string, requestPath?: string): this;
50
59
  staticHtml(args: Record<string, string>): this;
51
60
  addHooks<T extends HookType>(typeOfHook: T, fnc: Hooks[T][number]): this;
52
- private compile;
53
- private registerFileRoutes;
54
- private loadRoutes;
55
61
  useLogger(options: LoggerOptions): this;
56
62
  useAdvancedLogger(options: AdvancedLoggerOptions): this;
57
63
  BunRoute(method: string, path: string, ...handlersOrResponse: any[]): this;
58
64
  listen(port: any, ...args: listenArgsT[]): Server | void;
59
65
  close(callback?: () => void): void;
60
66
  cfFetch(): (request: Request, env: Record<string, any>, executionCtx: any) => Promise<Response | undefined>;
61
- fetch(): ((request: Request, env?: Record<string, any>, executionContext?: any) => Promise<Response | undefined>) | ((req: Request, server: Server) => any) | ((req: Request, server?: Server, env?: Record<string, any>, executionContext?: any) => Promise<Response | undefined>);
67
+ fetch(): ((req: Request, env: Record<string, string>, executionContext: any) => any) | ((request: Request, env?: Record<string, any>, executionContext?: any) => Promise<Response | undefined>) | ((req: Request, server: Server) => any) | ((req: Request, server?: Server, env?: Record<string, any>, executionContext?: any) => Promise<Response | undefined>);
62
68
  private handleError;
63
69
  /**
64
70
  * Mount method
@@ -86,15 +92,6 @@ export default class Diesel {
86
92
  * - app.use("/home", h1) -> Adds `h1` middleware to the `/home` path.
87
93
  */
88
94
  use(pathORHandler?: string | string[] | middlewareFunc | middlewareFunc[] | Function | Function[], ...handlers: middlewareFunc | middlewareFunc[] | Function | Function[] | any): this;
89
- get(path: string, ...handlers: handlerFunction[] | Function[]): this;
90
- post(path: string, ...handlers: handlerFunction[] | Function[]): this;
91
- put(path: string, ...handlers: handlerFunction[] | Function[]): this;
92
- patch(path: string, ...handlers: handlerFunction[] | Function[]): this;
93
- delete(path: string, ...handlers: handlerFunction[] | Function[]): this;
94
- any(path: string, ...handlers: handlerFunction[] | Function[]): this;
95
- head(path: string, ...handlers: handlerFunction[] | Function[]): this;
96
- options(path: string, ...handlers: handlerFunction[] | Function[]): this;
97
- propfind(path: string, ...handlers: handlerFunction[] | Function[]): this;
98
95
  routeNotFound(handler: RouteNotFoundHandler): this;
99
96
  on(event: string | symbol, listener: EventListener): void;
100
97
  emit(event: string | symbol, ...args: any): void;