yinzerflow 0.2.2 → 0.2.4

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/docs/logging.md CHANGED
@@ -38,6 +38,20 @@ const server = new YinzerFlow({
38
38
  await server.listen();
39
39
  ```
40
40
 
41
+ Users can also use the built in logger as well by importing the log directly from yinzerflow
42
+ ```typescript
43
+ import { YinzerFlow, log } from 'yinzerflow';
44
+
45
+ const server = new YinzerFlow({
46
+ logLevel: 'info',
47
+ networkLogs: true
48
+ });
49
+
50
+ log.info('The server is starting')
51
+
52
+ await server.listen();
53
+ ```
54
+
41
55
  ### Custom Logger Example
42
56
  ```typescript
43
57
  import { YinzerFlow } from 'yinzerflow';
@@ -665,5 +665,19 @@ export declare class YinzerFlow extends SetupImpl {
665
665
  host: string | undefined;
666
666
  };
667
667
  }
668
+ export declare const log: {
669
+ setLogLevel: (level: "error" | "info" | "off" | "warn") => void;
670
+ setCustomLogger: (logger: Logger) => void;
671
+ info: (...args: Array<unknown>) => void;
672
+ warn: (...args: Array<unknown>) => void;
673
+ error: (...args: Array<unknown>) => void;
674
+ perf: (message: string, timeMs: number, data?: unknown) => void;
675
+ levels: {
676
+ readonly off: 0;
677
+ readonly error: 1;
678
+ readonly warn: 2;
679
+ readonly info: 3;
680
+ };
681
+ };
668
682
 
669
683
  export {};
package/index.js ADDED
@@ -0,0 +1,22 @@
1
+ var M1=Object.create;var{getPrototypeOf:U1,defineProperty:u$,getOwnPropertyNames:j1}=Object;var F1=Object.prototype.hasOwnProperty;var F$=($,W,Y)=>{Y=$!=null?M1(U1($)):{};let Z=W||!$||!$.__esModule?u$(Y,"default",{value:$,enumerable:!0}):Y;for(let D of j1($))if(!F1.call(Z,D))u$(Z,D,{get:()=>$[D],enumerable:!0});return Z};var _1=($,W)=>()=>(W||$((W={exports:{}}).exports,W),W.exports);var D$=_1((_$,V$)=>{(function($,W){typeof _$=="object"&&typeof V$!="undefined"?V$.exports=W():typeof define=="function"&&define.amd?define(W):($=typeof globalThis!="undefined"?globalThis:$||self).dayjs=W()})(_$,function(){var $=1000,W=60000,Y=3600000,Z="millisecond",D="second",Q="minute",X="hour",O="day",H="week",V="month",I="quarter",A="year",L="date",o="Invalid Date",M$=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,e=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,U$={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(U){var G=["th","st","nd","rd"],J=U%100;return"["+U+(G[(J-20)%10]||G[J]||G[0])+"]"}},s=function(U,G,J){var M=String(U);return!M||M.length>=G?U:""+Array(G+1-M.length).join(J)+U},$$={s,z:function(U){var G=-U.utcOffset(),J=Math.abs(G),M=Math.floor(J/60),K=J%60;return(G<=0?"+":"-")+s(M,2,"0")+":"+s(K,2,"0")},m:function U(G,J){if(G.date()<J.date())return-U(J,G);var M=12*(J.year()-G.year())+(J.month()-G.month()),K=G.clone().add(M,V),j=J-K<0,F=G.clone().add(M+(j?-1:1),V);return+(-(M+(J-K)/(j?K-F:F-K))||0)},a:function(U){return U<0?Math.ceil(U)||0:Math.floor(U)},p:function(U){return{M:V,y:A,w:H,d:O,D:L,h:X,m:Q,s:D,ms:Z,Q:I}[U]||String(U||"").toLowerCase().replace(/s$/,"")},u:function(U){return U===void 0}},m="en",f={};f[m]=U$;var C$="$isDayjsObject",j$=function(U){return U instanceof Y$||!(!U||!U[C$])},W$=function U(G,J,M){var K;if(!G)return m;if(typeof G=="string"){var j=G.toLowerCase();f[j]&&(K=j),J&&(f[j]=J,K=j);var F=G.split("-");if(!K&&F.length>1)return U(F[0])}else{var q=G.name;f[q]=G,K=q}return!M&&K&&(m=K),K||!M&&m},z=function(U,G){if(j$(U))return U.clone();var J=typeof G=="object"?G:{};return J.date=U,J.args=arguments,new Y$(J)},w=$$;w.l=W$,w.i=j$,w.w=function(U,G){return z(U,{locale:G.$L,utc:G.$u,x:G.$x,$offset:G.$offset})};var Y$=function(){function U(J){this.$L=W$(J.locale,null,!0),this.parse(J),this.$x=this.$x||J.x||{},this[C$]=!0}var G=U.prototype;return G.parse=function(J){this.$d=function(M){var{date:K,utc:j}=M;if(K===null)return new Date(NaN);if(w.u(K))return new Date;if(K instanceof Date)return new Date(K);if(typeof K=="string"&&!/Z$/i.test(K)){var F=K.match(M$);if(F){var q=F[2]-1||0,B=(F[7]||"0").substring(0,3);return j?new Date(Date.UTC(F[1],q,F[3]||1,F[4]||0,F[5]||0,F[6]||0,B)):new Date(F[1],q,F[3]||1,F[4]||0,F[5]||0,F[6]||0,B)}}return new Date(K)}(J),this.init()},G.init=function(){var J=this.$d;this.$y=J.getFullYear(),this.$M=J.getMonth(),this.$D=J.getDate(),this.$W=J.getDay(),this.$H=J.getHours(),this.$m=J.getMinutes(),this.$s=J.getSeconds(),this.$ms=J.getMilliseconds()},G.$utils=function(){return w},G.isValid=function(){return this.$d.toString()!==o},G.isSame=function(J,M){var K=z(J);return this.startOf(M)<=K&&K<=this.endOf(M)},G.isAfter=function(J,M){return z(J)<this.startOf(M)},G.isBefore=function(J,M){return this.endOf(M)<z(J)},G.$g=function(J,M,K){return w.u(J)?this[M]:this.set(K,J)},G.unix=function(){return Math.floor(this.valueOf()/1000)},G.valueOf=function(){return this.$d.getTime()},G.startOf=function(J,M){var K=this,j=!!w.u(M)||M,F=w.p(J),q=function(p,R){var h=w.w(K.$u?Date.UTC(K.$y,R,p):new Date(K.$y,R,p),K);return j?h:h.endOf(O)},B=function(p,R){return w.w(K.toDate()[p].apply(K.toDate("s"),(j?[0,0,0,0]:[23,59,59,999]).slice(R)),K)},S=this.$W,k=this.$M,T=this.$D,c="set"+(this.$u?"UTC":"");switch(F){case A:return j?q(1,0):q(31,11);case V:return j?q(1,k):q(0,k+1);case H:var l=this.$locale().weekStart||0,a=(S<l?S+7:S)-l;return q(j?T-a:T+(6-a),k);case O:case L:return B(c+"Hours",0);case X:return B(c+"Minutes",1);case Q:return B(c+"Seconds",2);case D:return B(c+"Milliseconds",3);default:return this.clone()}},G.endOf=function(J){return this.startOf(J,!1)},G.$set=function(J,M){var K,j=w.p(J),F="set"+(this.$u?"UTC":""),q=(K={},K[O]=F+"Date",K[L]=F+"Date",K[V]=F+"Month",K[A]=F+"FullYear",K[X]=F+"Hours",K[Q]=F+"Minutes",K[D]=F+"Seconds",K[Z]=F+"Milliseconds",K)[j],B=j===O?this.$D+(M-this.$W):M;if(j===V||j===A){var S=this.clone().set(L,1);S.$d[q](B),S.init(),this.$d=S.set(L,Math.min(this.$D,S.daysInMonth())).$d}else q&&this.$d[q](B);return this.init(),this},G.set=function(J,M){return this.clone().$set(J,M)},G.get=function(J){return this[w.p(J)]()},G.add=function(J,M){var K,j=this;J=Number(J);var F=w.p(M),q=function(k){var T=z(j);return w.w(T.date(T.date()+Math.round(k*J)),j)};if(F===V)return this.set(V,this.$M+J);if(F===A)return this.set(A,this.$y+J);if(F===O)return q(1);if(F===H)return q(7);var B=(K={},K[Q]=W,K[X]=Y,K[D]=$,K)[F]||1,S=this.$d.getTime()+J*B;return w.w(S,this)},G.subtract=function(J,M){return this.add(-1*J,M)},G.format=function(J){var M=this,K=this.$locale();if(!this.isValid())return K.invalidDate||o;var j=J||"YYYY-MM-DDTHH:mm:ssZ",F=w.z(this),q=this.$H,B=this.$m,S=this.$M,k=K.weekdays,T=K.months,c=K.meridiem,l=function(R,h,n,Z$){return R&&(R[h]||R(M,j))||n[h].slice(0,Z$)},a=function(R){return w.s(q%12||12,R,"0")},p=c||function(R,h,n){var Z$=R<12?"AM":"PM";return n?Z$.toLowerCase():Z$};return j.replace(e,function(R,h){return h||function(n){switch(n){case"YY":return String(M.$y).slice(-2);case"YYYY":return w.s(M.$y,4,"0");case"M":return S+1;case"MM":return w.s(S+1,2,"0");case"MMM":return l(K.monthsShort,S,T,3);case"MMMM":return l(T,S);case"D":return M.$D;case"DD":return w.s(M.$D,2,"0");case"d":return String(M.$W);case"dd":return l(K.weekdaysMin,M.$W,k,2);case"ddd":return l(K.weekdaysShort,M.$W,k,3);case"dddd":return k[M.$W];case"H":return String(q);case"HH":return w.s(q,2,"0");case"h":return a(1);case"hh":return a(2);case"a":return p(q,B,!0);case"A":return p(q,B,!1);case"m":return String(B);case"mm":return w.s(B,2,"0");case"s":return String(M.$s);case"ss":return w.s(M.$s,2,"0");case"SSS":return w.s(M.$ms,3,"0");case"Z":return F}return null}(R)||F.replace(":","")})},G.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},G.diff=function(J,M,K){var j,F=this,q=w.p(M),B=z(J),S=(B.utcOffset()-this.utcOffset())*W,k=this-B,T=function(){return w.m(F,B)};switch(q){case A:j=T()/12;break;case V:j=T();break;case I:j=T()/3;break;case H:j=(k-S)/604800000;break;case O:j=(k-S)/86400000;break;case X:j=k/Y;break;case Q:j=k/W;break;case D:j=k/$;break;default:j=k}return K?j:w.a(j)},G.daysInMonth=function(){return this.endOf(V).$D},G.$locale=function(){return f[this.$L]},G.locale=function(J,M){if(!J)return this.$L;var K=this.clone(),j=W$(J,M,!0);return j&&(K.$L=j),K},G.clone=function(){return w.w(this.$d,this)},G.toDate=function(){return new Date(this.valueOf())},G.toJSON=function(){return this.isValid()?this.toISOString():null},G.toISOString=function(){return this.$d.toISOString()},G.toString=function(){return this.$d.toUTCString()},U}(),b$=Y$.prototype;return z.prototype=b$,[["$ms",Z],["$s",D],["$m",Q],["$H",X],["$W",O],["$M",V],["$y",A],["$D",L]].forEach(function(U){b$[U[1]]=function(G){return this.$g(G,U[0],U[1])}}),z.extend=function(U,G){return U.$i||(U(G,Y$,z),U.$i=!0),z},z.locale=W$,z.isDayjs=j$,z.unix=function(U){return z(1000*U)},z.en=f[m],z.Ls=f,z.p={},z})});import{createServer as l0}from"net";var q$=F$(D$(),1);var Q$={ok:"OK",created:"Created",accepted:"Accepted",noContent:"No Content",movedPermanently:"Moved Permanently",found:"Found",notModified:"Not Modified",badRequest:"Bad Request",unauthorized:"Unauthorized",forbidden:"Forbidden",notFound:"Not Found",methodNotAllowed:"Method Not Allowed",conflict:"Conflict",unsupportedMediaType:"Unsupported Media Type",tooManyRequests:"Too Many Requests",internalServerError:"Internal Server Error"},b={ok:200,created:201,accepted:202,noContent:204,movedPermanently:301,found:302,notModified:304,badRequest:400,unauthorized:401,forbidden:403,notFound:404,methodNotAllowed:405,conflict:409,unsupportedMediaType:415,tooManyRequests:429,internalServerError:500},E={delete:"DELETE",get:"GET",head:"HEAD",post:"POST",put:"PUT",patch:"PATCH",options:"OPTIONS"},v={json:"application/json",html:"text/html",form:"application/x-www-form-urlencoded",multipart:"multipart/form-data",xml:"application/xml",text:"text/plain",csv:"text/csv",yamlApplication:"application/yaml",yamlText:"text/yaml",urlEncodedJson:"application/x-www-form-urlencoded+json"},u={authorization:"Authorization",proxyAuthorization:"Proxy-Authorization",wwwAuthenticate:"WWW-Authenticate",cacheControl:"Cache-Control",etag:"ETag",expires:"Expires",lastModified:"Last-Modified",ifMatch:"If-Match",ifNoneMatch:"If-None-Match",ifModifiedSince:"If-Modified-Since",ifUnmodifiedSince:"If-Unmodified-Since",ifRange:"If-Range",age:"Age",vary:"Vary",contentType:"Content-Type",contentLength:"Content-Length",contentEncoding:"Content-Encoding",contentLanguage:"Content-Language",contentDisposition:"Content-Disposition",contentLocation:"Content-Location",contentRange:"Content-Range",accessControlAllowCredentials:"Access-Control-Allow-Credentials",accessControlAllowHeaders:"Access-Control-Allow-Headers",accessControlAllowMethods:"Access-Control-Allow-Methods",accessControlAllowOrigin:"Access-Control-Allow-Origin",accessControlExposeHeaders:"Access-Control-Expose-Headers",accessControlMaxAge:"Access-Control-Max-Age",accessControlRequestHeaders:"Access-Control-Request-Headers",accessControlRequestMethod:"Access-Control-Request-Method",accept:"Accept",acceptEncoding:"Accept-Encoding",acceptLanguage:"Accept-Language",acceptRanges:"Accept-Ranges",host:"Host",userAgent:"User-Agent",referer:"Referer",origin:"Origin",from:"From",expect:"Expect",location:"Location",server:"Server",date:"Date",allow:"Allow",retryAfter:"Retry-After",range:"Range",contentSecurityPolicy:"Content-Security-Policy",contentSecurityPolicyReportOnly:"Content-Security-Policy-Report-Only",strictTransportSecurity:"Strict-Transport-Security",xContentTypeOptions:"X-Content-Type-Options",xFrameOptions:"X-Frame-Options",xXSSProtection:"X-XSS-Protection",referrerPolicy:"Referrer-Policy",permissionsPolicy:"Permissions-Policy",crossOriginEmbedderPolicy:"Cross-Origin-Embedder-Policy",crossOriginOpenerPolicy:"Cross-Origin-Opener-Policy",crossOriginResourcePolicy:"Cross-Origin-Resource-Policy",cookie:"Cookie",setCookie:"Set-Cookie",connection:"Connection",keepAlive:"Keep-Alive",upgrade:"Upgrade",upgradeInsecureRequests:"Upgrade-Insecure-Requests",transferEncoding:"Transfer-Encoding",te:"TE",trailer:"Trailer",forwarded:"Forwarded",xForwardedFor:"X-Forwarded-For",via:"Via",maxForwards:"Max-Forwards",altSvc:"Alt-Svc",altUsed:"Alt-Used",timingAllowOrigin:"Timing-Allow-Origin",serverTiming:"Server-Timing",refresh:"Refresh",link:"Link",xPoweredBy:"X-Powered-By",xPermittedCrossDomainPolicies:"X-Permitted-Cross-Domain-Policies",reportTo:"Report-To",serviceWorkerAllowed:"Service-Worker-Allowed",sourceMap:"SourceMap",priority:"Priority",secGPC:"Sec-GPC",clearSiteData:"Clear-Site-Data",noVarySearch:"No-Vary-Search"},r={base64:"base64",binary:"binary",utf8:"utf8"};var X$=($,W)=>{if(!W.enabled)return!1;if($.request.method==="OPTIONS"){if(!h$($,W))return $.response.setStatusCode(403),$._response._setBody({error:"CORS: Origin not allowed",origin:$.request.headers.origin}),!0;$.response.setStatusCode(W.optionsSuccessStatus);let D=y$($,W);if($._response._setHeadersIfNotSet({[u.accessControlAllowOrigin]:D,[u.accessControlAllowMethods]:W.methods.join(", "),[u.accessControlAllowHeaders]:typeof W.allowedHeaders==="string"?W.allowedHeaders:W.allowedHeaders.join(", "),[u.accessControlAllowCredentials]:W.credentials?"true":"false",[u.accessControlExposeHeaders]:W.exposedHeaders.join(", "),[u.accessControlMaxAge]:W.maxAge.toString()}),W.preflightContinue)return!1;return $._response._setBody(""),!0}if(h$($,W)){let Z=y$($,W);$._response._setHeadersIfNotSet({[u.accessControlAllowOrigin]:Z,[u.accessControlAllowCredentials]:W.credentials?"true":"false"})}return!0},y$=($,W)=>{if(W.origin==="*"){if(W.credentials)throw new Error('CORS Security Error: origin: "*" with credentials: true is forbidden by CORS spec and creates security vulnerabilities. Use specific origins instead.');return"*"}let Y=$.request.headers.origin;if(Y)return Y;if(typeof W.origin==="string")return W.origin;if(Array.isArray(W.origin)&&W.origin.length>0){let[Z]=W.origin;return Z??"null"}return"null"},h$=($,W)=>{if(W.origin==="*")return!0;let Y=$.request.headers.origin?.toLowerCase()??"";if(typeof W.origin==="function")return Boolean(W.origin(Y,$.request));if(typeof W.origin==="string")return Y===W.origin.toLowerCase();if(Array.isArray(W.origin))return W.origin.some((Z)=>Y===Z.toLowerCase());if(W.origin instanceof RegExp)return W.origin.test(Y);return!1};var m$=F$(D$(),1),y="YINZER",N={reset:"\x1B[0m",cyan:"\x1B[96m",yellow:"\x1B[93m",red:"\x1B[91m",green:"\x1B[92m",magenta:"\x1B[95m",gray:"\x1B[90m"},V1={positive:["n'at!","yinz are good!","that's the way!","right on!","lookin' good!","way to go!","keep it up!"],neutral:["n'at","yinz know","just sayin'","that's how it is","what can ya do","it happens"],negative:["aw jeez","that ain't right","what a jagoff move","that's terrible n'at","somebody messed up","this is bad news","yinz better fix this"]},d=!1,P=null,C=()=>m$.default().format("YYYY-MM-DD HH:mm:ss.SSS"),H$=($)=>{let W=V1[$];return W[Math.floor(Math.random()*W.length)]??""},H1=($)=>{if(typeof $==="string")return Buffer.byteLength($,"utf8");if(Buffer.isBuffer($))return $.length;if(typeof $==="object"&&$!==null)try{return Buffer.byteLength(JSON.stringify($),"utf8")}catch{return 0}return 0},w1=($)=>{if($>=200&&$<300)return"✅";if($>=300&&$<400)return"\uD83D\uDD04";if($>=400&&$<500)return"❌";if($>=500)return"\uD83D\uDCA5";return"❓"},q1=($)=>{if($<50)return{emoji:"⚡",phrase:Math.random()<0.5?"lightning quick n'at!":"faster than a Stillers touchdown!"};if($<100)return{emoji:"\uD83D\uDD25",phrase:Math.random()<0.5?"that's the way!":"smooth as butter n'at!"};if($<200)return{emoji:"✅",phrase:Math.random()<0.5?"not bad yinz!":"keepin' up just fine!"};if($<500)return{emoji:"⚠️",phrase:Math.random()<0.5?"eh, could be better":"slowin' down a bit there"};if($<1000)return{emoji:"\uD83D\uDC0C",phrase:Math.random()<0.5?"that's draggin' n'at":"c'mon, pick up the pace!"};return{emoji:"\uD83D\uDCA5",phrase:Math.random()<0.5?"what a jagoff response time!":"slower than traffic on the Parkway!"}},N1=($,W,Y)=>{if(!d)return;let Z=C(),D=W??"unknown",Q=Y?` - ${Y}`:"",X="",O="info";if($==="connect")X=`\uD83E\uDD1D [NETWORK] New visitor from ${D} - Welcome to the 'Burgh!`;else if($==="disconnect")X=`\uD83D\uDC4B [NETWORK] ${D} headed out - Thanks for stopping by, yinz come back now!`;else X=`\uD83D\uDCA5 [NETWORK] Connection trouble with ${D}${Q} - That's not good, n'at!`,O="error";if(P)P[O](X);else{let H=O==="error"?N.red:N.gray;console.log(`${H}[${y}] [${Z}] ${X}${N.reset}`)}},B1=($,W,Y)=>{if(!d)return;let{request:Z}=$,D=$._response,Q=(Y-W).toFixed(1),X=Z.ipAddress||"unknown",{method:O,path:H,protocol:V}=Z,I=D._statusCode,A=H1(D._body),L=Z.headers.referer?`"${Z.headers.referer}"`:'"-"',o=Z.headers["user-agent"]?`"${Z.headers["user-agent"]}"`:'"-"',M$=w1(I),e=`\uD83C\uDFE0 ${X} - - [${C()}] "${O} ${H} ${V}" ${I} ${A}b ${L} ${o} ${Q}ms ${M$}`,U$=parseFloat(Q),{emoji:s,phrase:$$}=q1(U$),m=`${s} [PERF] Response time: ${Q}ms - ${$$}`;if(P)P.info(`[NETWORK] ${e}`),P.info(`[PERF] ${m}`);else console.log(`${N.gray}[${y}] [${C()}] [NETWORK] ${e}${N.reset}`),console.log(`${N.magenta}[${y}] ${s} [${C()}] [PERF] Response time: ${Q}ms - ${$$}${N.reset}`)},E1=($,W)=>{if(!d)return;let Y=C(),Z=$&&W?`${W}:${$}`:"unknown",D=H$("positive"),Q=`\uD83D\uDE80 [NETWORK] YinzerFlow server is up and running at ${Z} - Ready to serve yinz all, ${D}!`;if(P)P.info(Q);else console.log(`${N.gray}[${y}] [${Y}] ${Q}${N.reset}`)},A1=($,W)=>{if(!d)return;let Y=C(),Z=$&&W?`${W}:${$}`:"unknown",D=H$("neutral"),Q=`\uD83D\uDED1 [NETWORK] YinzerFlow server at ${Z} is shutting down - See yinz later, ${D}!`;if(P)P.info(Q);else console.log(`${N.gray}[${y}] [${Y}] ${Q}${N.reset}`)},z1=($,W,Y)=>{if(!d)return;let Z=C(),D=$&&W?`${W}:${$}`:"unknown",Q=Y?` - ${Y}`:"",X=H$("negative"),O=`\uD83D\uDCA5 [NETWORK] Server error at ${D}${Q} - Something's not right, ${X}!`;if(P)P.error(O);else console.log(`${N.red}[${y}] [${Z}] ${O}${N.reset}`)},S1=($)=>{d=$},k1=($)=>{P=$},x={setEnabled:S1,setNetworkLogger:k1,connection:N1,request:B1,serverStart:E1,serverStop:A1,serverError:z1};var i={off:0,error:1,warn:2,info:3},I1={positive:["n'at!","yinz are good!","that's the way!","right on!","lookin' good!","way to go!","keep it up!"],neutral:["n'at","yinz know","just sayin'","that's how it is","what can ya do","it happens"],negative:["aw jeez","that ain't right","what a jagoff move","that's terrible n'at","somebody messed up","this is bad news","yinz better fix this"]},t=i.warn,g=null,L1=($)=>{let W=I1[$];return W[Math.floor(Math.random()*W.length)]??""},R1=(...$)=>{if(t<i.info)return;if(g)g.info(...$);else w$("info",...$)},T1=(...$)=>{if(t<i.warn)return;if(g)g.warn(...$);else w$("warn",...$)},v1=(...$)=>{if(t<i.error)return;if(g)g.error(...$);else w$("error",...$)},P1=($,W,Y)=>{if(t<i.info)return;let Z=C(),D="❓ ",Q="";if(W<50)D="⚡ ",Q=Math.random()<0.5?"lightning quick n'at!":"faster than a Stillers touchdown!";else if(W<100)D="\uD83D\uDD25 ",Q=Math.random()<0.5?"that's the way!":"smooth as butter n'at!";else if(W<200)D="✅ ",Q=Math.random()<0.5?"not bad yinz!":"keepin' up just fine!";else if(W<500)D="⚠️ ",Q=Math.random()<0.5?"eh, could be better":"slowin' down a bit there";else if(W<1000)D="\uD83D\uDC0C ",Q=Math.random()<0.5?"that's draggin' n'at":"c'mon, pick up the pace!";else D="\uD83D\uDCA5 ",Q=Math.random()<0.5?"what a jagoff response time!":"slower than traffic on the Parkway!";let X=`${N.magenta}[${y}] ${D} [${Z}] [PERF]${N.reset}`,O=Y?{...Y,executionTime:`${W}ms`}:{executionTime:`${W}ms`};console.log(`${X} ${$} -`,O,`- ${Q}`)},x1=($)=>{t={off:0,error:1,warn:2,info:3}[$]},C1=($)=>{g=$},w$=($,...W)=>{let Y=C(),Z="✅ ",D=N.cyan,Q="positive",X="log";if($==="error")Z="❌ ",D=N.red,Q="negative",X="error";else if($==="warn")Z="⚠️ ",D=N.yellow,Q="neutral",X="warn";else Z="✅ ",D=N.cyan,Q="positive",X="log";let O=L1(Q),H=`${D}[${y}] ${Z}[${Y}] [${$.toUpperCase()}]${N.reset}`;console[X](`${H}`,...W,`- ${O}`)},_={setLogLevel:x1,setCustomLogger:C1,info:R1,warn:T1,error:v1,perf:P1,levels:i};class N${setup;constructor($){this.setup=$}async handle($){try{if(X$($,this.setup._configuration.cors)){$._response._parseResponseIntoString();return}let W=this.setup._routeRegistry._findRoute($.request.method,$.request.path);if(!W){let V=await this.setup._hooks._onNotFound($);$._response._setBody(V),$._response._parseResponseIntoString();return}let{handler:Y,options:Z}=W,{beforeHooks:D,afterHooks:Q}=Z,X=this.setup._hooks._beforeAll;for(let V of X)await V.handler($);for(let V of D)await V($);let O=await Y($);for(let V of Q)await V($);let H=this.setup._hooks._afterAll;for(let V of H)await V.handler($);if($._response._setBody(O),$.request.method==="HEAD")$._response._setBody(null);$._response._parseResponseIntoString();return}catch(W){await this.handleError($,W)}}async handleError($,W){_.error("Request handling error",W);try{let Y=this.setup._hooks._onError,Z=await Y($);$._response._setBody(Z),X$($,this.setup._configuration.cors),$._response._parseResponseIntoString(),$._response._setHeadersIfNotSet({Date:q$.default().format("ddd, DD MMM YYYY HH:mm:ss [GMT]"),"Content-Length":$._response._stringBody.split(`
2
+
3
+ `)[1]?.length.toString()??"0"})}catch(Y){_.error("Error handler failed",Y),$.response.setStatusCode(500),$._response._setBody({success:!1,message:"Internal Server Error"}),X$($,this.setup._configuration.cors),$._response._parseResponseIntoString(),$._response._setHeadersIfNotSet({Date:q$.default().format("ddd, DD MMM YYYY HH:mm:ss [GMT]"),"Content-Length":$._response._stringBody.split(`
4
+
5
+ `)[1]?.length.toString()??"0"})}}}var f$=["__proto__","constructor","prototype"],l$=($,W)=>{if(!$||!$.trim()||$.trim()==="\x00")return;let Y=Buffer.byteLength($,"utf8");if(Y>W.maxSize)throw _.warn("[SECURITY] JSON request body too large",{size:Y,limit:W.maxSize,sizeMB:Math.round(Y/1024/1024)}),new Error(`Request body too large: ${Y} bytes exceeds limit of ${W.maxSize} bytes`);let Z=null;try{Z=JSON.parse($)}catch(D){let Q=D instanceof Error?D.message:String(D);throw new Error(`Invalid JSON syntax: ${Q}`)}try{B$(Z,W,1)}catch(D){let Q=D instanceof Error?D.message:String(D);throw new Error(`JSON security validation failed: ${Q}`)}return Z},b1=($,W)=>{if(typeof $==="string"&&$.length>W.maxStringLength)throw new Error(`String too long: ${$.length} characters exceeds limit of ${W.maxStringLength}`)},u1=($,W,Y)=>{if($.length>W.maxArrayLength)throw new Error(`Array too large: ${$.length} elements exceeds limit of ${W.maxArrayLength}`);for(let Z of $)B$(Z,W,Y+1)},y1=($,W)=>{if($.length>W.maxKeys)throw new Error(`Object has too many keys: ${$.length} exceeds limit of ${W.maxKeys}`);if(!W.allowPrototypeProperties){for(let Y of $)if(f$.includes(Y))throw _.warn("[SECURITY] Prototype pollution attempt detected",{property:Y,dangerousProperties:f$}),new Error(`Prototype pollution attempt detected: property '${Y}' is not allowed`)}},h1=($,W,Y)=>{let Z=Object.keys($);for(let D of Z){if(D.length>W.maxStringLength)throw new Error(`Object key too long: '${D.substring(0,50)}...' exceeds limit of ${W.maxStringLength}`);let Q=$[D];if(typeof Q==="string"&&Q.length>W.maxStringLength)throw new Error(`String value too long: property '${D}' has ${Q.length} characters, exceeds limit of ${W.maxStringLength}`);B$(Q,W,Y+1)}},B$=($,W,Y)=>{if(Y>W.maxDepth)throw _.warn("[SECURITY] JSON nesting too deep - potential stack overflow attack",{currentDepth:Y,maxDepth:W.maxDepth}),new Error(`JSON nesting too deep: current depth ${Y} exceeds maximum depth of ${W.maxDepth}`);if($===null||typeof $!=="object"){b1($,W);return}if(Array.isArray($)){u1($,W,Y);return}let Z=Object.keys($);y1(Z,W),h1($,W,Y)};var m1=($)=>{let W=$.startsWith(`\r
6
+ `)?$.slice(2):$,Y=W.indexOf(`\r
7
+ \r
8
+ `);if(Y===-1)return["",""];let Z=W.slice(0,Y),D=W.slice(Y+4);return[Z,D]},f1=($)=>{let W={name:""},Y=/name=(?:"(?<temp2>[^"]*)"|(?<temp1>[^;,\s]+))/i.exec($),Z=/filename=(?:"(?<temp2>[^"]*)"|(?<temp1>[^;,\s]+))/i.exec($);if(Y)W.name=Y[1]??Y[2]??"";if(Z){let D=Z[1]??Z[2];if(D)W.filename=D}return W},l1=($)=>{let Y=$.split(/\r?\n/).find((Z)=>Z.toLowerCase().startsWith("content-type:"));if(!Y)return"application/octet-stream";return Y.slice(Y.indexOf(":")+1).trim().split(";")[0]?.trim()??"application/octet-stream"},p1=($)=>{return["image/","audio/","video/","application/octet-stream","application/pdf","application/zip","application/x-"].some((Y)=>$.toLowerCase().startsWith(Y))},g1=($)=>Buffer.isBuffer($)?$.length:Buffer.byteLength($,"utf8"),s1=($,W)=>{if(!W)return;if($.size>W.maxFileSize)throw _.warn("[SECURITY] File upload too large",{filename:$.filename,size:$.size,limit:W.maxFileSize,sizeMB:Math.round($.size/1024/1024)}),new Error(`File too large: ${$.filename} is ${$.size} bytes, exceeds limit of ${W.maxFileSize} bytes`);if($.filename&&$.filename.length>W.maxFilenameLength)throw new Error(`Filename too long: ${$.filename.length} characters exceeds limit of ${W.maxFilenameLength}`);if($.filename){let Y=$.filename.toLowerCase().substring($.filename.lastIndexOf("."));if(W.blockedExtensions.includes(Y))throw _.warn("[SECURITY] Blocked file type upload attempt",{filename:$.filename,extension:Y,blockedExtensions:W.blockedExtensions}),new Error(`File type not allowed: ${Y} files are blocked for security reasons`);if(W.allowedExtensions.length>0&&!W.allowedExtensions.includes(Y))throw new Error(`File type not allowed: ${Y} is not in the allowed extensions list`)}},c1=({contentDisposition:$,contentSection:W,headersSection:Y,config:Z})=>{let D=l1(Y),Q=W.endsWith(`\r
9
+ `)?W.slice(0,-2):W,X=p1(D)?Buffer.from(Q,"binary"):Q,O={filename:$.filename??"",contentType:D,size:g1(X),content:X};return s1(O,Z),O},p$=($,W,Y)=>{let Z={fields:{},files:[]},D=$.split(`--${W}`).slice(1),Q=0;for(let X of D){if(!X||X.trim()===""||X.trim()==="--")continue;let[O,H]=m1(X);if(!O)continue;let I=O.split(/\r?\n/).find((L)=>L.toLowerCase().startsWith("content-disposition:"));if(!I)continue;let A=f1(I);if(!A.name)continue;if(A.filename!==void 0){if(Y&&Z.files.length>=Y.maxFiles)throw _.warn("[SECURITY] Too many files in upload request",{fileCount:Z.files.length,maxFiles:Y.maxFiles}),new Error(`Too many files: maximum of ${Y.maxFiles} files allowed per request`);let L=c1({contentDisposition:A,contentSection:H,headersSection:O,config:Y});if(Q+=L.size,Y&&Q>Y.maxTotalSize)throw _.warn("[SECURITY] Total upload size too large",{totalSize:Q,limit:Y.maxTotalSize,totalSizeMB:Math.round(Q/1024/1024)}),new Error(`Total file size too large: ${Q} bytes exceeds limit of ${Y.maxTotalSize} bytes`);Z.files.push(L)}if(A.filename===void 0){let L=H.endsWith(`\r
10
+ `)?H.slice(0,-2):H;Z.fields[A.name]=L}}return Z};var r1=($,W)=>{if($.length>W.maxFields)throw new Error(`Too many form fields: ${$.length} exceeds limit of ${W.maxFields}`)},d1=($,W,Y)=>{if($.length>Y.maxFieldNameLength)throw new Error(`Form field name too long: ${$.length} characters exceeds limit of ${Y.maxFieldNameLength}`);if(W&&W.length>Y.maxFieldLength)throw new Error(`Form field value too long: field '${$}' has ${W.length} characters, exceeds limit of ${Y.maxFieldLength}`)},i1=($,W,Y)=>{if($.length>Y.maxFieldNameLength)throw new Error(`Decoded form field name too long: ${$.length} characters exceeds limit of ${Y.maxFieldNameLength}`);if(W.length>Y.maxFieldLength)throw new Error(`Decoded form field value too long: field '${$}' has ${W.length} characters, exceeds limit of ${Y.maxFieldLength}`)},a1=($,W,Y)=>{let[Z,D]=$.split("=");if(!Z)return;if(Y)d1(Z,D,Y);try{let Q=decodeURIComponent(Z),X=D?decodeURIComponent(D):"";if(Y)i1(Q,X,Y);W[Q]=X}catch(Q){if(Q instanceof Error&&Q.message.includes("exceeds limit"))throw Q;W[Z]=D??""}},g$=($,W)=>{let Y={},Z=$.split("&");if(W)r1(Z,W);for(let D of Z)a1(D,Y,W);return Y};var J$={JPEG:[255,216,255],PNG:[137,80,78,71],GIF87A:[71,73,70,56,55,97],GIF89A:[71,73,70,56,57,97],BMP:[66,77],TIFF_LE:[73,73,42,0],TIFF_BE:[77,77,0,42],WEBP:[82,73,70,70],ICO:[0,0,1,0],MP3_ID3:[73,68,51],MP3_FRAME:[255,251],WAV:[82,73,70,70],FLAC:[102,76,97,67],OGG:[79,103,103,83],MP4_FTYP:[0,0,0,24,102,116,121,112],MP4_FTYP_ALT:[0,0,0,28,102,116,121,112],AVI:[82,73,70,70],WEBM:[26,69,223,163],PDF:[37,80,68,70],ZIP:[80,75,3,4],ZIP_EMPTY:[80,75,5,6],ZIP_SPANNED:[80,75,7,8],RAR:[82,97,114,33,26,7,0],RAR5:[82,97,114,33,26,7,1,0],SEVENZ:[55,122,188,175,39,28],GZIP:[31,139],EXE:[77,90],ELF:[127,69,76,70],OFFICE_OLD:[208,207,17,224,161,177,26,225]},K$=($,W)=>{if($.length<W.length)return!1;return W.every((Y,Z)=>$[Z]===Y)},n1=($)=>{if(K$($,J$.WEBP)&&$.length>=12)return $.subarray(8,12).toString("ascii")==="WEBP";if(K$($,J$.WAV)&&$.length>=12)return $.subarray(8,12).toString("ascii")==="WAVE";if(K$($,J$.AVI)&&$.length>=12)return $.subarray(8,12).toString("ascii")==="AVI ";return!1},G$=($,W)=>{if(!$)return t1(W);let Y=$.toLowerCase();if(Y.startsWith("image/")||Y.startsWith("video/")||Y.startsWith("audio/")||Y==="application/pdf"||Y==="application/octet-stream"||Y.startsWith("application/zip")||Y.startsWith("application/x-"))return"base64";if(Y.startsWith("text/")||Y.startsWith("application/json")||Y.startsWith("application/xml")||Y.startsWith("application/javascript"))return"utf8";return"binary"},t1=($)=>{if(Buffer.isBuffer($))return o1($)?"base64":"utf8";if(typeof $==="object"&&$!==null)return"utf8";if(typeof $==="string")return"utf8";return"utf8"},o1=($)=>{if($.length===0)return!1;let W=Object.values(J$);for(let D of W)if(K$($,D))return!0;if(n1($))return!0;let Y=$.filter((D)=>D===0).length,Z=$.filter((D)=>D<32&&D!==9&&D!==10&&D!==13).length;return Y/$.length>0.1||Z/$.length>0.3};var e1=($)=>{if(!($.startsWith("{")&&$.endsWith("}")||$.startsWith("[")&&$.endsWith("]")))return!1;try{return JSON.parse($),!0}catch{return!1}},$0=($)=>$.includes("=")&&$.includes("&"),W0=($)=>$.includes("boundary="),Y0=($)=>typeof $==="object"&&$!==null&&!Buffer.isBuffer($)&&!($ instanceof Uint8Array)&&!($ instanceof ArrayBuffer)&&!($ instanceof Date),Z0=($)=>$ instanceof Date,D0=($)=>{if(Buffer.isBuffer($))return $;return Buffer.from($)},Q0=($)=>{return G$(void 0,$)==="base64"?"application/octet-stream":"text/plain"},E$=($)=>{let W=$.trim();if(e1(W))return v.json;if($0(W))return v.form;if(W0(W))return v.multipart;return"text/plain"},s$=($)=>{if($===null||$===void 0)return"text/plain";if(Z0($))return"text/plain";if(Y0($))return v.json;if(typeof $==="string")return E$($);if(Buffer.isBuffer($)||$ instanceof Uint8Array||$ instanceof ArrayBuffer){let W=D0($);return Q0(W)}return"text/plain"};var X0=($,W,Y)=>{let Z=Buffer.byteLength($,"utf8");if(W===v.json){if(Z>Y.json.maxSize)throw new Error(`JSON body too large: ${Z} bytes exceeds limit of ${Y.json.maxSize} bytes`)}else if(W===v.form){if(Z>Y.urlEncoded.maxSize)throw new Error(`URL-encoded body too large: ${Z} bytes exceeds limit of ${Y.urlEncoded.maxSize} bytes`)}else if(W===v.multipart){if(Z>Y.fileUploads.maxTotalSize)throw new Error(`Multipart body too large: ${Z} bytes exceeds limit of ${Y.fileUploads.maxTotalSize} bytes`)}},c$=($,W={})=>{let{headerContentType:Y,boundary:Z,config:D}=W;if(!$||!$.trim())return;let Q=Y??E$($);if(D)X0($,Q,D);if(Q===v.json){if(!D)throw new Error("Body parser configuration is required for JSON parsing");return l$($,D.json)}if(Q===v.multipart){if(!Z)throw new Error("Invalid multipart form data: missing boundary");return p$($,Z,D?.fileUploads)}if(Q===v.form)return g$($,D?.urlEncoded);return $};var A$=($,W)=>{let Y=$.indexOf(W);if(Y===-1)return[$,""];let Z=$.slice(0,Y),D=$.slice(Y+W.length);return[Z,D]};var r$=($)=>{if(!$||!$.trim())return{method:"GET",path:"/",protocol:"HTTP/1.1",headersRaw:"",rawBody:""};let[W,Y]=A$($,`\r
11
+ `),[Z,D,Q]=W.split(" ",3),[X,O]=A$(Y,`\r
12
+ \r
13
+ `);if(!Z||!Object.values(E).includes(Z))return{method:"GET",path:D??"/",protocol:Q??"HTTP/1.1",headersRaw:X,rawBody:O};return{method:Z,path:D??"/",protocol:Q??"HTTP/1.1",headersRaw:X,rawBody:O}};var d$=($)=>{if(!$)return{};if(!$.includes("?"))return{};let[,W]=$.split("?");if(!W)return{};let Y={},Z=W.split("&");for(let D of Z){let[Q,X]=D.split("=");if(Q)try{let O=decodeURIComponent(Q),H=X?decodeURIComponent(X):"";Y[O]=H}catch{Y[Q]=X??""}}return Y};var J0=[/^(?<classA>10)\./,/^(?<classB>172)\.(?<classBRange>1[6-9]|2[0-9]|3[0-1])\./,/^(?<classC>192)\.(?<classCRange>168)\./,/^(?<linkLocal>169)\.(?<linkLocalRange>254)\./,/^(?<loopback>127)\./,/^(?<ipv6Loopback>::1)$/,/^(?<ipv6LinkLocal>fe80):/i,/^(?<ipv6UniqueLocalFC>fc00):/i,/^(?<ipv6UniqueLocalFD>fd00):/i],i$=($)=>{if(!$||typeof $!=="string")return!1;let W=$.replace(/^\[|\]$/g,"");if(/^(?<octet>(?<highByte>25[0-5]|(?<midByte>2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$/.test(W)){let D=W.split(".");return D.length===4&&D.every((Q)=>{let X=parseInt(Q,10);return X>=0&&X<=255})}if(W.includes("::")&&(W.match(/::/g)??[]).length>1)return!1;return/^(?<ipv6Address>(?<fullAddress>(?<hexQuad>[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4})|(?<compressedAddress>(?<leadingPart>[0-9a-fA-F]{1,4}:){1,7}:)|(?<mixedCompression>(?<frontPart>[0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4})|(?<doubleColonOnly>::)|(?<linkLocal>fe80:(?<linkSuffix>:[0-9a-fA-F]{0,4}){0,4}(?<zoneId>%[0-9a-zA-Z]+)?)|(?<ipv4MappedFull>::ffff:(?<mappedIpv4>(?<mappedOctet>[0-9]{1,3}\.){3}[0-9]{1,3}))|(?<generalPattern>(?<segmentGroup>[0-9a-fA-F]{0,4}:){2,7}[0-9a-fA-F]{0,4}))$/.test(W)},a$=($)=>{if(!$)return!1;let W=$.replace(/^\[|\]$/g,"");return J0.some((Y)=>Y.test(W))},n$=($,W)=>{if(!$||!W.length)return!1;if(W.includes("*"))return!0;return W.includes($)},K0=($,W)=>{if(!W.detectSpoofing||$.length<=1)return!1;if($.length>W.maxChainLength)return!0;if(new Set($).size!==$.length)return!0;let Z=$.filter(i$).length;if(Z>0&&Z<$.length)return!0;return!1},G0=($,W)=>{if($.length<=1)return!0;let Y=$[$.length-1];return Boolean(Y&&n$(Y,W.trustedProxies))},O0=($,W)=>{if(W==="x-forwarded-for")return $[0];return $[$.length-1]},M0=($)=>{let{clientIp:W,headerName:Y,ipChain:Z,config:D}=$,Q=a$(W),X=Y==="x-forwarded-for"?n$(Z[Z.length-1]??"",D.trustedProxies):!0;return{ip:W,isValid:!0,isPrivate:Q,source:Y,trusted:X}},U0=()=>({ip:"",isValid:!1,isPrivate:!1,source:"socket",trusted:!1}),j0=($,W)=>{for(let Y of W.headerPreference){let Z=$[Y];if(!Z)continue;let D=Z.split(",").map((O)=>O.trim()).filter(Boolean);if(D.length===0)continue;if(K0(D,W))continue;if(Y==="x-forwarded-for"&&!G0(D,W))continue;let Q=O0(D,Y);if(!Q||!i$(Q))continue;if(a$(Q)&&!W.allowPrivateIps)continue;return M0({clientIp:Q,headerName:Y,ipChain:D,config:W})}return U0()},F0=($,W,Y={})=>{let D={...$._configuration.ipSecurity,...Y},Q=j0(W,D);if(Q.isValid)return Q;return{ip:"",isValid:!1,isPrivate:!1,source:"socket",trusted:!1}},t$=($,W)=>{return F0($,W).ip};var o$=($)=>{if(!$)return;return/boundary\s*=\s*(?<temp1>[^;,\s]*)/i.exec($)?.[1]};var e$=($)=>{if(!$)return{};_0($);let W=V0($),Y=H0(W);return w0(Y)},_0=($)=>{if($.split(/\r\n|\r|\n/).length>100)throw new Error("Too many headers: maximum 100 allowed")},V0=($)=>{let W={},Z=$.replace(/\r\n|\r|\n/g,`
14
+ `).split(`
15
+ `);for(let D of Z){if(!D.trim())continue;let Q=D.indexOf(":");if(Q===-1)continue;let X=D.slice(0,Q).trim(),O=D.slice(Q+1).trim();if(!X)continue;if(!q0(X))throw new Error(`Invalid header name: ${X}`);if(X.length>200)throw new Error("Header name too long: maximum 200 characters allowed");if(O.length>8192)throw new Error("Header value too long: maximum 8192 characters allowed");W[X.toLowerCase()]=O}return W},H0=($)=>{let W={};for(let[Y,Z]of Object.entries($))W[Y]=N0(Z);return W},w0=($)=>$,q0=($)=>{return/^[a-zA-Z0-9!#$%&'*+\-.^_`|~]+$/.test($)},N0=($)=>{return $.replace(/[\x00-\x08\x0A-\x1F\x7F]/g,"")};class z${_rawRequest;_setup;method;path;protocol;headers;body;query;params;ipAddress;rawBody;constructor($,W,Y){this._rawRequest=$,this._setup=W,this.ipAddress=Y??"";let{method:Z,path:D,protocol:Q,headers:X,body:O,query:H,params:V,rawBody:I}=this._parseRequestIntoObject();this.method=Z,this.path=D,this.protocol=Q,this.headers=X,this.body=O,this.query=H??{},this.params=V??{},this.rawBody=I;let A=t$(this._setup,X);if(A)this.ipAddress=A}_parseRequestIntoObject(){let $=this._rawRequest.toString(),{method:W,path:Y,protocol:Z,headersRaw:D,rawBody:Q}=r$($),X=this._setup._routeRegistry._findRoute(W,Y),O=e$(D),H=O["content-type"],V=H?.split(";")[0]?.trim().toLowerCase(),I=o$(H);return{method:W,path:Y,protocol:Z,headers:O,body:c$(Q,{headerContentType:V,boundary:I,config:this._setup._configuration.bodyParser}),query:d$(Y),params:X?.params??{},rawBody:Q}}}var D1=F$(D$(),1);var $1=($,W)=>{let Y=W?.encoding??"utf8";if($===null||$===void 0)return"";if(Buffer.isBuffer($))return S$($,Y);if($ instanceof Uint8Array)return B0($,Y);if($ instanceof ArrayBuffer)return E0($,Y);if(typeof $==="string")return $;if(typeof $==="object")return A0($);return String($)},S$=($,W)=>{if(W==="base64")return $.toString("base64");if(W==="binary")return $.toString("binary");return $.toString("utf8")},B0=($,W)=>{let Y=Buffer.from($);return S$(Y,W)},E0=($,W)=>{let Y=Buffer.from($);return S$(Y,W)},A0=($)=>{try{return JSON.stringify($)}catch(W){return String($)}};var W1=new Map;for(let[$,W]of Object.entries(b)){let Z=Q$[$];W1.set(W,Z)}var Y1=($)=>{let W=W1.get($);if(!W)throw new Error(`Unknown status code: ${$}`);return W};var z0=($,W)=>{if(typeof W!=="string")throw new Error(`Header value must be a string, got ${typeof W}`);if(W.includes("\r")||W.includes(`
16
+ `))throw new Error(`Header value contains invalid line break characters: ${$}`);let Y=[/[\r\n](?:set-cookie|location|authorization|www-authenticate):/i,/\r\n\r\n|\n\n/,/[\r\n]http\/\d\.\d\s+\d+/i];for(let Z of Y)if(Z.test(W))throw new Error(`Header value contains suspicious injection pattern: ${$}`)},S0=($)=>{for(let[W,Y]of Object.entries($))z0(W,Y)},k$=($)=>{let W={};for(let[Y,Z]of Object.entries($))if(Z!==void 0)W[Y]=Z;return S0(W),W};var Z1=($,W)=>{if(!$)return"0";let Y=0;if(W===r.base64)Y=Buffer.byteLength($,"utf8");if(W===r.binary)Y=$.length;if(W===r.utf8)Y=Buffer.byteLength($,"utf8");return String(Y)};class I${_request;_statusCode=b.ok;_status=Q$.ok;_headers={};_body="";_stringBody="";_encoding=r.utf8;constructor($){this._request=$,this._setSecurityHeaders()}_parseResponseIntoString(){let $=`${this._request.protocol} ${this._statusCode} ${this._status}`,W=Object.entries(this._headers).map(([Q,X])=>`${Q}: ${X}`),Y=G$(this._headers["content-type"],this._body),Z=$1(this._body,{encoding:Y});this._encoding=Y,this._stringBody=`${$}
17
+ ${W.join(`
18
+ `)}
19
+
20
+ ${Z}`;let D=Z1(this._stringBody,this._encoding);this._setHeadersIfNotSet({Date:D1.default().format("ddd, DD MMM YYYY HH:mm:ss [GMT]"),"Content-Length":D})}_setHeadersIfNotSet($){let W={};for(let[Z,D]of Object.entries($))if(D!==void 0&&!(Z in this._headers))W[Z]=D;let Y=k$(W);Object.assign(this._headers,Y)}_setBody($){if(this._body=$,!this._headers["content-type"]){let W=s$($);this._setHeadersIfNotSet({"Content-Type":W})}}setStatusCode($){this._statusCode=$,this._status=Y1($)}addHeaders($){let W=k$($);this._headers={...this._headers,...W}}removeHeaders($){for(let W of $)delete this._headers[W]}_setSecurityHeaders(){this._setHeadersIfNotSet({"X-Content-Type-Options":"nosniff","X-Frame-Options":"DENY","X-XSS-Protection":"1; mode=block","Referrer-Policy":"strict-origin-when-cross-origin"})}}class L${_request;_response;request;response;constructor($,W,Y){this._request=new z$($,W,Y),this._response=new I$(this._request),this.request=this._request,this.response=this._response}}var Q1={off:"off",error:"error",warn:"warn",info:"info"};var k0={enabled:!0,origin:"*",methods:["GET","POST","PUT","DELETE","PATCH","OPTIONS"],allowedHeaders:"*",exposedHeaders:[],credentials:!1,maxAge:86400,preflightContinue:!1,optionsSuccessStatus:b.noContent},O$={json:{maxSize:262144,maxDepth:10,allowPrototypeProperties:!1,maxKeys:1000,maxStringLength:1048576,maxArrayLength:1e4},fileUploads:{maxFileSize:10485760,maxTotalSize:52428800,maxFiles:10,allowedExtensions:[],blockedExtensions:[".exe",".bat",".cmd",".scr",".pif",".com"],maxFilenameLength:255},urlEncoded:{maxSize:1048576,maxFields:1000,maxFieldNameLength:100,maxFieldLength:1048576}},X1={trustedProxies:["127.0.0.1","::1"],allowPrivateIps:!0,headerPreference:["x-forwarded-for","x-real-ip","cf-connecting-ip","x-client-ip","true-client-ip"],maxChainLength:10,detectSpoofing:!0},I0={port:5000,host:"0.0.0.0",logLevel:Q1.warn,networkLogs:!1,cors:{enabled:!1},bodyParser:O$,ipSecurity:X1,connectionOptions:{socketTimeout:30000,gracefulShutdownTimeout:30000,keepAliveTimeout:65000,headersTimeout:66000}},L0=($)=>{if($.maxSize<1)throw new Error("bodyParser.json.maxSize must be at least 1 byte");if($.maxDepth<1)throw new Error("bodyParser.json.maxDepth must be at least 1");if($.maxKeys<1)throw new Error("bodyParser.json.maxKeys must be at least 1");if($.maxStringLength<1)throw new Error("bodyParser.json.maxStringLength must be at least 1 byte");if($.maxArrayLength<1)throw new Error("bodyParser.json.maxArrayLength must be at least 1")},R0=($)=>{if($.maxFileSize<1)throw new Error("bodyParser.fileUploads.maxFileSize must be at least 1 byte");if($.maxTotalSize<1)throw new Error("bodyParser.fileUploads.maxTotalSize must be at least 1 byte");if($.maxFiles<1)throw new Error("bodyParser.fileUploads.maxFiles must be at least 1");if($.maxFilenameLength<1)throw new Error("bodyParser.fileUploads.maxFilenameLength must be at least 1 character")},T0=($)=>{if($.maxSize<1)throw new Error("bodyParser.urlEncoded.maxSize must be at least 1 byte");if($.maxFields<1)throw new Error("bodyParser.urlEncoded.maxFields must be at least 1");if($.maxFieldNameLength<1)throw new Error("bodyParser.urlEncoded.maxFieldNameLength must be at least 1 character");if($.maxFieldLength<1)throw new Error("bodyParser.urlEncoded.maxFieldLength must be at least 1 byte")},v0=($)=>{if(!Array.isArray($.trustedProxies))throw new Error("ipSecurity.trustedProxies must be an array");if(!Array.isArray($.headerPreference))throw new Error("ipSecurity.headerPreference must be an array");if($.headerPreference.length===0)throw new Error("ipSecurity.headerPreference must contain at least one header");if($.maxChainLength<1)throw new Error("ipSecurity.maxChainLength must be at least 1");if($.maxChainLength>50)throw new Error("ipSecurity.maxChainLength must not exceed 50 to prevent DoS attacks")},P0=($)=>{if($.allowPrototypeProperties)_.warn("[SECURITY WARNING] bodyParser.json.allowPrototypeProperties is enabled. This allows prototype pollution attacks. Only enable this if you absolutely need it and have other protections in place.");if($.maxSize>10485760)_.warn(`[SECURITY WARNING] bodyParser.json.maxSize is set to ${$.maxSize} bytes (${Math.round($.maxSize/1024/1024)}MB). Large JSON payloads can cause memory exhaustion and DoS attacks. Consider if this size is necessary.`);if($.maxDepth>50)_.warn(`[SECURITY WARNING] bodyParser.json.maxDepth is set to ${$.maxDepth}. Very deep JSON nesting can cause stack overflow attacks. Consider if this depth is necessary.`)},x0=($)=>{if($.maxFileSize>104857600)_.warn(`[SECURITY WARNING] bodyParser.fileUploads.maxFileSize is set to ${$.maxFileSize} bytes (${Math.round($.maxFileSize/1024/1024)}MB). Large file uploads can consume significant server resources.`);if($.maxTotalSize>1073741824)_.warn(`[SECURITY WARNING] bodyParser.fileUploads.maxTotalSize is set to ${$.maxTotalSize} bytes (${Math.round($.maxTotalSize/1024/1024/1024)}GB). Very large total upload sizes can cause memory and disk space exhaustion.`);let W=[".exe",".bat",".cmd",".scr",".pif",".com",".vbs",".jar",".app"],Y=$.allowedExtensions.filter((Z)=>W.includes(Z.toLowerCase()));if(Y.length>0)_.warn(`[SECURITY WARNING] bodyParser.fileUploads.allowedExtensions includes dangerous file types: ${Y.join(", ")}. This could allow execution of malicious files. Only allow these if absolutely necessary.`);if($.blockedExtensions.length===0&&$.allowedExtensions.length===0)_.warn("[SECURITY WARNING] File uploads have no extension restrictions (no blockedExtensions and no allowedExtensions). Consider adding blockedExtensions or allowedExtensions to improve security.")},C0=($)=>{if($.trustedProxies.length===0)_.warn("[SECURITY WARNING] ipSecurity.trustedProxies is empty. No proxy headers will be trusted, which may prevent proper client IP detection.");if($.maxChainLength>20)_.warn(`[SECURITY WARNING] ipSecurity.maxChainLength is set to ${$.maxChainLength}. Very long proxy chains can consume significant resources and may indicate amplification attacks.`);if(!$.detectSpoofing)_.warn("[SECURITY WARNING] ipSecurity.detectSpoofing is disabled. This reduces protection against IP spoofing attacks. Only disable if you have other protective measures.")},b0=($,W)=>{if(W?.cors?.enabled)$.cors={...k0,...W.cors,enabled:!0}},u0=($,W)=>{if(W?.bodyParser)$.bodyParser={json:{...O$.json,...W.bodyParser.json},fileUploads:{...O$.fileUploads,...W.bodyParser.fileUploads},urlEncoded:{...O$.urlEncoded,...W.bodyParser.urlEncoded}},m0($.bodyParser)},y0=($,W)=>{if(W?.ipSecurity)$.ipSecurity={...X1,...W.ipSecurity},v0($.ipSecurity),C0($.ipSecurity)},h0=($,W)=>{if(W?.port!==void 0){let Y=Number(W.port);if(isNaN(Y)||Y<1||Y>65535)throw new Error("Invalid port number");$.port=Y}},m0=($)=>{L0($.json),R0($.fileUploads),T0($.urlEncoded),P0($.json),x0($.fileUploads)},J1=($)=>{let W={...I0};return Object.assign(W,$),b0(W,$),u0(W,$),y0(W,$),h0(W,$),W};class R${_beforeAll;_afterAll;_onError;_onNotFound;constructor(){this._beforeAll=new Set,this._afterAll=new Set,this._onError=($)=>{return $.response.setStatusCode(b.internalServerError),{success:!1,message:"Internal Server Error"}},this._onNotFound=($)=>{return $.response.setStatusCode(b.notFound),{success:!1,message:"404 Not Found"}}}_addBeforeHooks($,W){for(let Y of $)this._beforeAll.add({handler:Y,options:W??{routesToExclude:[],routesToInclude:[]}})}_addAfterHooks($,W){for(let Y of $)this._afterAll.add({handler:Y,options:W??{routesToExclude:[],routesToInclude:[]}})}_addOnError($){this._onError=$}_addOnNotFound($){this._onNotFound=$}}var K1=($)=>{let W=[],Y=$.path.replace(/:\w+/g,(Z)=>{let D=Z.slice(1);return W.push(D),"([^/]+)"}).replace(/\//g,"\\/");return{...$,pattern:new RegExp(`^${Y}$`),paramNames:W,isParameterized:!0}};var T$=($)=>{let[W]=$.split("?");if(!W)return"";if([W]=W.split("#"),!W)return"";try{W=decodeURIComponent(W)}catch(Y){_.warn("Failed to decode URL path",{path:W})}if(W=W.startsWith("/")?W:`/${W}`,W=W.replace(/\/\/+/g,"/"),W=f0(W),W.length>1&&W.endsWith("/"))W=W.slice(0,-1);return W},f0=($)=>{let W=$.split("/"),Y=[];for(let D of W){if(D==="."||D===""){if(D===""&&Y.length===0)Y.push(D);continue}if(D===".."){if(Y.length>1)Y.pop()}else Y.push(D)}return Y.join("/")||"/"},v$=($)=>$.replace(/:\w+/g,":param");var G1=($)=>{let W=$.match(/:\w+/g);if(!W)return;let Y=W.map((D)=>D.slice(1)),Z=new Set(Y);if(Y.length!==Z.size){let D=Y.filter((Q,X)=>Y.indexOf(Q)!==X);throw new Error(`Route ${$} has duplicate parameter names: ${D.join(", ")}. Parameter names must be unique within a route for clarity and to prevent conflicts.`)}};class P${_exactRoutes=new Map;_parameterizedRoutes=new Map;_register({method:$,path:W,handler:Y,options:Z}){let D=T$(W),Q=D.includes(":");if(Q)G1(D);if(this._hasExactRoutePattern($,D))throw new Error(`Route ${D} already exists for method ${$}`);let X={method:$,path:D,handler:Y,options:Z,params:{}};if(Q)this._storeParameterizedRoute($,X);else this._storeExactRoute($,D,X)}_findRoute($,W){let Y=T$(W),Z=this._exactRoutes.get($)?.get(Y);if(Z)return Z;return this._findParameterizedRoute($,Y)}_hasExactRoutePattern($,W){if(this._exactRoutes.get($)?.has(W))return!0;if(W.includes(":")){let Y=v$(W),Z=this._parameterizedRoutes.get($);if(Z)return Z.some((D)=>v$(D.path)===Y)}else{let Y=this._parameterizedRoutes.get($);if(Y)return Y.some((Z)=>Z.path===W)}return!1}_storeExactRoute($,W,Y){if(!this._exactRoutes.has($))this._exactRoutes.set($,new Map);this._exactRoutes.get($)?.set(W,Y)}_storeParameterizedRoute($,W){if(!this._parameterizedRoutes.has($))this._parameterizedRoutes.set($,[]);let Y=K1(W);this._parameterizedRoutes.get($)?.push(Y)}_findParameterizedRoute($,W){let Y=this._parameterizedRoutes.get($);if(!Y)return;for(let Z of Y){let D=W.match(Z.pattern);if(D){let Q={};for(let X=0;X<Z.paramNames.length;X++){let O=D[X+1],H=Z.paramNames[X];if(O!==void 0&&H!==void 0)Q[H]=O}return{...Z,params:Q}}}return}}class x${_configuration;_routeRegistry=new P$;_hooks=new R$;constructor($){this._configuration=J1($)}get($,W,Y){let Z=Y??{beforeHooks:[],afterHooks:[]};this._routeRegistry._register({method:E.get,handler:W,path:$,options:Z,params:{}}),this._routeRegistry._register({method:E.head,handler:W,path:$,options:Z,params:{}})}head($,W,Y){this._routeRegistry._register({method:E.head,handler:W,path:$,options:Y??{beforeHooks:[],afterHooks:[]},params:{}})}post($,W,Y){this._routeRegistry._register({method:E.post,handler:W,path:$,options:Y??{beforeHooks:[],afterHooks:[]},params:{}})}put($,W,Y){this._routeRegistry._register({method:E.put,handler:W,path:$,options:Y??{beforeHooks:[],afterHooks:[]},params:{}})}patch($,W,Y){this._routeRegistry._register({method:E.patch,handler:W,path:$,options:Y??{beforeHooks:[],afterHooks:[]},params:{}})}delete($,W,Y){this._routeRegistry._register({method:E.delete,handler:W,path:$,options:Y??{beforeHooks:[],afterHooks:[]},params:{}})}options($,W,Y){this._routeRegistry._register({method:E.options,handler:W,path:$,options:Y??{beforeHooks:[],afterHooks:[]},params:{}})}group($,W,Y){let Z=(Q)=>(X,O,H)=>{let V=`${$}${X}`,I={beforeHooks:[...Y?.beforeHooks??[],...H?.beforeHooks??[]],afterHooks:[...H?.afterHooks??[],...Y?.afterHooks??[]]};if(this._routeRegistry._register({method:Q,handler:O,path:V,options:I,params:{}}),Q===E.get)this._routeRegistry._register({method:E.head,handler:O,path:V,options:I,params:{}})},D={get:Z(E.get),head:Z(E.head),post:Z(E.post),put:Z(E.put),delete:Z(E.delete),patch:Z(E.patch),options:Z(E.options)};W(D)}beforeAll($,W){this._hooks._addBeforeHooks($,W)}afterAll($,W){this._hooks._addAfterHooks($,W)}onError($){this._hooks._addOnError($)}onNotFound($){this._hooks._addOnNotFound($)}}class O1 extends x${_isListening=!1;_server;constructor($){super($);if(this._configuration.logger)_.setCustomLogger(this._configuration.logger);if(_.setLogLevel(this._configuration.logLevel),x.setEnabled(this._configuration.networkLogs),this._configuration.networkLogger)x.setNetworkLogger(this._configuration.networkLogger);_.info("YinzerFlow initialized with logging enabled",`${N.green}level: ${this._configuration.logLevel}, networkLogs: ${this._configuration.networkLogs}${N.reset}`)}_setupServer($,W,Y){if(!this._server)return;this._server.on("error",(Z)=>{x.serverError(this._configuration.port,this._configuration.host,Z.message),W(Z)}),this._server.on("listening",()=>{this._isListening=!0,x.serverStart(this._configuration.port,this._configuration.host),$()}),this._server.on("connection",(Z)=>{this._handleConnection(Z,Y)})}async _processRequest({data:$,socket:W,requestHandler:Y,clientAddress:Z}){let D=Date.now();_.info("Processing incoming request",{clientAddress:Z,dataSize:$.length});let Q=new L$($,this,Z);await Y.handle(Q),W.write(Q._response._stringBody),W.end();let X=Date.now(),O=X-D;if(x.request(Q,D,X),O>500)_.warn("Slow request detected",{method:Q.request.method,path:Q.request.path,statusCode:Q._response._statusCode,responseTime:`${O}ms`,clientAddress:Z})}_handleConnection($,W){let Y=$.remoteAddress??"unknown";x.connection("connect",Y),$.on("data",(Z)=>{this._processRequest({data:Z,socket:$,requestHandler:W,clientAddress:Y}).catch((D)=>{let Q=D instanceof Error?D.message:"Unknown error";x.connection("error",Y,`Unexpected error: ${Q}`),$.destroy()})}),$.on("error",(Z)=>{x.connection("error",Y,Z.message)}),$.on("close",()=>{x.connection("disconnect",Y)})}async listen(){if(this._isListening)throw new Error("Server is already listening");return new Promise(($,W)=>{let Y=new N$(this);this._server=l0(),this._setupServer($,W,Y),this._server.listen(this._configuration.port,this._configuration.host)})}async close(){if(!this._isListening||!this._server)return;return new Promise(($)=>{if(!this._server){this._isListening=!1,$();return}this._server.close(()=>{this._isListening=!1,x.serverStop(this._configuration.port,this._configuration.host),$()})})}status(){return{isListening:this._isListening,port:this._configuration.port,host:this._configuration.host}}}export{_ as log,O1 as YinzerFlow};
21
+
22
+ //# debugId=B82060B9BB2248E164756E2164756E21
@@ -38,6 +38,6 @@
38
38
  "import { httpMethod } from '@constants/http.ts';\nimport type { InternalHttpMethod } from '@typedefs/constants/http.ts';\nimport { handleCustomConfiguration } from '@core/setup/utils/handleCustomConfiguration.ts';\nimport type { InternalSetupImpl, InternalSetupMethod } from '@typedefs/internal/InternalSetupImpl.ts';\nimport { HookRegistryImpl } from '@core/execution/HookRegistryImpl.ts';\nimport type { InternalGlobalHookOptions } from '@typedefs/internal/InternalHookRegistryImpl.js';\nimport type { InternalServerConfiguration } from '@typedefs/internal/InternalConfiguration.js';\nimport type { ServerConfiguration } from '@typedefs/public/Configuration.js';\nimport type { InternalRouteRegistryOptions } from '@typedefs/internal/InternalRouteRegistryImpl.js';\nimport { RouteRegistryImpl } from '@core/setup/RouteRegistryImpl.ts';\nimport type { HandlerCallback } from '@typedefs/public/Context.js';\n\nexport class SetupImpl implements InternalSetupImpl {\n readonly _configuration: InternalServerConfiguration;\n readonly _routeRegistry = new RouteRegistryImpl();\n readonly _hooks = new HookRegistryImpl();\n\n constructor(customConfiguration?: ServerConfiguration) {\n this._configuration = handleCustomConfiguration(customConfiguration);\n }\n\n // ===== Route Registration =====\n get(path: string, handler: HandlerCallback, options?: InternalRouteRegistryOptions): void {\n const routeOptions = options ?? { beforeHooks: [], afterHooks: [] };\n // Register GET route\n this._routeRegistry._register({ method: httpMethod.get, handler, path, options: routeOptions, params: {} });\n // Automatically register corresponding HEAD route\n this._routeRegistry._register({ method: httpMethod.head, handler, path, options: routeOptions, params: {} });\n }\n\n head(path: string, handler: HandlerCallback, options?: InternalRouteRegistryOptions): void {\n this._routeRegistry._register({ method: httpMethod.head, handler, path, options: options ?? { beforeHooks: [], afterHooks: [] }, params: {} });\n }\n\n post(path: string, handler: HandlerCallback, options?: InternalRouteRegistryOptions): void {\n this._routeRegistry._register({ method: httpMethod.post, handler, path, options: options ?? { beforeHooks: [], afterHooks: [] }, params: {} });\n }\n\n put(path: string, handler: HandlerCallback, options?: InternalRouteRegistryOptions): void {\n this._routeRegistry._register({ method: httpMethod.put, handler, path, options: options ?? { beforeHooks: [], afterHooks: [] }, params: {} });\n }\n\n patch(path: string, handler: HandlerCallback, options?: InternalRouteRegistryOptions): void {\n this._routeRegistry._register({ method: httpMethod.patch, handler, path, options: options ?? { beforeHooks: [], afterHooks: [] }, params: {} });\n }\n\n delete(path: string, handler: HandlerCallback, options?: InternalRouteRegistryOptions): void {\n this._routeRegistry._register({ method: httpMethod.delete, handler, path, options: options ?? { beforeHooks: [], afterHooks: [] }, params: {} });\n }\n\n options(path: string, handler: HandlerCallback, options?: InternalRouteRegistryOptions): void {\n this._routeRegistry._register({ method: httpMethod.options, handler, path, options: options ?? { beforeHooks: [], afterHooks: [] }, params: {} });\n }\n\n group(\n prefix: string,\n callback: (group: Record<Lowercase<InternalHttpMethod>, InternalSetupMethod>) => void,\n options?: InternalRouteRegistryOptions, // These follow the same pattern as the individual route registration methods\n ): void {\n const createRouteHandler =\n (method: InternalHttpMethod) =>\n (path: string, handler: HandlerCallback, routeOptions?: InternalRouteRegistryOptions): void => {\n const fullPath = `${prefix}${path}`;\n const mergedOptions = {\n beforeHooks: [...(options?.beforeHooks ?? []), ...(routeOptions?.beforeHooks ?? [])],\n afterHooks: [...(routeOptions?.afterHooks ?? []), ...(options?.afterHooks ?? [])],\n };\n\n this._routeRegistry._register({\n method,\n handler,\n path: fullPath,\n options: mergedOptions,\n params: {},\n });\n\n // If this is a GET route, automatically register the corresponding HEAD route\n if (method === httpMethod.get) {\n this._routeRegistry._register({\n method: httpMethod.head,\n handler,\n path: fullPath,\n options: mergedOptions,\n params: {},\n });\n }\n };\n\n // Create a group app that registers routes with prefix and group hooks\n const group = {\n get: createRouteHandler(httpMethod.get),\n head: createRouteHandler(httpMethod.head),\n post: createRouteHandler(httpMethod.post),\n put: createRouteHandler(httpMethod.put),\n delete: createRouteHandler(httpMethod.delete),\n patch: createRouteHandler(httpMethod.patch),\n options: createRouteHandler(httpMethod.options),\n };\n\n // Execute callback to register routes\n callback(group);\n }\n\n /**\n * Hook Registration\n *\n * Note these are going to be called dynamically at run time, for now\n * we are just storing them in the server object until runtime. Although\n * it is slower during lookup, it is more flexible and memory efficient\n * allowing for more flexibility to include hook modification, conditional\n * hook execution, and better debugging.\n */\n beforeAll(handlers: Array<HandlerCallback>, options?: InternalGlobalHookOptions): void {\n this._hooks._addBeforeHooks(handlers, options);\n }\n\n afterAll(handlers: Array<HandlerCallback>, options?: InternalGlobalHookOptions): void {\n this._hooks._addAfterHooks(handlers, options);\n }\n\n onError(handler: HandlerCallback): void {\n this._hooks._addOnError(handler);\n }\n\n onNotFound(handler: HandlerCallback): void {\n this._hooks._addOnNotFound(handler);\n }\n}\n"
39
39
  ],
40
40
  "mappings": "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",
41
- "debugId": "529BD7F131C4E5FA64756E2164756E21",
41
+ "debugId": "B82060B9BB2248E164756E2164756E21",
42
42
  "names": []
43
43
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yinzerflow",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "author": "Patrick Rizzardi <patrick@redact.digital> (https://redact.digital)",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/yinzers/YinzerFlow.git",
@@ -22,8 +22,8 @@
22
22
  "bun",
23
23
  "yinzerflow"
24
24
  ],
25
- "types": "YinzerFlow.d.ts",
26
- "main": "YinzerFlow.js",
25
+ "types": "index.d.ts",
26
+ "main": "index.js",
27
27
  "type": "module",
28
28
  "scripts": {
29
29
  "test": "bun test --watch --coverage",
package/YinzerFlow.js DELETED
@@ -1,22 +0,0 @@
1
- var O1=Object.create;var{getPrototypeOf:M1,defineProperty:u$,getOwnPropertyNames:U1}=Object;var j1=Object.prototype.hasOwnProperty;var F$=($,W,Z)=>{Z=$!=null?O1(M1($)):{};let D=W||!$||!$.__esModule?u$(Z,"default",{value:$,enumerable:!0}):Z;for(let Y of U1($))if(!j1.call(D,Y))u$(D,Y,{get:()=>$[Y],enumerable:!0});return D};var F1=($,W)=>()=>(W||$((W={exports:{}}).exports,W),W.exports);var Y$=F1((_$,V$)=>{(function($,W){typeof _$=="object"&&typeof V$!="undefined"?V$.exports=W():typeof define=="function"&&define.amd?define(W):($=typeof globalThis!="undefined"?globalThis:$||self).dayjs=W()})(_$,function(){var $=1000,W=60000,Z=3600000,D="millisecond",Y="second",Q="minute",X="hour",O="day",H="week",_="month",I="quarter",A="year",L="date",o="Invalid Date",M$=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,e=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,U$={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(U){var G=["th","st","nd","rd"],J=U%100;return"["+U+(G[(J-20)%10]||G[J]||G[0])+"]"}},s=function(U,G,J){var M=String(U);return!M||M.length>=G?U:""+Array(G+1-M.length).join(J)+U},$$={s,z:function(U){var G=-U.utcOffset(),J=Math.abs(G),M=Math.floor(J/60),K=J%60;return(G<=0?"+":"-")+s(M,2,"0")+":"+s(K,2,"0")},m:function U(G,J){if(G.date()<J.date())return-U(J,G);var M=12*(J.year()-G.year())+(J.month()-G.month()),K=G.clone().add(M,_),j=J-K<0,F=G.clone().add(M+(j?-1:1),_);return+(-(M+(J-K)/(j?K-F:F-K))||0)},a:function(U){return U<0?Math.ceil(U)||0:Math.floor(U)},p:function(U){return{M:_,y:A,w:H,d:O,D:L,h:X,m:Q,s:Y,ms:D,Q:I}[U]||String(U||"").toLowerCase().replace(/s$/,"")},u:function(U){return U===void 0}},m="en",f={};f[m]=U$;var C$="$isDayjsObject",j$=function(U){return U instanceof Z$||!(!U||!U[C$])},W$=function U(G,J,M){var K;if(!G)return m;if(typeof G=="string"){var j=G.toLowerCase();f[j]&&(K=j),J&&(f[j]=J,K=j);var F=G.split("-");if(!K&&F.length>1)return U(F[0])}else{var w=G.name;f[w]=G,K=w}return!M&&K&&(m=K),K||!M&&m},z=function(U,G){if(j$(U))return U.clone();var J=typeof G=="object"?G:{};return J.date=U,J.args=arguments,new Z$(J)},q=$$;q.l=W$,q.i=j$,q.w=function(U,G){return z(U,{locale:G.$L,utc:G.$u,x:G.$x,$offset:G.$offset})};var Z$=function(){function U(J){this.$L=W$(J.locale,null,!0),this.parse(J),this.$x=this.$x||J.x||{},this[C$]=!0}var G=U.prototype;return G.parse=function(J){this.$d=function(M){var{date:K,utc:j}=M;if(K===null)return new Date(NaN);if(q.u(K))return new Date;if(K instanceof Date)return new Date(K);if(typeof K=="string"&&!/Z$/i.test(K)){var F=K.match(M$);if(F){var w=F[2]-1||0,B=(F[7]||"0").substring(0,3);return j?new Date(Date.UTC(F[1],w,F[3]||1,F[4]||0,F[5]||0,F[6]||0,B)):new Date(F[1],w,F[3]||1,F[4]||0,F[5]||0,F[6]||0,B)}}return new Date(K)}(J),this.init()},G.init=function(){var J=this.$d;this.$y=J.getFullYear(),this.$M=J.getMonth(),this.$D=J.getDate(),this.$W=J.getDay(),this.$H=J.getHours(),this.$m=J.getMinutes(),this.$s=J.getSeconds(),this.$ms=J.getMilliseconds()},G.$utils=function(){return q},G.isValid=function(){return this.$d.toString()!==o},G.isSame=function(J,M){var K=z(J);return this.startOf(M)<=K&&K<=this.endOf(M)},G.isAfter=function(J,M){return z(J)<this.startOf(M)},G.isBefore=function(J,M){return this.endOf(M)<z(J)},G.$g=function(J,M,K){return q.u(J)?this[M]:this.set(K,J)},G.unix=function(){return Math.floor(this.valueOf()/1000)},G.valueOf=function(){return this.$d.getTime()},G.startOf=function(J,M){var K=this,j=!!q.u(M)||M,F=q.p(J),w=function(p,R){var h=q.w(K.$u?Date.UTC(K.$y,R,p):new Date(K.$y,R,p),K);return j?h:h.endOf(O)},B=function(p,R){return q.w(K.toDate()[p].apply(K.toDate("s"),(j?[0,0,0,0]:[23,59,59,999]).slice(R)),K)},S=this.$W,k=this.$M,T=this.$D,c="set"+(this.$u?"UTC":"");switch(F){case A:return j?w(1,0):w(31,11);case _:return j?w(1,k):w(0,k+1);case H:var l=this.$locale().weekStart||0,a=(S<l?S+7:S)-l;return w(j?T-a:T+(6-a),k);case O:case L:return B(c+"Hours",0);case X:return B(c+"Minutes",1);case Q:return B(c+"Seconds",2);case Y:return B(c+"Milliseconds",3);default:return this.clone()}},G.endOf=function(J){return this.startOf(J,!1)},G.$set=function(J,M){var K,j=q.p(J),F="set"+(this.$u?"UTC":""),w=(K={},K[O]=F+"Date",K[L]=F+"Date",K[_]=F+"Month",K[A]=F+"FullYear",K[X]=F+"Hours",K[Q]=F+"Minutes",K[Y]=F+"Seconds",K[D]=F+"Milliseconds",K)[j],B=j===O?this.$D+(M-this.$W):M;if(j===_||j===A){var S=this.clone().set(L,1);S.$d[w](B),S.init(),this.$d=S.set(L,Math.min(this.$D,S.daysInMonth())).$d}else w&&this.$d[w](B);return this.init(),this},G.set=function(J,M){return this.clone().$set(J,M)},G.get=function(J){return this[q.p(J)]()},G.add=function(J,M){var K,j=this;J=Number(J);var F=q.p(M),w=function(k){var T=z(j);return q.w(T.date(T.date()+Math.round(k*J)),j)};if(F===_)return this.set(_,this.$M+J);if(F===A)return this.set(A,this.$y+J);if(F===O)return w(1);if(F===H)return w(7);var B=(K={},K[Q]=W,K[X]=Z,K[Y]=$,K)[F]||1,S=this.$d.getTime()+J*B;return q.w(S,this)},G.subtract=function(J,M){return this.add(-1*J,M)},G.format=function(J){var M=this,K=this.$locale();if(!this.isValid())return K.invalidDate||o;var j=J||"YYYY-MM-DDTHH:mm:ssZ",F=q.z(this),w=this.$H,B=this.$m,S=this.$M,k=K.weekdays,T=K.months,c=K.meridiem,l=function(R,h,n,D$){return R&&(R[h]||R(M,j))||n[h].slice(0,D$)},a=function(R){return q.s(w%12||12,R,"0")},p=c||function(R,h,n){var D$=R<12?"AM":"PM";return n?D$.toLowerCase():D$};return j.replace(e,function(R,h){return h||function(n){switch(n){case"YY":return String(M.$y).slice(-2);case"YYYY":return q.s(M.$y,4,"0");case"M":return S+1;case"MM":return q.s(S+1,2,"0");case"MMM":return l(K.monthsShort,S,T,3);case"MMMM":return l(T,S);case"D":return M.$D;case"DD":return q.s(M.$D,2,"0");case"d":return String(M.$W);case"dd":return l(K.weekdaysMin,M.$W,k,2);case"ddd":return l(K.weekdaysShort,M.$W,k,3);case"dddd":return k[M.$W];case"H":return String(w);case"HH":return q.s(w,2,"0");case"h":return a(1);case"hh":return a(2);case"a":return p(w,B,!0);case"A":return p(w,B,!1);case"m":return String(B);case"mm":return q.s(B,2,"0");case"s":return String(M.$s);case"ss":return q.s(M.$s,2,"0");case"SSS":return q.s(M.$ms,3,"0");case"Z":return F}return null}(R)||F.replace(":","")})},G.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},G.diff=function(J,M,K){var j,F=this,w=q.p(M),B=z(J),S=(B.utcOffset()-this.utcOffset())*W,k=this-B,T=function(){return q.m(F,B)};switch(w){case A:j=T()/12;break;case _:j=T();break;case I:j=T()/3;break;case H:j=(k-S)/604800000;break;case O:j=(k-S)/86400000;break;case X:j=k/Z;break;case Q:j=k/W;break;case Y:j=k/$;break;default:j=k}return K?j:q.a(j)},G.daysInMonth=function(){return this.endOf(_).$D},G.$locale=function(){return f[this.$L]},G.locale=function(J,M){if(!J)return this.$L;var K=this.clone(),j=W$(J,M,!0);return j&&(K.$L=j),K},G.clone=function(){return q.w(this.$d,this)},G.toDate=function(){return new Date(this.valueOf())},G.toJSON=function(){return this.isValid()?this.toISOString():null},G.toISOString=function(){return this.$d.toISOString()},G.toString=function(){return this.$d.toUTCString()},U}(),b$=Z$.prototype;return z.prototype=b$,[["$ms",D],["$s",Y],["$m",Q],["$H",X],["$W",O],["$M",_],["$y",A],["$D",L]].forEach(function(U){b$[U[1]]=function(G){return this.$g(G,U[0],U[1])}}),z.extend=function(U,G){return U.$i||(U(G,Z$,z),U.$i=!0),z},z.locale=W$,z.isDayjs=j$,z.unix=function(U){return z(1000*U)},z.en=f[m],z.Ls=f,z.p={},z})});import{createServer as f0}from"net";var w$=F$(Y$(),1);var Q$={ok:"OK",created:"Created",accepted:"Accepted",noContent:"No Content",movedPermanently:"Moved Permanently",found:"Found",notModified:"Not Modified",badRequest:"Bad Request",unauthorized:"Unauthorized",forbidden:"Forbidden",notFound:"Not Found",methodNotAllowed:"Method Not Allowed",conflict:"Conflict",unsupportedMediaType:"Unsupported Media Type",tooManyRequests:"Too Many Requests",internalServerError:"Internal Server Error"},b={ok:200,created:201,accepted:202,noContent:204,movedPermanently:301,found:302,notModified:304,badRequest:400,unauthorized:401,forbidden:403,notFound:404,methodNotAllowed:405,conflict:409,unsupportedMediaType:415,tooManyRequests:429,internalServerError:500},E={delete:"DELETE",get:"GET",head:"HEAD",post:"POST",put:"PUT",patch:"PATCH",options:"OPTIONS"},v={json:"application/json",html:"text/html",form:"application/x-www-form-urlencoded",multipart:"multipart/form-data",xml:"application/xml",text:"text/plain",csv:"text/csv",yamlApplication:"application/yaml",yamlText:"text/yaml",urlEncodedJson:"application/x-www-form-urlencoded+json"},u={authorization:"Authorization",proxyAuthorization:"Proxy-Authorization",wwwAuthenticate:"WWW-Authenticate",cacheControl:"Cache-Control",etag:"ETag",expires:"Expires",lastModified:"Last-Modified",ifMatch:"If-Match",ifNoneMatch:"If-None-Match",ifModifiedSince:"If-Modified-Since",ifUnmodifiedSince:"If-Unmodified-Since",ifRange:"If-Range",age:"Age",vary:"Vary",contentType:"Content-Type",contentLength:"Content-Length",contentEncoding:"Content-Encoding",contentLanguage:"Content-Language",contentDisposition:"Content-Disposition",contentLocation:"Content-Location",contentRange:"Content-Range",accessControlAllowCredentials:"Access-Control-Allow-Credentials",accessControlAllowHeaders:"Access-Control-Allow-Headers",accessControlAllowMethods:"Access-Control-Allow-Methods",accessControlAllowOrigin:"Access-Control-Allow-Origin",accessControlExposeHeaders:"Access-Control-Expose-Headers",accessControlMaxAge:"Access-Control-Max-Age",accessControlRequestHeaders:"Access-Control-Request-Headers",accessControlRequestMethod:"Access-Control-Request-Method",accept:"Accept",acceptEncoding:"Accept-Encoding",acceptLanguage:"Accept-Language",acceptRanges:"Accept-Ranges",host:"Host",userAgent:"User-Agent",referer:"Referer",origin:"Origin",from:"From",expect:"Expect",location:"Location",server:"Server",date:"Date",allow:"Allow",retryAfter:"Retry-After",range:"Range",contentSecurityPolicy:"Content-Security-Policy",contentSecurityPolicyReportOnly:"Content-Security-Policy-Report-Only",strictTransportSecurity:"Strict-Transport-Security",xContentTypeOptions:"X-Content-Type-Options",xFrameOptions:"X-Frame-Options",xXSSProtection:"X-XSS-Protection",referrerPolicy:"Referrer-Policy",permissionsPolicy:"Permissions-Policy",crossOriginEmbedderPolicy:"Cross-Origin-Embedder-Policy",crossOriginOpenerPolicy:"Cross-Origin-Opener-Policy",crossOriginResourcePolicy:"Cross-Origin-Resource-Policy",cookie:"Cookie",setCookie:"Set-Cookie",connection:"Connection",keepAlive:"Keep-Alive",upgrade:"Upgrade",upgradeInsecureRequests:"Upgrade-Insecure-Requests",transferEncoding:"Transfer-Encoding",te:"TE",trailer:"Trailer",forwarded:"Forwarded",xForwardedFor:"X-Forwarded-For",via:"Via",maxForwards:"Max-Forwards",altSvc:"Alt-Svc",altUsed:"Alt-Used",timingAllowOrigin:"Timing-Allow-Origin",serverTiming:"Server-Timing",refresh:"Refresh",link:"Link",xPoweredBy:"X-Powered-By",xPermittedCrossDomainPolicies:"X-Permitted-Cross-Domain-Policies",reportTo:"Report-To",serviceWorkerAllowed:"Service-Worker-Allowed",sourceMap:"SourceMap",priority:"Priority",secGPC:"Sec-GPC",clearSiteData:"Clear-Site-Data",noVarySearch:"No-Vary-Search"},r={base64:"base64",binary:"binary",utf8:"utf8"};var X$=($,W)=>{if(!W.enabled)return!1;if($.request.method==="OPTIONS"){if(!h$($,W))return $.response.setStatusCode(403),$._response._setBody({error:"CORS: Origin not allowed",origin:$.request.headers.origin}),!0;$.response.setStatusCode(W.optionsSuccessStatus);let Y=y$($,W);if($._response._setHeadersIfNotSet({[u.accessControlAllowOrigin]:Y,[u.accessControlAllowMethods]:W.methods.join(", "),[u.accessControlAllowHeaders]:typeof W.allowedHeaders==="string"?W.allowedHeaders:W.allowedHeaders.join(", "),[u.accessControlAllowCredentials]:W.credentials?"true":"false",[u.accessControlExposeHeaders]:W.exposedHeaders.join(", "),[u.accessControlMaxAge]:W.maxAge.toString()}),W.preflightContinue)return!1;return $._response._setBody(""),!0}if(h$($,W)){let D=y$($,W);$._response._setHeadersIfNotSet({[u.accessControlAllowOrigin]:D,[u.accessControlAllowCredentials]:W.credentials?"true":"false"})}return!0},y$=($,W)=>{if(W.origin==="*"){if(W.credentials)throw new Error('CORS Security Error: origin: "*" with credentials: true is forbidden by CORS spec and creates security vulnerabilities. Use specific origins instead.');return"*"}let Z=$.request.headers.origin;if(Z)return Z;if(typeof W.origin==="string")return W.origin;if(Array.isArray(W.origin)&&W.origin.length>0){let[D]=W.origin;return D??"null"}return"null"},h$=($,W)=>{if(W.origin==="*")return!0;let Z=$.request.headers.origin?.toLowerCase()??"";if(typeof W.origin==="function")return Boolean(W.origin(Z,$.request));if(typeof W.origin==="string")return Z===W.origin.toLowerCase();if(Array.isArray(W.origin))return W.origin.some((D)=>Z===D.toLowerCase());if(W.origin instanceof RegExp)return W.origin.test(Z);return!1};var m$=F$(Y$(),1),y="YINZER",N={reset:"\x1B[0m",cyan:"\x1B[96m",yellow:"\x1B[93m",red:"\x1B[91m",green:"\x1B[92m",magenta:"\x1B[95m",gray:"\x1B[90m"},_1={positive:["n'at!","yinz are good!","that's the way!","right on!","lookin' good!","way to go!","keep it up!"],neutral:["n'at","yinz know","just sayin'","that's how it is","what can ya do","it happens"],negative:["aw jeez","that ain't right","what a jagoff move","that's terrible n'at","somebody messed up","this is bad news","yinz better fix this"]},d=!1,P=null,C=()=>m$.default().format("YYYY-MM-DD HH:mm:ss.SSS"),H$=($)=>{let W=_1[$];return W[Math.floor(Math.random()*W.length)]??""},V1=($)=>{if(typeof $==="string")return Buffer.byteLength($,"utf8");if(Buffer.isBuffer($))return $.length;if(typeof $==="object"&&$!==null)try{return Buffer.byteLength(JSON.stringify($),"utf8")}catch{return 0}return 0},H1=($)=>{if($>=200&&$<300)return"✅";if($>=300&&$<400)return"\uD83D\uDD04";if($>=400&&$<500)return"❌";if($>=500)return"\uD83D\uDCA5";return"❓"},q1=($)=>{if($<50)return{emoji:"⚡",phrase:Math.random()<0.5?"lightning quick n'at!":"faster than a Stillers touchdown!"};if($<100)return{emoji:"\uD83D\uDD25",phrase:Math.random()<0.5?"that's the way!":"smooth as butter n'at!"};if($<200)return{emoji:"✅",phrase:Math.random()<0.5?"not bad yinz!":"keepin' up just fine!"};if($<500)return{emoji:"⚠️",phrase:Math.random()<0.5?"eh, could be better":"slowin' down a bit there"};if($<1000)return{emoji:"\uD83D\uDC0C",phrase:Math.random()<0.5?"that's draggin' n'at":"c'mon, pick up the pace!"};return{emoji:"\uD83D\uDCA5",phrase:Math.random()<0.5?"what a jagoff response time!":"slower than traffic on the Parkway!"}},w1=($,W,Z)=>{if(!d)return;let D=C(),Y=W??"unknown",Q=Z?` - ${Z}`:"",X="",O="info";if($==="connect")X=`\uD83E\uDD1D [NETWORK] New visitor from ${Y} - Welcome to the 'Burgh!`;else if($==="disconnect")X=`\uD83D\uDC4B [NETWORK] ${Y} headed out - Thanks for stopping by, yinz come back now!`;else X=`\uD83D\uDCA5 [NETWORK] Connection trouble with ${Y}${Q} - That's not good, n'at!`,O="error";if(P)P[O](X);else{let H=O==="error"?N.red:N.gray;console.log(`${H}[${y}] [${D}] ${X}${N.reset}`)}},N1=($,W,Z)=>{if(!d)return;let{request:D}=$,Y=$._response,Q=(Z-W).toFixed(1),X=D.ipAddress||"unknown",{method:O,path:H,protocol:_}=D,I=Y._statusCode,A=V1(Y._body),L=D.headers.referer?`"${D.headers.referer}"`:'"-"',o=D.headers["user-agent"]?`"${D.headers["user-agent"]}"`:'"-"',M$=H1(I),e=`\uD83C\uDFE0 ${X} - - [${C()}] "${O} ${H} ${_}" ${I} ${A}b ${L} ${o} ${Q}ms ${M$}`,U$=parseFloat(Q),{emoji:s,phrase:$$}=q1(U$),m=`${s} [PERF] Response time: ${Q}ms - ${$$}`;if(P)P.info(`[NETWORK] ${e}`),P.info(`[PERF] ${m}`);else console.log(`${N.gray}[${y}] [${C()}] [NETWORK] ${e}${N.reset}`),console.log(`${N.magenta}[${y}] ${s} [${C()}] [PERF] Response time: ${Q}ms - ${$$}${N.reset}`)},B1=($,W)=>{if(!d)return;let Z=C(),D=$&&W?`${W}:${$}`:"unknown",Y=H$("positive"),Q=`\uD83D\uDE80 [NETWORK] YinzerFlow server is up and running at ${D} - Ready to serve yinz all, ${Y}!`;if(P)P.info(Q);else console.log(`${N.gray}[${y}] [${Z}] ${Q}${N.reset}`)},E1=($,W)=>{if(!d)return;let Z=C(),D=$&&W?`${W}:${$}`:"unknown",Y=H$("neutral"),Q=`\uD83D\uDED1 [NETWORK] YinzerFlow server at ${D} is shutting down - See yinz later, ${Y}!`;if(P)P.info(Q);else console.log(`${N.gray}[${y}] [${Z}] ${Q}${N.reset}`)},A1=($,W,Z)=>{if(!d)return;let D=C(),Y=$&&W?`${W}:${$}`:"unknown",Q=Z?` - ${Z}`:"",X=H$("negative"),O=`\uD83D\uDCA5 [NETWORK] Server error at ${Y}${Q} - Something's not right, ${X}!`;if(P)P.error(O);else console.log(`${N.red}[${y}] [${D}] ${O}${N.reset}`)},z1=($)=>{d=$},S1=($)=>{P=$},x={setEnabled:z1,setNetworkLogger:S1,connection:w1,request:N1,serverStart:B1,serverStop:E1,serverError:A1};var i={off:0,error:1,warn:2,info:3},k1={positive:["n'at!","yinz are good!","that's the way!","right on!","lookin' good!","way to go!","keep it up!"],neutral:["n'at","yinz know","just sayin'","that's how it is","what can ya do","it happens"],negative:["aw jeez","that ain't right","what a jagoff move","that's terrible n'at","somebody messed up","this is bad news","yinz better fix this"]},t=i.warn,g=null,I1=($)=>{let W=k1[$];return W[Math.floor(Math.random()*W.length)]??""},L1=(...$)=>{if(t<i.info)return;if(g)g.info(...$);else q$("info",...$)},R1=(...$)=>{if(t<i.warn)return;if(g)g.warn(...$);else q$("warn",...$)},T1=(...$)=>{if(t<i.error)return;if(g)g.error(...$);else q$("error",...$)},v1=($,W,Z)=>{if(t<i.info)return;let D=C(),Y="❓ ",Q="";if(W<50)Y="⚡ ",Q=Math.random()<0.5?"lightning quick n'at!":"faster than a Stillers touchdown!";else if(W<100)Y="\uD83D\uDD25 ",Q=Math.random()<0.5?"that's the way!":"smooth as butter n'at!";else if(W<200)Y="✅ ",Q=Math.random()<0.5?"not bad yinz!":"keepin' up just fine!";else if(W<500)Y="⚠️ ",Q=Math.random()<0.5?"eh, could be better":"slowin' down a bit there";else if(W<1000)Y="\uD83D\uDC0C ",Q=Math.random()<0.5?"that's draggin' n'at":"c'mon, pick up the pace!";else Y="\uD83D\uDCA5 ",Q=Math.random()<0.5?"what a jagoff response time!":"slower than traffic on the Parkway!";let X=`${N.magenta}[${y}] ${Y} [${D}] [PERF]${N.reset}`,O=Z?{...Z,executionTime:`${W}ms`}:{executionTime:`${W}ms`};console.log(`${X} ${$} -`,O,`- ${Q}`)},P1=($)=>{t={off:0,error:1,warn:2,info:3}[$]},x1=($)=>{g=$},q$=($,...W)=>{let Z=C(),D="✅ ",Y=N.cyan,Q="positive",X="log";if($==="error")D="❌ ",Y=N.red,Q="negative",X="error";else if($==="warn")D="⚠️ ",Y=N.yellow,Q="neutral",X="warn";else D="✅ ",Y=N.cyan,Q="positive",X="log";let O=I1(Q),H=`${Y}[${y}] ${D}[${Z}] [${$.toUpperCase()}]${N.reset}`;console[X](`${H}`,...W,`- ${O}`)},V={setLogLevel:P1,setCustomLogger:x1,info:L1,warn:R1,error:T1,perf:v1,levels:i};class N${setup;constructor($){this.setup=$}async handle($){try{if(X$($,this.setup._configuration.cors)){$._response._parseResponseIntoString();return}let W=this.setup._routeRegistry._findRoute($.request.method,$.request.path);if(!W){let _=await this.setup._hooks._onNotFound($);$._response._setBody(_),$._response._parseResponseIntoString();return}let{handler:Z,options:D}=W,{beforeHooks:Y,afterHooks:Q}=D,X=this.setup._hooks._beforeAll;for(let _ of X)await _.handler($);for(let _ of Y)await _($);let O=await Z($);for(let _ of Q)await _($);let H=this.setup._hooks._afterAll;for(let _ of H)await _.handler($);if($._response._setBody(O),$.request.method==="HEAD")$._response._setBody(null);$._response._parseResponseIntoString();return}catch(W){await this.handleError($,W)}}async handleError($,W){V.error("Request handling error",W);try{let Z=this.setup._hooks._onError,D=await Z($);$._response._setBody(D),X$($,this.setup._configuration.cors),$._response._parseResponseIntoString(),$._response._setHeadersIfNotSet({Date:w$.default().format("ddd, DD MMM YYYY HH:mm:ss [GMT]"),"Content-Length":$._response._stringBody.split(`
2
-
3
- `)[1]?.length.toString()??"0"})}catch(Z){V.error("Error handler failed",Z),$.response.setStatusCode(500),$._response._setBody({success:!1,message:"Internal Server Error"}),X$($,this.setup._configuration.cors),$._response._parseResponseIntoString(),$._response._setHeadersIfNotSet({Date:w$.default().format("ddd, DD MMM YYYY HH:mm:ss [GMT]"),"Content-Length":$._response._stringBody.split(`
4
-
5
- `)[1]?.length.toString()??"0"})}}}var f$=["__proto__","constructor","prototype"],l$=($,W)=>{if(!$||!$.trim()||$.trim()==="\x00")return;let Z=Buffer.byteLength($,"utf8");if(Z>W.maxSize)throw V.warn("[SECURITY] JSON request body too large",{size:Z,limit:W.maxSize,sizeMB:Math.round(Z/1024/1024)}),new Error(`Request body too large: ${Z} bytes exceeds limit of ${W.maxSize} bytes`);let D=null;try{D=JSON.parse($)}catch(Y){let Q=Y instanceof Error?Y.message:String(Y);throw new Error(`Invalid JSON syntax: ${Q}`)}try{B$(D,W,1)}catch(Y){let Q=Y instanceof Error?Y.message:String(Y);throw new Error(`JSON security validation failed: ${Q}`)}return D},C1=($,W)=>{if(typeof $==="string"&&$.length>W.maxStringLength)throw new Error(`String too long: ${$.length} characters exceeds limit of ${W.maxStringLength}`)},b1=($,W,Z)=>{if($.length>W.maxArrayLength)throw new Error(`Array too large: ${$.length} elements exceeds limit of ${W.maxArrayLength}`);for(let D of $)B$(D,W,Z+1)},u1=($,W)=>{if($.length>W.maxKeys)throw new Error(`Object has too many keys: ${$.length} exceeds limit of ${W.maxKeys}`);if(!W.allowPrototypeProperties){for(let Z of $)if(f$.includes(Z))throw V.warn("[SECURITY] Prototype pollution attempt detected",{property:Z,dangerousProperties:f$}),new Error(`Prototype pollution attempt detected: property '${Z}' is not allowed`)}},y1=($,W,Z)=>{let D=Object.keys($);for(let Y of D){if(Y.length>W.maxStringLength)throw new Error(`Object key too long: '${Y.substring(0,50)}...' exceeds limit of ${W.maxStringLength}`);let Q=$[Y];if(typeof Q==="string"&&Q.length>W.maxStringLength)throw new Error(`String value too long: property '${Y}' has ${Q.length} characters, exceeds limit of ${W.maxStringLength}`);B$(Q,W,Z+1)}},B$=($,W,Z)=>{if(Z>W.maxDepth)throw V.warn("[SECURITY] JSON nesting too deep - potential stack overflow attack",{currentDepth:Z,maxDepth:W.maxDepth}),new Error(`JSON nesting too deep: current depth ${Z} exceeds maximum depth of ${W.maxDepth}`);if($===null||typeof $!=="object"){C1($,W);return}if(Array.isArray($)){b1($,W,Z);return}let D=Object.keys($);u1(D,W),y1($,W,Z)};var h1=($)=>{let W=$.startsWith(`\r
6
- `)?$.slice(2):$,Z=W.indexOf(`\r
7
- \r
8
- `);if(Z===-1)return["",""];let D=W.slice(0,Z),Y=W.slice(Z+4);return[D,Y]},m1=($)=>{let W={name:""},Z=/name=(?:"(?<temp2>[^"]*)"|(?<temp1>[^;,\s]+))/i.exec($),D=/filename=(?:"(?<temp2>[^"]*)"|(?<temp1>[^;,\s]+))/i.exec($);if(Z)W.name=Z[1]??Z[2]??"";if(D){let Y=D[1]??D[2];if(Y)W.filename=Y}return W},f1=($)=>{let Z=$.split(/\r?\n/).find((D)=>D.toLowerCase().startsWith("content-type:"));if(!Z)return"application/octet-stream";return Z.slice(Z.indexOf(":")+1).trim().split(";")[0]?.trim()??"application/octet-stream"},l1=($)=>{return["image/","audio/","video/","application/octet-stream","application/pdf","application/zip","application/x-"].some((Z)=>$.toLowerCase().startsWith(Z))},p1=($)=>Buffer.isBuffer($)?$.length:Buffer.byteLength($,"utf8"),g1=($,W)=>{if(!W)return;if($.size>W.maxFileSize)throw V.warn("[SECURITY] File upload too large",{filename:$.filename,size:$.size,limit:W.maxFileSize,sizeMB:Math.round($.size/1024/1024)}),new Error(`File too large: ${$.filename} is ${$.size} bytes, exceeds limit of ${W.maxFileSize} bytes`);if($.filename&&$.filename.length>W.maxFilenameLength)throw new Error(`Filename too long: ${$.filename.length} characters exceeds limit of ${W.maxFilenameLength}`);if($.filename){let Z=$.filename.toLowerCase().substring($.filename.lastIndexOf("."));if(W.blockedExtensions.includes(Z))throw V.warn("[SECURITY] Blocked file type upload attempt",{filename:$.filename,extension:Z,blockedExtensions:W.blockedExtensions}),new Error(`File type not allowed: ${Z} files are blocked for security reasons`);if(W.allowedExtensions.length>0&&!W.allowedExtensions.includes(Z))throw new Error(`File type not allowed: ${Z} is not in the allowed extensions list`)}},s1=({contentDisposition:$,contentSection:W,headersSection:Z,config:D})=>{let Y=f1(Z),Q=W.endsWith(`\r
9
- `)?W.slice(0,-2):W,X=l1(Y)?Buffer.from(Q,"binary"):Q,O={filename:$.filename??"",contentType:Y,size:p1(X),content:X};return g1(O,D),O},p$=($,W,Z)=>{let D={fields:{},files:[]},Y=$.split(`--${W}`).slice(1),Q=0;for(let X of Y){if(!X||X.trim()===""||X.trim()==="--")continue;let[O,H]=h1(X);if(!O)continue;let I=O.split(/\r?\n/).find((L)=>L.toLowerCase().startsWith("content-disposition:"));if(!I)continue;let A=m1(I);if(!A.name)continue;if(A.filename!==void 0){if(Z&&D.files.length>=Z.maxFiles)throw V.warn("[SECURITY] Too many files in upload request",{fileCount:D.files.length,maxFiles:Z.maxFiles}),new Error(`Too many files: maximum of ${Z.maxFiles} files allowed per request`);let L=s1({contentDisposition:A,contentSection:H,headersSection:O,config:Z});if(Q+=L.size,Z&&Q>Z.maxTotalSize)throw V.warn("[SECURITY] Total upload size too large",{totalSize:Q,limit:Z.maxTotalSize,totalSizeMB:Math.round(Q/1024/1024)}),new Error(`Total file size too large: ${Q} bytes exceeds limit of ${Z.maxTotalSize} bytes`);D.files.push(L)}if(A.filename===void 0){let L=H.endsWith(`\r
10
- `)?H.slice(0,-2):H;D.fields[A.name]=L}}return D};var c1=($,W)=>{if($.length>W.maxFields)throw new Error(`Too many form fields: ${$.length} exceeds limit of ${W.maxFields}`)},r1=($,W,Z)=>{if($.length>Z.maxFieldNameLength)throw new Error(`Form field name too long: ${$.length} characters exceeds limit of ${Z.maxFieldNameLength}`);if(W&&W.length>Z.maxFieldLength)throw new Error(`Form field value too long: field '${$}' has ${W.length} characters, exceeds limit of ${Z.maxFieldLength}`)},d1=($,W,Z)=>{if($.length>Z.maxFieldNameLength)throw new Error(`Decoded form field name too long: ${$.length} characters exceeds limit of ${Z.maxFieldNameLength}`);if(W.length>Z.maxFieldLength)throw new Error(`Decoded form field value too long: field '${$}' has ${W.length} characters, exceeds limit of ${Z.maxFieldLength}`)},i1=($,W,Z)=>{let[D,Y]=$.split("=");if(!D)return;if(Z)r1(D,Y,Z);try{let Q=decodeURIComponent(D),X=Y?decodeURIComponent(Y):"";if(Z)d1(Q,X,Z);W[Q]=X}catch(Q){if(Q instanceof Error&&Q.message.includes("exceeds limit"))throw Q;W[D]=Y??""}},g$=($,W)=>{let Z={},D=$.split("&");if(W)c1(D,W);for(let Y of D)i1(Y,Z,W);return Z};var J$={JPEG:[255,216,255],PNG:[137,80,78,71],GIF87A:[71,73,70,56,55,97],GIF89A:[71,73,70,56,57,97],BMP:[66,77],TIFF_LE:[73,73,42,0],TIFF_BE:[77,77,0,42],WEBP:[82,73,70,70],ICO:[0,0,1,0],MP3_ID3:[73,68,51],MP3_FRAME:[255,251],WAV:[82,73,70,70],FLAC:[102,76,97,67],OGG:[79,103,103,83],MP4_FTYP:[0,0,0,24,102,116,121,112],MP4_FTYP_ALT:[0,0,0,28,102,116,121,112],AVI:[82,73,70,70],WEBM:[26,69,223,163],PDF:[37,80,68,70],ZIP:[80,75,3,4],ZIP_EMPTY:[80,75,5,6],ZIP_SPANNED:[80,75,7,8],RAR:[82,97,114,33,26,7,0],RAR5:[82,97,114,33,26,7,1,0],SEVENZ:[55,122,188,175,39,28],GZIP:[31,139],EXE:[77,90],ELF:[127,69,76,70],OFFICE_OLD:[208,207,17,224,161,177,26,225]},K$=($,W)=>{if($.length<W.length)return!1;return W.every((Z,D)=>$[D]===Z)},a1=($)=>{if(K$($,J$.WEBP)&&$.length>=12)return $.subarray(8,12).toString("ascii")==="WEBP";if(K$($,J$.WAV)&&$.length>=12)return $.subarray(8,12).toString("ascii")==="WAVE";if(K$($,J$.AVI)&&$.length>=12)return $.subarray(8,12).toString("ascii")==="AVI ";return!1},G$=($,W)=>{if(!$)return n1(W);let Z=$.toLowerCase();if(Z.startsWith("image/")||Z.startsWith("video/")||Z.startsWith("audio/")||Z==="application/pdf"||Z==="application/octet-stream"||Z.startsWith("application/zip")||Z.startsWith("application/x-"))return"base64";if(Z.startsWith("text/")||Z.startsWith("application/json")||Z.startsWith("application/xml")||Z.startsWith("application/javascript"))return"utf8";return"binary"},n1=($)=>{if(Buffer.isBuffer($))return t1($)?"base64":"utf8";if(typeof $==="object"&&$!==null)return"utf8";if(typeof $==="string")return"utf8";return"utf8"},t1=($)=>{if($.length===0)return!1;let W=Object.values(J$);for(let Y of W)if(K$($,Y))return!0;if(a1($))return!0;let Z=$.filter((Y)=>Y===0).length,D=$.filter((Y)=>Y<32&&Y!==9&&Y!==10&&Y!==13).length;return Z/$.length>0.1||D/$.length>0.3};var o1=($)=>{if(!($.startsWith("{")&&$.endsWith("}")||$.startsWith("[")&&$.endsWith("]")))return!1;try{return JSON.parse($),!0}catch{return!1}},e1=($)=>$.includes("=")&&$.includes("&"),$0=($)=>$.includes("boundary="),W0=($)=>typeof $==="object"&&$!==null&&!Buffer.isBuffer($)&&!($ instanceof Uint8Array)&&!($ instanceof ArrayBuffer)&&!($ instanceof Date),Z0=($)=>$ instanceof Date,D0=($)=>{if(Buffer.isBuffer($))return $;return Buffer.from($)},Y0=($)=>{return G$(void 0,$)==="base64"?"application/octet-stream":"text/plain"},E$=($)=>{let W=$.trim();if(o1(W))return v.json;if(e1(W))return v.form;if($0(W))return v.multipart;return"text/plain"},s$=($)=>{if($===null||$===void 0)return"text/plain";if(Z0($))return"text/plain";if(W0($))return v.json;if(typeof $==="string")return E$($);if(Buffer.isBuffer($)||$ instanceof Uint8Array||$ instanceof ArrayBuffer){let W=D0($);return Y0(W)}return"text/plain"};var Q0=($,W,Z)=>{let D=Buffer.byteLength($,"utf8");if(W===v.json){if(D>Z.json.maxSize)throw new Error(`JSON body too large: ${D} bytes exceeds limit of ${Z.json.maxSize} bytes`)}else if(W===v.form){if(D>Z.urlEncoded.maxSize)throw new Error(`URL-encoded body too large: ${D} bytes exceeds limit of ${Z.urlEncoded.maxSize} bytes`)}else if(W===v.multipart){if(D>Z.fileUploads.maxTotalSize)throw new Error(`Multipart body too large: ${D} bytes exceeds limit of ${Z.fileUploads.maxTotalSize} bytes`)}},c$=($,W={})=>{let{headerContentType:Z,boundary:D,config:Y}=W;if(!$||!$.trim())return;let Q=Z??E$($);if(Y)Q0($,Q,Y);if(Q===v.json){if(!Y)throw new Error("Body parser configuration is required for JSON parsing");return l$($,Y.json)}if(Q===v.multipart){if(!D)throw new Error("Invalid multipart form data: missing boundary");return p$($,D,Y?.fileUploads)}if(Q===v.form)return g$($,Y?.urlEncoded);return $};var A$=($,W)=>{let Z=$.indexOf(W);if(Z===-1)return[$,""];let D=$.slice(0,Z),Y=$.slice(Z+W.length);return[D,Y]};var r$=($)=>{if(!$||!$.trim())return{method:"GET",path:"/",protocol:"HTTP/1.1",headersRaw:"",rawBody:""};let[W,Z]=A$($,`\r
11
- `),[D,Y,Q]=W.split(" ",3),[X,O]=A$(Z,`\r
12
- \r
13
- `);if(!D||!Object.values(E).includes(D))return{method:"GET",path:Y??"/",protocol:Q??"HTTP/1.1",headersRaw:X,rawBody:O};return{method:D,path:Y??"/",protocol:Q??"HTTP/1.1",headersRaw:X,rawBody:O}};var d$=($)=>{if(!$)return{};if(!$.includes("?"))return{};let[,W]=$.split("?");if(!W)return{};let Z={},D=W.split("&");for(let Y of D){let[Q,X]=Y.split("=");if(Q)try{let O=decodeURIComponent(Q),H=X?decodeURIComponent(X):"";Z[O]=H}catch{Z[Q]=X??""}}return Z};var X0=[/^(?<classA>10)\./,/^(?<classB>172)\.(?<classBRange>1[6-9]|2[0-9]|3[0-1])\./,/^(?<classC>192)\.(?<classCRange>168)\./,/^(?<linkLocal>169)\.(?<linkLocalRange>254)\./,/^(?<loopback>127)\./,/^(?<ipv6Loopback>::1)$/,/^(?<ipv6LinkLocal>fe80):/i,/^(?<ipv6UniqueLocalFC>fc00):/i,/^(?<ipv6UniqueLocalFD>fd00):/i],i$=($)=>{if(!$||typeof $!=="string")return!1;let W=$.replace(/^\[|\]$/g,"");if(/^(?<octet>(?<highByte>25[0-5]|(?<midByte>2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$/.test(W)){let Y=W.split(".");return Y.length===4&&Y.every((Q)=>{let X=parseInt(Q,10);return X>=0&&X<=255})}if(W.includes("::")&&(W.match(/::/g)??[]).length>1)return!1;return/^(?<ipv6Address>(?<fullAddress>(?<hexQuad>[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4})|(?<compressedAddress>(?<leadingPart>[0-9a-fA-F]{1,4}:){1,7}:)|(?<mixedCompression>(?<frontPart>[0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4})|(?<doubleColonOnly>::)|(?<linkLocal>fe80:(?<linkSuffix>:[0-9a-fA-F]{0,4}){0,4}(?<zoneId>%[0-9a-zA-Z]+)?)|(?<ipv4MappedFull>::ffff:(?<mappedIpv4>(?<mappedOctet>[0-9]{1,3}\.){3}[0-9]{1,3}))|(?<generalPattern>(?<segmentGroup>[0-9a-fA-F]{0,4}:){2,7}[0-9a-fA-F]{0,4}))$/.test(W)},a$=($)=>{if(!$)return!1;let W=$.replace(/^\[|\]$/g,"");return X0.some((Z)=>Z.test(W))},n$=($,W)=>{if(!$||!W.length)return!1;if(W.includes("*"))return!0;return W.includes($)},J0=($,W)=>{if(!W.detectSpoofing||$.length<=1)return!1;if($.length>W.maxChainLength)return!0;if(new Set($).size!==$.length)return!0;let D=$.filter(i$).length;if(D>0&&D<$.length)return!0;return!1},K0=($,W)=>{if($.length<=1)return!0;let Z=$[$.length-1];return Boolean(Z&&n$(Z,W.trustedProxies))},G0=($,W)=>{if(W==="x-forwarded-for")return $[0];return $[$.length-1]},O0=($)=>{let{clientIp:W,headerName:Z,ipChain:D,config:Y}=$,Q=a$(W),X=Z==="x-forwarded-for"?n$(D[D.length-1]??"",Y.trustedProxies):!0;return{ip:W,isValid:!0,isPrivate:Q,source:Z,trusted:X}},M0=()=>({ip:"",isValid:!1,isPrivate:!1,source:"socket",trusted:!1}),U0=($,W)=>{for(let Z of W.headerPreference){let D=$[Z];if(!D)continue;let Y=D.split(",").map((O)=>O.trim()).filter(Boolean);if(Y.length===0)continue;if(J0(Y,W))continue;if(Z==="x-forwarded-for"&&!K0(Y,W))continue;let Q=G0(Y,Z);if(!Q||!i$(Q))continue;if(a$(Q)&&!W.allowPrivateIps)continue;return O0({clientIp:Q,headerName:Z,ipChain:Y,config:W})}return M0()},j0=($,W,Z={})=>{let Y={...$._configuration.ipSecurity,...Z},Q=U0(W,Y);if(Q.isValid)return Q;return{ip:"",isValid:!1,isPrivate:!1,source:"socket",trusted:!1}},t$=($,W)=>{return j0($,W).ip};var o$=($)=>{if(!$)return;return/boundary\s*=\s*(?<temp1>[^;,\s]*)/i.exec($)?.[1]};var e$=($)=>{if(!$)return{};F0($);let W=_0($),Z=V0(W);return H0(Z)},F0=($)=>{if($.split(/\r\n|\r|\n/).length>100)throw new Error("Too many headers: maximum 100 allowed")},_0=($)=>{let W={},D=$.replace(/\r\n|\r|\n/g,`
14
- `).split(`
15
- `);for(let Y of D){if(!Y.trim())continue;let Q=Y.indexOf(":");if(Q===-1)continue;let X=Y.slice(0,Q).trim(),O=Y.slice(Q+1).trim();if(!X)continue;if(!q0(X))throw new Error(`Invalid header name: ${X}`);if(X.length>200)throw new Error("Header name too long: maximum 200 characters allowed");if(O.length>8192)throw new Error("Header value too long: maximum 8192 characters allowed");W[X.toLowerCase()]=O}return W},V0=($)=>{let W={};for(let[Z,D]of Object.entries($))W[Z]=w0(D);return W},H0=($)=>$,q0=($)=>{return/^[a-zA-Z0-9!#$%&'*+\-.^_`|~]+$/.test($)},w0=($)=>{return $.replace(/[\x00-\x08\x0A-\x1F\x7F]/g,"")};class z${_rawRequest;_setup;method;path;protocol;headers;body;query;params;ipAddress;rawBody;constructor($,W,Z){this._rawRequest=$,this._setup=W,this.ipAddress=Z??"";let{method:D,path:Y,protocol:Q,headers:X,body:O,query:H,params:_,rawBody:I}=this._parseRequestIntoObject();this.method=D,this.path=Y,this.protocol=Q,this.headers=X,this.body=O,this.query=H??{},this.params=_??{},this.rawBody=I;let A=t$(this._setup,X);if(A)this.ipAddress=A}_parseRequestIntoObject(){let $=this._rawRequest.toString(),{method:W,path:Z,protocol:D,headersRaw:Y,rawBody:Q}=r$($),X=this._setup._routeRegistry._findRoute(W,Z),O=e$(Y),H=O["content-type"],_=H?.split(";")[0]?.trim().toLowerCase(),I=o$(H);return{method:W,path:Z,protocol:D,headers:O,body:c$(Q,{headerContentType:_,boundary:I,config:this._setup._configuration.bodyParser}),query:d$(Z),params:X?.params??{},rawBody:Q}}}var Y1=F$(Y$(),1);var $1=($,W)=>{let Z=W?.encoding??"utf8";if($===null||$===void 0)return"";if(Buffer.isBuffer($))return S$($,Z);if($ instanceof Uint8Array)return N0($,Z);if($ instanceof ArrayBuffer)return B0($,Z);if(typeof $==="string")return $;if(typeof $==="object")return E0($);return String($)},S$=($,W)=>{if(W==="base64")return $.toString("base64");if(W==="binary")return $.toString("binary");return $.toString("utf8")},N0=($,W)=>{let Z=Buffer.from($);return S$(Z,W)},B0=($,W)=>{let Z=Buffer.from($);return S$(Z,W)},E0=($)=>{try{return JSON.stringify($)}catch(W){return String($)}};var W1=new Map;for(let[$,W]of Object.entries(b)){let D=Q$[$];W1.set(W,D)}var Z1=($)=>{let W=W1.get($);if(!W)throw new Error(`Unknown status code: ${$}`);return W};var A0=($,W)=>{if(typeof W!=="string")throw new Error(`Header value must be a string, got ${typeof W}`);if(W.includes("\r")||W.includes(`
16
- `))throw new Error(`Header value contains invalid line break characters: ${$}`);let Z=[/[\r\n](?:set-cookie|location|authorization|www-authenticate):/i,/\r\n\r\n|\n\n/,/[\r\n]http\/\d\.\d\s+\d+/i];for(let D of Z)if(D.test(W))throw new Error(`Header value contains suspicious injection pattern: ${$}`)},z0=($)=>{for(let[W,Z]of Object.entries($))A0(W,Z)},k$=($)=>{let W={};for(let[Z,D]of Object.entries($))if(D!==void 0)W[Z]=D;return z0(W),W};var D1=($,W)=>{if(!$)return"0";let Z=0;if(W===r.base64)Z=Buffer.byteLength($,"utf8");if(W===r.binary)Z=$.length;if(W===r.utf8)Z=Buffer.byteLength($,"utf8");return String(Z)};class I${_request;_statusCode=b.ok;_status=Q$.ok;_headers={};_body="";_stringBody="";_encoding=r.utf8;constructor($){this._request=$,this._setSecurityHeaders()}_parseResponseIntoString(){let $=`${this._request.protocol} ${this._statusCode} ${this._status}`,W=Object.entries(this._headers).map(([Q,X])=>`${Q}: ${X}`),Z=G$(this._headers["content-type"],this._body),D=$1(this._body,{encoding:Z});this._encoding=Z,this._stringBody=`${$}
17
- ${W.join(`
18
- `)}
19
-
20
- ${D}`;let Y=D1(this._stringBody,this._encoding);this._setHeadersIfNotSet({Date:Y1.default().format("ddd, DD MMM YYYY HH:mm:ss [GMT]"),"Content-Length":Y})}_setHeadersIfNotSet($){let W={};for(let[D,Y]of Object.entries($))if(Y!==void 0&&!(D in this._headers))W[D]=Y;let Z=k$(W);Object.assign(this._headers,Z)}_setBody($){if(this._body=$,!this._headers["content-type"]){let W=s$($);this._setHeadersIfNotSet({"Content-Type":W})}}setStatusCode($){this._statusCode=$,this._status=Z1($)}addHeaders($){let W=k$($);this._headers={...this._headers,...W}}removeHeaders($){for(let W of $)delete this._headers[W]}_setSecurityHeaders(){this._setHeadersIfNotSet({"X-Content-Type-Options":"nosniff","X-Frame-Options":"DENY","X-XSS-Protection":"1; mode=block","Referrer-Policy":"strict-origin-when-cross-origin"})}}class L${_request;_response;request;response;constructor($,W,Z){this._request=new z$($,W,Z),this._response=new I$(this._request),this.request=this._request,this.response=this._response}}var Q1={off:"off",error:"error",warn:"warn",info:"info"};var S0={enabled:!0,origin:"*",methods:["GET","POST","PUT","DELETE","PATCH","OPTIONS"],allowedHeaders:"*",exposedHeaders:[],credentials:!1,maxAge:86400,preflightContinue:!1,optionsSuccessStatus:b.noContent},O$={json:{maxSize:262144,maxDepth:10,allowPrototypeProperties:!1,maxKeys:1000,maxStringLength:1048576,maxArrayLength:1e4},fileUploads:{maxFileSize:10485760,maxTotalSize:52428800,maxFiles:10,allowedExtensions:[],blockedExtensions:[".exe",".bat",".cmd",".scr",".pif",".com"],maxFilenameLength:255},urlEncoded:{maxSize:1048576,maxFields:1000,maxFieldNameLength:100,maxFieldLength:1048576}},X1={trustedProxies:["127.0.0.1","::1"],allowPrivateIps:!0,headerPreference:["x-forwarded-for","x-real-ip","cf-connecting-ip","x-client-ip","true-client-ip"],maxChainLength:10,detectSpoofing:!0},k0={port:5000,host:"0.0.0.0",logLevel:Q1.warn,networkLogs:!1,cors:{enabled:!1},bodyParser:O$,ipSecurity:X1,connectionOptions:{socketTimeout:30000,gracefulShutdownTimeout:30000,keepAliveTimeout:65000,headersTimeout:66000}},I0=($)=>{if($.maxSize<1)throw new Error("bodyParser.json.maxSize must be at least 1 byte");if($.maxDepth<1)throw new Error("bodyParser.json.maxDepth must be at least 1");if($.maxKeys<1)throw new Error("bodyParser.json.maxKeys must be at least 1");if($.maxStringLength<1)throw new Error("bodyParser.json.maxStringLength must be at least 1 byte");if($.maxArrayLength<1)throw new Error("bodyParser.json.maxArrayLength must be at least 1")},L0=($)=>{if($.maxFileSize<1)throw new Error("bodyParser.fileUploads.maxFileSize must be at least 1 byte");if($.maxTotalSize<1)throw new Error("bodyParser.fileUploads.maxTotalSize must be at least 1 byte");if($.maxFiles<1)throw new Error("bodyParser.fileUploads.maxFiles must be at least 1");if($.maxFilenameLength<1)throw new Error("bodyParser.fileUploads.maxFilenameLength must be at least 1 character")},R0=($)=>{if($.maxSize<1)throw new Error("bodyParser.urlEncoded.maxSize must be at least 1 byte");if($.maxFields<1)throw new Error("bodyParser.urlEncoded.maxFields must be at least 1");if($.maxFieldNameLength<1)throw new Error("bodyParser.urlEncoded.maxFieldNameLength must be at least 1 character");if($.maxFieldLength<1)throw new Error("bodyParser.urlEncoded.maxFieldLength must be at least 1 byte")},T0=($)=>{if(!Array.isArray($.trustedProxies))throw new Error("ipSecurity.trustedProxies must be an array");if(!Array.isArray($.headerPreference))throw new Error("ipSecurity.headerPreference must be an array");if($.headerPreference.length===0)throw new Error("ipSecurity.headerPreference must contain at least one header");if($.maxChainLength<1)throw new Error("ipSecurity.maxChainLength must be at least 1");if($.maxChainLength>50)throw new Error("ipSecurity.maxChainLength must not exceed 50 to prevent DoS attacks")},v0=($)=>{if($.allowPrototypeProperties)V.warn("[SECURITY WARNING] bodyParser.json.allowPrototypeProperties is enabled. This allows prototype pollution attacks. Only enable this if you absolutely need it and have other protections in place.");if($.maxSize>10485760)V.warn(`[SECURITY WARNING] bodyParser.json.maxSize is set to ${$.maxSize} bytes (${Math.round($.maxSize/1024/1024)}MB). Large JSON payloads can cause memory exhaustion and DoS attacks. Consider if this size is necessary.`);if($.maxDepth>50)V.warn(`[SECURITY WARNING] bodyParser.json.maxDepth is set to ${$.maxDepth}. Very deep JSON nesting can cause stack overflow attacks. Consider if this depth is necessary.`)},P0=($)=>{if($.maxFileSize>104857600)V.warn(`[SECURITY WARNING] bodyParser.fileUploads.maxFileSize is set to ${$.maxFileSize} bytes (${Math.round($.maxFileSize/1024/1024)}MB). Large file uploads can consume significant server resources.`);if($.maxTotalSize>1073741824)V.warn(`[SECURITY WARNING] bodyParser.fileUploads.maxTotalSize is set to ${$.maxTotalSize} bytes (${Math.round($.maxTotalSize/1024/1024/1024)}GB). Very large total upload sizes can cause memory and disk space exhaustion.`);let W=[".exe",".bat",".cmd",".scr",".pif",".com",".vbs",".jar",".app"],Z=$.allowedExtensions.filter((D)=>W.includes(D.toLowerCase()));if(Z.length>0)V.warn(`[SECURITY WARNING] bodyParser.fileUploads.allowedExtensions includes dangerous file types: ${Z.join(", ")}. This could allow execution of malicious files. Only allow these if absolutely necessary.`);if($.blockedExtensions.length===0&&$.allowedExtensions.length===0)V.warn("[SECURITY WARNING] File uploads have no extension restrictions (no blockedExtensions and no allowedExtensions). Consider adding blockedExtensions or allowedExtensions to improve security.")},x0=($)=>{if($.trustedProxies.length===0)V.warn("[SECURITY WARNING] ipSecurity.trustedProxies is empty. No proxy headers will be trusted, which may prevent proper client IP detection.");if($.maxChainLength>20)V.warn(`[SECURITY WARNING] ipSecurity.maxChainLength is set to ${$.maxChainLength}. Very long proxy chains can consume significant resources and may indicate amplification attacks.`);if(!$.detectSpoofing)V.warn("[SECURITY WARNING] ipSecurity.detectSpoofing is disabled. This reduces protection against IP spoofing attacks. Only disable if you have other protective measures.")},C0=($,W)=>{if(W?.cors?.enabled)$.cors={...S0,...W.cors,enabled:!0}},b0=($,W)=>{if(W?.bodyParser)$.bodyParser={json:{...O$.json,...W.bodyParser.json},fileUploads:{...O$.fileUploads,...W.bodyParser.fileUploads},urlEncoded:{...O$.urlEncoded,...W.bodyParser.urlEncoded}},h0($.bodyParser)},u0=($,W)=>{if(W?.ipSecurity)$.ipSecurity={...X1,...W.ipSecurity},T0($.ipSecurity),x0($.ipSecurity)},y0=($,W)=>{if(W?.port!==void 0){let Z=Number(W.port);if(isNaN(Z)||Z<1||Z>65535)throw new Error("Invalid port number");$.port=Z}},h0=($)=>{I0($.json),L0($.fileUploads),R0($.urlEncoded),v0($.json),P0($.fileUploads)},J1=($)=>{let W={...k0};return Object.assign(W,$),C0(W,$),b0(W,$),u0(W,$),y0(W,$),W};class R${_beforeAll;_afterAll;_onError;_onNotFound;constructor(){this._beforeAll=new Set,this._afterAll=new Set,this._onError=($)=>{return $.response.setStatusCode(b.internalServerError),{success:!1,message:"Internal Server Error"}},this._onNotFound=($)=>{return $.response.setStatusCode(b.notFound),{success:!1,message:"404 Not Found"}}}_addBeforeHooks($,W){for(let Z of $)this._beforeAll.add({handler:Z,options:W??{routesToExclude:[],routesToInclude:[]}})}_addAfterHooks($,W){for(let Z of $)this._afterAll.add({handler:Z,options:W??{routesToExclude:[],routesToInclude:[]}})}_addOnError($){this._onError=$}_addOnNotFound($){this._onNotFound=$}}var K1=($)=>{let W=[],Z=$.path.replace(/:\w+/g,(D)=>{let Y=D.slice(1);return W.push(Y),"([^/]+)"}).replace(/\//g,"\\/");return{...$,pattern:new RegExp(`^${Z}$`),paramNames:W,isParameterized:!0}};var T$=($)=>{let[W]=$.split("?");if(!W)return"";if([W]=W.split("#"),!W)return"";try{W=decodeURIComponent(W)}catch(Z){V.warn("Failed to decode URL path",{path:W})}if(W=W.startsWith("/")?W:`/${W}`,W=W.replace(/\/\/+/g,"/"),W=m0(W),W.length>1&&W.endsWith("/"))W=W.slice(0,-1);return W},m0=($)=>{let W=$.split("/"),Z=[];for(let Y of W){if(Y==="."||Y===""){if(Y===""&&Z.length===0)Z.push(Y);continue}if(Y===".."){if(Z.length>1)Z.pop()}else Z.push(Y)}return Z.join("/")||"/"},v$=($)=>$.replace(/:\w+/g,":param");var G1=($)=>{let W=$.match(/:\w+/g);if(!W)return;let Z=W.map((Y)=>Y.slice(1)),D=new Set(Z);if(Z.length!==D.size){let Y=Z.filter((Q,X)=>Z.indexOf(Q)!==X);throw new Error(`Route ${$} has duplicate parameter names: ${Y.join(", ")}. Parameter names must be unique within a route for clarity and to prevent conflicts.`)}};class P${_exactRoutes=new Map;_parameterizedRoutes=new Map;_register({method:$,path:W,handler:Z,options:D}){let Y=T$(W),Q=Y.includes(":");if(Q)G1(Y);if(this._hasExactRoutePattern($,Y))throw new Error(`Route ${Y} already exists for method ${$}`);let X={method:$,path:Y,handler:Z,options:D,params:{}};if(Q)this._storeParameterizedRoute($,X);else this._storeExactRoute($,Y,X)}_findRoute($,W){let Z=T$(W),D=this._exactRoutes.get($)?.get(Z);if(D)return D;return this._findParameterizedRoute($,Z)}_hasExactRoutePattern($,W){if(this._exactRoutes.get($)?.has(W))return!0;if(W.includes(":")){let Z=v$(W),D=this._parameterizedRoutes.get($);if(D)return D.some((Y)=>v$(Y.path)===Z)}else{let Z=this._parameterizedRoutes.get($);if(Z)return Z.some((D)=>D.path===W)}return!1}_storeExactRoute($,W,Z){if(!this._exactRoutes.has($))this._exactRoutes.set($,new Map);this._exactRoutes.get($)?.set(W,Z)}_storeParameterizedRoute($,W){if(!this._parameterizedRoutes.has($))this._parameterizedRoutes.set($,[]);let Z=K1(W);this._parameterizedRoutes.get($)?.push(Z)}_findParameterizedRoute($,W){let Z=this._parameterizedRoutes.get($);if(!Z)return;for(let D of Z){let Y=W.match(D.pattern);if(Y){let Q={};for(let X=0;X<D.paramNames.length;X++){let O=Y[X+1],H=D.paramNames[X];if(O!==void 0&&H!==void 0)Q[H]=O}return{...D,params:Q}}}return}}class x${_configuration;_routeRegistry=new P$;_hooks=new R$;constructor($){this._configuration=J1($)}get($,W,Z){let D=Z??{beforeHooks:[],afterHooks:[]};this._routeRegistry._register({method:E.get,handler:W,path:$,options:D,params:{}}),this._routeRegistry._register({method:E.head,handler:W,path:$,options:D,params:{}})}head($,W,Z){this._routeRegistry._register({method:E.head,handler:W,path:$,options:Z??{beforeHooks:[],afterHooks:[]},params:{}})}post($,W,Z){this._routeRegistry._register({method:E.post,handler:W,path:$,options:Z??{beforeHooks:[],afterHooks:[]},params:{}})}put($,W,Z){this._routeRegistry._register({method:E.put,handler:W,path:$,options:Z??{beforeHooks:[],afterHooks:[]},params:{}})}patch($,W,Z){this._routeRegistry._register({method:E.patch,handler:W,path:$,options:Z??{beforeHooks:[],afterHooks:[]},params:{}})}delete($,W,Z){this._routeRegistry._register({method:E.delete,handler:W,path:$,options:Z??{beforeHooks:[],afterHooks:[]},params:{}})}options($,W,Z){this._routeRegistry._register({method:E.options,handler:W,path:$,options:Z??{beforeHooks:[],afterHooks:[]},params:{}})}group($,W,Z){let D=(Q)=>(X,O,H)=>{let _=`${$}${X}`,I={beforeHooks:[...Z?.beforeHooks??[],...H?.beforeHooks??[]],afterHooks:[...H?.afterHooks??[],...Z?.afterHooks??[]]};if(this._routeRegistry._register({method:Q,handler:O,path:_,options:I,params:{}}),Q===E.get)this._routeRegistry._register({method:E.head,handler:O,path:_,options:I,params:{}})},Y={get:D(E.get),head:D(E.head),post:D(E.post),put:D(E.put),delete:D(E.delete),patch:D(E.patch),options:D(E.options)};W(Y)}beforeAll($,W){this._hooks._addBeforeHooks($,W)}afterAll($,W){this._hooks._addAfterHooks($,W)}onError($){this._hooks._addOnError($)}onNotFound($){this._hooks._addOnNotFound($)}}class l0 extends x${_isListening=!1;_server;constructor($){super($);if(this._configuration.logger)V.setCustomLogger(this._configuration.logger);if(V.setLogLevel(this._configuration.logLevel),x.setEnabled(this._configuration.networkLogs),this._configuration.networkLogger)x.setNetworkLogger(this._configuration.networkLogger);V.info("YinzerFlow initialized with logging enabled",`${N.green}level: ${this._configuration.logLevel}, networkLogs: ${this._configuration.networkLogs}${N.reset}`)}_setupServer($,W,Z){if(!this._server)return;this._server.on("error",(D)=>{x.serverError(this._configuration.port,this._configuration.host,D.message),W(D)}),this._server.on("listening",()=>{this._isListening=!0,x.serverStart(this._configuration.port,this._configuration.host),$()}),this._server.on("connection",(D)=>{this._handleConnection(D,Z)})}async _processRequest({data:$,socket:W,requestHandler:Z,clientAddress:D}){let Y=Date.now();V.info("Processing incoming request",{clientAddress:D,dataSize:$.length});let Q=new L$($,this,D);await Z.handle(Q),W.write(Q._response._stringBody),W.end();let X=Date.now(),O=X-Y;if(x.request(Q,Y,X),O>500)V.warn("Slow request detected",{method:Q.request.method,path:Q.request.path,statusCode:Q._response._statusCode,responseTime:`${O}ms`,clientAddress:D})}_handleConnection($,W){let Z=$.remoteAddress??"unknown";x.connection("connect",Z),$.on("data",(D)=>{this._processRequest({data:D,socket:$,requestHandler:W,clientAddress:Z}).catch((Y)=>{let Q=Y instanceof Error?Y.message:"Unknown error";x.connection("error",Z,`Unexpected error: ${Q}`),$.destroy()})}),$.on("error",(D)=>{x.connection("error",Z,D.message)}),$.on("close",()=>{x.connection("disconnect",Z)})}async listen(){if(this._isListening)throw new Error("Server is already listening");return new Promise(($,W)=>{let Z=new N$(this);this._server=f0(),this._setupServer($,W,Z),this._server.listen(this._configuration.port,this._configuration.host)})}async close(){if(!this._isListening||!this._server)return;return new Promise(($)=>{if(!this._server){this._isListening=!1,$();return}this._server.close(()=>{this._isListening=!1,x.serverStop(this._configuration.port,this._configuration.host),$()})})}status(){return{isListening:this._isListening,port:this._configuration.port,host:this._configuration.host}}}export{l0 as YinzerFlow};
21
-
22
- //# debugId=529BD7F131C4E5FA64756E2164756E21