blaizejs 0.9.1 → 0.9.2

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.
Files changed (23) hide show
  1. package/dist/{chunk-F5H5OBHM.js → chunk-3ICDFF57.js} +3 -3
  2. package/dist/{chunk-R3JL7ON5.js → chunk-GIZW5W7C.js} +3 -3
  3. package/dist/{chunk-DPYJQIB7.js → chunk-I5FNWSJS.js} +2 -2
  4. package/dist/{chunk-AKDBR54N.js → chunk-ULIQB554.js} +3 -3
  5. package/dist/{chunk-QJUGD43P.js → chunk-XIPQPFN5.js} +3 -3
  6. package/dist/index.cjs +2 -2
  7. package/dist/index.cjs.map +1 -1
  8. package/dist/index.js +4 -4
  9. package/dist/index.js.map +1 -1
  10. package/dist/{internal-server-error-7SEY7BZA.js → internal-server-error-DVVTTWHD.js} +3 -3
  11. package/dist/{payload-too-large-error-YH4HCBKH.js → payload-too-large-error-QGRSATV5.js} +3 -3
  12. package/dist/{unsupported-media-type-error-LT2YSXHC.js → unsupported-media-type-error-VAT4HTL4.js} +3 -3
  13. package/dist/{validation-error-PDIQPFC7.js → validation-error-N57OM7AM.js} +3 -3
  14. package/package.json +2 -2
  15. /package/dist/{chunk-F5H5OBHM.js.map → chunk-3ICDFF57.js.map} +0 -0
  16. /package/dist/{chunk-R3JL7ON5.js.map → chunk-GIZW5W7C.js.map} +0 -0
  17. /package/dist/{chunk-DPYJQIB7.js.map → chunk-I5FNWSJS.js.map} +0 -0
  18. /package/dist/{chunk-AKDBR54N.js.map → chunk-ULIQB554.js.map} +0 -0
  19. /package/dist/{chunk-QJUGD43P.js.map → chunk-XIPQPFN5.js.map} +0 -0
  20. /package/dist/{internal-server-error-7SEY7BZA.js.map → internal-server-error-DVVTTWHD.js.map} +0 -0
  21. /package/dist/{payload-too-large-error-YH4HCBKH.js.map → payload-too-large-error-QGRSATV5.js.map} +0 -0
  22. /package/dist/{unsupported-media-type-error-LT2YSXHC.js.map → unsupported-media-type-error-VAT4HTL4.js.map} +0 -0
  23. /package/dist/{validation-error-PDIQPFC7.js.map → validation-error-N57OM7AM.js.map} +0 -0
@@ -1,11 +1,11 @@
1
1
 
2
2
  /**
3
- * blaizejs v0.9.1
3
+ * blaizejs v0.9.2
4
4
  * A blazing-fast, TypeScript-first Node.js framework with HTTP/2 support, file-based routing, powerful middleware system, and end-to-end type safety for building modern APIs.
5
5
  *
6
6
  * Copyright (c) 2026 BlaizeJS Contributors
7
7
  * @license MIT
8
8
  */
9
9
 
10
- import{c as r,h as e}from"./chunk-DPYJQIB7.js";var t=class extends e{constructor(n,o=void 0,i=void 0){super("INTERNAL_SERVER_ERROR",n,500,i??r(),o)}};export{t as a};
11
- //# sourceMappingURL=chunk-F5H5OBHM.js.map
10
+ import{c as r,h as e}from"./chunk-I5FNWSJS.js";var t=class extends e{constructor(n,o=void 0,i=void 0){super("INTERNAL_SERVER_ERROR",n,500,i??r(),o)}};export{t as a};
11
+ //# sourceMappingURL=chunk-3ICDFF57.js.map
@@ -1,11 +1,11 @@
1
1
 
2
2
  /**
3
- * blaizejs v0.9.1
3
+ * blaizejs v0.9.2
4
4
  * A blazing-fast, TypeScript-first Node.js framework with HTTP/2 support, file-based routing, powerful middleware system, and end-to-end type safety for building modern APIs.
5
5
  *
6
6
  * Copyright (c) 2026 BlaizeJS Contributors
7
7
  * @license MIT
8
8
  */
9
9
 
10
- import{c as r,h as o}from"./chunk-DPYJQIB7.js";var e=class extends o{constructor(t,a,i){super("PAYLOAD_TOO_LARGE",t,413,i??r(),a)}};export{e as a};
11
- //# sourceMappingURL=chunk-R3JL7ON5.js.map
10
+ import{c as r,h as o}from"./chunk-I5FNWSJS.js";var e=class extends o{constructor(t,a,i){super("PAYLOAD_TOO_LARGE",t,413,i??r(),a)}};export{e as a};
11
+ //# sourceMappingURL=chunk-GIZW5W7C.js.map
@@ -1,6 +1,6 @@
1
1
 
2
2
  /**
3
- * blaizejs v0.9.1
3
+ * blaizejs v0.9.2
4
4
  * A blazing-fast, TypeScript-first Node.js framework with HTTP/2 support, file-based routing, powerful middleware system, and end-to-end type safety for building modern APIs.
5
5
  *
6
6
  * Copyright (c) 2026 BlaizeJS Contributors
@@ -8,4 +8,4 @@
8
8
  */
9
9
 
