yinzerflow 0.4.3 → 0.4.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/index.d.ts CHANGED
@@ -2372,12 +2372,14 @@ export declare const createLogger: (initialConfig?: LoggerConfig) => {
2372
2372
  info: (...args: Array<unknown>) => void;
2373
2373
  warn: (...args: Array<unknown>) => void;
2374
2374
  error: (...args: Array<unknown>) => void;
2375
+ table: (data: unknown, ...additionalArgs: Array<unknown>) => void;
2375
2376
  levels: typeof LOG_LEVELS;
2376
2377
  };
2377
2378
  export declare const log: {
2378
2379
  info: (...args: Array<unknown>) => void;
2379
2380
  warn: (...args: Array<unknown>) => void;
2380
2381
  error: (...args: Array<unknown>) => void;
2382
+ table: (data: unknown, ...additionalArgs: Array<unknown>) => void;
2381
2383
  levels: typeof LOG_LEVELS;
2382
2384
  };
2383
2385
  export declare const colors: {
package/index.js CHANGED
@@ -1,32 +1,32 @@
1
- var F1=Object.create;var{getPrototypeOf:H1,defineProperty:b$,getOwnPropertyNames:V1}=Object;var q1=Object.prototype.hasOwnProperty;var J$=($,M,W)=>{W=$!=null?F1(H1($)):{};let Y=M||!$||!$.__esModule?b$(W,"default",{value:$,enumerable:!0}):W;for(let Z of V1($))if(!q1.call(Y,Z))b$(Y,Z,{get:()=>$[Z],enumerable:!0});return Y};var O1=($,M)=>()=>(M||$((M={exports:{}}).exports,M),M.exports);var o=O1((D$,K$)=>{(function($,M){typeof D$=="object"&&typeof K$<"u"?K$.exports=M():typeof define=="function"&&define.amd?define(M):($=typeof globalThis<"u"?globalThis:$||self).dayjs=M()})(D$,function(){var $=1000,M=60000,W=3600000,Y="millisecond",Z="second",Q="minute",X="hour",j="day",q="week",L="month",u="quarter",A="year",v="date",T$="Invalid Date",w1=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,j1=/\[([^\]]+)]|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,U1={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 K=["th","st","nd","rd"],J=U%100;return"["+U+(K[(J-20)%10]||K[J]||K[0])+"]"}},Q$=function(U,K,J){var w=String(U);return!w||w.length>=K?U:""+Array(K+1-w.length).join(J)+U},G1={s:Q$,z:function(U){var K=-U.utcOffset(),J=Math.abs(K),w=Math.floor(J/60),D=J%60;return(K<=0?"+":"-")+Q$(w,2,"0")+":"+Q$(D,2,"0")},m:function U(K,J){if(K.date()<J.date())return-U(J,K);var w=12*(J.year()-K.year())+(J.month()-K.month()),D=K.clone().add(w,L),G=J-D<0,F=K.clone().add(w+(G?-1:1),L);return+(-(w+(J-D)/(G?D-F:F-D))||0)},a:function(U){return U<0?Math.ceil(U)||0:Math.floor(U)},p:function(U){return{M:L,y:A,w:q,d:j,D:v,h:X,m:Q,s:Z,ms:Y,Q:u}[U]||String(U||"").toLowerCase().replace(/s$/,"")},u:function(U){return U===void 0}},g="en",y={};y[g]=U1;var P$="$isDayjsObject",X$=function(U){return U instanceof n||!(!U||!U[P$])},a=function U(K,J,w){var D;if(!K)return g;if(typeof K=="string"){var G=K.toLowerCase();y[G]&&(D=G),J&&(y[G]=J,D=G);var F=K.split("-");if(!D&&F.length>1)return U(F[0])}else{var _=K.name;y[_]=K,D=_}return!w&&D&&(g=D),D||!w&&g},k=function(U,K){if(X$(U))return U.clone();var J=typeof K=="object"?K:{};return J.date=U,J.args=arguments,new n(J)},V=G1;V.l=a,V.i=X$,V.w=function(U,K){return k(U,{locale:K.$L,utc:K.$u,x:K.$x,$offset:K.$offset})};var n=function(){function U(J){this.$L=a(J.locale,null,!0),this.parse(J),this.$x=this.$x||J.x||{},this[P$]=!0}var K=U.prototype;return K.parse=function(J){this.$d=function(w){var{date:D,utc:G}=w;if(D===null)return new Date(NaN);if(V.u(D))return new Date;if(D instanceof Date)return new Date(D);if(typeof D=="string"&&!/Z$/i.test(D)){var F=D.match(w1);if(F){var _=F[2]-1||0,B=(F[7]||"0").substring(0,3);return G?new Date(Date.UTC(F[1],_,F[3]||1,F[4]||0,F[5]||0,F[6]||0,B)):new Date(F[1],_,F[3]||1,F[4]||0,F[5]||0,F[6]||0,B)}}return new Date(D)}(J),this.init()},K.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()},K.$utils=function(){return V},K.isValid=function(){return this.$d.toString()!==T$},K.isSame=function(J,w){var D=k(J);return this.startOf(w)<=D&&D<=this.endOf(w)},K.isAfter=function(J,w){return k(J)<this.startOf(w)},K.isBefore=function(J,w){return this.endOf(w)<k(J)},K.$g=function(J,w,D){return V.u(J)?this[w]:this.set(D,J)},K.unix=function(){return Math.floor(this.valueOf()/1000)},K.valueOf=function(){return this.$d.getTime()},K.startOf=function(J,w){var D=this,G=!!V.u(w)||w,F=V.p(J),_=function(h,S){var C=V.w(D.$u?Date.UTC(D.$y,S,h):new Date(D.$y,S,h),D);return G?C:C.endOf(j)},B=function(h,S){return V.w(D.toDate()[h].apply(D.toDate("s"),(G?[0,0,0,0]:[23,59,59,999]).slice(S)),D)},E=this.$W,z=this.$M,T=this.$D,f="set"+(this.$u?"UTC":"");switch(F){case A:return G?_(1,0):_(31,11);case L:return G?_(1,z):_(0,z+1);case q:var m=this.$locale().weekStart||0,p=(E<m?E+7:E)-m;return _(G?T-p:T+(6-p),z);case j:case v:return B(f+"Hours",0);case X:return B(f+"Minutes",1);case Q:return B(f+"Seconds",2);case Z:return B(f+"Milliseconds",3);default:return this.clone()}},K.endOf=function(J){return this.startOf(J,!1)},K.$set=function(J,w){var D,G=V.p(J),F="set"+(this.$u?"UTC":""),_=(D={},D[j]=F+"Date",D[v]=F+"Date",D[L]=F+"Month",D[A]=F+"FullYear",D[X]=F+"Hours",D[Q]=F+"Minutes",D[Z]=F+"Seconds",D[Y]=F+"Milliseconds",D)[G],B=G===j?this.$D+(w-this.$W):w;if(G===L||G===A){var E=this.clone().set(v,1);E.$d[_](B),E.init(),this.$d=E.set(v,Math.min(this.$D,E.daysInMonth())).$d}else _&&this.$d[_](B);return this.init(),this},K.set=function(J,w){return this.clone().$set(J,w)},K.get=function(J){return this[V.p(J)]()},K.add=function(J,w){var D,G=this;J=Number(J);var F=V.p(w),_=function(z){var T=k(G);return V.w(T.date(T.date()+Math.round(z*J)),G)};if(F===L)return this.set(L,this.$M+J);if(F===A)return this.set(A,this.$y+J);if(F===j)return _(1);if(F===q)return _(7);var B=(D={},D[Q]=M,D[X]=W,D[Z]=$,D)[F]||1,E=this.$d.getTime()+J*B;return V.w(E,this)},K.subtract=function(J,w){return this.add(-1*J,w)},K.format=function(J){var w=this,D=this.$locale();if(!this.isValid())return D.invalidDate||T$;var G=J||"YYYY-MM-DDTHH:mm:ssZ",F=V.z(this),_=this.$H,B=this.$m,E=this.$M,z=D.weekdays,T=D.months,f=D.meridiem,m=function(S,C,r,t){return S&&(S[C]||S(w,G))||r[C].slice(0,t)},p=function(S){return V.s(_%12||12,S,"0")},h=f||function(S,C,r){var t=S<12?"AM":"PM";return r?t.toLowerCase():t};return G.replace(j1,function(S,C){return C||function(r){switch(r){case"YY":return String(w.$y).slice(-2);case"YYYY":return V.s(w.$y,4,"0");case"M":return E+1;case"MM":return V.s(E+1,2,"0");case"MMM":return m(D.monthsShort,E,T,3);case"MMMM":return m(T,E);case"D":return w.$D;case"DD":return V.s(w.$D,2,"0");case"d":return String(w.$W);case"dd":return m(D.weekdaysMin,w.$W,z,2);case"ddd":return m(D.weekdaysShort,w.$W,z,3);case"dddd":return z[w.$W];case"H":return String(_);case"HH":return V.s(_,2,"0");case"h":return p(1);case"hh":return p(2);case"a":return h(_,B,!0);case"A":return h(_,B,!1);case"m":return String(B);case"mm":return V.s(B,2,"0");case"s":return String(w.$s);case"ss":return V.s(w.$s,2,"0");case"SSS":return V.s(w.$ms,3,"0");case"Z":return F}return null}(S)||F.replace(":","")})},K.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},K.diff=function(J,w,D){var G,F=this,_=V.p(w),B=k(J),E=(B.utcOffset()-this.utcOffset())*M,z=this-B,T=function(){return V.m(F,B)};switch(_){case A:G=T()/12;break;case L:G=T();break;case u:G=T()/3;break;case q:G=(z-E)/604800000;break;case j:G=(z-E)/86400000;break;case X:G=z/W;break;case Q:G=z/M;break;case Z:G=z/$;break;default:G=z}return D?G:V.a(G)},K.daysInMonth=function(){return this.endOf(L).$D},K.$locale=function(){return y[this.$L]},K.locale=function(J,w){if(!J)return this.$L;var D=this.clone(),G=a(J,w,!0);return G&&(D.$L=G),D},K.clone=function(){return V.w(this.$d,this)},K.toDate=function(){return new Date(this.valueOf())},K.toJSON=function(){return this.isValid()?this.toISOString():null},K.toISOString=function(){return this.$d.toISOString()},K.toString=function(){return this.$d.toUTCString()},U}(),R$=n.prototype;return k.prototype=R$,[["$ms",Y],["$s",Z],["$m",Q],["$H",X],["$W",j],["$M",L],["$y",A],["$D",v]].forEach(function(U){R$[U[1]]=function(K){return this.$g(K,U[0],U[1])}}),k.extend=function(U,K){return U.$i||(U(K,n,k),U.$i=!0),k},k.locale=a,k.isDayjs=X$,k.unix=function(U){return k(1000*U)},k.en=y[g],k.Ls=y,k.p={},k})});import{createServer as v0}from"net";var U$=J$(o(),1);var s={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"},R={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},N={delete:"DELETE",get:"GET",head:"HEAD",post:"POST",put:"PUT",patch:"PATCH",options:"OPTIONS"},P={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"},x={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"},x$={base64:"base64",binary:"binary",utf8:"utf8"};var e=($,M)=>{if(!M.enabled)return!1;if($.request.method==="OPTIONS"){if(!u$($,M))return $.response.setStatusCode(403),$._response._setBody({error:"CORS: Origin not allowed",origin:$.request.headers.origin}),!0;$.response.setStatusCode(M.optionsSuccessStatus);let Z=C$($,M);if($._response._setHeadersIfNotSet({[x.accessControlAllowOrigin]:Z,[x.accessControlAllowMethods]:M.methods.join(", "),[x.accessControlAllowHeaders]:typeof M.allowedHeaders==="string"?M.allowedHeaders:M.allowedHeaders.join(", "),[x.accessControlAllowCredentials]:M.credentials?"true":"false",[x.accessControlExposeHeaders]:M.exposedHeaders.join(", "),[x.accessControlMaxAge]:M.maxAge.toString()}),M.preflightContinue)return!1;return $._response._setBody(""),!0}if(u$($,M)){let Y=C$($,M);$._response._setHeadersIfNotSet({[x.accessControlAllowOrigin]:Y,[x.accessControlAllowCredentials]:M.credentials?"true":"false"})}return!1},C$=($,M)=>{if(M.origin==="*"){if(M.credentials)throw Error('CORS Security Error: origin: "*" with credentials: true is forbidden by CORS spec and creates security vulnerabilities. Use specific origins instead.');return"*"}let W=$.request.headers.origin;if(W)return W;if(typeof M.origin==="string")return M.origin;if(Array.isArray(M.origin)&&M.origin.length>0){let[Y]=M.origin;return Y??"null"}return"null"},u$=($,M)=>{if(M.origin==="*")return!0;let W=$.request.headers.origin?.toLowerCase()??"";if(typeof M.origin==="function")return Boolean(M.origin(W,$.request));if(typeof M.origin==="string")return W===M.origin.toLowerCase();if(Array.isArray(M.origin))return M.origin.some((Y)=>W===Y.toLowerCase());if(M.origin instanceof RegExp)return M.origin.test(W);return!1};var y$=J$(o(),1);var O={reset:"\x1B[0m",cyan:"\x1B[96m",yellow:"\x1B[93m",red:"\x1B[91m",green:"\x1B[92m",magenta:"\x1B[95m",gray:"\x1B[90m"};var c={off:"off",error:"error",warn:"warn",info:"info"};var l={off:0,error:1,warn:2,info:3},_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"]},w$=($)=>{let M=_1[$];return M[Math.floor(Math.random()*M.length)]??""},B1=()=>y$.default().format("YYYY-MM-DD HH:mm:ss.SSS"),j$=($,M,...W)=>{let Y=B1(),Z=O.reset;if(M==="NETWORK")Z=O.gray;if($==="error"){let X=`${O.red}[${M}] ❌ [${Y}] [ERROR]${O.reset}`;console.error(`${X}`,`${Z}`,...W,`${O.reset} - ${w$("negative")}`);return}if($==="warn"){let X=`${O.yellow}[${M}] ⚠️ [${Y}] [WARN]${O.reset}`;console.warn(`${X}`,`${Z}`,...W,`${O.reset} - ${w$("neutral")}`);return}if($==="off")return;let Q=`${O.cyan}[${M}] ✅ [${Y}] [INFO]${O.reset}`;console.info(`${Q}`,`${Z}`,...W,`${O.reset} - ${w$("positive")}`)},d=($)=>{let M={logLevel:$?.logLevel??c.info,prefix:$?.prefix??"YINZER",logger:$?.logger??null},W=(X)=>l[X]??l.info;return{info:(...X)=>{if(W(M.logLevel)<l.info)return;if(M.logger){M.logger.info(...X);return}j$("info",M.prefix,...X)},warn:(...X)=>{if(W(M.logLevel)<l.warn)return;if(M.logger){M.logger.warn(...X);return}j$("warn",M.prefix,...X)},error:(...X)=>{if(W(M.logLevel)<l.error)return;if(M.logger){M.logger.error(...X);return}j$("error",M.prefix,...X)},levels:l}},H=d();class G${setup;constructor($){this.setup=$}async handle($){try{if(this._handleCors($))return;let M=await this._matchRoute($);if(!M)return;Object.assign($.request.params,M.params);let{handler:W,options:Y}=M,{beforeHooks:Z=[],afterHooks:Q=[]}=Y;if(await this._handleBeforeAllHooks($))return;if(await this._handleBeforeHooks($,Z))return;let X=null;try{X=await W($)}catch(q){throw q}for(let q of Q)await q($);let j=this.setup._hooks._afterAll;for(let q of j){if(!this._shouldRunHook(q.options,$.request.path))continue;await q.handler($)}if($._response._setBody(X),$.request.method==="HEAD")$._response._setBody(null);$._response._parseResponseIntoString();return}catch(M){await this.handleError($,M)}}async handleError($,M){try{let W=this.setup._hooks._onError,Y=await W($,M);$._response._setBody(Y),e($,this.setup._configuration.cors),$._response._parseResponseIntoString(),$._response._setHeadersIfNotSet({Date:U$.default().format("ddd, DD MMM YYYY HH:mm:ss [GMT]"),"Content-Length":$._response._stringBody.split(`
1
+ var H1=Object.create;var{getPrototypeOf:q1,defineProperty:b$,getOwnPropertyNames:V1}=Object;var O1=Object.prototype.hasOwnProperty;var D$=($,M,W)=>{W=$!=null?H1(q1($)):{};let Y=M||!$||!$.__esModule?b$(W,"default",{value:$,enumerable:!0}):W;for(let Z of V1($))if(!O1.call(Y,Z))b$(Y,Z,{get:()=>$[Z],enumerable:!0});return Y};var B1=($,M)=>()=>(M||$((M={exports:{}}).exports,M),M.exports);var o=B1((K$,w$)=>{(function($,M){typeof K$=="object"&&typeof w$<"u"?w$.exports=M():typeof define=="function"&&define.amd?define(M):($=typeof globalThis<"u"?globalThis:$||self).dayjs=M()})(K$,function(){var $=1000,M=60000,W=3600000,Y="millisecond",Z="second",Q="minute",X="hour",w="day",V="week",A="month",u="quarter",L="year",v="date",T$="Invalid Date",j1=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,U1=/\[([^\]]+)]|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,F1={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 K=["th","st","nd","rd"],J=U%100;return"["+U+(K[(J-20)%10]||K[J]||K[0])+"]"}},X$=function(U,K,J){var j=String(U);return!j||j.length>=K?U:""+Array(K+1-j.length).join(J)+U},G1={s:X$,z:function(U){var K=-U.utcOffset(),J=Math.abs(K),j=Math.floor(J/60),D=J%60;return(K<=0?"+":"-")+X$(j,2,"0")+":"+X$(D,2,"0")},m:function U(K,J){if(K.date()<J.date())return-U(J,K);var j=12*(J.year()-K.year())+(J.month()-K.month()),D=K.clone().add(j,A),F=J-D<0,G=K.clone().add(j+(F?-1:1),A);return+(-(j+(J-D)/(F?D-G:G-D))||0)},a:function(U){return U<0?Math.ceil(U)||0:Math.floor(U)},p:function(U){return{M:A,y:L,w:V,d:w,D:v,h:X,m:Q,s:Z,ms:Y,Q:u}[U]||String(U||"").toLowerCase().replace(/s$/,"")},u:function(U){return U===void 0}},g="en",y={};y[g]=F1;var R$="$isDayjsObject",J$=function(U){return U instanceof n||!(!U||!U[R$])},a=function U(K,J,j){var D;if(!K)return g;if(typeof K=="string"){var F=K.toLowerCase();y[F]&&(D=F),J&&(y[F]=J,D=F);var G=K.split("-");if(!D&&G.length>1)return U(G[0])}else{var B=K.name;y[B]=K,D=B}return!j&&D&&(g=D),D||!j&&g},k=function(U,K){if(J$(U))return U.clone();var J=typeof K=="object"?K:{};return J.date=U,J.args=arguments,new n(J)},O=G1;O.l=a,O.i=J$,O.w=function(U,K){return k(U,{locale:K.$L,utc:K.$u,x:K.$x,$offset:K.$offset})};var n=function(){function U(J){this.$L=a(J.locale,null,!0),this.parse(J),this.$x=this.$x||J.x||{},this[R$]=!0}var K=U.prototype;return K.parse=function(J){this.$d=function(j){var{date:D,utc:F}=j;if(D===null)return new Date(NaN);if(O.u(D))return new Date;if(D instanceof Date)return new Date(D);if(typeof D=="string"&&!/Z$/i.test(D)){var G=D.match(j1);if(G){var B=G[2]-1||0,N=(G[7]||"0").substring(0,3);return F?new Date(Date.UTC(G[1],B,G[3]||1,G[4]||0,G[5]||0,G[6]||0,N)):new Date(G[1],B,G[3]||1,G[4]||0,G[5]||0,G[6]||0,N)}}return new Date(D)}(J),this.init()},K.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()},K.$utils=function(){return O},K.isValid=function(){return this.$d.toString()!==T$},K.isSame=function(J,j){var D=k(J);return this.startOf(j)<=D&&D<=this.endOf(j)},K.isAfter=function(J,j){return k(J)<this.startOf(j)},K.isBefore=function(J,j){return this.endOf(j)<k(J)},K.$g=function(J,j,D){return O.u(J)?this[j]:this.set(D,J)},K.unix=function(){return Math.floor(this.valueOf()/1000)},K.valueOf=function(){return this.$d.getTime()},K.startOf=function(J,j){var D=this,F=!!O.u(j)||j,G=O.p(J),B=function(h,S){var C=O.w(D.$u?Date.UTC(D.$y,S,h):new Date(D.$y,S,h),D);return F?C:C.endOf(w)},N=function(h,S){return O.w(D.toDate()[h].apply(D.toDate("s"),(F?[0,0,0,0]:[23,59,59,999]).slice(S)),D)},E=this.$W,z=this.$M,T=this.$D,l="set"+(this.$u?"UTC":"");switch(G){case L:return F?B(1,0):B(31,11);case A:return F?B(1,z):B(0,z+1);case V:var m=this.$locale().weekStart||0,p=(E<m?E+7:E)-m;return B(F?T-p:T+(6-p),z);case w:case v:return N(l+"Hours",0);case X:return N(l+"Minutes",1);case Q:return N(l+"Seconds",2);case Z:return N(l+"Milliseconds",3);default:return this.clone()}},K.endOf=function(J){return this.startOf(J,!1)},K.$set=function(J,j){var D,F=O.p(J),G="set"+(this.$u?"UTC":""),B=(D={},D[w]=G+"Date",D[v]=G+"Date",D[A]=G+"Month",D[L]=G+"FullYear",D[X]=G+"Hours",D[Q]=G+"Minutes",D[Z]=G+"Seconds",D[Y]=G+"Milliseconds",D)[F],N=F===w?this.$D+(j-this.$W):j;if(F===A||F===L){var E=this.clone().set(v,1);E.$d[B](N),E.init(),this.$d=E.set(v,Math.min(this.$D,E.daysInMonth())).$d}else B&&this.$d[B](N);return this.init(),this},K.set=function(J,j){return this.clone().$set(J,j)},K.get=function(J){return this[O.p(J)]()},K.add=function(J,j){var D,F=this;J=Number(J);var G=O.p(j),B=function(z){var T=k(F);return O.w(T.date(T.date()+Math.round(z*J)),F)};if(G===A)return this.set(A,this.$M+J);if(G===L)return this.set(L,this.$y+J);if(G===w)return B(1);if(G===V)return B(7);var N=(D={},D[Q]=M,D[X]=W,D[Z]=$,D)[G]||1,E=this.$d.getTime()+J*N;return O.w(E,this)},K.subtract=function(J,j){return this.add(-1*J,j)},K.format=function(J){var j=this,D=this.$locale();if(!this.isValid())return D.invalidDate||T$;var F=J||"YYYY-MM-DDTHH:mm:ssZ",G=O.z(this),B=this.$H,N=this.$m,E=this.$M,z=D.weekdays,T=D.months,l=D.meridiem,m=function(S,C,r,t){return S&&(S[C]||S(j,F))||r[C].slice(0,t)},p=function(S){return O.s(B%12||12,S,"0")},h=l||function(S,C,r){var t=S<12?"AM":"PM";return r?t.toLowerCase():t};return F.replace(U1,function(S,C){return C||function(r){switch(r){case"YY":return String(j.$y).slice(-2);case"YYYY":return O.s(j.$y,4,"0");case"M":return E+1;case"MM":return O.s(E+1,2,"0");case"MMM":return m(D.monthsShort,E,T,3);case"MMMM":return m(T,E);case"D":return j.$D;case"DD":return O.s(j.$D,2,"0");case"d":return String(j.$W);case"dd":return m(D.weekdaysMin,j.$W,z,2);case"ddd":return m(D.weekdaysShort,j.$W,z,3);case"dddd":return z[j.$W];case"H":return String(B);case"HH":return O.s(B,2,"0");case"h":return p(1);case"hh":return p(2);case"a":return h(B,N,!0);case"A":return h(B,N,!1);case"m":return String(N);case"mm":return O.s(N,2,"0");case"s":return String(j.$s);case"ss":return O.s(j.$s,2,"0");case"SSS":return O.s(j.$ms,3,"0");case"Z":return G}return null}(S)||G.replace(":","")})},K.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},K.diff=function(J,j,D){var F,G=this,B=O.p(j),N=k(J),E=(N.utcOffset()-this.utcOffset())*M,z=this-N,T=function(){return O.m(G,N)};switch(B){case L:F=T()/12;break;case A:F=T();break;case u:F=T()/3;break;case V:F=(z-E)/604800000;break;case w:F=(z-E)/86400000;break;case X:F=z/W;break;case Q:F=z/M;break;case Z:F=z/$;break;default:F=z}return D?F:O.a(F)},K.daysInMonth=function(){return this.endOf(A).$D},K.$locale=function(){return y[this.$L]},K.locale=function(J,j){if(!J)return this.$L;var D=this.clone(),F=a(J,j,!0);return F&&(D.$L=F),D},K.clone=function(){return O.w(this.$d,this)},K.toDate=function(){return new Date(this.valueOf())},K.toJSON=function(){return this.isValid()?this.toISOString():null},K.toISOString=function(){return this.$d.toISOString()},K.toString=function(){return this.$d.toUTCString()},U}(),P$=n.prototype;return k.prototype=P$,[["$ms",Y],["$s",Z],["$m",Q],["$H",X],["$W",w],["$M",A],["$y",L],["$D",v]].forEach(function(U){P$[U[1]]=function(K){return this.$g(K,U[0],U[1])}}),k.extend=function(U,K){return U.$i||(U(K,n,k),U.$i=!0),k},k.locale=a,k.isDayjs=J$,k.unix=function(U){return k(1000*U)},k.en=y[g],k.Ls=y,k.p={},k})});import{createServer as T0}from"net";var U$=D$(o(),1);var s={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"},P={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},_={delete:"DELETE",get:"GET",head:"HEAD",post:"POST",put:"PUT",patch:"PATCH",options:"OPTIONS"},R={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"},x={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"},x$={base64:"base64",binary:"binary",utf8:"utf8"};var e=($,M)=>{if(!M.enabled)return!1;if($.request.method==="OPTIONS"){if(!u$($,M))return $.response.setStatusCode(403),$._response._setBody({error:"CORS: Origin not allowed",origin:$.request.headers.origin}),!0;$.response.setStatusCode(M.optionsSuccessStatus);let Z=C$($,M);if($._response._setHeadersIfNotSet({[x.accessControlAllowOrigin]:Z,[x.accessControlAllowMethods]:M.methods.join(", "),[x.accessControlAllowHeaders]:typeof M.allowedHeaders==="string"?M.allowedHeaders:M.allowedHeaders.join(", "),[x.accessControlAllowCredentials]:M.credentials?"true":"false",[x.accessControlExposeHeaders]:M.exposedHeaders.join(", "),[x.accessControlMaxAge]:M.maxAge.toString()}),M.preflightContinue)return!1;return $._response._setBody(""),!0}if(u$($,M)){let Y=C$($,M);$._response._setHeadersIfNotSet({[x.accessControlAllowOrigin]:Y,[x.accessControlAllowCredentials]:M.credentials?"true":"false"})}return!1},C$=($,M)=>{if(M.origin==="*"){if(M.credentials)throw Error('CORS Security Error: origin: "*" with credentials: true is forbidden by CORS spec and creates security vulnerabilities. Use specific origins instead.');return"*"}let W=$.request.headers.origin;if(W)return W;if(typeof M.origin==="string")return M.origin;if(Array.isArray(M.origin)&&M.origin.length>0){let[Y]=M.origin;return Y??"null"}return"null"},u$=($,M)=>{if(M.origin==="*")return!0;let W=$.request.headers.origin?.toLowerCase()??"";if(typeof M.origin==="function")return Boolean(M.origin(W,$.request));if(typeof M.origin==="string")return W===M.origin.toLowerCase();if(Array.isArray(M.origin))return M.origin.some((Y)=>W===Y.toLowerCase());if(M.origin instanceof RegExp)return M.origin.test(W);return!1};var y$=D$(o(),1);var q={reset:"\x1B[0m",cyan:"\x1B[96m",yellow:"\x1B[93m",red:"\x1B[91m",green:"\x1B[92m",magenta:"\x1B[95m",gray:"\x1B[90m"};var c={off:"off",error:"error",warn:"warn",info:"info"};var f={off:0,error:1,warn:2,info:3},N1={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"]},$$=($)=>{let M=N1[$];return M[Math.floor(Math.random()*M.length)]??""},m$=()=>y$.default().format("YYYY-MM-DD HH:mm:ss.SSS"),j$=($,M,...W)=>{let Y=m$(),Z=q.reset;if(M==="NETWORK")Z=q.gray;if($==="error"){let X=`${q.red}[${M}] ❌ [${Y}] [ERROR]${q.reset}`;console.error(`${X}`,`${Z}`,...W,`${q.reset} - ${$$("negative")}`);return}if($==="warn"){let X=`${q.yellow}[${M}] ⚠️ [${Y}] [WARN]${q.reset}`;console.warn(`${X}`,`${Z}`,...W,`${q.reset} - ${$$("neutral")}`);return}if($==="off")return;let Q=`${q.cyan}[${M}] ✅ [${Y}] [INFO]${q.reset}`;console.info(`${Q}`,`${Z}`,...W,`${q.reset} - ${$$("positive")}`)},_1=($,M,...W)=>{let Y=m$(),Z=`${q.magenta}[${$}] \uD83D\uDCCA [${Y}] [TABLE]${q.reset}`;if(console.log(`${Z} - ${$$("positive")}`),console.table(M),W.length>0)console.log(`${q.gray}Additional context:${q.reset}`,...W)},d=($)=>{let M={logLevel:$?.logLevel??c.info,prefix:$?.prefix??"YINZER",logger:$?.logger??null},W=(w)=>f[w]??f.info;return{info:(...w)=>{if(W(M.logLevel)<f.info)return;if(M.logger){M.logger.info(...w);return}j$("info",M.prefix,...w)},warn:(...w)=>{if(W(M.logLevel)<f.warn)return;if(M.logger){M.logger.warn(...w);return}j$("warn",M.prefix,...w)},error:(...w)=>{if(W(M.logLevel)<f.error)return;if(M.logger){M.logger.error(...w);return}j$("error",M.prefix,...w)},table:(w,...V)=>{if(W(M.logLevel)<f.info)return;if(M.logger){M.logger.info("TABLE:",w,...V);return}_1(M.prefix,w,...V)},levels:f}},H=d();class F${setup;constructor($){this.setup=$}async handle($){try{if(this._handleCors($))return;let M=await this._matchRoute($);if(!M)return;Object.assign($.request.params,M.params);let{handler:W,options:Y}=M,{beforeHooks:Z=[],afterHooks:Q=[]}=Y;if(await this._handleBeforeAllHooks($))return;if(await this._handleBeforeHooks($,Z))return;let X=null;try{X=await W($)}catch(V){throw V}for(let V of Q)await V($);let w=this.setup._hooks._afterAll;for(let V of w){if(!this._shouldRunHook(V.options,$.request.path))continue;await V.handler($)}if($._response._setBody(X),$.request.method==="HEAD")$._response._setBody(null);$._response._parseResponseIntoString();return}catch(M){await this.handleError($,M)}}async handleError($,M){try{let W=this.setup._hooks._onError,Y=await W($,M);$._response._setBody(Y),e($,this.setup._configuration.cors),$._response._parseResponseIntoString(),$._response._setHeadersIfNotSet({Date:U$.default().format("ddd, DD MMM YYYY HH:mm:ss [GMT]"),"Content-Length":$._response._stringBody.split(`
2
2
 
3
3
  `)[1]?.length.toString()??"0"})}catch(W){H.error("Error handler failed, this might be an internal error in the YinzerFlow framework: ",W),$.response.setStatusCode(500),$._response._setBody({success:!1,message:"Internal Server Error"}),e($,this.setup._configuration.cors),$._response._parseResponseIntoString(),$._response._setHeadersIfNotSet({Date:U$.default().format("ddd, DD MMM YYYY HH:mm:ss [GMT]"),"Content-Length":$._response._stringBody.split(`
4
4
 
5
- `)[1]?.length.toString()??"0"})}}_handleCors($){if(e($,this.setup._configuration.cors))return $._response._parseResponseIntoString(),!0;return!1}async _matchRoute($){let M=this.setup._routeRegistry._findRoute($.request.method,$.request.path);if(!M){let W=await this.setup._hooks._onNotFound($);return $._response._setBody(W),$._response._parseResponseIntoString(),null}return M}async _handleBeforeAllHooks($){let M=this.setup._hooks._beforeAll;for(let W of M){if(!this._shouldRunHook(W.options,$.request.path))continue;let Y=await W.handler($);if(Y!==void 0)return $._response._setBody(Y),$._response._parseResponseIntoString(),!0}return!1}async _handleBeforeHooks($,M){for(let W of M){let Y=await W($);if(Y!==void 0)return $._response._setBody(Y),$._response._parseResponseIntoString(),!0}return!1}_shouldRunHook($,M){if(!$)return!0;let{routesToInclude:W,routesToExclude:Y}=$;if(Y.some((Z)=>this._matchesPattern(M,Z)))return!1;if(W.length===0)return!0;return W.some((Z)=>this._matchesPattern(M,Z))}_matchesPattern($,M){if(M===$)return!0;if(M.endsWith("/*")){let W=M.slice(0,-2);return $.startsWith(W)}return!1}}var m$=["__proto__","constructor","prototype"],h$=($,M)=>{if(!$||!$.trim()||$.trim()==="\x00")return;let W=Buffer.byteLength($,"utf8");if(W>M.maxSize)throw H.warn("[SECURITY] JSON request body too large",{size:W,limit:M.maxSize,sizeMB:Math.round(W/1024/1024)}),Error(`Request body too large: ${W} bytes exceeds limit of ${M.maxSize} bytes`);let Y=null;try{Y=JSON.parse($)}catch(Z){let Q=Z instanceof Error?Z.message:String(Z);throw Error(`Invalid JSON syntax: ${Q}`)}try{F$(Y,M,1)}catch(Z){let Q=Z instanceof Error?Z.message:String(Z);throw Error(`JSON security validation failed: ${Q}`)}return Y},N1=($,M)=>{if(typeof $==="string"&&$.length>M.maxStringLength)throw Error(`String too long: ${$.length} characters exceeds limit of ${M.maxStringLength}`)},k1=($,M,W)=>{if($.length>M.maxArrayLength)throw Error(`Array too large: ${$.length} elements exceeds limit of ${M.maxArrayLength}`);for(let Y of $)F$(Y,M,W+1)},E1=($,M)=>{if($.length>M.maxKeys)throw Error(`Object has too many keys: ${$.length} exceeds limit of ${M.maxKeys}`);if(!M.allowPrototypeProperties){for(let W of $)if(m$.includes(W))throw H.warn("[SECURITY] Prototype pollution attempt detected",{property:W,dangerousProperties:m$}),Error(`Prototype pollution attempt detected: property '${W}' is not allowed`)}},A1=($,M,W)=>{let Y=Object.keys($);for(let Z of Y){if(Z.length>M.maxStringLength)throw Error(`Object key too long: '${Z.substring(0,50)}...' exceeds limit of ${M.maxStringLength}`);let Q=$[Z];if(typeof Q==="string"&&Q.length>M.maxStringLength)throw Error(`String value too long: property '${Z}' has ${Q.length} characters, exceeds limit of ${M.maxStringLength}`);F$(Q,M,W+1)}},F$=($,M,W)=>{if(W>M.maxDepth)throw H.warn("[SECURITY] JSON nesting too deep - potential stack overflow attack",{currentDepth:W,maxDepth:M.maxDepth}),Error(`JSON nesting too deep: current depth ${W} exceeds maximum depth of ${M.maxDepth}`);if($===null||typeof $!=="object"){N1($,M);return}if(Array.isArray($)){k1($,M,W);return}let Y=Object.keys($);E1(Y,M),A1($,M,W)};var L1=($)=>{let M=$.startsWith(`\r
5
+ `)[1]?.length.toString()??"0"})}}_handleCors($){if(e($,this.setup._configuration.cors))return $._response._parseResponseIntoString(),!0;return!1}async _matchRoute($){let M=this.setup._routeRegistry._findRoute($.request.method,$.request.path);if(!M){let W=await this.setup._hooks._onNotFound($);return $._response._setBody(W),$._response._parseResponseIntoString(),null}return M}async _handleBeforeAllHooks($){let M=this.setup._hooks._beforeAll;for(let W of M){if(!this._shouldRunHook(W.options,$.request.path))continue;let Y=await W.handler($);if(Y!==void 0)return $._response._setBody(Y),$._response._parseResponseIntoString(),!0}return!1}async _handleBeforeHooks($,M){for(let W of M){let Y=await W($);if(Y!==void 0)return $._response._setBody(Y),$._response._parseResponseIntoString(),!0}return!1}_shouldRunHook($,M){if(!$)return!0;let{routesToInclude:W,routesToExclude:Y}=$;if(Y.some((Z)=>this._matchesPattern(M,Z)))return!1;if(W.length===0)return!0;return W.some((Z)=>this._matchesPattern(M,Z))}_matchesPattern($,M){if(M===$)return!0;if(M.endsWith("/*")){let W=M.slice(0,-2);return $.startsWith(W)}return!1}}var h$=["__proto__","constructor","prototype"],f$=($,M)=>{if(!$||!$.trim()||$.trim()==="\x00")return;let W=Buffer.byteLength($,"utf8");if(W>M.maxSize)throw H.warn("[SECURITY] JSON request body too large",{size:W,limit:M.maxSize,sizeMB:Math.round(W/1024/1024)}),Error(`Request body too large: ${W} bytes exceeds limit of ${M.maxSize} bytes`);let Y=null;try{Y=JSON.parse($)}catch(Z){let Q=Z instanceof Error?Z.message:String(Z);throw Error(`Invalid JSON syntax: ${Q}`)}try{G$(Y,M,1)}catch(Z){let Q=Z instanceof Error?Z.message:String(Z);throw Error(`JSON security validation failed: ${Q}`)}return Y},k1=($,M)=>{if(typeof $==="string"&&$.length>M.maxStringLength)throw Error(`String too long: ${$.length} characters exceeds limit of ${M.maxStringLength}`)},E1=($,M,W)=>{if($.length>M.maxArrayLength)throw Error(`Array too large: ${$.length} elements exceeds limit of ${M.maxArrayLength}`);for(let Y of $)G$(Y,M,W+1)},L1=($,M)=>{if($.length>M.maxKeys)throw Error(`Object has too many keys: ${$.length} exceeds limit of ${M.maxKeys}`);if(!M.allowPrototypeProperties){for(let W of $)if(h$.includes(W))throw H.warn("[SECURITY] Prototype pollution attempt detected",{property:W,dangerousProperties:h$}),Error(`Prototype pollution attempt detected: property '${W}' is not allowed`)}},A1=($,M,W)=>{let Y=Object.keys($);for(let Z of Y){if(Z.length>M.maxStringLength)throw Error(`Object key too long: '${Z.substring(0,50)}...' exceeds limit of ${M.maxStringLength}`);let Q=$[Z];if(typeof Q==="string"&&Q.length>M.maxStringLength)throw Error(`String value too long: property '${Z}' has ${Q.length} characters, exceeds limit of ${M.maxStringLength}`);G$(Q,M,W+1)}},G$=($,M,W)=>{if(W>M.maxDepth)throw H.warn("[SECURITY] JSON nesting too deep - potential stack overflow attack",{currentDepth:W,maxDepth:M.maxDepth}),Error(`JSON nesting too deep: current depth ${W} exceeds maximum depth of ${M.maxDepth}`);if($===null||typeof $!=="object"){k1($,M);return}if(Array.isArray($)){E1($,M,W);return}let Y=Object.keys($);L1(Y,M),A1($,M,W)};var z1=($)=>{let M=$.startsWith(`\r
6
6
  `)?$.slice(2):$,W=M.indexOf(`\r
7
7
  \r
8
- `);if(W===-1)return["",""];let Y=M.slice(0,W),Z=M.slice(W+4);return[Y,Z]},z1=($)=>{let M={name:""},W=/name=(?:"(?<temp2>[^"]*)"|(?<temp1>[^;,\s]+))/i.exec($),Y=/filename=(?:"(?<temp2>[^"]*)"|(?<temp1>[^;,\s]+))/i.exec($);if(W)M.name=W[1]??W[2]??"";if(Y){let Z=Y[1]??Y[2];if(Z)M.filename=Z}return M},I1=($)=>{let W=$.split(/\r?\n/).find((Y)=>Y.toLowerCase().startsWith("content-type:"));if(!W)return"application/octet-stream";return W.slice(W.indexOf(":")+1).trim().split(";")[0]?.trim()??"application/octet-stream"},S1=($)=>{return["image/","audio/","video/","application/octet-stream","application/pdf","application/zip","application/x-"].some((W)=>$.toLowerCase().startsWith(W))},v1=($)=>Buffer.isBuffer($)?$.length:Buffer.byteLength($,"utf8"),T1=($,M)=>{if(!M)return;if($.size>M.maxFileSize)throw H.warn("[SECURITY] File upload too large",{filename:$.filename,size:$.size,limit:M.maxFileSize,sizeMB:Math.round($.size/1024/1024)}),Error(`File too large: ${$.filename} is ${$.size} bytes, exceeds limit of ${M.maxFileSize} bytes`);if($.filename&&$.filename.length>M.maxFilenameLength)throw Error(`Filename too long: ${$.filename.length} characters exceeds limit of ${M.maxFilenameLength}`);if($.filename){let W=$.filename.toLowerCase().substring($.filename.lastIndexOf("."));if(M.blockedExtensions.includes(W))throw H.warn("[SECURITY] Blocked file type upload attempt",{filename:$.filename,extension:W,blockedExtensions:M.blockedExtensions}),Error(`File type not allowed: ${W} files are blocked for security reasons`);if(M.allowedExtensions.length>0&&!M.allowedExtensions.includes(W))throw Error(`File type not allowed: ${W} is not in the allowed extensions list`)}},P1=({contentDisposition:$,contentSection:M,headersSection:W,config:Y})=>{let Z=I1(W),Q=M.endsWith(`\r
9
- `)?M.slice(0,-2):M,X=S1(Z)?Buffer.from(Q,"binary"):Q,j={filename:$.filename??"",contentType:Z,size:v1(X),content:X};return T1(j,Y),j},f$=($,M,W)=>{let Y={fields:{},files:[]},Z=$.split(`--${M}`).slice(1),Q=0;for(let X of Z){if(!X||X.trim()===""||X.trim()==="--")continue;let[j,q]=L1(X);if(!j)continue;let u=j.split(/\r?\n/).find((v)=>v.toLowerCase().startsWith("content-disposition:"));if(!u)continue;let A=z1(u);if(!A.name)continue;if(A.filename!==void 0){if(W&&Y.files.length>=W.maxFiles)throw H.warn("[SECURITY] Too many files in upload request",{fileCount:Y.files.length,maxFiles:W.maxFiles}),Error(`Too many files: maximum of ${W.maxFiles} files allowed per request`);let v=P1({contentDisposition:A,contentSection:q,headersSection:j,config:W});if(Q+=v.size,W&&Q>W.maxTotalSize)throw H.warn("[SECURITY] Total upload size too large",{totalSize:Q,limit:W.maxTotalSize,totalSizeMB:Math.round(Q/1024/1024)}),Error(`Total file size too large: ${Q} bytes exceeds limit of ${W.maxTotalSize} bytes`);Y.files.push(v)}if(A.filename===void 0){let v=q.endsWith(`\r
10
- `)?q.slice(0,-2):q;Y.fields[A.name]=v}}return Y};var R1=($,M)=>{if($.length>M.maxFields)throw Error(`Too many form fields: ${$.length} exceeds limit of ${M.maxFields}`)},b1=($,M,W)=>{if($.length>W.maxFieldNameLength)throw Error(`Form field name too long: ${$.length} characters exceeds limit of ${W.maxFieldNameLength}`);if(M&&M.length>W.maxFieldLength)throw Error(`Form field value too long: field '${$}' has ${M.length} characters, exceeds limit of ${W.maxFieldLength}`)},x1=($,M,W)=>{if($.length>W.maxFieldNameLength)throw Error(`Decoded form field name too long: ${$.length} characters exceeds limit of ${W.maxFieldNameLength}`);if(M.length>W.maxFieldLength)throw Error(`Decoded form field value too long: field '${$}' has ${M.length} characters, exceeds limit of ${W.maxFieldLength}`)},C1=($,M,W)=>{let[Y,Z]=$.split("=");if(!Y)return;if(W)b1(Y,Z,W);try{let Q=decodeURIComponent(Y),X=Z?decodeURIComponent(Z):"";if(W)x1(Q,X,W);M[Q]=X}catch(Q){if(Q instanceof Error&&Q.message.includes("exceeds limit"))throw Q;M[Y]=Z??""}},l$=($,M)=>{let W={},Y=$.split("&");if(M)R1(Y,M);for(let Z of Y)C1(Z,W,M);return W};var $$={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]},M$=($,M)=>{if($.length<M.length)return!1;return M.every((W,Y)=>$[Y]===W)},u1=($)=>{if(M$($,$$.WEBP)&&$.length>=12)return $.subarray(8,12).toString("ascii")==="WEBP";if(M$($,$$.WAV)&&$.length>=12)return $.subarray(8,12).toString("ascii")==="WAVE";if(M$($,$$.AVI)&&$.length>=12)return $.subarray(8,12).toString("ascii")==="AVI ";return!1},W$=($,M)=>{if(!$)return y1(M);let W=$.toLowerCase();if(W.startsWith("image/")||W.startsWith("video/")||W.startsWith("audio/")||W==="application/pdf"||W==="application/octet-stream"||W.startsWith("application/zip")||W.startsWith("application/x-"))return"base64";if(W.startsWith("text/")||W.startsWith("application/json")||W.startsWith("application/xml")||W.startsWith("application/javascript"))return"utf8";return"binary"},y1=($)=>{if(Buffer.isBuffer($))return m1($)?"base64":"utf8";if(typeof $==="object"&&$!==null)return"utf8";if(typeof $==="string")return"utf8";return"utf8"},m1=($)=>{if($.length===0)return!1;let M=Object.values($$);for(let Z of M)if(M$($,Z))return!0;if(u1($))return!0;let W=$.filter((Z)=>Z===0).length,Y=$.filter((Z)=>Z<32&&Z!==9&&Z!==10&&Z!==13).length;return W/$.length>0.1||Y/$.length>0.3};var h1=($)=>{if(!($.startsWith("{")&&$.endsWith("}")||$.startsWith("[")&&$.endsWith("]")))return!1;try{return JSON.parse($),!0}catch{return!1}},f1=($)=>$.includes("=")&&$.includes("&"),l1=($)=>$.includes("boundary="),g1=($)=>typeof $==="object"&&$!==null&&!Buffer.isBuffer($)&&!($ instanceof Uint8Array)&&!($ instanceof ArrayBuffer)&&!($ instanceof Date),p1=($)=>$ instanceof Date,r1=($)=>{if(Buffer.isBuffer($))return $;return Buffer.from($)},s1=($)=>{return W$(void 0,$)==="base64"?"application/octet-stream":"text/plain"},H$=($)=>{let M=$.trim();if(h1(M))return P.json;if(f1(M))return P.form;if(l1(M))return P.multipart;return"text/plain"},g$=($)=>{if($===null||$===void 0)return"text/plain";if(p1($))return"text/plain";if(g1($))return P.json;if(typeof $==="string")return H$($);if(Buffer.isBuffer($)||$ instanceof Uint8Array||$ instanceof ArrayBuffer){let M=r1($);return s1(M)}return"text/plain"};var c1=($,M,W)=>{let Y=Buffer.byteLength($,"utf8");if(M===P.json){if(Y>W.json.maxSize)throw Error(`JSON body too large: ${Y} bytes exceeds limit of ${W.json.maxSize} bytes`)}else if(M===P.form){if(Y>W.urlEncoded.maxSize)throw Error(`URL-encoded body too large: ${Y} bytes exceeds limit of ${W.urlEncoded.maxSize} bytes`)}else if(M===P.multipart){if(Y>W.fileUploads.maxTotalSize)throw Error(`Multipart body too large: ${Y} bytes exceeds limit of ${W.fileUploads.maxTotalSize} bytes`)}},p$=($,M={})=>{let{headerContentType:W,boundary:Y,config:Z}=M;if(!$||!$.trim())return;let Q=W??H$($);if(Z)c1($,Q,Z);if(Q===P.json){if(!Z)throw Error("Body parser configuration is required for JSON parsing");return h$($,Z.json)}if(Q===P.multipart){if(!Y)throw Error("Invalid multipart form data: missing boundary");return f$($,Y,Z?.fileUploads)}if(Q===P.form)return l$($,Z?.urlEncoded);return $};var V$=($,M)=>{let W=$.indexOf(M);if(W===-1)return[$,""];let Y=$.slice(0,W),Z=$.slice(W+M.length);return[Y,Z]};var r$=($)=>{if(!$||!$.trim())return{method:"GET",path:"/",protocol:"HTTP/1.1",headersRaw:"",rawBody:""};let[M,W]=V$($,`\r
11
- `),[Y,Z,Q]=M.split(" ",3),[X,j]=V$(W,`\r
8
+ `);if(W===-1)return["",""];let Y=M.slice(0,W),Z=M.slice(W+4);return[Y,Z]},I1=($)=>{let M={name:""},W=/name=(?:"(?<temp2>[^"]*)"|(?<temp1>[^;,\s]+))/i.exec($),Y=/filename=(?:"(?<temp2>[^"]*)"|(?<temp1>[^;,\s]+))/i.exec($);if(W)M.name=W[1]??W[2]??"";if(Y){let Z=Y[1]??Y[2];if(Z)M.filename=Z}return M},S1=($)=>{let W=$.split(/\r?\n/).find((Y)=>Y.toLowerCase().startsWith("content-type:"));if(!W)return"application/octet-stream";return W.slice(W.indexOf(":")+1).trim().split(";")[0]?.trim()??"application/octet-stream"},v1=($)=>{return["image/","audio/","video/","application/octet-stream","application/pdf","application/zip","application/x-"].some((W)=>$.toLowerCase().startsWith(W))},T1=($)=>Buffer.isBuffer($)?$.length:Buffer.byteLength($,"utf8"),R1=($,M)=>{if(!M)return;if($.size>M.maxFileSize)throw H.warn("[SECURITY] File upload too large",{filename:$.filename,size:$.size,limit:M.maxFileSize,sizeMB:Math.round($.size/1024/1024)}),Error(`File too large: ${$.filename} is ${$.size} bytes, exceeds limit of ${M.maxFileSize} bytes`);if($.filename&&$.filename.length>M.maxFilenameLength)throw Error(`Filename too long: ${$.filename.length} characters exceeds limit of ${M.maxFilenameLength}`);if($.filename){let W=$.filename.toLowerCase().substring($.filename.lastIndexOf("."));if(M.blockedExtensions.includes(W))throw H.warn("[SECURITY] Blocked file type upload attempt",{filename:$.filename,extension:W,blockedExtensions:M.blockedExtensions}),Error(`File type not allowed: ${W} files are blocked for security reasons`);if(M.allowedExtensions.length>0&&!M.allowedExtensions.includes(W))throw Error(`File type not allowed: ${W} is not in the allowed extensions list`)}},P1=({contentDisposition:$,contentSection:M,headersSection:W,config:Y})=>{let Z=S1(W),Q=M.endsWith(`\r
9
+ `)?M.slice(0,-2):M,X=v1(Z)?Buffer.from(Q,"binary"):Q,w={filename:$.filename??"",contentType:Z,size:T1(X),content:X};return R1(w,Y),w},l$=($,M,W)=>{let Y={fields:{},files:[]},Z=$.split(`--${M}`).slice(1),Q=0;for(let X of Z){if(!X||X.trim()===""||X.trim()==="--")continue;let[w,V]=z1(X);if(!w)continue;let u=w.split(/\r?\n/).find((v)=>v.toLowerCase().startsWith("content-disposition:"));if(!u)continue;let L=I1(u);if(!L.name)continue;if(L.filename!==void 0){if(W&&Y.files.length>=W.maxFiles)throw H.warn("[SECURITY] Too many files in upload request",{fileCount:Y.files.length,maxFiles:W.maxFiles}),Error(`Too many files: maximum of ${W.maxFiles} files allowed per request`);let v=P1({contentDisposition:L,contentSection:V,headersSection:w,config:W});if(Q+=v.size,W&&Q>W.maxTotalSize)throw H.warn("[SECURITY] Total upload size too large",{totalSize:Q,limit:W.maxTotalSize,totalSizeMB:Math.round(Q/1024/1024)}),Error(`Total file size too large: ${Q} bytes exceeds limit of ${W.maxTotalSize} bytes`);Y.files.push(v)}if(L.filename===void 0){let v=V.endsWith(`\r
10
+ `)?V.slice(0,-2):V;Y.fields[L.name]=v}}return Y};var b1=($,M)=>{if($.length>M.maxFields)throw Error(`Too many form fields: ${$.length} exceeds limit of ${M.maxFields}`)},x1=($,M,W)=>{if($.length>W.maxFieldNameLength)throw Error(`Form field name too long: ${$.length} characters exceeds limit of ${W.maxFieldNameLength}`);if(M&&M.length>W.maxFieldLength)throw Error(`Form field value too long: field '${$}' has ${M.length} characters, exceeds limit of ${W.maxFieldLength}`)},C1=($,M,W)=>{if($.length>W.maxFieldNameLength)throw Error(`Decoded form field name too long: ${$.length} characters exceeds limit of ${W.maxFieldNameLength}`);if(M.length>W.maxFieldLength)throw Error(`Decoded form field value too long: field '${$}' has ${M.length} characters, exceeds limit of ${W.maxFieldLength}`)},u1=($,M,W)=>{let[Y,Z]=$.split("=");if(!Y)return;if(W)x1(Y,Z,W);try{let Q=decodeURIComponent(Y),X=Z?decodeURIComponent(Z):"";if(W)C1(Q,X,W);M[Q]=X}catch(Q){if(Q instanceof Error&&Q.message.includes("exceeds limit"))throw Q;M[Y]=Z??""}},g$=($,M)=>{let W={},Y=$.split("&");if(M)b1(Y,M);for(let Z of Y)u1(Z,W,M);return W};var M$={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]},W$=($,M)=>{if($.length<M.length)return!1;return M.every((W,Y)=>$[Y]===W)},y1=($)=>{if(W$($,M$.WEBP)&&$.length>=12)return $.subarray(8,12).toString("ascii")==="WEBP";if(W$($,M$.WAV)&&$.length>=12)return $.subarray(8,12).toString("ascii")==="WAVE";if(W$($,M$.AVI)&&$.length>=12)return $.subarray(8,12).toString("ascii")==="AVI ";return!1},Y$=($,M)=>{if(!$)return m1(M);let W=$.toLowerCase();if(W.startsWith("image/")||W.startsWith("video/")||W.startsWith("audio/")||W==="application/pdf"||W==="application/octet-stream"||W.startsWith("application/zip")||W.startsWith("application/x-"))return"base64";if(W.startsWith("text/")||W.startsWith("application/json")||W.startsWith("application/xml")||W.startsWith("application/javascript"))return"utf8";return"binary"},m1=($)=>{if(Buffer.isBuffer($))return h1($)?"base64":"utf8";if(typeof $==="object"&&$!==null)return"utf8";if(typeof $==="string")return"utf8";return"utf8"},h1=($)=>{if($.length===0)return!1;let M=Object.values(M$);for(let Z of M)if(W$($,Z))return!0;if(y1($))return!0;let W=$.filter((Z)=>Z===0).length,Y=$.filter((Z)=>Z<32&&Z!==9&&Z!==10&&Z!==13).length;return W/$.length>0.1||Y/$.length>0.3};var f1=($)=>{if(!($.startsWith("{")&&$.endsWith("}")||$.startsWith("[")&&$.endsWith("]")))return!1;try{return JSON.parse($),!0}catch{return!1}},l1=($)=>$.includes("=")&&$.includes("&"),g1=($)=>$.includes("boundary="),p1=($)=>typeof $==="object"&&$!==null&&!Buffer.isBuffer($)&&!($ instanceof Uint8Array)&&!($ instanceof ArrayBuffer)&&!($ instanceof Date),r1=($)=>$ instanceof Date,s1=($)=>{if(Buffer.isBuffer($))return $;return Buffer.from($)},c1=($)=>{return Y$(void 0,$)==="base64"?"application/octet-stream":"text/plain"},H$=($)=>{let M=$.trim();if(f1(M))return R.json;if(l1(M))return R.form;if(g1(M))return R.multipart;return"text/plain"},p$=($)=>{if($===null||$===void 0)return"text/plain";if(r1($))return"text/plain";if(p1($))return R.json;if(typeof $==="string")return H$($);if(Buffer.isBuffer($)||$ instanceof Uint8Array||$ instanceof ArrayBuffer){let M=s1($);return c1(M)}return"text/plain"};var d1=($,M,W)=>{let Y=Buffer.byteLength($,"utf8");if(M===R.json){if(Y>W.json.maxSize)throw Error(`JSON body too large: ${Y} bytes exceeds limit of ${W.json.maxSize} bytes`)}else if(M===R.form){if(Y>W.urlEncoded.maxSize)throw Error(`URL-encoded body too large: ${Y} bytes exceeds limit of ${W.urlEncoded.maxSize} bytes`)}else if(M===R.multipart){if(Y>W.fileUploads.maxTotalSize)throw Error(`Multipart body too large: ${Y} bytes exceeds limit of ${W.fileUploads.maxTotalSize} bytes`)}},r$=($,M={})=>{let{headerContentType:W,boundary:Y,config:Z}=M;if(!$||!$.trim())return;let Q=W??H$($);if(Z)d1($,Q,Z);if(Q===R.json){if(!Z)throw Error("Body parser configuration is required for JSON parsing");return f$($,Z.json)}if(Q===R.multipart){if(!Y)throw Error("Invalid multipart form data: missing boundary");return l$($,Y,Z?.fileUploads)}if(Q===R.form)return g$($,Z?.urlEncoded);return $};var q$=($,M)=>{let W=$.indexOf(M);if(W===-1)return[$,""];let Y=$.slice(0,W),Z=$.slice(W+M.length);return[Y,Z]};var s$=($)=>{if(!$||!$.trim())return{method:"GET",path:"/",protocol:"HTTP/1.1",headersRaw:"",rawBody:""};let[M,W]=q$($,`\r
11
+ `),[Y,Z,Q]=M.split(" ",3),[X,w]=q$(W,`\r
12
12
  \r
13
- `);if(!Y||!Object.values(N).includes(Y))return{method:"GET",path:Z??"/",protocol:Q??"HTTP/1.1",headersRaw:X,rawBody:j};return{method:Y,path:Z??"/",protocol:Q??"HTTP/1.1",headersRaw:X,rawBody:j}};var s$=($)=>{if(!$)return{};if(!$.includes("?"))return{};let[,M]=$.split("?");if(!M)return{};let W={},Y=M.split("&");for(let Z of Y){let[Q,X]=Z.split("=");if(Q)try{let j=decodeURIComponent(Q),q=X?decodeURIComponent(X):"";W[j]=q}catch{W[Q]=X??""}}return W};var d1=[/^(?<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],c$=($)=>{if(!$||typeof $!=="string")return!1;let M=$.replace(/^\[|\]$/g,"");if(/^(?<octet>(?<highByte>25[0-5]|(?<midByte>2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$/.test(M)){let Z=M.split(".");return Z.length===4&&Z.every((Q)=>{let X=parseInt(Q,10);return X>=0&&X<=255})}if(M.includes("::")&&(M.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(M)},d$=($)=>{if(!$)return!1;let M=$.replace(/^\[|\]$/g,"");return d1.some((W)=>W.test(M))},i$=($,M)=>{if(!$||!M.length)return!1;if(M.includes("*"))return!0;return M.includes($)},i1=($,M)=>{if(!M.detectSpoofing||$.length<=1)return!1;if($.length>M.maxChainLength)return!0;if(new Set($).size!==$.length)return!0;let Y=$.filter(c$).length;if(Y>0&&Y<$.length)return!0;return!1},a1=($,M)=>{if($.length<=1)return!0;let W=$[$.length-1];return Boolean(W&&i$(W,M.trustedProxies))},n1=($,M)=>{if(M==="x-forwarded-for")return $[0];return $[$.length-1]},t1=($)=>{let{clientIp:M,headerName:W,ipChain:Y,config:Z}=$,Q=d$(M),X=W==="x-forwarded-for"?i$(Y[Y.length-1]??"",Z.trustedProxies):!0;return{ip:M,isValid:!0,isPrivate:Q,source:W,trusted:X}},o1=()=>({ip:"",isValid:!1,isPrivate:!1,source:"socket",trusted:!1}),e1=($,M)=>{for(let W of M.headerPreference){let Y=$[W];if(!Y)continue;let Z=Y.split(",").map((j)=>j.trim()).filter(Boolean);if(Z.length===0)continue;if(i1(Z,M))continue;if(W==="x-forwarded-for"&&!a1(Z,M))continue;let Q=n1(Z,W);if(!Q||!c$(Q))continue;if(d$(Q)&&!M.allowPrivateIps)continue;return t1({clientIp:Q,headerName:W,ipChain:Z,config:M})}return o1()},$0=($,M,W={})=>{let Z={...$._configuration.ipSecurity,...W},Q=e1(M,Z);if(Q.isValid)return Q;return{ip:"",isValid:!1,isPrivate:!1,source:"socket",trusted:!1}},a$=($,M)=>{return $0($,M).ip};var n$=($)=>{if(!$)return;return/boundary\s*=\s*(?<temp1>[^;,\s]*)/i.exec($)?.[1]};var t$=($)=>{if(!$)return{};M0($);let M=W0($),W=Y0(M);return Z0(W)},M0=($)=>{if($.split(/\r\n|\r|\n/).length>100)throw Error("Too many headers: maximum 100 allowed")},W0=($)=>{let M={},Y=$.replace(/\r\n|\r|\n/g,`
13
+ `);if(!Y||!Object.values(_).includes(Y))return{method:"GET",path:Z??"/",protocol:Q??"HTTP/1.1",headersRaw:X,rawBody:w};return{method:Y,path:Z??"/",protocol:Q??"HTTP/1.1",headersRaw:X,rawBody:w}};var c$=($)=>{if(!$)return{};if(!$.includes("?"))return{};let[,M]=$.split("?");if(!M)return{};let W={},Y=M.split("&");for(let Z of Y){let[Q,X]=Z.split("=");if(Q)try{let w=decodeURIComponent(Q),V=X?decodeURIComponent(X):"";W[w]=V}catch{W[Q]=X??""}}return W};var i1=[/^(?<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],d$=($)=>{if(!$||typeof $!=="string")return!1;let M=$.replace(/^\[|\]$/g,"");if(/^(?<octet>(?<highByte>25[0-5]|(?<midByte>2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$/.test(M)){let Z=M.split(".");return Z.length===4&&Z.every((Q)=>{let X=parseInt(Q,10);return X>=0&&X<=255})}if(M.includes("::")&&(M.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(M)},i$=($)=>{if(!$)return!1;let M=$.replace(/^\[|\]$/g,"");return i1.some((W)=>W.test(M))},a$=($,M)=>{if(!$||!M.length)return!1;if(M.includes("*"))return!0;return M.includes($)},a1=($,M)=>{if(!M.detectSpoofing||$.length<=1)return!1;if($.length>M.maxChainLength)return!0;if(new Set($).size!==$.length)return!0;let Y=$.filter(d$).length;if(Y>0&&Y<$.length)return!0;return!1},n1=($,M)=>{if($.length<=1)return!0;let W=$[$.length-1];return Boolean(W&&a$(W,M.trustedProxies))},t1=($,M)=>{if(M==="x-forwarded-for")return $[0];return $[$.length-1]},o1=($)=>{let{clientIp:M,headerName:W,ipChain:Y,config:Z}=$,Q=i$(M),X=W==="x-forwarded-for"?a$(Y[Y.length-1]??"",Z.trustedProxies):!0;return{ip:M,isValid:!0,isPrivate:Q,source:W,trusted:X}},e1=()=>({ip:"",isValid:!1,isPrivate:!1,source:"socket",trusted:!1}),$0=($,M)=>{for(let W of M.headerPreference){let Y=$[W];if(!Y)continue;let Z=Y.split(",").map((w)=>w.trim()).filter(Boolean);if(Z.length===0)continue;if(a1(Z,M))continue;if(W==="x-forwarded-for"&&!n1(Z,M))continue;let Q=t1(Z,W);if(!Q||!d$(Q))continue;if(i$(Q)&&!M.allowPrivateIps)continue;return o1({clientIp:Q,headerName:W,ipChain:Z,config:M})}return e1()},M0=($,M,W={})=>{let Z={...$._configuration.ipSecurity,...W},Q=$0(M,Z);if(Q.isValid)return Q;return{ip:"",isValid:!1,isPrivate:!1,source:"socket",trusted:!1}},n$=($,M)=>{return M0($,M).ip};var t$=($)=>{if(!$)return;return/boundary\s*=\s*(?<temp1>[^;,\s]*)/i.exec($)?.[1]};var o$=($)=>{if(!$)return{};W0($);let M=Y0($),W=Z0(M);return Q0(W)},W0=($)=>{if($.split(/\r\n|\r|\n/).length>100)throw Error("Too many headers: maximum 100 allowed")},Y0=($)=>{let M={},Y=$.replace(/\r\n|\r|\n/g,`
14
14
  `).split(`
15
- `);for(let Z of Y){if(!Z.trim())continue;let Q=Z.indexOf(":");if(Q===-1)continue;let X=Z.slice(0,Q).trim(),j=Z.slice(Q+1).trim();if(!X)continue;if(!Q0(X))throw Error(`Invalid header name: ${X}`);if(X.length>200)throw Error("Header name too long: maximum 200 characters allowed");if(j.length>8192)throw Error("Header value too long: maximum 8192 characters allowed");M[X.toLowerCase()]=j}return M},Y0=($)=>{let M={};for(let[W,Y]of Object.entries($))M[W]=X0(Y);return M},Z0=($)=>$,Q0=($)=>{return/^[a-zA-Z0-9!#$%&'*+\-.^_`|~]+$/.test($)},X0=($)=>{return $.replace(/[\x00-\x08\x0A-\x1F\x7F]/g,"")};class q${_rawRequest;_setup;method;path;protocol;headers;body;query;params;ipAddress;rawBody;constructor($,M,W){this._rawRequest=$,this._setup=M,this.ipAddress=W??"";let{method:Y,path:Z,protocol:Q,headers:X,body:j,query:q,params:L,rawBody:u}=this._parseRequestIntoObject();this.method=Y,this.path=Z,this.protocol=Q,this.headers=X,this.body=j,this.query=q??{},this.params=L??{},this.rawBody=u;let A=a$(this._setup,X);if(A)this.ipAddress=A}_parseRequestIntoObject(){let $=this._rawRequest.toString(),{method:M,path:W,protocol:Y,headersRaw:Z,rawBody:Q}=r$($),X=t$(Z),j=X["content-type"],q=j?.split(";")[0]?.trim().toLowerCase(),L=n$(j);return{method:M,path:W,protocol:Y,headers:X,body:p$(Q,{headerContentType:q,boundary:L,config:this._setup._configuration.bodyParser}),query:s$(W),params:{},rawBody:Q}}}var M1=J$(o(),1);var o$=($,M)=>{let W=M?.encoding??"utf8";if($===null||$===void 0)return"";if(Buffer.isBuffer($))return O$($,W);if($ instanceof Uint8Array)return J0($,W);if($ instanceof ArrayBuffer)return D0($,W);if(typeof $==="string")return $;if(typeof $==="object")return K0($);return String($)},O$=($,M)=>{if(M==="base64")return $.toString("base64");if(M==="binary")return $.toString("binary");return $.toString("utf8")},J0=($,M)=>{let W=Buffer.from($);return O$(W,M)},D0=($,M)=>{let W=Buffer.from($);return O$(W,M)},K0=($)=>{try{return JSON.stringify($)}catch(M){return String($)}};var e$=new Map;for(let[$,M]of Object.entries(R)){let Y=s[$];e$.set(M,Y)}var $1=($)=>{let M=e$.get($);if(!M)throw Error(`Unknown status code: ${$}`);return M};var w0=($,M)=>{if(typeof M!=="string")throw Error(`Header value must be a string, got ${typeof M}`);if(M.includes("\r")||M.includes(`
16
- `))throw Error(`Header value contains invalid line break characters: ${$}`);let W=[/[\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 Y of W)if(Y.test(M))throw Error(`Header value contains suspicious injection pattern: ${$}`)},j0=($)=>{for(let[M,W]of Object.entries($))w0(M,W)},_$=($)=>{let M={};for(let[W,Y]of Object.entries($))if(Y!==void 0)M[W]=Y;return j0(M),M};var i=($)=>{if(U0($))return $.length;if(typeof $==="string")return Buffer.byteLength($,"utf8");if(G0($))try{let M=JSON.stringify($);return Buffer.byteLength(M,"utf8")}catch{return 0}return 0},U0=($)=>typeof Buffer<"u"&&Buffer.isBuffer($),G0=($)=>typeof $==="object"&&$!==null;class B${_request;_statusCode=R.ok;_status=s.ok;_headers={};_body="";_stringBody="";_encoding=x$.utf8;constructor($){this._request=$,this._setSecurityHeaders()}_parseResponseIntoString(){let $=`${this._request.protocol} ${this._statusCode} ${this._status}`,M=Object.entries(this._headers).map(([X,j])=>`${X}: ${j}`),W=W$(this._headers["content-type"],this._body),Y=o$(this._body,{encoding:W});this._encoding=W;let Z=M.length>0?`${M.join(`
15
+ `);for(let Z of Y){if(!Z.trim())continue;let Q=Z.indexOf(":");if(Q===-1)continue;let X=Z.slice(0,Q).trim(),w=Z.slice(Q+1).trim();if(!X)continue;if(!X0(X))throw Error(`Invalid header name: ${X}`);if(X.length>200)throw Error("Header name too long: maximum 200 characters allowed");if(w.length>8192)throw Error("Header value too long: maximum 8192 characters allowed");M[X.toLowerCase()]=w}return M},Z0=($)=>{let M={};for(let[W,Y]of Object.entries($))M[W]=J0(Y);return M},Q0=($)=>$,X0=($)=>{return/^[a-zA-Z0-9!#$%&'*+\-.^_`|~]+$/.test($)},J0=($)=>{return $.replace(/[\x00-\x08\x0A-\x1F\x7F]/g,"")};class V${_rawRequest;_setup;method;path;protocol;headers;body;query;params;ipAddress;rawBody;constructor($,M,W){this._rawRequest=$,this._setup=M,this.ipAddress=W??"";let{method:Y,path:Z,protocol:Q,headers:X,body:w,query:V,params:A,rawBody:u}=this._parseRequestIntoObject();this.method=Y,this.path=Z,this.protocol=Q,this.headers=X,this.body=w,this.query=V??{},this.params=A??{},this.rawBody=u;let L=n$(this._setup,X);if(L)this.ipAddress=L}_parseRequestIntoObject(){let $=this._rawRequest.toString(),{method:M,path:W,protocol:Y,headersRaw:Z,rawBody:Q}=s$($),X=o$(Z),w=X["content-type"],V=w?.split(";")[0]?.trim().toLowerCase(),A=t$(w);return{method:M,path:W,protocol:Y,headers:X,body:r$(Q,{headerContentType:V,boundary:A,config:this._setup._configuration.bodyParser}),query:c$(W),params:{},rawBody:Q}}}var W1=D$(o(),1);var e$=($,M)=>{let W=M?.encoding??"utf8";if($===null||$===void 0)return"";if(Buffer.isBuffer($))return O$($,W);if($ instanceof Uint8Array)return D0($,W);if($ instanceof ArrayBuffer)return K0($,W);if(typeof $==="string")return $;if(typeof $==="object")return w0($);return String($)},O$=($,M)=>{if(M==="base64")return $.toString("base64");if(M==="binary")return $.toString("binary");return $.toString("utf8")},D0=($,M)=>{let W=Buffer.from($);return O$(W,M)},K0=($,M)=>{let W=Buffer.from($);return O$(W,M)},w0=($)=>{try{return JSON.stringify($)}catch(M){return String($)}};var $1=new Map;for(let[$,M]of Object.entries(P)){let Y=s[$];$1.set(M,Y)}var M1=($)=>{let M=$1.get($);if(!M)throw Error(`Unknown status code: ${$}`);return M};var j0=($,M)=>{if(typeof M!=="string")throw Error(`Header value must be a string, got ${typeof M}`);if(M.includes("\r")||M.includes(`
16
+ `))throw Error(`Header value contains invalid line break characters: ${$}`);let W=[/[\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 Y of W)if(Y.test(M))throw Error(`Header value contains suspicious injection pattern: ${$}`)},U0=($)=>{for(let[M,W]of Object.entries($))j0(M,W)},B$=($)=>{let M={};for(let[W,Y]of Object.entries($))if(Y!==void 0)M[W]=Y;return U0(M),M};var i=($)=>{if(F0($))return $.length;if(typeof $==="string")return Buffer.byteLength($,"utf8");if(G0($))try{let M=JSON.stringify($);return Buffer.byteLength(M,"utf8")}catch{return 0}return 0},F0=($)=>typeof Buffer<"u"&&Buffer.isBuffer($),G0=($)=>typeof $==="object"&&$!==null;class N${_request;_statusCode=P.ok;_status=s.ok;_headers={};_body="";_stringBody="";_encoding=x$.utf8;constructor($){this._request=$,this._setSecurityHeaders()}_parseResponseIntoString(){let $=`${this._request.protocol} ${this._statusCode} ${this._status}`,M=Object.entries(this._headers).map(([X,w])=>`${X}: ${w}`),W=Y$(this._headers["content-type"],this._body),Y=e$(this._body,{encoding:W});this._encoding=W;let Z=M.length>0?`${M.join(`
17
17
  `)}
18
18
  `:"";this._stringBody=`${$}
19
19
  ${Z}
20
- ${Y}`;let Q=i(this._stringBody);this._setHeadersIfNotSet({Date:M1.default().format("ddd, DD MMM YYYY HH:mm:ss [GMT]"),"Content-Length":String(Q)})}_setHeadersIfNotSet($){let M={};for(let[Y,Z]of Object.entries($))if(Z!==void 0&&!(Y in this._headers))M[Y]=Z;let W=_$(M);Object.assign(this._headers,W)}_setBody($){if(this._body=$,!this._headers["content-type"]){let M=g$($);this._setHeadersIfNotSet({"Content-Type":M})}}setStatusCode($){this._statusCode=$,this._status=$1($)}addHeaders($){let M=_$($);this._headers={...this._headers,...M}}removeHeaders($){for(let M of $)delete this._headers[M]}_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 N${_request;_response;request;response;state={};constructor($,M,W){this._request=new q$($,M,W),this._response=new B$(this._request),this.request=this._request,this.response=this._response}}var F0={enabled:!0,origin:"*",methods:["GET","POST","PUT","DELETE","PATCH","OPTIONS"],allowedHeaders:"*",exposedHeaders:[],credentials:!1,maxAge:86400,preflightContinue:!1,optionsSuccessStatus:R.noContent},Y$={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}},W1={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},H0={port:5000,host:"0.0.0.0",networkLogs:!1,cors:{enabled:!1},bodyParser:Y$,ipSecurity:W1,connectionOptions:{socketTimeout:30000,gracefulShutdownTimeout:30000,keepAliveTimeout:65000,headersTimeout:66000},autoGracefulShutdown:!0},V0=($)=>{if($.maxSize<1)throw Error("bodyParser.json.maxSize must be at least 1 byte");if($.maxDepth<1)throw Error("bodyParser.json.maxDepth must be at least 1");if($.maxKeys<1)throw Error("bodyParser.json.maxKeys must be at least 1");if($.maxStringLength<1)throw Error("bodyParser.json.maxStringLength must be at least 1 byte");if($.maxArrayLength<1)throw Error("bodyParser.json.maxArrayLength must be at least 1")},q0=($)=>{if($.maxFileSize<1)throw Error("bodyParser.fileUploads.maxFileSize must be at least 1 byte");if($.maxTotalSize<1)throw Error("bodyParser.fileUploads.maxTotalSize must be at least 1 byte");if($.maxFiles<1)throw Error("bodyParser.fileUploads.maxFiles must be at least 1");if($.maxFilenameLength<1)throw Error("bodyParser.fileUploads.maxFilenameLength must be at least 1 character")},O0=($)=>{if($.maxSize<1)throw Error("bodyParser.urlEncoded.maxSize must be at least 1 byte");if($.maxFields<1)throw Error("bodyParser.urlEncoded.maxFields must be at least 1");if($.maxFieldNameLength<1)throw Error("bodyParser.urlEncoded.maxFieldNameLength must be at least 1 character");if($.maxFieldLength<1)throw Error("bodyParser.urlEncoded.maxFieldLength must be at least 1 byte")},_0=($)=>{if(!Array.isArray($.trustedProxies))throw Error("ipSecurity.trustedProxies must be an array");if(!Array.isArray($.headerPreference))throw Error("ipSecurity.headerPreference must be an array");if($.headerPreference.length===0)throw Error("ipSecurity.headerPreference must contain at least one header");if($.maxChainLength<1)throw Error("ipSecurity.maxChainLength must be at least 1");if($.maxChainLength>50)throw Error("ipSecurity.maxChainLength must not exceed 50 to prevent DoS attacks")},B0=($)=>{if($.allowPrototypeProperties)H.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)H.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)H.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.`)},N0=($)=>{if($.maxFileSize>104857600)H.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)H.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 M=[".exe",".bat",".cmd",".scr",".pif",".com",".vbs",".jar",".app"],W=$.allowedExtensions.filter((Y)=>M.includes(Y.toLowerCase()));if(W.length>0)H.warn(`[SECURITY WARNING] bodyParser.fileUploads.allowedExtensions includes dangerous file types: ${W.join(", ")}. This could allow execution of malicious files. Only allow these if absolutely necessary.`);if($.blockedExtensions.length===0&&$.allowedExtensions.length===0)H.warn("[SECURITY WARNING] File uploads have no extension restrictions (no blockedExtensions and no allowedExtensions). Consider adding blockedExtensions or allowedExtensions to improve security.")},k0=($)=>{if($.trustedProxies.length===0)H.warn("[SECURITY WARNING] ipSecurity.trustedProxies is empty. No proxy headers will be trusted, which may prevent proper client IP detection.");if($.maxChainLength>20)H.warn(`[SECURITY WARNING] ipSecurity.maxChainLength is set to ${$.maxChainLength}. Very long proxy chains can consume significant resources and may indicate amplification attacks.`);if(!$.detectSpoofing)H.warn("[SECURITY WARNING] ipSecurity.detectSpoofing is disabled. This reduces protection against IP spoofing attacks. Only disable if you have other protective measures.")},E0=($,M)=>{if(M?.cors?.enabled)$.cors={...F0,...M.cors,enabled:!0}},A0=($,M)=>{if(M?.bodyParser)$.bodyParser={json:{...Y$.json,...M.bodyParser.json},fileUploads:{...Y$.fileUploads,...M.bodyParser.fileUploads},urlEncoded:{...Y$.urlEncoded,...M.bodyParser.urlEncoded}},I0($.bodyParser)},L0=($,M)=>{if(M?.ipSecurity)$.ipSecurity={...W1,...M.ipSecurity},_0($.ipSecurity),k0($.ipSecurity)},z0=($,M)=>{if(M?.port!==void 0){let W=Number(M.port);if(isNaN(W)||W<1||W>65535)throw Error("Invalid port number");$.port=W}},I0=($)=>{V0($.json),q0($.fileUploads),O0($.urlEncoded),B0($.json),N0($.fileUploads)},Y1=($)=>{let M={...H0};return Object.assign(M,$),E0(M,$),A0(M,$),L0(M,$),z0(M,$),M};class k${_beforeAll;_afterAll;_onError;_onNotFound;constructor(){this._beforeAll=new Set,this._afterAll=new Set,this._onError=($,M)=>{return H.error("Error while handeling your request: ",M),$.response.setStatusCode(R.internalServerError),{success:!1,message:"Internal Server Error"}},this._onNotFound=($)=>{return $.response.setStatusCode(R.notFound),{success:!1,message:"404 Not Found"}}}_addBeforeHooks($,M){this._validateHandlersArray($,"beforeAll");for(let W of $)this._beforeAll.add({handler:W,options:M??{routesToExclude:[],routesToInclude:[]}})}_addAfterHooks($,M){this._validateHandlersArray($,"afterAll");for(let W of $)this._afterAll.add({handler:W,options:M??{routesToExclude:[],routesToInclude:[]}})}_validateHandlersArray($,M){if(!Array.isArray($)){let W=typeof $;throw Error(`YinzerFlow: ${M}() expects an array of handler functions, but received ${W}.${W==="function"?`
20
+ ${Y}`;let Q=i(this._stringBody);this._setHeadersIfNotSet({Date:W1.default().format("ddd, DD MMM YYYY HH:mm:ss [GMT]"),"Content-Length":String(Q)})}_setHeadersIfNotSet($){let M={};for(let[Y,Z]of Object.entries($))if(Z!==void 0&&!(Y in this._headers))M[Y]=Z;let W=B$(M);Object.assign(this._headers,W)}_setBody($){if(this._body=$,!this._headers["content-type"]){let M=p$($);this._setHeadersIfNotSet({"Content-Type":M})}}setStatusCode($){this._statusCode=$,this._status=M1($)}addHeaders($){let M=B$($);this._headers={...this._headers,...M}}removeHeaders($){for(let M of $)delete this._headers[M]}_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 _${_request;_response;request;response;state={};constructor($,M,W){this._request=new V$($,M,W),this._response=new N$(this._request),this.request=this._request,this.response=this._response}}var H0={enabled:!0,origin:"*",methods:["GET","POST","PUT","DELETE","PATCH","OPTIONS"],allowedHeaders:"*",exposedHeaders:[],credentials:!1,maxAge:86400,preflightContinue:!1,optionsSuccessStatus:P.noContent},Z$={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}},Y1={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},q0={port:5000,host:"0.0.0.0",networkLogs:!1,cors:{enabled:!1},bodyParser:Z$,ipSecurity:Y1,connectionOptions:{socketTimeout:30000,gracefulShutdownTimeout:30000,keepAliveTimeout:65000,headersTimeout:66000},autoGracefulShutdown:!0},V0=($)=>{if($.maxSize<1)throw Error("bodyParser.json.maxSize must be at least 1 byte");if($.maxDepth<1)throw Error("bodyParser.json.maxDepth must be at least 1");if($.maxKeys<1)throw Error("bodyParser.json.maxKeys must be at least 1");if($.maxStringLength<1)throw Error("bodyParser.json.maxStringLength must be at least 1 byte");if($.maxArrayLength<1)throw Error("bodyParser.json.maxArrayLength must be at least 1")},O0=($)=>{if($.maxFileSize<1)throw Error("bodyParser.fileUploads.maxFileSize must be at least 1 byte");if($.maxTotalSize<1)throw Error("bodyParser.fileUploads.maxTotalSize must be at least 1 byte");if($.maxFiles<1)throw Error("bodyParser.fileUploads.maxFiles must be at least 1");if($.maxFilenameLength<1)throw Error("bodyParser.fileUploads.maxFilenameLength must be at least 1 character")},B0=($)=>{if($.maxSize<1)throw Error("bodyParser.urlEncoded.maxSize must be at least 1 byte");if($.maxFields<1)throw Error("bodyParser.urlEncoded.maxFields must be at least 1");if($.maxFieldNameLength<1)throw Error("bodyParser.urlEncoded.maxFieldNameLength must be at least 1 character");if($.maxFieldLength<1)throw Error("bodyParser.urlEncoded.maxFieldLength must be at least 1 byte")},N0=($)=>{if(!Array.isArray($.trustedProxies))throw Error("ipSecurity.trustedProxies must be an array");if(!Array.isArray($.headerPreference))throw Error("ipSecurity.headerPreference must be an array");if($.headerPreference.length===0)throw Error("ipSecurity.headerPreference must contain at least one header");if($.maxChainLength<1)throw Error("ipSecurity.maxChainLength must be at least 1");if($.maxChainLength>50)throw Error("ipSecurity.maxChainLength must not exceed 50 to prevent DoS attacks")},_0=($)=>{if($.allowPrototypeProperties)H.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)H.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)H.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.`)},k0=($)=>{if($.maxFileSize>104857600)H.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)H.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 M=[".exe",".bat",".cmd",".scr",".pif",".com",".vbs",".jar",".app"],W=$.allowedExtensions.filter((Y)=>M.includes(Y.toLowerCase()));if(W.length>0)H.warn(`[SECURITY WARNING] bodyParser.fileUploads.allowedExtensions includes dangerous file types: ${W.join(", ")}. This could allow execution of malicious files. Only allow these if absolutely necessary.`);if($.blockedExtensions.length===0&&$.allowedExtensions.length===0)H.warn("[SECURITY WARNING] File uploads have no extension restrictions (no blockedExtensions and no allowedExtensions). Consider adding blockedExtensions or allowedExtensions to improve security.")},E0=($)=>{if($.trustedProxies.length===0)H.warn("[SECURITY WARNING] ipSecurity.trustedProxies is empty. No proxy headers will be trusted, which may prevent proper client IP detection.");if($.maxChainLength>20)H.warn(`[SECURITY WARNING] ipSecurity.maxChainLength is set to ${$.maxChainLength}. Very long proxy chains can consume significant resources and may indicate amplification attacks.`);if(!$.detectSpoofing)H.warn("[SECURITY WARNING] ipSecurity.detectSpoofing is disabled. This reduces protection against IP spoofing attacks. Only disable if you have other protective measures.")},L0=($,M)=>{if(M?.cors?.enabled)$.cors={...H0,...M.cors,enabled:!0}},A0=($,M)=>{if(M?.bodyParser)$.bodyParser={json:{...Z$.json,...M.bodyParser.json},fileUploads:{...Z$.fileUploads,...M.bodyParser.fileUploads},urlEncoded:{...Z$.urlEncoded,...M.bodyParser.urlEncoded}},S0($.bodyParser)},z0=($,M)=>{if(M?.ipSecurity)$.ipSecurity={...Y1,...M.ipSecurity},N0($.ipSecurity),E0($.ipSecurity)},I0=($,M)=>{if(M?.port!==void 0){let W=Number(M.port);if(isNaN(W)||W<1||W>65535)throw Error("Invalid port number");$.port=W}},S0=($)=>{V0($.json),O0($.fileUploads),B0($.urlEncoded),_0($.json),k0($.fileUploads)},Z1=($)=>{let M={...q0};return Object.assign(M,$),L0(M,$),A0(M,$),z0(M,$),I0(M,$),M};class k${_beforeAll;_afterAll;_onError;_onNotFound;constructor(){this._beforeAll=new Set,this._afterAll=new Set,this._onError=($,M)=>{return H.error("Error while handeling your request: ",M),$.response.setStatusCode(P.internalServerError),{success:!1,message:"Internal Server Error"}},this._onNotFound=($)=>{return $.response.setStatusCode(P.notFound),{success:!1,message:"404 Not Found"}}}_addBeforeHooks($,M){this._validateHandlersArray($,"beforeAll");for(let W of $)this._beforeAll.add({handler:W,options:M??{routesToExclude:[],routesToInclude:[]}})}_addAfterHooks($,M){this._validateHandlersArray($,"afterAll");for(let W of $)this._afterAll.add({handler:W,options:M??{routesToExclude:[],routesToInclude:[]}})}_validateHandlersArray($,M){if(!Array.isArray($)){let W=typeof $;throw Error(`YinzerFlow: ${M}() expects an array of handler functions, but received ${W}.${W==="function"?`
21
21
 
22
- ❌ Incorrect: app.${M}${O.red}(${O.reset}(ctx) => { ... }${O.red})${O.reset}
23
- ✅ Correct: app.${M}${O.green}([${O.reset}(ctx) => { ... }${O.green}])${O.reset}
22
+ ❌ Incorrect: app.${M}${q.red}(${q.reset}(ctx) => { ... }${q.red})${q.reset}
23
+ ✅ Correct: app.${M}${q.green}([${q.reset}(ctx) => { ... }${q.green}])${q.reset}
24
24
 
25
- Note: Wrap your handler function in ${O.magenta}square brackets${O.reset} to make it an array.
25
+ Note: Wrap your handler function in ${q.magenta}square brackets${q.reset} to make it an array.
26
26
 
27
27
  `:`
28
28
 
29
29
  Expected: Array<HandlerCallback>
30
- Received: ${W}`}`)}if($.length===0){H.warn(`${M}() called with empty array. No hooks will be registered.`);return}for(let W=0;W<$.length;W++){let Y=$[W];if(typeof Y!=="function")throw Error(`YinzerFlow: ${M}() array contains non-function at index ${W}. Expected: function, received: ${typeof Y}`)}}_addOnError($){this._onError=$}_addOnNotFound($){this._onNotFound=$}}var Z1=($)=>{let M=[],W=$.path.replace(/:\w+/g,(Y)=>{let Z=Y.slice(1);return M.push(Z),"([^/]+)"}).replace(/\//g,"\\/");return{...$,pattern:new RegExp(`^${W}$`),paramNames:M,isParameterized:!0}};var E$=($)=>{let[M]=$.split("?");if(!M)return"";if([M]=M.split("#"),!M)return"";try{M=decodeURIComponent(M)}catch(W){H.warn("Failed to decode URL path",{path:M})}if(M=M.startsWith("/")?M:`/${M}`,M=M.replace(/\/\/+/g,"/"),M=S0(M),M.length>1&&M.endsWith("/"))M=M.slice(0,-1);return M},S0=($)=>{let M=$.split("/"),W=[];for(let Z of M){if(Z==="."||Z===""){if(Z===""&&W.length===0)W.push(Z);continue}if(Z===".."){if(W.length>1)W.pop()}else W.push(Z)}return W.join("/")||"/"},A$=($)=>$.replace(/:\w+/g,":param");var Q1=($)=>{let M=$.match(/:\w+/g);if(!M)return;let W=M.map((Z)=>Z.slice(1)),Y=new Set(W);if(W.length!==Y.size){let Z=W.filter((Q,X)=>W.indexOf(Q)!==X);throw Error(`Route ${$} has duplicate parameter names: ${Z.join(", ")}. Parameter names must be unique within a route for clarity and to prevent conflicts.`)}};class L${_exactRoutes=new Map;_parameterizedRoutes=new Map;_register({method:$,path:M,handler:W,options:Y}){let Z=E$(M),Q=Z.includes(":");if(Q)Q1(Z);if(this._hasExactRoutePattern($,Z))throw Error(`Route ${Z} already exists for method ${$}`);let X={method:$,path:Z,handler:W,options:Y,params:{}};if(Q)this._storeParameterizedRoute($,X);else this._storeExactRoute($,Z,X)}_findRoute($,M){let W=E$(M),Y=this._exactRoutes.get($)?.get(W);if(Y)return Y;let Z=this._findParameterizedRoute($,W);if(Z)return Z;return}_hasExactRoutePattern($,M){if(this._exactRoutes.get($)?.has(M))return!0;if(M.includes(":")){let W=A$(M),Y=this._parameterizedRoutes.get($);if(Y)return Y.some((Z)=>A$(Z.path)===W)}else{let W=this._parameterizedRoutes.get($);if(W)return W.some((Y)=>Y.path===M)}return!1}_storeExactRoute($,M,W){if(!this._exactRoutes.has($))this._exactRoutes.set($,new Map);this._exactRoutes.get($)?.set(M,W)}_storeParameterizedRoute($,M){if(!this._parameterizedRoutes.has($))this._parameterizedRoutes.set($,[]);let W=Z1(M);this._parameterizedRoutes.get($)?.push(W)}_findParameterizedRoute($,M){let W=this._parameterizedRoutes.get($);if(!W)return;for(let Y of W){let Z=M.match(Y.pattern);if(Z){let Q={};for(let X=0;X<Y.paramNames.length;X++){let j=Z[X+1],q=Y.paramNames[X];if(j!==void 0&&q!==void 0)Q[q]=j}return{...Y,params:Q}}}return}}var b=($)=>({beforeHooks:$?.beforeHooks??[],afterHooks:$?.afterHooks??[]}),z$=($,M)=>({beforeHooks:[...$.beforeHooks??[],...M?.beforeHooks??[]],afterHooks:[...M?.afterHooks??[],...$.afterHooks??[]]}),I$=($,M)=>{let W=$.endsWith("/")?$.slice(0,-1):$,Y=M.startsWith("/")?M:`/${M}`;return`${W}${Y}`};class Z${_setup;_prefix;_options;constructor($,M,W){this._setup=$,this._prefix=M,this._options=b(W)}_createRouteHandler($){return(M,W,Y)=>{let Z=I$(this._prefix,M),Q=z$(this._options,Y);if(this._setup._routeRegistry._register({method:$,handler:W,path:Z,options:Q,params:{}}),$===N.get)this._setup._routeRegistry._register({method:N.head,handler:W,path:Z,options:Q,params:{}})}}get=this._createRouteHandler(N.get);head=this._createRouteHandler(N.head);post=this._createRouteHandler(N.post);put=this._createRouteHandler(N.put);delete=this._createRouteHandler(N.delete);patch=this._createRouteHandler(N.patch);options=this._createRouteHandler(N.options);group($,M,W){let Y=I$(this._prefix,$),Z=z$(this._options,W),Q=new Z$(this._setup,Y,Z);return M(Q),Q}}class S${_configuration;_routeRegistry=new L$;_hooks=new k$;constructor($){this._configuration=Y1($)}get($,M,W){let Y=b(W);this._routeRegistry._register({method:N.get,handler:M,path:$,options:Y,params:{}}),this._routeRegistry._register({method:N.head,handler:M,path:$,options:Y,params:{}})}head($,M,W){this._routeRegistry._register({method:N.head,handler:M,path:$,options:b(W),params:{}})}post($,M,W){this._routeRegistry._register({method:N.post,handler:M,path:$,options:b(W),params:{}})}put($,M,W){this._routeRegistry._register({method:N.put,handler:M,path:$,options:b(W),params:{}})}patch($,M,W){this._routeRegistry._register({method:N.patch,handler:M,path:$,options:b(W),params:{}})}delete($,M,W){this._routeRegistry._register({method:N.delete,handler:M,path:$,options:b(W),params:{}})}options($,M,W){this._routeRegistry._register({method:N.options,handler:M,path:$,options:b(W),params:{}})}group($,M,W){let Y=new Z$(this,$,W);return M(Y),Y}beforeAll($,M){this._hooks._addBeforeHooks($,M)}afterAll($,M){this._hooks._addAfterHooks($,M)}onError($){this._hooks._addOnError($)}onNotFound($){this._hooks._addOnNotFound($)}}var X1={prefix:"NETWORK",logLevel:"off",logger:void 0},I={log:d(X1),enable:($)=>{I.log=d({...X1,logLevel:c.info,logger:$})}},J1=($)=>{if($>=200&&$<300)return"✅";if($>=300&&$<400)return"\uD83D\uDD04";if($>=400&&$<500)return"❌";if($>=500)return"\uD83D\uDCA5";return"❓"},v$=[{maxTime:50,emoji:"⚡",phrase:"faster than a Stillers touchdown!"},{maxTime:100,emoji:"\uD83D\uDD25",phrase:"smooth as butter n'at!"},{maxTime:200,emoji:"✅",phrase:"not bad yinz!"},{maxTime:500,emoji:"⚠️",phrase:"slowin' down a bit there"},{maxTime:1000,emoji:"\uD83D\uDC0C",phrase:"that's draggin' n'at"},{maxTime:1/0,emoji:"\uD83D\uDCA5",phrase:"what a jagoff response time!"}],D1=($)=>{let M=v$.find((W)=>$<W.maxTime)??v$[v$.length-1];if(!M)throw Error("No threshold found for performance details");I.log.warn(`${O.magenta} ${M.emoji} Response time: ${$}ms - ${M.phrase}${O.reset}`)};class K1 extends S${_isListening=!1;_server;constructor($){super($);if(this._configuration.logger)Object.assign(H,this._configuration.logger);if(this._configuration.networkLogs)I.enable(this._configuration.networkLogger);if(this._configuration.autoGracefulShutdown)this._setupGracefulShutdown()}_setupServer($,M,W){if(!this._server)return;this._server.on("error",(Y)=>{I.log.error(`YinzerFlow server error at ${this._configuration.host}:${this._configuration.port} - ${Y.message}`),M(Y)}),this._server.on("listening",()=>{this._isListening=!0,I.log.info(`YinzerFlow server at ${this._configuration.host}:${this._configuration.port} is up and running`),$()}),this._server.on("connection",(Y)=>{this._handleConnection(Y,W)})}async _processRequest({data:$,socket:M,requestHandler:W,clientAddress:Y}){let Z=Date.now();I.log.info("Incoming request",`${Y} ${i($)}bytes`);let Q=new N$($,this,Y);await W.handle(Q),M.write(Q._response._stringBody),M.end();let j=Date.now()-Z;I.log.info(`${J1(Q._response._statusCode)} ${Y} "${Q.request.method} ${Q.request.path} ${Q.request.protocol}" ${Q._response._statusCode} ${i(Q._response._body)}bytes "${Q.request.headers.referer??"-"}" "${Q.request.headers["user-agent"]??"-"}" ${j}ms`),D1(j)}_handleConnection($,M){let W=$.remoteAddress??"unknown",Y=Date.now(),Z=!1,Q=null;I.log.info(`New visitor from ${W}`),$.on("data",(X)=>{if(!Z){Z=!0,Q=Date.now();let j=Q-Y;if(j>100)I.log.warn(`Delayed data from ${W} (${j}ms connection delay)`)}this._processRequest({data:X,socket:$,requestHandler:M,clientAddress:W}).catch((j)=>{let q=j instanceof Error?j.message:"Unknown error";I.log.error(`Visitor from ${W} experienced an error during request processing: ${q}`,j),$.destroy()})}),$.on("error",(X)=>{I.log.error(`Visitor from ${W} experienced an error during socket connection: ${X.message}`,X)}),$.on("close",()=>{let X=Date.now()-Y;if(Z){I.log.info(`Visitor from ${W} headed out (${X}ms total)`);return}if(X<10)I.log.info(`${W} quick connectivity check (${X}ms) - health probe`);else I.log.warn(`${W} disconnected without sending data (${X}ms) - potential probe`)})}async listen(){if(this._isListening)throw Error("Server is already listening");return new Promise(($,M)=>{let W=new G$(this);this._server=v0(),this._setupServer($,M,W),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,I.log.warn(`YinzerFlow server at ${this._configuration.host}:${this._configuration.port} is shutting down - See yinz later`),$()})})}status(){return{isListening:this._isListening,port:this._configuration.port,host:this._configuration.host}}_setupGracefulShutdown(){if(process.listenerCount("SIGTERM")===0&&process.listenerCount("SIGINT")===0){let $=(M)=>{H.info(`\uD83D\uDED1 Received ${M}, shutting down gracefully...`),this.close().then(()=>{H.info("✅ Server shut down gracefully"),process.exit(0)}).catch((W)=>{H.error("❌ Error during graceful shutdown:",W),process.exit(1)})};process.on("SIGTERM",()=>$("SIGTERM")),process.on("SIGINT",()=>$("SIGINT"))}}}export{c as logLevels,H as log,R as httpStatusCode,s as httpStatus,d as createLogger,O as colors,K1 as YinzerFlow};
30
+ Received: ${W}`}`)}if($.length===0){H.warn(`${M}() called with empty array. No hooks will be registered.`);return}for(let W=0;W<$.length;W++){let Y=$[W];if(typeof Y!=="function")throw Error(`YinzerFlow: ${M}() array contains non-function at index ${W}. Expected: function, received: ${typeof Y}`)}}_addOnError($){this._onError=$}_addOnNotFound($){this._onNotFound=$}}var Q1=($)=>{let M=[],W=$.path.replace(/:\w+/g,(Y)=>{let Z=Y.slice(1);return M.push(Z),"([^/]+)"}).replace(/\//g,"\\/");return{...$,pattern:new RegExp(`^${W}$`),paramNames:M,isParameterized:!0}};var E$=($)=>{let[M]=$.split("?");if(!M)return"";if([M]=M.split("#"),!M)return"";try{M=decodeURIComponent(M)}catch(W){H.warn("Failed to decode URL path",{path:M})}if(M=M.startsWith("/")?M:`/${M}`,M=M.replace(/\/\/+/g,"/"),M=v0(M),M.length>1&&M.endsWith("/"))M=M.slice(0,-1);return M},v0=($)=>{let M=$.split("/"),W=[];for(let Z of M){if(Z==="."||Z===""){if(Z===""&&W.length===0)W.push(Z);continue}if(Z===".."){if(W.length>1)W.pop()}else W.push(Z)}return W.join("/")||"/"},L$=($)=>$.replace(/:\w+/g,":param");var X1=($)=>{let M=$.match(/:\w+/g);if(!M)return;let W=M.map((Z)=>Z.slice(1)),Y=new Set(W);if(W.length!==Y.size){let Z=W.filter((Q,X)=>W.indexOf(Q)!==X);throw Error(`Route ${$} has duplicate parameter names: ${Z.join(", ")}. Parameter names must be unique within a route for clarity and to prevent conflicts.`)}};class A${_exactRoutes=new Map;_parameterizedRoutes=new Map;_register({method:$,path:M,handler:W,options:Y}){let Z=E$(M),Q=Z.includes(":");if(Q)X1(Z);if(this._hasExactRoutePattern($,Z))throw Error(`Route ${Z} already exists for method ${$}`);let X={method:$,path:Z,handler:W,options:Y,params:{}};if(Q)this._storeParameterizedRoute($,X);else this._storeExactRoute($,Z,X)}_findRoute($,M){let W=E$(M),Y=this._exactRoutes.get($)?.get(W);if(Y)return Y;let Z=this._findParameterizedRoute($,W);if(Z)return Z;return}_hasExactRoutePattern($,M){if(this._exactRoutes.get($)?.has(M))return!0;if(M.includes(":")){let W=L$(M),Y=this._parameterizedRoutes.get($);if(Y)return Y.some((Z)=>L$(Z.path)===W)}else{let W=this._parameterizedRoutes.get($);if(W)return W.some((Y)=>Y.path===M)}return!1}_storeExactRoute($,M,W){if(!this._exactRoutes.has($))this._exactRoutes.set($,new Map);this._exactRoutes.get($)?.set(M,W)}_storeParameterizedRoute($,M){if(!this._parameterizedRoutes.has($))this._parameterizedRoutes.set($,[]);let W=Q1(M);this._parameterizedRoutes.get($)?.push(W)}_findParameterizedRoute($,M){let W=this._parameterizedRoutes.get($);if(!W)return;for(let Y of W){let Z=M.match(Y.pattern);if(Z){let Q={};for(let X=0;X<Y.paramNames.length;X++){let w=Z[X+1],V=Y.paramNames[X];if(w!==void 0&&V!==void 0)Q[V]=w}return{...Y,params:Q}}}return}}var b=($)=>({beforeHooks:$?.beforeHooks??[],afterHooks:$?.afterHooks??[]}),z$=($,M)=>({beforeHooks:[...$.beforeHooks??[],...M?.beforeHooks??[]],afterHooks:[...M?.afterHooks??[],...$.afterHooks??[]]}),I$=($,M)=>{let W=$.endsWith("/")?$.slice(0,-1):$,Y=M.startsWith("/")?M:`/${M}`;return`${W}${Y}`};class Q${_setup;_prefix;_options;constructor($,M,W){this._setup=$,this._prefix=M,this._options=b(W)}_createRouteHandler($){return(M,W,Y)=>{let Z=I$(this._prefix,M),Q=z$(this._options,Y);if(this._setup._routeRegistry._register({method:$,handler:W,path:Z,options:Q,params:{}}),$===_.get)this._setup._routeRegistry._register({method:_.head,handler:W,path:Z,options:Q,params:{}})}}get=this._createRouteHandler(_.get);head=this._createRouteHandler(_.head);post=this._createRouteHandler(_.post);put=this._createRouteHandler(_.put);delete=this._createRouteHandler(_.delete);patch=this._createRouteHandler(_.patch);options=this._createRouteHandler(_.options);group($,M,W){let Y=I$(this._prefix,$),Z=z$(this._options,W),Q=new Q$(this._setup,Y,Z);return M(Q),Q}}class S${_configuration;_routeRegistry=new A$;_hooks=new k$;constructor($){this._configuration=Z1($)}get($,M,W){let Y=b(W);this._routeRegistry._register({method:_.get,handler:M,path:$,options:Y,params:{}}),this._routeRegistry._register({method:_.head,handler:M,path:$,options:Y,params:{}})}head($,M,W){this._routeRegistry._register({method:_.head,handler:M,path:$,options:b(W),params:{}})}post($,M,W){this._routeRegistry._register({method:_.post,handler:M,path:$,options:b(W),params:{}})}put($,M,W){this._routeRegistry._register({method:_.put,handler:M,path:$,options:b(W),params:{}})}patch($,M,W){this._routeRegistry._register({method:_.patch,handler:M,path:$,options:b(W),params:{}})}delete($,M,W){this._routeRegistry._register({method:_.delete,handler:M,path:$,options:b(W),params:{}})}options($,M,W){this._routeRegistry._register({method:_.options,handler:M,path:$,options:b(W),params:{}})}group($,M,W){let Y=new Q$(this,$,W);return M(Y),Y}beforeAll($,M){this._hooks._addBeforeHooks($,M)}afterAll($,M){this._hooks._addAfterHooks($,M)}onError($){this._hooks._addOnError($)}onNotFound($){this._hooks._addOnNotFound($)}}var J1={prefix:"NETWORK",logLevel:"off",logger:void 0},I={log:d(J1),enable:($)=>{I.log=d({...J1,logLevel:c.info,logger:$})}},D1=($)=>{if($>=200&&$<300)return"✅";if($>=300&&$<400)return"\uD83D\uDD04";if($>=400&&$<500)return"❌";if($>=500)return"\uD83D\uDCA5";return"❓"},v$=[{maxTime:50,emoji:"⚡",phrase:"faster than a Stillers touchdown!"},{maxTime:100,emoji:"\uD83D\uDD25",phrase:"smooth as butter n'at!"},{maxTime:200,emoji:"✅",phrase:"not bad yinz!"},{maxTime:500,emoji:"⚠️",phrase:"slowin' down a bit there"},{maxTime:1000,emoji:"\uD83D\uDC0C",phrase:"that's draggin' n'at"},{maxTime:1/0,emoji:"\uD83D\uDCA5",phrase:"what a jagoff response time!"}],K1=($)=>{let M=v$.find((W)=>$<W.maxTime)??v$[v$.length-1];if(!M)throw Error("No threshold found for performance details");I.log.warn(`${q.magenta} ${M.emoji} Response time: ${$}ms - ${M.phrase}${q.reset}`)};class w1 extends S${_isListening=!1;_server;constructor($){super($);if(this._configuration.logger)Object.assign(H,this._configuration.logger);if(this._configuration.networkLogs)I.enable(this._configuration.networkLogger);if(this._configuration.autoGracefulShutdown)this._setupGracefulShutdown()}_setupServer($,M,W){if(!this._server)return;this._server.on("error",(Y)=>{I.log.error(`YinzerFlow server error at ${this._configuration.host}:${this._configuration.port} - ${Y.message}`),M(Y)}),this._server.on("listening",()=>{this._isListening=!0,I.log.info(`YinzerFlow server at ${this._configuration.host}:${this._configuration.port} is up and running`),$()}),this._server.on("connection",(Y)=>{this._handleConnection(Y,W)})}async _processRequest({data:$,socket:M,requestHandler:W,clientAddress:Y}){let Z=Date.now();I.log.info("Incoming request",`${Y} ${i($)}bytes`);let Q=new _$($,this,Y);await W.handle(Q),M.write(Q._response._stringBody),M.end();let w=Date.now()-Z;I.log.info(`${D1(Q._response._statusCode)} ${Y} "${Q.request.method} ${Q.request.path} ${Q.request.protocol}" ${Q._response._statusCode} ${i(Q._response._body)}bytes "${Q.request.headers.referer??"-"}" "${Q.request.headers["user-agent"]??"-"}" ${w}ms`),K1(w)}_handleConnection($,M){let W=$.remoteAddress??"unknown",Y=Date.now(),Z=!1,Q=null;I.log.info(`New visitor from ${W}`),$.on("data",(X)=>{if(!Z){Z=!0,Q=Date.now();let w=Q-Y;if(w>100)I.log.warn(`Delayed data from ${W} (${w}ms connection delay)`)}this._processRequest({data:X,socket:$,requestHandler:M,clientAddress:W}).catch((w)=>{let V=w instanceof Error?w.message:"Unknown error";I.log.error(`Visitor from ${W} experienced an error during request processing: ${V}`,w),$.destroy()})}),$.on("error",(X)=>{I.log.error(`Visitor from ${W} experienced an error during socket connection: ${X.message}`,X)}),$.on("close",()=>{let X=Date.now()-Y;if(Z){I.log.info(`Visitor from ${W} headed out (${X}ms total)`);return}if(X<10)I.log.info(`${W} quick connectivity check (${X}ms) - health probe`);else I.log.warn(`${W} disconnected without sending data (${X}ms) - potential probe`)})}async listen(){if(this._isListening)throw Error("Server is already listening");return new Promise(($,M)=>{let W=new F$(this);this._server=T0(),this._setupServer($,M,W),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,I.log.warn(`YinzerFlow server at ${this._configuration.host}:${this._configuration.port} is shutting down - See yinz later`),$()})})}status(){return{isListening:this._isListening,port:this._configuration.port,host:this._configuration.host}}_setupGracefulShutdown(){if(process.listenerCount("SIGTERM")===0&&process.listenerCount("SIGINT")===0){let $=(M)=>{H.info(`\uD83D\uDED1 Received ${M}, shutting down gracefully...`),this.close().then(()=>{H.info("✅ Server shut down gracefully"),process.exit(0)}).catch((W)=>{H.error("❌ Error during graceful shutdown:",W),process.exit(1)})};process.on("SIGTERM",()=>$("SIGTERM")),process.on("SIGINT",()=>$("SIGINT"))}}}export{c as logLevels,H as log,P as httpStatusCode,s as httpStatus,d as createLogger,q as colors,w1 as YinzerFlow};
31
31
 
32
- //# debugId=3F513051214C494F64756E2164756E21
32
+ //# debugId=E2AA94F639968B3064756E2164756E21
package/index.js.map CHANGED
@@ -7,7 +7,7 @@
7
7
  "import dayjs from 'dayjs';\nimport type { SetupImpl } from '@core/setup/SetupImpl.ts';\nimport type { InternalContextImpl } from '@typedefs/internal/InternalContextImpl.ts';\nimport type { InternalSetupImpl } from '@typedefs/internal/InternalSetupImpl.js';\nimport { handleCors } from '@core/utils/cors.ts';\nimport { log } from '@core/utils/log.ts';\nimport type { HandlerCallback } from '@typedefs/public/Context.js';\nimport type { InternalRouteRegistry } from '@typedefs/internal/InternalRouteRegistryImpl.js';\nimport type { InternalGlobalHookOptions } from '@typedefs/internal/InternalHookRegistryImpl.js';\n\n/**\n * Handles the complete lifecycle of an HTTP request\n *\n * Flow:\n * 1. Receive parsed context (request + response builders)\n * 2. Match route and execute handlers\n * 3. Build final response in context\n * 4. Context.rawResponse is ready for sending\n */\nexport class RequestHandlerImpl {\n private readonly setup: InternalSetupImpl;\n\n constructor(setup: SetupImpl) {\n this.setup = setup;\n }\n\n /**\n * Process an HTTP request using the provided context\n */\n async handle(context: InternalContextImpl): Promise<void> {\n try {\n // 1. Handle CORS - stop if it's a preflight request\n if (this._handleCors(context)) {\n return void 0;\n }\n\n // 2. Match route based on context.request.method + context.request.path\n const matchedRoute = await this._matchRoute(context);\n if (!matchedRoute) return void 0;\n\n // Set route params in the request context\n Object.assign(context.request.params as unknown as Record<string, string>, matchedRoute.params);\n\n const { handler, options } = matchedRoute;\n const { beforeHooks = [], afterHooks = [] } = options;\n\n // 3. Run beforeAll hooks - stop if any hook returns a value\n if (await this._handleBeforeAllHooks(context)) {\n return void 0;\n }\n\n // 4. Run beforeGroup hooks and beforeRoute hooks - stop if any hook returns a value\n // * The before group hooks and beforeRoute hooks are in the same array and ordered on route registration.\n if (await this._handleBeforeHooks(context, beforeHooks)) {\n return void 0;\n }\n\n // 5. Execute route handler.\n // * We are saving the response to a variable because in this case we might not\n // * send a response to the client until after the after hooks since the after hooks might modify the response.\n let routeResponse: unknown = null;\n try {\n routeResponse = await handler(context);\n } catch (handlerError) {\n throw handlerError;\n }\n\n // 6. Run afterRoute hooks and afterGroup hooks\n // * The after group hooks and afterRoute hooks are in the same array and ordered on route registration.\n for (const hook of afterHooks) await hook(context);\n\n // 7. Run afterAll hooks\n const afterAllHooks = this.setup._hooks._afterAll;\n for (const hook of afterAllHooks) {\n // Check if hook should run based on route options\n if (!this._shouldRunHook(hook.options, context.request.path)) {\n continue;\n }\n await hook.handler(context);\n }\n\n // 8. Build response (set content-type, etc.)\n context._response._setBody(routeResponse);\n\n // 10. If this was a HEAD request, remove the body and convert it to a GET request.\n // Im waiting to do this until after the after hooks since the after hooks might modify the response, headers, etc.\n if (context.request.method === 'HEAD') {\n context._response._setBody(null);\n }\n\n // 11. Add default framework headers and parse the body into a string\n // This is done when we call context._response._parseResponseIntoString()\n context._response._parseResponseIntoString();\n\n return void 0;\n } catch (error) {\n // Use the error handler from setup\n await this.handleError(context, error);\n }\n }\n\n /**\n * Handle errors using the user-defined or default error handler\n * The error handler returns a response object that we apply to the context\n */\n private async handleError(context: InternalContextImpl, error: unknown): Promise<void> {\n try {\n // Get the error handler (user-defined or default)\n const errorHandler = this.setup._hooks._onError;\n\n // Call the error handler - it returns a response object\n const errorResponse = await errorHandler(context, error);\n\n // Apply the response to the context\n context._response._setBody(errorResponse);\n\n // Add CORS headers to error responses too\n handleCors(context, this.setup._configuration.cors);\n\n // Format the response for sending (same as normal flow)\n context._response._parseResponseIntoString();\n context._response._setHeadersIfNotSet({\n Date: dayjs().format('ddd, DD MMM YYYY HH:mm:ss [GMT]'),\n 'Content-Length': context._response._stringBody.split('\\n\\n')[1]?.length.toString() ?? '0',\n });\n } catch (errorHandlerError) {\n // If the error handler itself fails, fall back to basic response\n log.error('Error handler failed, this might be an internal error in the YinzerFlow framework: ', errorHandlerError);\n\n context.response.setStatusCode(500);\n context._response._setBody({\n success: false,\n message: 'Internal Server Error',\n });\n\n // Add CORS headers to fallback error responses too\n handleCors(context, this.setup._configuration.cors);\n\n // Format the fallback response too\n context._response._parseResponseIntoString();\n context._response._setHeadersIfNotSet({\n Date: dayjs().format('ddd, DD MMM YYYY HH:mm:ss [GMT]'),\n 'Content-Length': context._response._stringBody.split('\\n\\n')[1]?.length.toString() ?? '0',\n });\n }\n }\n\n private _handleCors(context: InternalContextImpl): boolean {\n // 1. Handle CORS before anything else. The cors handler will handle return true if it was a preflight request, otherwise it will return false.\n const corsResult = handleCors(context, this.setup._configuration.cors);\n\n if (corsResult) {\n context._response._parseResponseIntoString(); // Needed so the YinzerFlow can send the response as a string\n return true; // Signal that we should stop processing\n }\n\n return false; // Signal that we should continue processing\n }\n\n private async _matchRoute(context: InternalContextImpl): Promise<InternalRouteRegistry | null> {\n const matchedRoute = this.setup._routeRegistry._findRoute(context.request.method, context.request.path);\n\n if (!matchedRoute) {\n const notFoundResponse = await this.setup._hooks._onNotFound(context);\n context._response._setBody(notFoundResponse);\n context._response._parseResponseIntoString(); // Needed so the YinzerFlow can send the response as a string\n return null; // Signal that no route was found and response is already set\n }\n\n return matchedRoute;\n }\n\n private async _handleBeforeAllHooks(context: InternalContextImpl): Promise<boolean> {\n const beforeAllHooks = this.setup._hooks._beforeAll;\n for (const hook of beforeAllHooks) {\n // Check if hook should run based on route options\n if (!this._shouldRunHook(hook.options, context.request.path)) {\n continue;\n }\n\n const result = await hook.handler(context);\n if (result !== undefined) {\n context._response._setBody(result);\n context._response._parseResponseIntoString();\n return true; // Signal that we should stop processing\n }\n }\n return false; // Signal that we should continue processing\n }\n\n private async _handleBeforeHooks(context: InternalContextImpl, hooks: Array<HandlerCallback>): Promise<boolean> {\n for (const hook of hooks) {\n const result = await hook(context);\n if (result !== undefined) {\n context._response._setBody(result);\n context._response._parseResponseIntoString();\n return true; // Signal that we should stop processing\n }\n }\n return false; // Signal that we should continue processing\n }\n\n /**\n * Determines if a hook should run based on its options and the current request path\n */\n private _shouldRunHook(options: InternalGlobalHookOptions | undefined, requestPath: string): boolean {\n if (!options) {\n return true; // No options means run for all routes\n }\n\n const { routesToInclude, routesToExclude } = options;\n\n // If routesToExclude contains the current path, don't run\n if (routesToExclude.some((pattern) => this._matchesPattern(requestPath, pattern))) {\n return false;\n }\n\n // If routesToInclude is empty, run for all routes (unless excluded above)\n if (routesToInclude.length === 0) {\n return true;\n }\n\n // If routesToInclude has patterns, only run if current path matches one of them\n return routesToInclude.some((pattern) => this._matchesPattern(requestPath, pattern));\n }\n\n /**\n * Simple pattern matching for route filtering\n * Supports basic wildcard patterns like /api/* and exact matches\n */\n private _matchesPattern(path: string, pattern: string): boolean {\n // Exact match\n if (pattern === path) {\n return true;\n }\n\n // Wildcard pattern (e.g., /api/*)\n if (pattern.endsWith('/*')) {\n const prefix = pattern.slice(0, -2);\n return path.startsWith(prefix);\n }\n\n // No match\n return false;\n }\n}\n",
8
8
  "/**\n * HTTP Constants\n *\n * This file contains all HTTP-related constants used throughout the application.\n * Centralizing these constants makes them easier to maintain and ensures consistency.\n */\n\n/**\n * HTTP Status Text\n * Maps status codes to their standard text representations\n */\n// Use const assertions for better tree-shaking\nexport const httpStatus = {\n ok: 'OK',\n created: 'Created',\n accepted: 'Accepted',\n noContent: 'No Content',\n movedPermanently: 'Moved Permanently',\n found: 'Found',\n notModified: 'Not Modified',\n badRequest: 'Bad Request',\n unauthorized: 'Unauthorized',\n forbidden: 'Forbidden',\n notFound: 'Not Found',\n methodNotAllowed: 'Method Not Allowed',\n conflict: 'Conflict',\n unsupportedMediaType: 'Unsupported Media Type',\n tooManyRequests: 'Too Many Requests',\n internalServerError: 'Internal Server Error',\n} as const;\n\n/**\n * HTTP Status Codes\n * Standard HTTP status codes used in responses\n */\nexport const httpStatusCode = {\n ok: 200,\n created: 201,\n accepted: 202,\n noContent: 204,\n movedPermanently: 301,\n found: 302,\n notModified: 304,\n badRequest: 400,\n unauthorized: 401,\n forbidden: 403,\n notFound: 404,\n methodNotAllowed: 405,\n conflict: 409,\n unsupportedMediaType: 415,\n tooManyRequests: 429,\n internalServerError: 500,\n} as const;\n\n/**\n * HTTP Methods\n * Standard HTTP methods used in requests\n */\nexport const httpMethod = {\n delete: 'DELETE',\n get: 'GET',\n head: 'HEAD',\n post: 'POST',\n put: 'PUT',\n patch: 'PATCH',\n options: 'OPTIONS',\n} as const;\n\n/**\n * Common Content Types\n * Frequently used content types for HTTP communication\n */\nexport const contentType = {\n json: 'application/json',\n html: 'text/html',\n form: 'application/x-www-form-urlencoded',\n multipart: 'multipart/form-data',\n xml: 'application/xml',\n text: 'text/plain',\n csv: 'text/csv',\n yamlApplication: 'application/yaml',\n yamlText: 'text/yaml',\n urlEncodedJson: 'application/x-www-form-urlencoded+json',\n} as const;\n\n/**\n * HTTP header names organized by category\n * Use with CreateEnum to get type-safe header names with intellisense\n */\nexport const httpHeaders = {\n // Authentication & Authorization\n authorization: 'Authorization', // Bearer tokens, Basic auth, etc.\n proxyAuthorization: 'Proxy-Authorization', // Auth through proxy\n wwwAuthenticate: 'WWW-Authenticate', // Server auth challenge\n\n // Caching & Validation\n cacheControl: 'Cache-Control', // Cache directives\n etag: 'ETag', // Resource version identifier\n expires: 'Expires', // Cache expiration date\n lastModified: 'Last-Modified', // Resource modification date\n ifMatch: 'If-Match', // Conditional request based on ETag\n ifNoneMatch: 'If-None-Match', // Conditional request based on ETag\n ifModifiedSince: 'If-Modified-Since', // Conditional request based on date\n ifUnmodifiedSince: 'If-Unmodified-Since', // Conditional request based on date\n ifRange: 'If-Range', // Conditional range request\n age: 'Age', // Time in proxy cache\n vary: 'Vary', // Response varies based on headers\n\n // Content Information\n contentType: 'Content-Type', // Media type of content\n contentLength: 'Content-Length', // Size in bytes\n contentEncoding: 'Content-Encoding', // Compression method\n contentLanguage: 'Content-Language', // Natural language\n contentDisposition: 'Content-Disposition', // Inline vs attachment\n contentLocation: 'Content-Location', // Alternate location\n contentRange: 'Content-Range', // Partial content range\n\n // CORS (Cross-Origin Resource Sharing)\n accessControlAllowCredentials: 'Access-Control-Allow-Credentials', // Allow credentials in CORS\n accessControlAllowHeaders: 'Access-Control-Allow-Headers', // Allowed request headers\n accessControlAllowMethods: 'Access-Control-Allow-Methods', // Allowed HTTP methods\n accessControlAllowOrigin: 'Access-Control-Allow-Origin', // Allowed origins\n accessControlExposeHeaders: 'Access-Control-Expose-Headers', // Exposed response headers\n accessControlMaxAge: 'Access-Control-Max-Age', // Preflight cache duration\n accessControlRequestHeaders: 'Access-Control-Request-Headers', // Preflight request headers\n accessControlRequestMethod: 'Access-Control-Request-Method', // Preflight request method\n\n // Request Information\n accept: 'Accept', // Acceptable media types\n acceptEncoding: 'Accept-Encoding', // Acceptable encodings\n acceptLanguage: 'Accept-Language', // Acceptable languages\n acceptRanges: 'Accept-Ranges', // Server supports ranges\n host: 'Host', // Target host and port\n userAgent: 'User-Agent', // Client software info\n referer: 'Referer', // Previous page URL\n origin: 'Origin', // Request origin\n from: 'From', // User email address\n expect: 'Expect', // Server requirements\n\n // Response Information\n location: 'Location', // Redirect URL\n server: 'Server', // Server software info\n date: 'Date', // Message timestamp\n allow: 'Allow', // Supported HTTP methods\n retryAfter: 'Retry-After', // Retry delay\n\n // Range Requests\n range: 'Range', // Requested byte range\n\n // Security Headers\n contentSecurityPolicy: 'Content-Security-Policy', // CSP directives\n contentSecurityPolicyReportOnly: 'Content-Security-Policy-Report-Only', // CSP report mode\n strictTransportSecurity: 'Strict-Transport-Security', // HTTPS enforcement\n xContentTypeOptions: 'X-Content-Type-Options', // Prevent MIME sniffing\n xFrameOptions: 'X-Frame-Options', // Clickjacking protection\n xXSSProtection: 'X-XSS-Protection', // XSS filter control\n referrerPolicy: 'Referrer-Policy', // Referrer info policy\n permissionsPolicy: 'Permissions-Policy', // Feature permissions\n crossOriginEmbedderPolicy: 'Cross-Origin-Embedder-Policy', // Embedding control\n crossOriginOpenerPolicy: 'Cross-Origin-Opener-Policy', // Window opening control\n crossOriginResourcePolicy: 'Cross-Origin-Resource-Policy', // Resource sharing control\n\n // Cookies\n cookie: 'Cookie', // Client cookies\n setCookie: 'Set-Cookie', // Server cookie instructions\n\n // Connection Management\n connection: 'Connection', // Connection control\n keepAlive: 'Keep-Alive', // Keep-alive parameters\n upgrade: 'Upgrade', // Protocol upgrade\n upgradeInsecureRequests: 'Upgrade-Insecure-Requests', // HTTPS upgrade\n\n // Transfer & Encoding\n transferEncoding: 'Transfer-Encoding', // Transfer encoding method\n te: 'TE', // Acceptable transfer encodings\n trailer: 'Trailer', // Trailer field names\n\n // Proxy & Forwarding\n forwarded: 'Forwarded', // Proxy information\n xForwardedFor: 'X-Forwarded-For', // Proxy information\n via: 'Via', // Proxy chain info\n maxForwards: 'Max-Forwards', // Hop limit\n\n // Alternative Services\n altSvc: 'Alt-Svc', // Alternative services\n altUsed: 'Alt-Used', // Used alternative service\n\n // Timing & Performance\n timingAllowOrigin: 'Timing-Allow-Origin', // Timing API access\n serverTiming: 'Server-Timing', // Server performance metrics\n\n // Refresh & Links\n refresh: 'Refresh', // Auto-refresh directive\n link: 'Link', // Related resources\n\n // Custom & Extension Headers\n xPoweredBy: 'X-Powered-By', // Server technology\n xPermittedCrossDomainPolicies: 'X-Permitted-Cross-Domain-Policies', // Flash policy\n reportTo: 'Report-To', // Error reporting endpoint\n serviceWorkerAllowed: 'Service-Worker-Allowed', // Service worker scope\n sourceMap: 'SourceMap', // Source map location\n priority: 'Priority', // Request priority\n secGPC: 'Sec-GPC', // Global Privacy Control\n\n // Data & Clearing\n clearSiteData: 'Clear-Site-Data', // Clear browser data\n noVarySearch: 'No-Vary-Search', // Search param cache control\n} as const;\n\nexport const httpEncoding = {\n base64: 'base64',\n binary: 'binary',\n utf8: 'utf8',\n} as const;\n",
9
9
  "import { httpHeaders } from '@constants/http.ts';\nimport type { InternalContextImpl } from '@typedefs/internal/InternalContextImpl.js';\nimport type { CorsConfiguration } from '@typedefs/public/Configuration.js';\nimport type { InternalCorsEnabledConfiguration } from '@typedefs/internal/InternalConfiguration.js';\n\nexport const handleCors = (context: InternalContextImpl, config: CorsConfiguration): boolean => {\n if (!config.enabled) return false;\n\n if (context.request.method === 'OPTIONS') {\n // Validate origin is accepted - SECURITY CRITICAL: Actually use the result!\n const isOriginAllowed = _validateOrigin(context, config);\n\n if (!isOriginAllowed) {\n // Reject unauthorized CORS preflight requests\n context.response.setStatusCode(403);\n context._response._setBody({\n error: 'CORS: Origin not allowed',\n origin: context.request.headers.origin,\n });\n return true; // SECURITY: Return true to prevent RequestHandler from overwriting our rejection\n }\n\n // Set response headers ONLY for allowed origins\n context.response.setStatusCode(config.optionsSuccessStatus);\n\n // Determine the allowed origin to echo back\n const allowedOrigin = _determineAllowedOrigin(context, config);\n\n // Configure allowed methods and headers\n context._response._setHeadersIfNotSet({\n [httpHeaders.accessControlAllowOrigin]: allowedOrigin,\n [httpHeaders.accessControlAllowMethods]: config.methods.join(', '),\n [httpHeaders.accessControlAllowHeaders]: typeof config.allowedHeaders === 'string' ? config.allowedHeaders : config.allowedHeaders.join(', '),\n [httpHeaders.accessControlAllowCredentials]: config.credentials ? 'true' : 'false',\n [httpHeaders.accessControlExposeHeaders]: config.exposedHeaders.join(', '),\n [httpHeaders.accessControlMaxAge]: config.maxAge.toString(),\n });\n\n if (config.preflightContinue) {\n // Don't set body, let next handler run\n return false; // CORS did not handle, let next handler run\n }\n // Only set body if preflightContinue is false\n context._response._setBody('');\n return true; // CORS handled it\n }\n\n // For non-OPTIONS requests, still validate origin and set appropriate headers\n const isOriginAllowed = _validateOrigin(context, config);\n\n if (isOriginAllowed) {\n const allowedOrigin = _determineAllowedOrigin(context, config);\n context._response._setHeadersIfNotSet({\n [httpHeaders.accessControlAllowOrigin]: allowedOrigin,\n [httpHeaders.accessControlAllowCredentials]: config.credentials ? 'true' : 'false',\n });\n }\n\n return false; // Let normal request processing continue\n};\n\n/**\n * Determine the correct origin value to send back in Access-Control-Allow-Origin\n * SECURITY: Never echo back the request origin without validation\n */\nconst _determineAllowedOrigin = (context: InternalContextImpl, config: InternalCorsEnabledConfiguration): string => {\n if (config.origin === '*') {\n // SECURITY: Block dangerous wildcard + credentials combination (CORS spec violation)\n if (config.credentials) {\n throw new Error(\n 'CORS Security Error: origin: \"*\" with credentials: true is forbidden by CORS spec and creates security vulnerabilities. Use specific origins instead.',\n );\n }\n\n // SECURITY: For wildcard, always return literal '*', never echo back the request origin\n // Echoing back the request origin defeats the purpose of CORS validation\n return '*';\n }\n\n // For specific origins, echo back the validated request origin\n const requestOrigin = context.request.headers.origin;\n if (requestOrigin) {\n // At this point, validation should have already passed\n return requestOrigin;\n }\n\n // If no request origin (shouldn't happen for validated requests), return first configured origin\n if (typeof config.origin === 'string') {\n return config.origin;\n }\n\n if (Array.isArray(config.origin) && config.origin.length > 0) {\n const [firstOrigin] = config.origin;\n return firstOrigin ?? 'null';\n }\n\n // This shouldn't happen if validation passed, but safety fallback\n return 'null';\n};\n\nconst _validateOrigin = (context: InternalContextImpl, config: InternalCorsEnabledConfiguration): boolean => {\n if (config.origin === '*') return true;\n\n const normalizedOrigin = context.request.headers.origin?.toLowerCase() ?? '';\n\n if (typeof config.origin === 'function') {\n return Boolean(config.origin(normalizedOrigin, context.request));\n }\n\n if (typeof config.origin === 'string') {\n return normalizedOrigin === config.origin.toLowerCase();\n }\n\n if (Array.isArray(config.origin)) {\n return config.origin.some((origin) => normalizedOrigin === origin.toLowerCase());\n }\n\n if (config.origin instanceof RegExp) {\n return config.origin.test(normalizedOrigin);\n }\n\n return false;\n};\n",
10
- "import dayjs from 'dayjs';\nimport { colors } from '@constants/colors.ts';\nimport { logLevels } from '@constants/log.js';\nimport type { LogLevel } from '@typedefs/constants/log.ts';\nimport type { LoggerConfig } from '@typedefs/public/Logger.ts';\nimport type { Colors } from '@typedefs/constants/colors.js';\n\n/**\n * YinzerFlow Main Logging System 🏗️\n *\n * Simple, clean logging with Pittsburgh personality!\n * - Numeric levels (0=off, 1=error, 2=warn, 3=info)\n * - Smart formatting: Objects get pretty JSON, strings get YinzerFlow colors\n * - Network logging is separate (see networkLog.ts)\n */\n\nconst LOG_LEVELS = {\n off: 0,\n error: 1,\n warn: 2,\n info: 3,\n} as const;\n\nconst YINZER_PHRASES = {\n positive: [\"n'at!\", 'yinz are good!', \"that's the way!\", 'right on!', \"lookin' good!\", 'way to go!', 'keep it up!'],\n neutral: [\"n'at\", 'yinz know', \"just sayin'\", \"that's how it is\", 'what can ya do', 'it happens'],\n 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'],\n} as const;\n\nconst _getRandomPhrase = (type: 'negative' | 'neutral' | 'positive'): string => {\n const phrases = YINZER_PHRASES[type];\n return phrases[Math.floor(Math.random() * phrases.length)] ?? '';\n};\n\nconst _formatTimestamp = (): string => dayjs().format('YYYY-MM-DD HH:mm:ss.SSS');\n\nconst _logWithStyle = (level: LogLevel, prefix: string, ...args: Array<unknown>): void => {\n const timestamp = _formatTimestamp();\n let bodyColor: Colors = colors.reset;\n if (prefix === 'NETWORK') {\n bodyColor = colors.gray;\n }\n\n if (level === 'error') {\n const logPrefix = `${colors.red}[${prefix}] ❌ [${timestamp}] [ERROR]${colors.reset}`;\n console.error(`${logPrefix}`, `${bodyColor}`, ...args, `${colors.reset} - ${_getRandomPhrase('negative')}`);\n return;\n }\n\n if (level === 'warn') {\n const logPrefix = `${colors.yellow}[${prefix}] ⚠️ [${timestamp}] [WARN]${colors.reset}`;\n console.warn(`${logPrefix}`, `${bodyColor}`, ...args, `${colors.reset} - ${_getRandomPhrase('neutral')}`);\n return;\n }\n\n if (level === 'off') {\n return;\n }\n\n const logPrefix = `${colors.cyan}[${prefix}] ✅ [${timestamp}] [INFO]${colors.reset}`;\n console.info(`${logPrefix}`, `${bodyColor}`, ...args, `${colors.reset} - ${_getRandomPhrase('positive')}`);\n};\n\n/**\n * Creates a logger instance with isolated state\n *\n * @param initialConfig - Optional configuration for the logger\n * @returns Logger instance with logging methods\n */\nconst createLogger = (\n initialConfig?: LoggerConfig,\n): {\n info: (...args: Array<unknown>) => void;\n warn: (...args: Array<unknown>) => void;\n error: (...args: Array<unknown>) => void;\n levels: typeof LOG_LEVELS;\n} => {\n const state = {\n logLevel: initialConfig?.logLevel ?? logLevels.info,\n prefix: initialConfig?.prefix ?? 'YINZER',\n logger: initialConfig?.logger ?? null,\n };\n\n const _getNumericLevel = (level: string): number => (LOG_LEVELS as Record<string, number>)[level] ?? LOG_LEVELS.info;\n\n const info = (...args: Array<unknown>): void => {\n if (_getNumericLevel(state.logLevel) < LOG_LEVELS.info) return;\n\n if (state.logger) {\n state.logger.info(...args);\n return;\n }\n\n _logWithStyle('info', state.prefix, ...args);\n };\n\n const warn = (...args: Array<unknown>): void => {\n if (_getNumericLevel(state.logLevel) < LOG_LEVELS.warn) return;\n\n if (state.logger) {\n state.logger.warn(...args);\n return;\n }\n\n _logWithStyle('warn', state.prefix, ...args);\n };\n\n const error = (...args: Array<unknown>): void => {\n if (_getNumericLevel(state.logLevel) < LOG_LEVELS.error) return;\n\n if (state.logger) {\n state.logger.error(...args);\n return;\n }\n\n _logWithStyle('error', state.prefix, ...args);\n };\n\n return {\n info,\n warn,\n error,\n levels: LOG_LEVELS,\n };\n};\n\n// Default shared logger instance\nexport const log = createLogger();\n\n// Factory for creating custom logger instances\nexport { createLogger };\n",
10
+ "import dayjs from 'dayjs';\nimport { colors } from '@constants/colors.ts';\nimport { logLevels } from '@constants/log.js';\nimport type { LogLevel } from '@typedefs/constants/log.ts';\nimport type { LoggerConfig } from '@typedefs/public/Logger.ts';\nimport type { Colors } from '@typedefs/constants/colors.js';\n\n/**\n * YinzerFlow Main Logging System 🏗️\n *\n * Simple, clean logging with Pittsburgh personality!\n * - Numeric levels (0=off, 1=error, 2=warn, 3=info)\n * - Smart formatting: Objects get pretty JSON, strings get YinzerFlow colors\n * - Table support: Use log.table() for structured data display\n * - Network logging is separate (see networkLog.ts)\n */\n\nconst LOG_LEVELS = {\n off: 0,\n error: 1,\n warn: 2,\n info: 3,\n} as const;\n\nconst YINZER_PHRASES = {\n positive: [\"n'at!\", 'yinz are good!', \"that's the way!\", 'right on!', \"lookin' good!\", 'way to go!', 'keep it up!'],\n neutral: [\"n'at\", 'yinz know', \"just sayin'\", \"that's how it is\", 'what can ya do', 'it happens'],\n 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'],\n} as const;\n\nconst _getRandomPhrase = (type: 'negative' | 'neutral' | 'positive'): string => {\n const phrases = YINZER_PHRASES[type];\n return phrases[Math.floor(Math.random() * phrases.length)] ?? '';\n};\n\nconst _formatTimestamp = (): string => dayjs().format('YYYY-MM-DD HH:mm:ss.SSS');\n\nconst _logWithStyle = (level: LogLevel, prefix: string, ...args: Array<unknown>): void => {\n const timestamp = _formatTimestamp();\n let bodyColor: Colors = colors.reset;\n if (prefix === 'NETWORK') {\n bodyColor = colors.gray;\n }\n\n if (level === 'error') {\n const logPrefix = `${colors.red}[${prefix}] ❌ [${timestamp}] [ERROR]${colors.reset}`;\n console.error(`${logPrefix}`, `${bodyColor}`, ...args, `${colors.reset} - ${_getRandomPhrase('negative')}`);\n return;\n }\n\n if (level === 'warn') {\n const logPrefix = `${colors.yellow}[${prefix}] ⚠️ [${timestamp}] [WARN]${colors.reset}`;\n console.warn(`${logPrefix}`, `${bodyColor}`, ...args, `${colors.reset} - ${_getRandomPhrase('neutral')}`);\n return;\n }\n\n if (level === 'off') {\n return;\n }\n\n const logPrefix = `${colors.cyan}[${prefix}] ✅ [${timestamp}] [INFO]${colors.reset}`;\n console.info(`${logPrefix}`, `${bodyColor}`, ...args, `${colors.reset} - ${_getRandomPhrase('positive')}`);\n};\n\nconst _logTable = (prefix: string, data: unknown, ...additionalArgs: Array<unknown>): void => {\n const timestamp = _formatTimestamp();\n const logPrefix = `${colors.magenta}[${prefix}] 📊 [${timestamp}] [TABLE]${colors.reset}`;\n\n console.log(`${logPrefix} - ${_getRandomPhrase('positive')}`);\n console.table(data);\n\n if (additionalArgs.length > 0) {\n console.log(`${colors.gray}Additional context:${colors.reset}`, ...additionalArgs);\n }\n};\n\n/**\n * Creates a logger instance with isolated state\n *\n * @param initialConfig - Optional configuration for the logger\n * @returns Logger instance with logging methods\n */\nconst createLogger = (\n initialConfig?: LoggerConfig,\n): {\n info: (...args: Array<unknown>) => void;\n warn: (...args: Array<unknown>) => void;\n error: (...args: Array<unknown>) => void;\n table: (data: unknown, ...additionalArgs: Array<unknown>) => void;\n levels: typeof LOG_LEVELS;\n} => {\n const state = {\n logLevel: initialConfig?.logLevel ?? logLevels.info,\n prefix: initialConfig?.prefix ?? 'YINZER',\n logger: initialConfig?.logger ?? null,\n };\n\n const _getNumericLevel = (level: string): number => (LOG_LEVELS as Record<string, number>)[level] ?? LOG_LEVELS.info;\n\n const info = (...args: Array<unknown>): void => {\n if (_getNumericLevel(state.logLevel) < LOG_LEVELS.info) return;\n\n if (state.logger) {\n state.logger.info(...args);\n return;\n }\n\n _logWithStyle('info', state.prefix, ...args);\n };\n\n const warn = (...args: Array<unknown>): void => {\n if (_getNumericLevel(state.logLevel) < LOG_LEVELS.warn) return;\n\n if (state.logger) {\n state.logger.warn(...args);\n return;\n }\n\n _logWithStyle('warn', state.prefix, ...args);\n };\n\n const error = (...args: Array<unknown>): void => {\n if (_getNumericLevel(state.logLevel) < LOG_LEVELS.error) return;\n\n if (state.logger) {\n state.logger.error(...args);\n return;\n }\n\n _logWithStyle('error', state.prefix, ...args);\n };\n\n const table = (data: unknown, ...additionalArgs: Array<unknown>): void => {\n if (_getNumericLevel(state.logLevel) < LOG_LEVELS.info) return;\n\n if (state.logger) {\n // Custom loggers probably don't have table method, so fallback to info\n state.logger.info('TABLE:', data, ...additionalArgs);\n return;\n }\n\n _logTable(state.prefix, data, ...additionalArgs);\n };\n\n return {\n info,\n warn,\n error,\n table,\n levels: LOG_LEVELS,\n };\n};\n\n// Default shared logger instance\nexport const log = createLogger();\n\n// Factory for creating custom logger instances\nexport { createLogger };\n",
11
11
  "// Shared ANSI Color codes (reused from main log system)\nexport const colors = {\n reset: '\\x1b[0m',\n cyan: '\\x1b[96m', // Cyan for info\n yellow: '\\x1b[93m', // Yellow for warn\n red: '\\x1b[91m', // Red for error\n green: '\\x1b[92m', // Green for success\n magenta: '\\x1b[95m', // Magenta for performance\n gray: '\\x1b[90m', // Gray for network logs\n} as const;\n",
12
12
  "/**\n * YinzerFlow Logging Levels\n *\n * String-based logging levels for intuitive configuration:\n * - 'off': No logging at all. Mainly used for network logging internally, but feel free to use it for other purposes.\n * - 'error': Only errors\n * - 'warn': Warnings and errors (includes security warnings, slow requests)\n * - 'info': Info, warnings, and errors (standard application logging)\n *\n * Network logging is controlled separately via boolean networkLogging config.\n */\nexport const logLevels = {\n off: 'off',\n error: 'error',\n warn: 'warn',\n info: 'info',\n} as const;\n",
13
13
  "import type { InternalJsonParserConfiguration } from '@typedefs/internal/InternalConfiguration.js';\nimport { log } from '@core/utils/log.ts';\n\n/**\n * Dangerous prototype properties that can lead to prototype pollution\n */\nconst DANGEROUS_PROPERTIES = ['__proto__', 'constructor', 'prototype'];\n\n/**\n * Parse JSON request body with comprehensive security protections\n *\n * Security Features:\n * - Request size validation\n * - Nesting depth limits to prevent stack overflow\n * - Prototype pollution protection\n * - Memory exhaustion protection (max keys, string length, array length)\n * - Proper error handling with security context\n */\nexport const parseApplicationJson = (body: string, config: InternalJsonParserConfiguration): unknown => {\n // Handle empty strings, whitespace, and null characters\n if (!body || !body.trim() || body.trim() === '\\0') {\n return undefined;\n }\n\n // SECURITY: Validate request body size to prevent DoS attacks\n const bodySize = Buffer.byteLength(body, 'utf8');\n if (bodySize > config.maxSize) {\n log.warn('[SECURITY] JSON request body too large', {\n size: bodySize,\n limit: config.maxSize,\n sizeMB: Math.round(bodySize / 1024 / 1024),\n });\n throw new Error(`Request body too large: ${bodySize} bytes exceeds limit of ${config.maxSize} bytes`);\n }\n\n let parsedData: unknown = null; // Initialize to fix linting\n\n try {\n // First pass: Parse JSON to get structure\n parsedData = JSON.parse(body);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(`Invalid JSON syntax: ${message}`);\n }\n\n // SECURITY: Validate parsed data structure for security vulnerabilities\n try {\n _validateJsonStructure(parsedData, config, 1); // Start at depth 1 (root level)\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(`JSON security validation failed: ${message}`);\n }\n\n return parsedData;\n};\n\n/**\n * Validate primitive values (strings, numbers, etc.)\n */\nconst _validatePrimitive = (data: unknown, config: InternalJsonParserConfiguration): void => {\n if (typeof data === 'string' && data.length > config.maxStringLength) {\n throw new Error(`String too long: ${data.length} characters exceeds limit of ${config.maxStringLength}`);\n }\n};\n\n/**\n * Validate array structure and elements\n */\nconst _validateArray = (data: Array<unknown>, config: InternalJsonParserConfiguration, depth: number): void => {\n // SECURITY: Check array length to prevent memory exhaustion\n if (data.length > config.maxArrayLength) {\n throw new Error(`Array too large: ${data.length} elements exceeds limit of ${config.maxArrayLength}`);\n }\n\n // Recursively validate array elements\n for (const item of data) {\n _validateJsonStructure(item, config, depth + 1);\n }\n};\n\n/**\n * Validate object keys for security issues\n */\nconst _validateObjectKeys = (keys: Array<string>, config: InternalJsonParserConfiguration): void => {\n // SECURITY: Check number of keys to prevent memory exhaustion\n if (keys.length > config.maxKeys) {\n throw new Error(`Object has too many keys: ${keys.length} exceeds limit of ${config.maxKeys}`);\n }\n\n // SECURITY: Check for prototype pollution attempts\n if (!config.allowPrototypeProperties) {\n for (const key of keys) {\n if (DANGEROUS_PROPERTIES.includes(key)) {\n log.warn('[SECURITY] Prototype pollution attempt detected', {\n property: key,\n dangerousProperties: DANGEROUS_PROPERTIES,\n });\n throw new Error(`Prototype pollution attempt detected: property '${key}' is not allowed`);\n }\n }\n }\n};\n\n/**\n * Validate object properties and values\n */\nconst _validateObjectProperties = (data: Record<string, unknown>, config: InternalJsonParserConfiguration, depth: number): void => {\n const keys = Object.keys(data);\n\n for (const key of keys) {\n // SECURITY: Check key length\n if (key.length > config.maxStringLength) {\n throw new Error(`Object key too long: '${key.substring(0, 50)}...' exceeds limit of ${config.maxStringLength}`);\n }\n\n const value = data[key];\n\n // SECURITY: Check string value length\n if (typeof value === 'string' && value.length > config.maxStringLength) {\n throw new Error(`String value too long: property '${key}' has ${value.length} characters, exceeds limit of ${config.maxStringLength}`);\n }\n\n // Recursively validate nested structures\n _validateJsonStructure(value, config, depth + 1);\n }\n};\n\n/**\n * Recursively validate JSON structure for security vulnerabilities\n *\n * @param data - Data to validate\n * @param config - Security configuration\n * @param depth - Current nesting depth (starts at 1 for root level)\n */\nconst _validateJsonStructure = (data: unknown, config: InternalJsonParserConfiguration, depth: number): void => {\n // SECURITY: Check nesting depth to prevent stack overflow attacks\n if (depth > config.maxDepth) {\n log.warn('[SECURITY] JSON nesting too deep - potential stack overflow attack', {\n currentDepth: depth,\n maxDepth: config.maxDepth,\n });\n throw new Error(`JSON nesting too deep: current depth ${depth} exceeds maximum depth of ${config.maxDepth}`);\n }\n\n // Handle null and primitives\n if (data === null || typeof data !== 'object') {\n _validatePrimitive(data, config);\n return;\n }\n\n // Handle arrays\n if (Array.isArray(data)) {\n _validateArray(data, config, depth);\n return;\n }\n\n // Handle objects\n const keys = Object.keys(data);\n _validateObjectKeys(keys, config);\n _validateObjectProperties(data as Record<string, unknown>, config, depth);\n};\n",
@@ -40,7 +40,7 @@
40
40
  "import { httpMethod } from '@constants/http.ts';\nimport { handleCustomConfiguration } from '@core/setup/utils/handleCustomConfiguration.ts';\nimport type { InternalSetupImpl } 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';\nimport { GroupApp } from '@core/setup/GroupApp.ts';\nimport { ensureCompleteRouteOptions } from '@core/setup/utils/routeUtils.js';\nimport type { RouteGroup } from '@typedefs/public/Setup.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<any>, options?: InternalRouteRegistryOptions): void {\n const routeOptions = ensureCompleteRouteOptions(options);\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<any>, options?: InternalRouteRegistryOptions): void {\n this._routeRegistry._register({ method: httpMethod.head, handler, path, options: ensureCompleteRouteOptions(options), params: {} });\n }\n\n post(path: string, handler: HandlerCallback<any>, options?: InternalRouteRegistryOptions): void {\n this._routeRegistry._register({ method: httpMethod.post, handler, path, options: ensureCompleteRouteOptions(options), params: {} });\n }\n\n put(path: string, handler: HandlerCallback<any>, options?: InternalRouteRegistryOptions): void {\n this._routeRegistry._register({ method: httpMethod.put, handler, path, options: ensureCompleteRouteOptions(options), params: {} });\n }\n\n patch(path: string, handler: HandlerCallback<any>, options?: InternalRouteRegistryOptions): void {\n this._routeRegistry._register({ method: httpMethod.patch, handler, path, options: ensureCompleteRouteOptions(options), params: {} });\n }\n\n delete(path: string, handler: HandlerCallback<any>, options?: InternalRouteRegistryOptions): void {\n this._routeRegistry._register({ method: httpMethod.delete, handler, path, options: ensureCompleteRouteOptions(options), params: {} });\n }\n\n options(path: string, handler: HandlerCallback<any>, options?: InternalRouteRegistryOptions): void {\n this._routeRegistry._register({ method: httpMethod.options, handler, path, options: ensureCompleteRouteOptions(options), params: {} });\n }\n\n group(prefix: string, callback: (group: RouteGroup) => void, options?: InternalRouteRegistryOptions): RouteGroup {\n // Create a group app that can handle nested groups and route registration\n const groupApp = new GroupApp(this, prefix, options);\n\n // Execute callback to register routes\n callback(groupApp);\n\n return groupApp;\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<any>>, options?: InternalGlobalHookOptions): void {\n this._hooks._addBeforeHooks(handlers, options);\n }\n\n afterAll(handlers: Array<HandlerCallback<any>>, options?: InternalGlobalHookOptions): void {\n this._hooks._addAfterHooks(handlers, options);\n }\n\n onError(handler: HandlerCallback<any>): void {\n this._hooks._addOnError(handler);\n }\n\n onNotFound(handler: HandlerCallback<any>): void {\n this._hooks._addOnNotFound(handler);\n }\n}\n",
41
41
  "import { colors } from '@constants/colors.ts';\nimport { logLevels } from '@constants/log.ts';\nimport { createLogger } from '@core/utils/log.ts';\nimport type { Logger, LoggerConfig } from '@typedefs/public/Logger.ts';\n\nconst baseConfig: LoggerConfig = {\n prefix: 'NETWORK',\n logLevel: 'off',\n logger: undefined,\n};\n\nexport const networkLog = {\n log: createLogger(baseConfig),\n enable: (customLogger?: Logger): void => {\n networkLog.log = createLogger({ ...baseConfig, logLevel: logLevels.info, logger: customLogger });\n },\n};\n\n/**\n * Get status emoji for response codes\n */\nexport const getStatusEmoji = (statusCode: number): string => {\n if (statusCode >= 200 && statusCode < 300) return '✅';\n if (statusCode >= 300 && statusCode < 400) return '🔄';\n if (statusCode >= 400 && statusCode < 500) return '❌';\n if (statusCode >= 500) return '💥';\n return '❓';\n};\n\n/**\n * Performance thresholds with Pittsburgh personality\n */\nconst PERFORMANCE_THRESHOLDS = [\n { maxTime: 50, emoji: '⚡', phrase: 'faster than a Stillers touchdown!' },\n { maxTime: 100, emoji: '🔥', phrase: \"smooth as butter n'at!\" },\n { maxTime: 200, emoji: '✅', phrase: 'not bad yinz!' },\n { maxTime: 500, emoji: '⚠️', phrase: \"slowin' down a bit there\" },\n { maxTime: 1000, emoji: '🐌', phrase: \"that's draggin' n'at\" },\n { maxTime: Infinity, emoji: '💥', phrase: 'what a jagoff response time!' },\n] as const;\n\n/**\n * Get performance details for response time with Pittsburgh personality\n */\nexport const logPerformanceDetails = (timeMs: number): void => {\n const threshold = PERFORMANCE_THRESHOLDS.find((t) => timeMs < t.maxTime) ?? PERFORMANCE_THRESHOLDS[PERFORMANCE_THRESHOLDS.length - 1];\n if (!threshold) throw new Error('No threshold found for performance details');\n\n networkLog.log.warn(`${colors.magenta} ${threshold.emoji} Response time: ${timeMs}ms - ${threshold.phrase}${colors.reset}`);\n};\n"
42
42
  ],
43
- "mappings": "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",
44
- "debugId": "3F513051214C494F64756E2164756E21",
43
+ "mappings": "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",
44
+ "debugId": "E2AA94F639968B3064756E2164756E21",
45
45
  "names": []
46
46
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yinzerflow",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "author": "Patrick Rizzardi <patrick@redact.digital> (https://redact.digital)",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/yinzers/YinzerFlow/blob/main/docs/start-here.md",