10
10
  import{AsyncLocalStorage as u}from"node:async_hooks";var a={headerName:"x-correlation-id",generator:d},s={...a},c=new u;function d(){let t=Date.now().toString(36),r=Math.random().toString(36).substr(2,9);return`req_${t}_${r}`}function f(t,r){s={headerName:t||a.headerName,generator:r||a.generator}}function _(){return s.headerName}function m(){return s.generator()}function S(){let t=c.getStore();return t&&t.trim()?t:"unknown"}function I(t,r){return c.run(t,r)}function C(t){let r=s.headerName,n=t[r],i;return Array.isArray(n)?i=n[0]:typeof n=="string"&&(i=n),i&&i.trim()?i:m()}var E=(e=>(e.VALIDATION_ERROR="VALIDATION_ERROR",e.NOT_FOUND="NOT_FOUND",e.UNAUTHORIZED="UNAUTHORIZED",e.FORBIDDEN="FORBIDDEN",e.SSE_NOT_ACCEPTABLE="SSE_NOT_ACCEPTABLE",e.CONFLICT="CONFLICT",e.RATE_LIMITED="RATE_LIMITED",e.INTERNAL_SERVER_ERROR="INTERNAL_SERVER_ERROR",e.PAYLOAD_TOO_LARGE="PAYLOAD_TOO_LARGE",e.UNSUPPORTED_MEDIA_TYPE="UNSUPPORTED_MEDIA_TYPE",e.UPLOAD_TIMEOUT="UPLOAD_TIMEOUT",e.UNPROCESSABLE_ENTITY="UNPROCESSABLE_ENTITY",e.NETWORK_ERROR="NETWORK_ERROR",e.TIMEOUT_ERROR="TIMEOUT_ERROR",e.PARSE_ERROR="PARSE_ERROR",e.HTTP_ERROR="HTTP_ERROR",e.SSE_CONNECTION_ERROR="SSE_CONNECTION_ERROR",e.SSE_BUFFER_OVERFLOW="SSE_BUFFER_OVERFLOW",e.SSE_STREAM_CLOSED="SSE_STREAM_CLOSED",e.SERVICE_UNAVAILABLE="SERVICE_UNAVAILABLE",e))(E||{}),p=(o=>(o.LOW="low",o.MEDIUM="medium",o.HIGH="high",o.CRITICAL="critical",o))(p||{}),l=class extends Error{type;title;status;correlationId;timestamp;details;constructor(r,n,i,o,g){super(n),this.name=this.constructor.name,this.type=r,this.title=n,this.status=i,this.correlationId=o,this.timestamp=new Date,this.details=g,Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}toJSON(){let r={type:this.type,title:this.title,status:this.status,correlationId:this.correlationId,timestamp:this.timestamp.toISOString()};return this.details!==void 0?{...r,details:this.details}:r}toString(){return`${this.name}: ${this.title} [${this.correlationId}]`}};export{f as a,_ as b,S as c,I as d,C as e,E as f,p as g,l as h};
11
- //# sourceMappingURL=chunk-DPYJQIB7.js.map
11
+ //# sourceMappingURL=chunk-I5FNWSJS.js.map
@@ -1,11 +1,11 @@
1
1
 
2
2
  /**
3
- * blaizejs v0.9.1
3
+ * blaizejs v0.9.2
4
4
  * A blazing-fast, TypeScript-first Node.js framework with HTTP/2 support, file-based routing, powerful middleware system, and end-to-end type safety for building modern APIs.
5
5
  *
6
6
  * Copyright (c) 2026 BlaizeJS Contributors
7
7
  * @license MIT
8
8
  */
9
9
 
10
- import{c as r,h as o}from"./chunk-DPYJQIB7.js";var t=class extends o{constructor(n,s,e){super("UNSUPPORTED_MEDIA_TYPE",n,415,e??r(),s)}};export{t as a};
11
- //# sourceMappingURL=chunk-AKDBR54N.js.map
10
+ import{c as r,h as o}from"./chunk-I5FNWSJS.js";var t=class extends o{constructor(n,s,e){super("UNSUPPORTED_MEDIA_TYPE",n,415,e??r(),s)}};export{t as a};
11
+ //# sourceMappingURL=chunk-ULIQB554.js.map
@@ -1,11 +1,11 @@
1
1
 
2
2
  /**
3
- * blaizejs v0.9.1
3
+ * blaizejs v0.9.2
4
4
  * A blazing-fast, TypeScript-first Node.js framework with HTTP/2 support, file-based routing, powerful middleware system, and end-to-end type safety for building modern APIs.
5
5
  *
6
6
  * Copyright (c) 2026 BlaizeJS Contributors
7
7
  * @license MIT
8
8
  */
9
9
 
10
- import{c as r,h as e}from"./chunk-DPYJQIB7.js";var i=class extends e{constructor(o,t=void 0,n=void 0){super("VALIDATION_ERROR",o,400,n??r(),t)}};export{i as a};
11
- //# sourceMappingURL=chunk-QJUGD43P.js.map
10
+ import{c as r,h as e}from"./chunk-I5FNWSJS.js";var i=class extends e{constructor(o,t=void 0,n=void 0){super("VALIDATION_ERROR",o,400,n??r(),t)}};export{i as a};
11
+ //# sourceMappingURL=chunk-XIPQPFN5.js.map
package/dist/index.cjs CHANGED
@@ -1,13 +1,13 @@
1
1
 
2
2
  /**
3
- * blaizejs v0.9.1
3
+ * blaizejs v0.9.2
4
4
  * A blazing-fast, TypeScript-first Node.js framework with HTTP/2 support, file-based routing, powerful middleware system, and end-to-end type safety for building modern APIs.
5
5
  *
6
6
  * Copyright (c) 2026 BlaizeJS Contributors
7
7
  * @license MIT
8
8
  */
9
9
 
10
- "use strict";var Pn=Object.create;var ze=Object.defineProperty;var Mn=Object.getOwnPropertyDescriptor;var zn=Object.getOwnPropertyNames;var _n=Object.getPrototypeOf,kn=Object.prototype.hasOwnProperty;var re=(e,t)=>()=>(e&&(t=e(e=0)),t);var le=(e,t)=>{for(var r in t)ze(e,r,{get:t[r],enumerable:!0})},Ut=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of zn(t))!kn.call(e,o)&&o!==r&&ze(e,o,{get:()=>t[o],enumerable:!(n=Mn(t,o))||n.enumerable});return e};var k=(e,t,r)=>(r=e!=null?Pn(_n(e)):{},Ut(t||!e||!e.__esModule?ze(r,"default",{value:e,enumerable:!0}):r,e)),On=e=>Ut(ze({},"__esModule",{value:!0}),e);function Nn(){let e=Date.now().toString(36),t=Math.random().toString(36).substr(2,9);return`req_${e}_${t}`}function Gt(e,t){ke={headerName:e||lt.headerName,generator:t||lt.generator}}function K(){return ke.headerName}function $n(){return ke.generator()}function h(){let e=Qt.getStore();return e&&e.trim()?e:"unknown"}function Zt(e,t){return Qt.run(e,t)}function Oe(e){let t=ke.headerName,r=e[t],n;return Array.isArray(r)?n=r[0]:typeof r=="string"&&(n=r),n&&n.trim()?n:$n()}var Wt,lt,ke,Qt,C=re(()=>{"use strict";Wt=require("async_hooks"),lt={headerName:"x-correlation-id",generator:Nn},ke={...lt},Qt=new Wt.AsyncLocalStorage});var z,Jt,v,M=re(()=>{"use strict";z=(E=>(E.VALIDATION_ERROR="VALIDATION_ERROR",E.NOT_FOUND="NOT_FOUND",E.UNAUTHORIZED="UNAUTHORIZED",E.FORBIDDEN="FORBIDDEN",E.SSE_NOT_ACCEPTABLE="SSE_NOT_ACCEPTABLE",E.CONFLICT="CONFLICT",E.RATE_LIMITED="RATE_LIMITED",E.INTERNAL_SERVER_ERROR="INTERNAL_SERVER_ERROR",E.PAYLOAD_TOO_LARGE="PAYLOAD_TOO_LARGE",E.UNSUPPORTED_MEDIA_TYPE="UNSUPPORTED_MEDIA_TYPE",E.UPLOAD_TIMEOUT="UPLOAD_TIMEOUT",E.UNPROCESSABLE_ENTITY="UNPROCESSABLE_ENTITY",E.NETWORK_ERROR="NETWORK_ERROR",E.TIMEOUT_ERROR="TIMEOUT_ERROR",E.PARSE_ERROR="PARSE_ERROR",E.HTTP_ERROR="HTTP_ERROR",E.SSE_CONNECTION_ERROR="SSE_CONNECTION_ERROR",E.SSE_BUFFER_OVERFLOW="SSE_BUFFER_OVERFLOW",E.SSE_STREAM_CLOSED="SSE_STREAM_CLOSED",E.SERVICE_UNAVAILABLE="SERVICE_UNAVAILABLE",E))(z||{}),Jt=(o=>(o.LOW="low",o.MEDIUM="medium",o.HIGH="high",o.CRITICAL="critical",o))(Jt||{}),v=class extends Error{type;title;status;correlationId;timestamp;details;constructor(t,r,n,o,i){super(r),this.name=this.constructor.name,this.type=t,this.title=r,this.status=n,this.correlationId=o,this.timestamp=new Date,this.details=i,Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}toJSON(){let t={type:this.type,title:this.title,status:this.status,correlationId:this.correlationId,timestamp:this.timestamp.toISOString()};return this.details!==void 0?{...t,details:this.details}:t}toString(){return`${this.name}: ${this.title} [${this.correlationId}]`}}});var X={};le(X,{ValidationError:()=>b});var b,A=re(()=>{"use strict";M();C();b=class extends v{constructor(t,r=void 0,n=void 0){super("VALIDATION_ERROR",t,400,n??h(),r)}}});var wt={};le(wt,{PayloadTooLargeError:()=>I});var I,Se=re(()=>{"use strict";M();C();I=class extends v{constructor(t,r,n){super("PAYLOAD_TOO_LARGE",t,413,n??h(),r)}}});var vt={};le(vt,{UnsupportedMediaTypeError:()=>V});var V,we=re(()=>{"use strict";M();C();V=class extends v{constructor(t,r,n){super("UNSUPPORTED_MEDIA_TYPE",t,415,n??h(),r)}}});var Pr={};le(Pr,{InternalServerError:()=>q});var q,ve=re(()=>{"use strict";M();C();q=class extends v{constructor(t,r=void 0,n=void 0){super("INTERNAL_SERVER_ERROR",t,500,n??h(),r)}}});var rs={};le(rs,{Blaize:()=>ts,BlaizeError:()=>v,ConflictError:()=>rt,ConsoleTransport:()=>$,ErrorSeverity:()=>Jt,ErrorType:()=>z,EventValidationError:()=>j,ForbiddenError:()=>ie,InternalServerError:()=>q,JSONTransport:()=>J,Logger:()=>ne,MemoryEventBus:()=>oe,MiddlewareAPI:()=>xn,NotFoundError:()=>W,NullTransport:()=>ue,PayloadTooLargeError:()=>I,PluginsAPI:()=>Rn,RateLimitError:()=>nt,RequestTimeoutError:()=>ot,RouterAPI:()=>bn,ServerAPI:()=>Tn,ServiceNotAvailableError:()=>st,UnauthorizedError:()=>tt,UnprocessableEntityError:()=>it,UnsupportedMediaTypeError:()=>V,VERSION:()=>En,ValidationError:()=>b,asMiddlewareArray:()=>Ki,asPluginArray:()=>Yi,buildUrl:()=>Ge,compilePathPattern:()=>se,compose:()=>Y,configureGlobalLogger:()=>de,cors:()=>me,createDeleteRoute:()=>je,createGetRoute:()=>Ue,createHeadRoute:()=>We,createLogger:()=>O,createMatcher:()=>ae,createMiddleware:()=>F,createMiddlewareArray:()=>Xi,createOptionsRoute:()=>Qe,createPatchRoute:()=>Ve,createPlugin:()=>Ae,createPluginArray:()=>es,createPostRoute:()=>He,createPutRoute:()=>qe,createRouteFactory:()=>St,createServer:()=>et,createServiceMiddleware:()=>Le,createStateMiddleware:()=>Fe,createTypedEventBus:()=>pe,extractParams:()=>te,file:()=>At,getCorrelationId:()=>h,inferContext:()=>$t,isMiddleware:()=>Zi,isPlugin:()=>Ji,logger:()=>P,paramsToQuery:()=>he,requestLoggerMiddleware:()=>gt});module.exports=On(rs);var Ht={name:"blaizejs",version:"0.9.1",description:"A blazing-fast, TypeScript-first Node.js framework with HTTP/2 support, file-based routing, powerful middleware system, and end-to-end type safety for building modern APIs.",author:"J.Lea-Jones <jason@careymarcel.com>",repository:{type:"git",url:"https://github.com/jleajones/blaize.git"},homepage:"https://github.com/jleajones/blaize/tree/main/packages/blaize-core#readme",bugs:{url:"https://github.com/jleajones/blaize/issues"},publishConfig:{access:"public"},type:"module",main:"./dist/index.js",types:"./dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.js",require:"./dist/index.cjs"}},files:["dist"],scripts:{dev:"NODE_ENV=development tsx --watch src/examples/basic.ts",build:"NODE_ENV=production tsup --minify","build:watch":"NODE_ENV=production tsup --watch","type-check":"tsc --noEmit",test:"vitest run --typecheck","test:watch":"vitest","test:coverage":"vitest run --coverage",lint:"eslint .",clean:"rimraf dist"},dependencies:{zod:"^3.24.4"},devDependencies:{"@blaizejs/eslint-config":"workspace:*","@blaizejs/testing-utils":"workspace:*","@blaizejs/tsconfig":"workspace:*","@blaizejs/tsup-config":"workspace:*","@blaizejs/vitest-config":"workspace:*","@types/node":"^22.15.17","@types/selfsigned":"^2.1.0","@vitest/coverage-v8":"^3.1.3",chokidar:"^4.0.3",selfsigned:"^2.4.1",tsx:"^4.19.4",typescript:"^5.8.3","vite-tsconfig-paths":"^5.1.4",vitest:"^3.1.3"},keywords:["nodejs","framework","typescript","http","http2","server","file-based-routing","middleware","plugins","type-safe"],license:"MIT"};var ut=require("crypto");var jt=require("util");function at(e){return e instanceof Error}function ct(e){return{message:e.message,name:e.name,stack:e.stack}}function _e(e){let t={};for(let[r,n]of Object.entries(e))if(at(n))t[r]=ct(n);else if(Array.isArray(n))t[r]=n.map(o=>at(o)?ct(o):o);else if(n instanceof Date)t[r]=n;else if(n&&typeof n=="object"){let o={};for(let[i,s]of Object.entries(n))at(s)?o[i]=ct(s):o[i]=s;t[r]=o}else t[r]=n;return t}function qt(){let e=new WeakSet;return(t,r)=>{if(typeof r=="object"&&r!==null){if(e.has(r))return"[Circular]";e.add(r)}return r}}var Ln={debug:"\x1B[36m",info:"\x1B[32m",warn:"\x1B[33m",error:"\x1B[31m"},An="\x1B[0m",Bn="\x1B[1m",$=class{write(t,r,n){let o=_e(n),a=`${`${Ln[t]}${Bn}[${t.toUpperCase()}]${An}`} ${r}`,l=Object.keys(o).length>0?`
10
+ "use strict";var Pn=Object.create;var ze=Object.defineProperty;var Mn=Object.getOwnPropertyDescriptor;var zn=Object.getOwnPropertyNames;var _n=Object.getPrototypeOf,kn=Object.prototype.hasOwnProperty;var re=(e,t)=>()=>(e&&(t=e(e=0)),t);var le=(e,t)=>{for(var r in t)ze(e,r,{get:t[r],enumerable:!0})},Ut=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of zn(t))!kn.call(e,o)&&o!==r&&ze(e,o,{get:()=>t[o],enumerable:!(n=Mn(t,o))||n.enumerable});return e};var k=(e,t,r)=>(r=e!=null?Pn(_n(e)):{},Ut(t||!e||!e.__esModule?ze(r,"default",{value:e,enumerable:!0}):r,e)),On=e=>Ut(ze({},"__esModule",{value:!0}),e);function Nn(){let e=Date.now().toString(36),t=Math.random().toString(36).substr(2,9);return`req_${e}_${t}`}function Gt(e,t){ke={headerName:e||lt.headerName,generator:t||lt.generator}}function K(){return ke.headerName}function $n(){return ke.generator()}function h(){let e=Qt.getStore();return e&&e.trim()?e:"unknown"}function Zt(e,t){return Qt.run(e,t)}function Oe(e){let t=ke.headerName,r=e[t],n;return Array.isArray(r)?n=r[0]:typeof r=="string"&&(n=r),n&&n.trim()?n:$n()}var Wt,lt,ke,Qt,C=re(()=>{"use strict";Wt=require("async_hooks"),lt={headerName:"x-correlation-id",generator:Nn},ke={...lt},Qt=new Wt.AsyncLocalStorage});var z,Jt,v,M=re(()=>{"use strict";z=(E=>(E.VALIDATION_ERROR="VALIDATION_ERROR",E.NOT_FOUND="NOT_FOUND",E.UNAUTHORIZED="UNAUTHORIZED",E.FORBIDDEN="FORBIDDEN",E.SSE_NOT_ACCEPTABLE="SSE_NOT_ACCEPTABLE",E.CONFLICT="CONFLICT",E.RATE_LIMITED="RATE_LIMITED",E.INTERNAL_SERVER_ERROR="INTERNAL_SERVER_ERROR",E.PAYLOAD_TOO_LARGE="PAYLOAD_TOO_LARGE",E.UNSUPPORTED_MEDIA_TYPE="UNSUPPORTED_MEDIA_TYPE",E.UPLOAD_TIMEOUT="UPLOAD_TIMEOUT",E.UNPROCESSABLE_ENTITY="UNPROCESSABLE_ENTITY",E.NETWORK_ERROR="NETWORK_ERROR",E.TIMEOUT_ERROR="TIMEOUT_ERROR",E.PARSE_ERROR="PARSE_ERROR",E.HTTP_ERROR="HTTP_ERROR",E.SSE_CONNECTION_ERROR="SSE_CONNECTION_ERROR",E.SSE_BUFFER_OVERFLOW="SSE_BUFFER_OVERFLOW",E.SSE_STREAM_CLOSED="SSE_STREAM_CLOSED",E.SERVICE_UNAVAILABLE="SERVICE_UNAVAILABLE",E))(z||{}),Jt=(o=>(o.LOW="low",o.MEDIUM="medium",o.HIGH="high",o.CRITICAL="critical",o))(Jt||{}),v=class extends Error{type;title;status;correlationId;timestamp;details;constructor(t,r,n,o,i){super(r),this.name=this.constructor.name,this.type=t,this.title=r,this.status=n,this.correlationId=o,this.timestamp=new Date,this.details=i,Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}toJSON(){let t={type:this.type,title:this.title,status:this.status,correlationId:this.correlationId,timestamp:this.timestamp.toISOString()};return this.details!==void 0?{...t,details:this.details}:t}toString(){return`${this.name}: ${this.title} [${this.correlationId}]`}}});var X={};le(X,{ValidationError:()=>b});var b,A=re(()=>{"use strict";M();C();b=class extends v{constructor(t,r=void 0,n=void 0){super("VALIDATION_ERROR",t,400,n??h(),r)}}});var wt={};le(wt,{PayloadTooLargeError:()=>I});var I,Se=re(()=>{"use strict";M();C();I=class extends v{constructor(t,r,n){super("PAYLOAD_TOO_LARGE",t,413,n??h(),r)}}});var vt={};le(vt,{UnsupportedMediaTypeError:()=>V});var V,we=re(()=>{"use strict";M();C();V=class extends v{constructor(t,r,n){super("UNSUPPORTED_MEDIA_TYPE",t,415,n??h(),r)}}});var Pr={};le(Pr,{InternalServerError:()=>q});var q,ve=re(()=>{"use strict";M();C();q=class extends v{constructor(t,r=void 0,n=void 0){super("INTERNAL_SERVER_ERROR",t,500,n??h(),r)}}});var rs={};le(rs,{Blaize:()=>ts,BlaizeError:()=>v,ConflictError:()=>rt,ConsoleTransport:()=>$,ErrorSeverity:()=>Jt,ErrorType:()=>z,EventValidationError:()=>j,ForbiddenError:()=>ie,InternalServerError:()=>q,JSONTransport:()=>J,Logger:()=>ne,MemoryEventBus:()=>oe,MiddlewareAPI:()=>xn,NotFoundError:()=>W,NullTransport:()=>ue,PayloadTooLargeError:()=>I,PluginsAPI:()=>Rn,RateLimitError:()=>nt,RequestTimeoutError:()=>ot,RouterAPI:()=>bn,ServerAPI:()=>Tn,ServiceNotAvailableError:()=>st,UnauthorizedError:()=>tt,UnprocessableEntityError:()=>it,UnsupportedMediaTypeError:()=>V,VERSION:()=>En,ValidationError:()=>b,asMiddlewareArray:()=>Ki,asPluginArray:()=>Yi,buildUrl:()=>Ge,compilePathPattern:()=>se,compose:()=>Y,configureGlobalLogger:()=>de,cors:()=>me,createDeleteRoute:()=>je,createGetRoute:()=>Ue,createHeadRoute:()=>We,createLogger:()=>O,createMatcher:()=>ae,createMiddleware:()=>F,createMiddlewareArray:()=>Xi,createOptionsRoute:()=>Qe,createPatchRoute:()=>Ve,createPlugin:()=>Ae,createPluginArray:()=>es,createPostRoute:()=>He,createPutRoute:()=>qe,createRouteFactory:()=>St,createServer:()=>et,createServiceMiddleware:()=>Le,createStateMiddleware:()=>Fe,createTypedEventBus:()=>pe,extractParams:()=>te,file:()=>At,getCorrelationId:()=>h,inferContext:()=>$t,isMiddleware:()=>Zi,isPlugin:()=>Ji,logger:()=>P,paramsToQuery:()=>he,requestLoggerMiddleware:()=>gt});module.exports=On(rs);var Ht={name:"blaizejs",version:"0.9.2",description:"A blazing-fast, TypeScript-first Node.js framework with HTTP/2 support, file-based routing, powerful middleware system, and end-to-end type safety for building modern APIs.",author:"J.Lea-Jones <jason@careymarcel.com>",repository:{type:"git",url:"https://github.com/jleajones/blaize.git"},homepage:"https://github.com/jleajones/blaize/tree/main/packages/blaize-core#readme",bugs:{url:"https://github.com/jleajones/blaize/issues"},publishConfig:{access:"public"},type:"module",main:"./dist/index.js",types:"./dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.js",require:"./dist/index.cjs"}},files:["dist"],scripts:{dev:"NODE_ENV=development tsx --watch src/examples/basic.ts",build:"NODE_ENV=production tsup --minify","build:watch":"NODE_ENV=production tsup --watch","type-check":"tsc --noEmit",test:"vitest run --typecheck","test:watch":"vitest","test:coverage":"vitest run --coverage",lint:"eslint .",clean:"rimraf dist"},dependencies:{zod:"^3.24.4"},devDependencies:{"@blaizejs/eslint-config":"workspace:*","@blaizejs/testing-utils":"workspace:*","@blaizejs/tsconfig":"workspace:*","@blaizejs/tsup-config":"workspace:*","@blaizejs/vitest-config":"workspace:*","@types/node":"^22.15.17","@types/selfsigned":"^2.1.0","@vitest/coverage-v8":"^3.1.3",chokidar:"^4.0.3",selfsigned:"^2.4.1",tsx:"^4.19.4",typescript:"^5.8.3","vite-tsconfig-paths":"^5.1.4",vitest:"^3.1.3"},keywords:["nodejs","framework","typescript","http","http2","server","file-based-routing","middleware","plugins","type-safe"],license:"MIT"};var ut=require("crypto");var jt=require("util");function at(e){return e instanceof Error}function ct(e){return{message:e.message,name:e.name,stack:e.stack}}function _e(e){let t={};for(let[r,n]of Object.entries(e))if(at(n))t[r]=ct(n);else if(Array.isArray(n))t[r]=n.map(o=>at(o)?ct(o):o);else if(n instanceof Date)t[r]=n;else if(n&&typeof n=="object"){let o={};for(let[i,s]of Object.entries(n))at(s)?o[i]=ct(s):o[i]=s;t[r]=o}else t[r]=n;return t}function qt(){let e=new WeakSet;return(t,r)=>{if(typeof r=="object"&&r!==null){if(e.has(r))return"[Circular]";e.add(r)}return r}}var Ln={debug:"\x1B[36m",info:"\x1B[32m",warn:"\x1B[33m",error:"\x1B[31m"},An="\x1B[0m",Bn="\x1B[1m",$=class{write(t,r,n){let o=_e(n),a=`${`${Ln[t]}${Bn}[${t.toUpperCase()}]${An}`} ${r}`,l=Object.keys(o).length>0?`
11
11
 
12
12
  ${(0,jt.inspect)(o,{colors:!0,depth:3,compact:!1,breakLength:80})}`:"";switch(t){case"error":console.error(a+l);break;case"warn":console.warn(a+l);break;case"debug":case"info":default:console.log(a+l);break}}};var J=class{write(t,r,n){let o=_e(n),i={level:t,message:r,...o},s=JSON.stringify(i,qt());console.log(s)}async flush(){return Promise.resolve()}};var Vt={debug:0,info:1,warn:2,error:3},ne=class e{config;inheritedMeta;minLevelPriority;constructor(t,r){this.config=t,this.inheritedMeta=Object.freeze(r?{...r}:{}),this.minLevelPriority=Vt[t.level]}debug(t,r){this.log("debug",t,r)}info(t,r){this.log("info",t,r)}warn(t,r){this.log("warn",t,r)}error(t,r){this.log("error",t,r)}child(t){let r={...this.inheritedMeta,...t};return new e(this.config,r)}async flush(){await this.config.transport.flush?.()}log(t,r,n){if(!this.shouldLog(t))return;let o={...this.inheritedMeta,...n||{}},i=o;this.config.includeTimestamp&&(i={timestamp:new Date().toISOString(),...o});let s=this.redact(i);this.config.transport.write(t,r,s)}shouldLog(t){return Vt[t]>=this.minLevelPriority}redact(t){if(this.config.redactKeys.length===0)return t;let r=new Set(this.config.redactKeys.map(o=>o.toLowerCase())),n={};for(let[o,i]of Object.entries(t))r.has(o.toLowerCase())?n[o]="[REDACTED]":n[o]=i;return n}};function In(){return process.env.NODE_ENV!=="production"?new $:new J}function O(e){let t=process.env.NODE_ENV!=="production",r={level:e?.level??(t?"debug":"info"),transport:e?.transport??In(),redactKeys:e?.redactKeys??[],includeTimestamp:e?.includeTimestamp??!0};return new ne(r)}var ue=class{write(t,r,n){}async flush(){return Promise.resolve()}};var P=O({level:process.env.NODE_ENV==="development"?"debug":"info",transport:new $,includeTimestamp:!0,redactKeys:[]}),Dn=P;function de(e){let t=O(e);Dn=t,Object.assign(P,t)}C();function Un(e){if(e==="*")return/^.*$/;let t=e.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,"[^:]*");return new RegExp(`^${t}$`)}function Hn(e){if(e instanceof RegExp)return e;if(e.includes("*"))return Un(e);let t=e.replace(/[.+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`^${t}$`)}var oe=class{serverId;subscriptions=new Map;adapter;adapterUnsubscribe;logger;constructor(t,r){this.serverId=t||(0,ut.randomUUID)(),r?this.logger=r.child({component:"EventBus",serverId:this.serverId}):this.logger=O().child({component:"EventBus",serverId:this.serverId})}async publish(t,r){if(!t||t.trim()==="")throw new Error("Event type cannot be empty");let n={type:t,data:r,timestamp:Date.now(),serverId:this.serverId,correlationId:h()};if(await this.emitToSubscribers(n),this.adapter)try{await this.adapter.publish(n)}catch(o){this.logger.error("Adapter publish failed",{eventType:t,serverId:this.serverId,error:o instanceof Error?o.message:String(o)})}}subscribe(t,r){if(typeof t=="string"&&t.trim()==="")throw new Error("Pattern cannot be empty");let n=(0,ut.randomUUID)(),o=Hn(t),i={id:n,pattern:t,matcher:o,handler:r};this.subscriptions.set(n,i);let s=!1;return()=>{s||(this.subscriptions.delete(n),s=!0)}}async setAdapter(t){this.adapter&&await this.disconnectAdapter(),this.adapter=t,await t.connect(),this.adapterUnsubscribe=await t.subscribe("*",r=>{r.serverId!==this.serverId&&this.emitToSubscribers(r)}),this.logger.info("Adapter connected",{serverId:this.serverId,adapterType:t.constructor.name})}async disconnect(){this.adapter&&await this.disconnectAdapter(),this.subscriptions.clear(),this.logger.info("EventBus disconnected",{serverId:this.serverId})}async disconnectAdapter(){if(this.adapter){this.adapterUnsubscribe&&(this.adapterUnsubscribe(),this.adapterUnsubscribe=void 0);try{await this.adapter.disconnect()}catch(t){this.logger.error("Adapter disconnect failed",{serverId:this.serverId,error:t instanceof Error?t.message:String(t)})}this.adapter=void 0}}async emitToSubscribers(t){let r=[];for(let o of this.subscriptions.values())o.matcher.test(t.type)&&r.push(o.handler);let n=r.map(async o=>{try{await o(t)}catch(i){this.logger.error("Event handler error",{eventType:t.type,serverId:t.serverId,correlationId:t.correlationId,error:i instanceof Error?i.message:String(i),stack:i instanceof Error?i.stack:void 0})}});await Promise.all(n)}};var Kt=require("zod");M();var j=class extends v{constructor(t,r,n){super("VALIDATION_ERROR",t,400,n??crypto.randomUUID(),r),this.name="EventValidationError"}toJSON(){let t={type:this.type,title:this.title,status:this.status,correlationId:this.correlationId,timestamp:this.timestamp.toISOString()};if(this.details){let r={eventType:this.details.eventType,context:this.details.context};return this.details.zodError&&(r.errors=this.details.zodError.issues.map(n=>({path:n.path.join("."),message:n.message,code:n.code}))),this.details.data!==void 0&&(r.data=this.details.data),{...t,details:r}}return t}toString(){let t=this.details?.context?` during ${this.details.context}`:"",r=this.details?.eventType?` for '${this.details.eventType}'`:"";return`${this.name}: ${this.title}${r}${t} [${this.correlationId}]`}};var dt=class{base;schemas;options;logger;constructor(t,r,n){this.base=t,this.schemas=r.schemas,this.options={schemas:r.schemas,unknownEventBehavior:r.unknownEventBehavior??"warn",onValidationError:r.onValidationError},n?this.logger=n.child({component:"TypedEventBus",serverId:t.serverId}):this.logger=O().child({component:"TypedEventBus",serverId:t.serverId})}async publish(t,r){let n=this.validateEvent(t,r,"publish");await this.base.publish(t,n)}subscribe(t,r){return this.base.subscribe(t,async n=>{try{let o=this.validateEvent(n.type,n.data,"receive"),i={...n,data:o};await r(i)}catch(o){if(o instanceof j){this.logger.error("Receive validation failed, dropping event",{eventType:n.type,serverId:n.serverId,correlationId:n.correlationId,validationErrors:o.details?.zodError?.issues});return}throw this.logger.error("Handler error",{eventType:n.type,error:o instanceof Error?o.message:String(o),stack:o instanceof Error?o.stack:void 0}),o}})}async setAdapter(t){await this.base.setAdapter(t)}async disconnect(){await this.base.disconnect()}get serverId(){return this.base.serverId}validateEvent(t,r,n){let o=this.schemas[t];if(!o)return this.handleUnknownEvent(t,r,n);try{return o.parse(r)}catch(i){let s=new j(`Event validation failed for "${t}"`,{eventType:t,context:n,zodError:i instanceof Kt.z.ZodError?i:void 0,data:r});throw this.options.onValidationError&&this.options.onValidationError(s),s}}handleUnknownEvent(t,r,n){let o=this.options.unknownEventBehavior;if(o==="error"){let i=new j(`Unknown event type: "${t}"`,{eventType:t,context:n,data:r});throw this.options.onValidationError&&this.options.onValidationError(i),i}return o==="warn"&&this.logger.warn("Unknown event type, allowing through",{eventType:t,context:n}),r}};function pe(e,t,r){return new dt(e,t,r)}function Yt(e,t,r,n,o){if(!e||e.skip&&e.skip(t))return Promise.resolve(r());try{let i=e.execute({ctx:t,next:r,logger:n,eventBus:o});return i instanceof Promise?i:Promise.resolve(i)}catch(i){return Promise.reject(i)}}function Y(e){return e.length===0?async({next:t})=>{await Promise.resolve(t())}:async function(t){let{ctx:r,next:n,logger:o,eventBus:i}=t,s=new Set,a=async c=>{if(c>=e.length)return Promise.resolve(n());let l=e[c],u=()=>{if(s.has(c))throw new Error("next() called multiple times");return s.add(c),a(c+1)},p=o.child({middleware:l?.name||"anonymous"});return Yt(l,r,u,p,i)};return a(0)}}M();C();var ie=class extends v{constructor(t,r=void 0,n=void 0){super("FORBIDDEN",t,403,n??h(),r)}};function F(e){if(typeof e=="function")return{name:"anonymous",execute:e,debug:!1};let{name:t="anonymous",handler:r,skip:n,debug:o=!1}=e;return{name:t,execute:r,debug:o,...n!==void 0&&{skip:n}}}function Fe(e){return F({name:"state-middleware",handler:e})}function Le(e){return F({name:"service-middleware",handler:e})}var qn={origin:!0,methods:["GET","HEAD","PUT","PATCH","POST","DELETE"],credentials:!1,optionsSuccessStatus:204},jn={origin:!1,methods:["GET","HEAD"],credentials:!1,optionsSuccessStatus:204};function Xt(e){return e===void 0&&(e=process.env.NODE_ENV!=="production"),e?{...qn}:{...jn}}function Vn(e=6e4,t=1e3){let r=new Map,n={ttl:e,maxSize:t},o=(p,T,x)=>`${p}:${T}:${x||"anonymous"}`,i=()=>{if(r.size===0)return;let p=null,T=1/0;for(let[x,d]of r.entries())d.lastAccessed<T&&(T=d.lastAccessed,p=x);p&&r.delete(p)};return{get:(p,T,x)=>{let d=o(p,T,x),g=r.get(d);if(!g)return null;let w=Date.now();return w>g.expiresAt?(r.delete(d),null):(g.lastAccessed=w,g.allowed)},set:(p,T,x,d)=>{let g=o(p,x,d),w=Date.now();if(r.has(g)){r.set(g,{allowed:T,expiresAt:w+n.ttl,lastAccessed:w});return}r.size>=n.maxSize&&i(),r.set(g,{allowed:T,expiresAt:w+n.ttl,lastAccessed:w})},clear:()=>{r.clear()},cleanExpired:()=>{let p=Date.now(),T=0;for(let[x,d]of r.entries())p>d.expiresAt&&(r.delete(x),T++);return T},getStats:()=>({size:r.size,maxSize:n.maxSize,ttl:n.ttl})}}var er=Vn();function Wn(e){return typeof e=="boolean"||typeof e=="function"?!1:Array.isArray(e)?e.every(t=>typeof t=="string"||t instanceof RegExp):typeof e=="string"||e instanceof RegExp}function Qn(e){return typeof e=="string"?`str:${e}`:e instanceof RegExp?`regex:${e.source}:${e.flags}`:Array.isArray(e)?`array:[${e.map(t=>typeof t=="string"?`str:${t}`:t instanceof RegExp?`regex:${t.source}:${t.flags}`:"unknown").join(",")}]`:"unknown"}async function Gn(e,t){return t==="*"?!0:e===t}async function Zn(e,t){return t.test(e)}async function Jn(e,t,r,n=100){let o;try{let i=new Promise(a=>{o=setTimeout(()=>{a({timedOut:!0})},n)}),s=await Promise.race([Promise.resolve(t(e,r)).then(a=>({result:a})),i]);return o&&clearTimeout(o),"timedOut"in s?(console.warn(`CORS origin validation function timed out after ${n}ms for origin: ${e}`),!1):s.result}catch(i){return o&&clearTimeout(o),console.error("CORS origin validation function error:",i),!1}}async function tr(e,t,r){let n=t.map(i=>pt(e,i,r));return(await Promise.all(n)).some(i=>i===!0)}async function pt(e,t,r){return typeof t=="string"?Gn(e,t):t instanceof RegExp?Zn(e,t):typeof t=="function"?Jn(e,t,r):(console.warn("Unknown CORS origin type:",typeof t),!1)}async function fe(e,t,r){if(t===!0)return!0;if(t===!1)return!1;if(Wn(t)){let o=r?.state?.user?.id||r?.state?.userId,i=Qn(t),s=er.get(e,i,o);if(s!==null)return s;let a;return Array.isArray(t)?a=await tr(e,t,r):a=await pt(e,t,r),er.set(e,a,i,o),a}else return Array.isArray(t)?tr(e,t,r):pt(e,t,r)}A();function Kn(e){let t=e.request.header("origin")||e.request.header("Origin"),r=e.request.header("access-control-request-method")||e.request.header("Access-Control-Request-Method"),n=e.request.header("access-control-request-headers")||e.request.header("Access-Control-Request-Headers"),o=n?n.split(",").map(i=>i.trim().toLowerCase()):void 0;return{origin:t,requestedMethod:r,requestedHeaders:o}}function ft(e){return e.toUpperCase()}function Yn(e,t){return t?(typeof t=="string"?t.split(",").map(n=>n.trim()):t).map(n=>ft(n)).includes(ft(e)):["GET","HEAD","PUT","PATCH","POST","DELETE"].includes(ft(e))}function Xn(e,t){if(!e||e.length===0||t===void 0)return!0;let r=typeof t=="string"?t.split(",").map(n=>n.trim().toLowerCase()):t.map(n=>n.toLowerCase());return e.every(n=>r.includes(n.toLowerCase()))}function eo(e,t,r,n){n&&(t.origin===!0&&!t.credentials?e.response.header("Access-Control-Allow-Origin","*"):(e.response.header("Access-Control-Allow-Origin",r),e.response.header("Vary","Origin"))),t.credentials&&n&&e.response.header("Access-Control-Allow-Credentials","true");let o=t.methods||["GET","HEAD","PUT","PATCH","POST","DELETE"],i=typeof o=="string"?o:o.join(", ");if(e.response.header("Access-Control-Allow-Methods",i),t.allowedHeaders){let s=typeof t.allowedHeaders=="string"?t.allowedHeaders:t.allowedHeaders.join(", ");e.response.header("Access-Control-Allow-Headers",s)}else{let s=e.request.header("access-control-request-headers")||e.request.header("Access-Control-Request-Headers");s&&e.response.header("Access-Control-Allow-Headers",s)}t.maxAge!==void 0&&t.maxAge>=0&&e.response.header("Access-Control-Max-Age",String(t.maxAge))}async function rr(e,t){let r=Kn(e);if(!r.origin||!r.requestedMethod)throw e.response.status(403),new b("Invalid preflight request: missing required headers",{fields:[{field:r.origin?"Access-Control-Request-Method":"Origin",messages:["Required header is missing"]}],errorCount:1,section:"body"});let n=await fe(r.origin,t.origin||!1,e);if(!n)throw e.response.status(403),new b("CORS origin not allowed",{fields:[{field:"Origin",messages:[`Origin '${r.origin}' is not allowed`],rejectedValue:r.origin}],errorCount:1,section:"body"});if(!Yn(r.requestedMethod,t.methods))throw e.response.status(403),new b("CORS method not allowed",{fields:[{field:"Access-Control-Request-Method",messages:[`Method '${r.requestedMethod}' is not allowed`],rejectedValue:r.requestedMethod,expectedType:typeof t.methods=="string"?t.methods:t.methods?.join(", ")}],errorCount:1,section:"body"});if(!Xn(r.requestedHeaders,t.allowedHeaders)){let i=r.requestedHeaders?.filter(s=>{let a=t.allowedHeaders;return a?!(typeof a=="string"?a.split(",").map(l=>l.trim().toLowerCase()):a.map(l=>l.toLowerCase())).includes(s.toLowerCase()):!1});throw e.response.status(403),new b("CORS headers not allowed",{fields:[{field:"Access-Control-Request-Headers",messages:[`Headers not allowed: ${i?.join(", ")}`],rejectedValue:i}],errorCount:1,section:"body"})}eo(e,t,r.origin,n);let o=t.optionsSuccessStatus||204;e.response.status(o),t.preflightContinue||e.response.text("")}function mt(e){return e.request.method==="OPTIONS"&&!!(e.request.header("access-control-request-method")||e.request.header("Access-Control-Request-Method"))}var R=require("zod"),to=R.z.enum(["GET","POST","PUT","DELETE","PATCH","HEAD","OPTIONS","CONNECT","TRACE"]),ro=R.z.union([R.z.array(to),R.z.string().transform(e=>e.split(",").map(t=>t.trim()))]).optional(),nr=R.z.union([R.z.array(R.z.string()),R.z.string().transform(e=>e.split(",").map(t=>t.trim()))]).optional(),no=R.z.custom(e=>typeof e=="function"&&e.length<=2,{message:"Origin validator must be a function accepting (origin, ctx?) parameters"}),or=R.z.union([R.z.string(),R.z.instanceof(RegExp),no]),oo=R.z.union([R.z.boolean(),or,R.z.array(or)]),ir=R.z.object({origin:oo.optional(),methods:ro,allowedHeaders:nr,exposedHeaders:nr,credentials:R.z.boolean().optional(),maxAge:R.z.number().int().optional(),preflightContinue:R.z.boolean().optional(),optionsSuccessStatus:R.z.number().int().min(200).max(299).optional()}).strict(),sr=R.z.union([R.z.boolean(),ir]).optional();function ar(e){try{return typeof e=="boolean"?e===!1?{origin:!1}:{origin:!0}:ir.parse(e)}catch(t){if(t instanceof R.z.ZodError){let r=io(t);throw new Error(`Invalid CORS options:
13
13
  ${r}`)}throw new Error(`Invalid CORS options: ${String(t)}`)}}function io(e){return e.errors.map(r=>` - ${r.path.join(".")||"root"}: ${r.message}`).join(`