@jucie.io/engine-server 1.0.6 → 1.0.9

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/package.json CHANGED
@@ -1,17 +1,18 @@
1
1
  {
2
2
  "name": "@jucie.io/engine-server",
3
- "version": "1.0.6",
3
+ "version": "1.0.9",
4
4
  "description": "HTTP server service for @jucie.io/engine with routing, middleware, and multiple adapter support",
5
5
  "type": "module",
6
6
  "main": "./dist/main.js",
7
7
  "exports": {
8
- ".": "./dist/index.js"
8
+ ".": "./dist/main.js"
9
9
  },
10
10
  "files": [
11
11
  "dist/",
12
12
  "README.md"
13
13
  ],
14
14
  "scripts": {
15
+ "build": "node build.js",
15
16
  "test": "vitest"
16
17
  },
17
18
  "keywords": [
package/dist/server.js DELETED
@@ -1,8 +0,0 @@
1
- var St=Object.defineProperty;var re=(t,e)=>()=>(t&&(e=t(t=0)),e);var $t=(t,e)=>{for(var r in e)St(t,r,{get:e[r],enumerable:!0})};async function ht(t){return new Promise(e=>{if(t.method==="GET"||t.method==="HEAD"){e(null);return}let r=t.headers["content-type"]||"",n="";t.on("data",s=>{n+=s.toString()}),t.on("end",()=>{try{r.includes("application/json")?e(n?JSON.parse(n):{}):r.includes("application/x-www-form-urlencoded")?e(Vt(n)):r.includes("multipart/form-data")?e({raw:n}):e(n||null)}catch{e(null)}}),t.on("error",()=>{e(null)})})}function Vt(t){let e={},r=t.split("&");for(let n of r){let[s,o]=n.split("=");if(s){let a=decodeURIComponent(s),i=o?decodeURIComponent(o):"";if(a.endsWith("[]")){let l=a.slice(0,-2);e[l]||(e[l]=[]),e[l].push(i)}else e[a]=i}}return e}function ut(t){let e={};for(let[r,n]of t.entries())if(r.endsWith("[]")||/\[\d*\]$/.test(r)){let s=r.replace(/\[\d*\]$/,"").replace("[]","");e[s]||(e[s]=[]),e[s].push(n)}else e[r]=n;return e}var Te=re(()=>{});var _,Oe,Se=re(()=>{Te();_=class{static create(e){return new this(e)}constructor(e){this.name=e,this.server=null,this.kernel=null,this.log=null,this.hooks=null}async initialize(e,r={},n=null){if(this.kernel=e,this.opts=r,this.log=n,r.middleware&&!Array.isArray(r.middleware))throw new Error("opts.middleware must be an array")}async start(e){throw new Error(`start() must be implemented by ${this.name} adapter`)}async stop(){throw new Error(`stop() must be implemented by ${this.name} adapter`)}getHttpServer(){return this.server}isRunning(){return this.server!==null}async handleRequest(e,r){throw new Error(`handleRequest() must be implemented by ${this.name} adapter`)}createContext(e,r){let n=new URL(e.url||e.originalUrl,`http://${e.headers.host}`);return{req:{method:e.method,url:n.toString(),path:n.pathname,headers:Object.fromEntries(Object.entries(e.headers).map(([s,o])=>[s.toLowerCase(),o])),query:e.query||ut(n.searchParams),body:e.body||null,raw:{req:e,res:r},params:{}},res:r,respond:new Oe}}async sendResponse(e,r,n=!1){let s=r??{type:"text",status:204,headers:{},body:""};if(s.type!=="handled"&&!e.headersSent){if(e.statusCode=s.status??200,s.headers)for(let[o,a]of Object.entries(s.headers))e.setHeader(o.toLowerCase(),a);if(n)return e.end();switch(s.type){case"json":return e.getHeader("content-type")||e.setHeader("content-type","application/json; charset=utf-8"),e.end(JSON.stringify(s.body));case"text":return e.getHeader("content-type")||e.setHeader("content-type","text/plain; charset=utf-8"),e.end(s.body??"");case"html":return e.getHeader("content-type")||e.setHeader("content-type","text/html; charset=utf-8"),e.end(s.body??"");case"file":return await this.serveFile(e,s.path);case"stream":{let o=s.body;if(!o)return e.end();if(typeof o.pipe=="function")return o.pipe(e);if(Symbol.asyncIterator in Object(o)){for await(let a of o)e.write(a)||await new Promise(i=>e.once("drain",i));return e.end()}return e.end(o)}default:return e.end("")}}}async serveFile(e,r){let n=await import("node:fs"),s=await import("node:fs/promises"),o=await import("node:path"),{pipeline:a}=await import("node:stream"),{promisify:i}=await import("node:util"),l=i(a),c={".html":"text/html; charset=utf-8",".css":"text/css; charset=utf-8",".js":"application/javascript; charset=utf-8",".mjs":"application/javascript; charset=utf-8",".json":"application/json; charset=utf-8",".svg":"image/svg+xml",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".ico":"image/x-icon",".woff":"font/woff",".woff2":"font/woff2",".ttf":"font/ttf",".eot":"application/vnd.ms-fontobject"};try{let u=await s.stat(r);if(!u.isFile())return e.statusCode=404,e.setHeader("content-type","text/plain; charset=utf-8"),e.end("Not Found");let y=o.extname(r).toLowerCase();e.getHeader("content-type")||e.setHeader("content-type",c[y]??"application/octet-stream"),e.setHeader("content-length",String(u.size));let R=n.createReadStream(r);R.on("error",()=>{e.headersSent||(e.statusCode=404),e.end("Not Found")}),await l(R,e)}catch{e.headersSent||(e.statusCode=404,e.setHeader("content-type","text/plain; charset=utf-8")),e.end("Not Found")}}async handleError(e,r){this.log?.error?.("Request handling error:",r),e.headersSent||(e.statusCode=500,e.setHeader("content-type","text/plain; charset=utf-8"),e.end("Internal Server Error"))}},Oe=class{handled(){return{type:"handled"}}json(e,r=200,n={}){return{type:"json",status:r,headers:n,body:e}}text(e,r=200,n={}){return{type:"text",status:r,headers:n,body:e}}html(e,r=200,n={}){return{type:"html",status:r,headers:n,body:e}}file(e,r=200,n={}){return{type:"file",status:r,headers:n,path:e}}stream(e,r=200,n={}){return{type:"stream",status:r,headers:n,body:e}}redirect(e,r=302,n={}){return{type:"text",status:r,headers:{...n,location:e},body:""}}}});var vt={};$t(vt,{ExpressAdapter:()=>Ne});var Ne,Rt=re(()=>{Se();Ne=class extends _{#n=new Set;constructor(e=null){super("express"),this.express=e,this.app=null}async initialize(e,r={},n=null){if(await super.initialize(e,r,n),!this.express)try{this.express=await import("express"),this.express=this.express.default}catch{throw new Error("Express not installed. Run: npm install express")}if(this.app=this.express(),(!r.middleware||!this.#t(r.middleware))&&(this.app.use(this.express.json()),this.app.use(this.express.urlencoded({extended:!0}))),r.middleware&&Array.isArray(r.middleware)){this.log?.info(`Applying ${r.middleware.length} middleware functions`);for(let[s,o]of r.middleware.entries())try{this.app.use(o),this.log?.debug(`Applied middleware ${s+1}/${r.middleware.length}`)}catch(a){throw new Error(`Failed to apply middleware[${s}]: ${a.message}`)}}}registerKernelHandler(){this.app&&this.app.all("*",async(e,r)=>{await this.handleRequest(e,r)})}getExpressApp(){return this.app}async start({port:e=3e3,host:r="0.0.0.0"}={}){return new Promise((n,s)=>{this.server=this.app.listen(e,r,o=>{o?s(o):(this.server.on("connection",a=>{this.#n.add(a),a.on("close",()=>{this.#n.delete(a)})}),this.log?.info(`Express Server with middleware listening on http://${r}:${e}`),n(this.server))})})}async stop(){if(this.server?.close){for(let e of this.#n)e.destroy();return this.#n.clear(),new Promise(e=>{this.server.close(()=>{this.log?.info("Express Server stopped"),e()})})}}async handleRequest(e,r){try{let n=this.createContext(e,r),s=await this.kernel.handle(n);await this.sendResponse(r,s,e.method==="HEAD")}catch(n){await this.handleError(r,n)}}#t(e){return e.some(r=>{let n=r.name?.toLowerCase()||r.toString().toLowerCase();return n.includes("json")||n.includes("urlencoded")||n.includes("bodyparser")})}}});var dr=Object.freeze(Object.create(null));function Fe(t,e,r="value"){if(Array.isArray(e)){for(let s of e)if(_e(t,s))return!0;let n=e.map(Y).join(" | ");throw new TypeError(`${r} must be one of: ${n}. Got ${Y(t)}`)}if(!_e(t,e))throw new TypeError(`${r} must be ${Y(e)}. Got ${Y(t)}`);return!0}function _e(t,e){return e===String?typeof t=="string":e===Number?typeof t=="number"&&!isNaN(t):e===Boolean?typeof t=="boolean":e===Symbol?typeof t=="symbol":e===BigInt?typeof t=="bigint":e===Function?typeof t=="function":e===Array?Array.isArray(t):e===Object?t!==null&&typeof t=="object"&&!Array.isArray(t):t instanceof e}function Y(t){return t===String?"String":t===Number?"Number":t===Boolean?"Boolean":t===Array?"Array":t===Object?"Object":t===Function?"Function":t===Date?"Date":t===RegExp?"RegExp":t===Promise?"Promise":t===Map?"Map":t===Set?"Set":t===WeakMap?"WeakMap":t===WeakSet?"WeakSet":t===Symbol?"Symbol":t===BigInt?"BigInt":t===Error?"Error":typeof t=="string"?"string":typeof t=="number"?"number":typeof t=="boolean"?"boolean":typeof t=="symbol"?"symbol":typeof t=="bigint"?"bigint":typeof t=="function"?"function":Array.isArray(t)?"Array":t===null?"null":t===void 0?"undefined":typeof t=="object"?t.constructor?.name||"Object":"unknown"}function D(t,e="value"){return r=>Fe(r,t,e)}var ne=new Map,se=new WeakMap,B=t=>{if(se.has(t))return se.get(t)},k=(t,e=[])=>{let r=e.length>0?D(e,"return value"):null;if(ne.has(t))return console.warn(`Definition type "${t}" already exists`),ne.get(t);let n=(s,o,...a)=>{D(String,"name")(s),D(Function,"factory")(o);let i=(...l)=>{try{let c=[...l,...a],u=o(...c);if(r&&u===void 0)throw new Error(`Factory ${t} must return a value for ${s}`);return r&&r(u),u}catch(c){throw console.error(`Error creating definition "${s}"`,c),c}};return Object.defineProperty(i,"_name",{value:s,enumerable:!1,configurable:!1}),se.set(i,t),i};return ne.set(t,n),n};var Mt=new Set(["__proto__","prototype","constructor"]),Pt=new Set(["use","install","uninstall","relay","state","debug"]),Le=64,_t=/^[a-zA-Z_$][a-zA-Z_$0-9]*$/;function Ft(t,e="key"){if(Mt.has(t))throw new Error(`Illegal key "${t}" in ${e}`)}function ie(t){if(Ft(t,"namespace"),typeof t!="string")throw new Error(`Namespace must be a string, got ${typeof t}`);if(!_t.test(t))throw new Error(`Invalid namespace "${t}". Must be a valid JS identifier`);if(t.length>Le)throw new Error(`Namespace "${t}" too long (max ${Le} chars)`);if(Pt.has(t))throw new Error(`Namespace "${t}" is reserved`);return t}var oe=k("MIDDLEWARE",[Function,Array]),ae=k("ACTIONS",[Object]),le=k("UNINSTALL"),ce=k("INITIALIZE"),he=k("GETTERS",[Object]);var K=class t{static create(e){return new t(e)}#n;#t;#r={MIDDLEWARE:null,GETTERS:null,ACTIONS:null,INITIALIZE:null,UNINSTALL:null};constructor(e){this.#n=e}#e(e,r,n){if(this.#r[e])throw new Error(`${e} already defined for ${this.#n}`);this.#r[e]=n(this.#n,r)}defineMiddleware=e=>this.#e("MIDDLEWARE",e,oe);defineGetters=e=>this.#e("GETTERS",e,he);defineActions=e=>this.#e("ACTIONS",e,ae);defineInitialize=e=>this.#e("INITIALIZE",e,ce);defineUninstall=e=>this.#e("UNINSTALL",e,le);_toArray(){return[this.#r.MIDDLEWARE,this.#r.GETTERS,this.#r.ACTIONS,this.#r.INITIALIZE,this.#r.UNINSTALL].filter(Boolean)}};var H=class t{static#n=new Set;static manifest={name:"base",dependencies:[],version:"1.0.0",description:"Base extension template"};static config=null;static unique=!1;static configure(e={}){return{install:(r,n)=>this.install(r,n),manifest:this.manifest,config:{...this.config||this.manifest.defaults||{},...e},unique:!0,configured:!0}}static install(e,r){try{let{namespace:n}=this.manifest;ie(n);let s=new this;t.#n.add(s),Object.defineProperty(s,"config",{value:Object.freeze({...r}),writable:!1,configurable:!1,enumerable:!1}),Object.defineProperty(s,"context",{get:()=>e(),configurable:!1,enumerable:!1}),Object.defineProperty(s,"useContext",{value:(...a)=>e(...a),writable:!1,configurable:!1,enumerable:!1});let o=K.create(n);if(s.setup){let a={defineActions:l=>o.defineActions(()=>l(e,r)),defineMiddleware:l=>o.defineMiddleware(()=>l(e,r)),defineGetters:l=>o.defineGetters(()=>l(e,r)),defineInitialize:l=>o.defineInitialize(()=>l(e,r)),defineUninstall:l=>o.defineUninstall(()=>l(e,r))},i=s.setup(a);return i?.then?i.then(()=>o._toArray()):o._toArray()}return s.middleware&&o.defineMiddleware(()=>s.middleware(e,r)),s.getters&&o.defineGetters(()=>s.getters(e,r)),s.actions&&o.defineActions(()=>s.actions(e,r)),s.initialize&&o.defineInitialize(()=>s.initialize(e,r)),s.uninstall&&o.defineUninstall(()=>s.uninstall(e,r)),o._toArray()}catch(n){throw n}}};var un=Symbol("jucie.engine");var Dt=Object.defineProperty,h=(t,e)=>Dt(t,"name",{value:e,configurable:!0}),P=class{type=3;name="";prefix="";value="";suffix="";modifier=3;constructor(t,e,r,n,s,o){this.type=t,this.name=e,this.prefix=r,this.value=n,this.suffix=s,this.modifier=o}hasCustomName(){return this.name!==""&&typeof this.name!="number"}};h(P,"Part");var Bt=/[$_\p{ID_Start}]/u,Ht=/[$_\u200C\u200D\p{ID_Continue}]/u,fe=".*";function Be(t,e){return(e?/^[\x00-\xFF]*$/:/^[\x00-\x7F]*$/).test(t)}h(Be,"isASCII");function me(t,e=!1){let r=[],n=0;for(;n<t.length;){let s=t[n],o=h(function(a){if(!e)throw new TypeError(a);r.push({type:"INVALID_CHAR",index:n,value:t[n++]})},"ErrorOrInvalid");if(s==="*"){r.push({type:"ASTERISK",index:n,value:t[n++]});continue}if(s==="+"||s==="?"){r.push({type:"OTHER_MODIFIER",index:n,value:t[n++]});continue}if(s==="\\"){r.push({type:"ESCAPED_CHAR",index:n++,value:t[n++]});continue}if(s==="{"){r.push({type:"OPEN",index:n,value:t[n++]});continue}if(s==="}"){r.push({type:"CLOSE",index:n,value:t[n++]});continue}if(s===":"){let a="",i=n+1;for(;i<t.length;){let l=t.substr(i,1);if(i===n+1&&Bt.test(l)||i!==n+1&&Ht.test(l)){a+=t[i++];continue}break}if(!a){o(`Missing parameter name at ${n}`);continue}r.push({type:"NAME",index:n,value:a}),n=i;continue}if(s==="("){let a=1,i="",l=n+1,c=!1;if(t[l]==="?"){o(`Pattern cannot start with "?" at ${l}`);continue}for(;l<t.length;){if(!Be(t[l],!1)){o(`Invalid character '${t[l]}' at ${l}.`),c=!0;break}if(t[l]==="\\"){i+=t[l++]+t[l++];continue}if(t[l]===")"){if(a--,a===0){l++;break}}else if(t[l]==="("&&(a++,t[l+1]!=="?")){o(`Capturing groups are not allowed at ${l}`),c=!0;break}i+=t[l++]}if(c)continue;if(a){o(`Unbalanced pattern at ${n}`);continue}if(!i){o(`Missing pattern at ${n}`);continue}r.push({type:"REGEX",index:n,value:i}),n=l;continue}r.push({type:"CHAR",index:n,value:t[n++]})}return r.push({type:"END",index:n,value:""}),r}h(me,"lexer");function ye(t,e={}){let r=me(t);e.delimiter??="/#?",e.prefixes??="./";let n=`[^${w(e.delimiter)}]+?`,s=[],o=0,a=0,i="",l=new Set,c=h(m=>{if(a<r.length&&r[a].type===m)return r[a++].value},"tryConsume"),u=h(()=>c("OTHER_MODIFIER")??c("ASTERISK"),"tryConsumeModifier"),y=h(m=>{let g=c(m);if(g!==void 0)return g;let{type:b,index:j}=r[a];throw new TypeError(`Unexpected ${b} at ${j}, expected ${m}`)},"mustConsume"),R=h(()=>{let m="",g;for(;g=c("CHAR")??c("ESCAPED_CHAR");)m+=g;return m},"consumeText"),Ot=h(m=>m,"DefaultEncodePart"),V=e.encodePart||Ot,W="",ee=h(m=>{W+=m},"appendToPendingFixedValue"),te=h(()=>{W.length&&(s.push(new P(3,"","",V(W),"",3)),W="")},"maybeAddPartFromPendingFixedValue"),Me=h((m,g,b,j,T)=>{let A=3;switch(T){case"?":A=1;break;case"*":A=0;break;case"+":A=2;break}if(!g&&!b&&A===3){ee(m);return}if(te(),!g&&!b){if(!m)return;s.push(new P(3,"","",V(m),"",A));return}let x;b?b==="*"?x=fe:x=b:x=n;let U=2;x===n?(U=1,x=""):x===fe&&(U=0,x="");let O;if(g?O=g:b&&(O=o++),l.has(O))throw new TypeError(`Duplicate name '${O}'.`);l.add(O),s.push(new P(U,O,V(m),x,V(j),A))},"addPart");for(;a<r.length;){let m=c("CHAR"),g=c("NAME"),b=c("REGEX");if(!g&&!b&&(b=c("ASTERISK")),g||b){let T=m??"";e.prefixes.indexOf(T)===-1&&(ee(T),T=""),te();let A=u();Me(T,g,b,"",A);continue}let j=m??c("ESCAPED_CHAR");if(j){ee(j);continue}if(c("OPEN")){let T=R(),A=c("NAME"),x=c("REGEX");!A&&!x&&(x=c("ASTERISK"));let U=R();y("CLOSE");let O=u();Me(T,A,x,U,O);continue}te(),y("END")}return s}h(ye,"parse");function w(t){return t.replace(/([.+*?^${}()[\]|/\\])/g,"\\$1")}h(w,"escapeString");function pe(t){return t&&t.ignoreCase?"ui":"u"}h(pe,"flags");function He(t,e,r){return ge(ye(t,r),e,r)}h(He,"stringToRegexp");function I(t){switch(t){case 0:return"*";case 1:return"?";case 2:return"+";case 3:return""}}h(I,"modifierToString");function ge(t,e,r={}){r.delimiter??="/#?",r.prefixes??="./",r.sensitive??=!1,r.strict??=!1,r.end??=!0,r.start??=!0,r.endsWith="";let n=r.start?"^":"";for(let i of t){if(i.type===3){i.modifier===3?n+=w(i.value):n+=`(?:${w(i.value)})${I(i.modifier)}`;continue}e&&e.push(i.name);let l=`[^${w(r.delimiter)}]+?`,c=i.value;if(i.type===1?c=l:i.type===0&&(c=fe),!i.prefix.length&&!i.suffix.length){i.modifier===3||i.modifier===1?n+=`(${c})${I(i.modifier)}`:n+=`((?:${c})${I(i.modifier)})`;continue}if(i.modifier===3||i.modifier===1){n+=`(?:${w(i.prefix)}(${c})${w(i.suffix)})`,n+=I(i.modifier);continue}n+=`(?:${w(i.prefix)}`,n+=`((?:${c})(?:`,n+=w(i.suffix),n+=w(i.prefix),n+=`(?:${c}))*)${w(i.suffix)})`,i.modifier===0&&(n+="?")}let s=`[${w(r.endsWith)}]|$`,o=`[${w(r.delimiter)}]`;if(r.end)return r.strict||(n+=`${o}?`),r.endsWith.length?n+=`(?=${s})`:n+="$",new RegExp(n,pe(r));r.strict||(n+=`(?:${o}(?=${s}))?`);let a=!1;if(t.length){let i=t[t.length-1];i.type===3&&i.modifier===3&&(a=r.delimiter.indexOf(i)>-1)}return a||(n+=`(?=${o}|${s})`),new RegExp(n,pe(r))}h(ge,"partsToRegexp");var $={delimiter:"",prefixes:"",sensitive:!0,strict:!0},zt={delimiter:".",prefixes:"",sensitive:!0,strict:!0},Gt={delimiter:"/",prefixes:"/",sensitive:!0,strict:!0};function ze(t,e){return t.length?t[0]==="/"?!0:!e||t.length<2?!1:(t[0]=="\\"||t[0]=="{")&&t[1]=="/":!1}h(ze,"isAbsolutePathname");function be(t,e){return t.startsWith(e)?t.substring(e.length,t.length):t}h(be,"maybeStripPrefix");function Ge(t,e){return t.endsWith(e)?t.substr(0,t.length-e.length):t}h(Ge,"maybeStripSuffix");function we(t){return!t||t.length<2?!1:t[0]==="["||(t[0]==="\\"||t[0]==="{")&&t[1]==="["}h(we,"treatAsIPv6Hostname");var Ve=["ftp","file","http","https","ws","wss"];function xe(t){if(!t)return!0;for(let e of Ve)if(t.test(e))return!0;return!1}h(xe,"isSpecialScheme");function We(t,e){if(t=be(t,"#"),e||t==="")return t;let r=new URL("https://example.com");return r.hash=t,r.hash?r.hash.substring(1,r.hash.length):""}h(We,"canonicalizeHash");function Ye(t,e){if(t=be(t,"?"),e||t==="")return t;let r=new URL("https://example.com");return r.search=t,r.search?r.search.substring(1,r.search.length):""}h(Ye,"canonicalizeSearch");function Ke(t,e){return e||t===""?t:we(t)?Ce(t):Ae(t)}h(Ke,"canonicalizeHostname");function qe(t,e){if(e||t==="")return t;let r=new URL("https://example.com");return r.password=t,r.password}h(qe,"canonicalizePassword");function Je(t,e){if(e||t==="")return t;let r=new URL("https://example.com");return r.username=t,r.username}h(Je,"canonicalizeUsername");function Ze(t,e,r){if(r||t==="")return t;if(e&&!Ve.includes(e))return new URL(`${e}:${t}`).pathname;let n=t[0]=="/";return t=new URL(n?t:"/-"+t,"https://example.com").pathname,n||(t=t.substring(2,t.length)),t}h(Ze,"canonicalizePathname");function Xe(t,e,r){return Ee(e)===t&&(t=""),r||t===""?t:ve(t)}h(Xe,"canonicalizePort");function Qe(t,e){return t=Ge(t,":"),e||t===""?t:q(t)}h(Qe,"canonicalizeProtocol");function Ee(t){switch(t){case"ws":case"http":return"80";case"wws":case"https":return"443";case"ftp":return"21";default:return""}}h(Ee,"defaultPortForProtocol");function q(t){if(t==="")return t;if(/^[-+.A-Za-z0-9]*$/.test(t))return t.toLowerCase();throw new TypeError(`Invalid protocol '${t}'.`)}h(q,"protocolEncodeCallback");function et(t){if(t==="")return t;let e=new URL("https://example.com");return e.username=t,e.username}h(et,"usernameEncodeCallback");function tt(t){if(t==="")return t;let e=new URL("https://example.com");return e.password=t,e.password}h(tt,"passwordEncodeCallback");function Ae(t){if(t==="")return t;if(/[\t\n\r #%/:<>?@[\]^\\|]/g.test(t))throw new TypeError(`Invalid hostname '${t}'`);let e=new URL("https://example.com");return e.hostname=t,e.hostname}h(Ae,"hostnameEncodeCallback");function Ce(t){if(t==="")return t;if(/[^0-9a-fA-F[\]:]/g.test(t))throw new TypeError(`Invalid IPv6 hostname '${t}'`);return t.toLowerCase()}h(Ce,"ipv6HostnameEncodeCallback");function ve(t){if(t===""||/^[0-9]*$/.test(t)&&parseInt(t)<=65535)return t;throw new TypeError(`Invalid port '${t}'.`)}h(ve,"portEncodeCallback");function rt(t){if(t==="")return t;let e=new URL("https://example.com");return e.pathname=t[0]!=="/"?"/-"+t:t,t[0]!=="/"?e.pathname.substring(2,e.pathname.length):e.pathname}h(rt,"standardURLPathnameEncodeCallback");function nt(t){return t===""?t:new URL(`data:${t}`).pathname}h(nt,"pathURLPathnameEncodeCallback");function st(t){if(t==="")return t;let e=new URL("https://example.com");return e.search=t,e.search.substring(1,e.search.length)}h(st,"searchEncodeCallback");function it(t){if(t==="")return t;let e=new URL("https://example.com");return e.hash=t,e.hash.substring(1,e.hash.length)}h(it,"hashEncodeCallback");var ot=class{#n;#t=[];#r={};#e=0;#s=1;#a=0;#o=0;#f=0;#h=0;#p=!1;constructor(t){this.#n=t}get result(){return this.#r}parse(){for(this.#t=me(this.#n,!0);this.#e<this.#t.length;this.#e+=this.#s){if(this.#s=1,this.#t[this.#e].type==="END"){if(this.#o===0){this.#w(),this.#u()?this.#i(9,1):this.#d()?this.#i(8,1):this.#i(7,0);continue}else if(this.#o===2){this.#m(5);continue}this.#i(10,0);break}if(this.#f>0)if(this.#T())this.#f-=1;else continue;if(this.#R()){this.#f+=1;continue}switch(this.#o){case 0:this.#x()&&this.#m(1);break;case 1:if(this.#x()){this.#$();let t=7,e=1;this.#A()?(t=2,e=3):this.#p&&(t=2),this.#i(t,e)}break;case 2:this.#g()?this.#m(3):(this.#b()||this.#d()||this.#u())&&this.#m(5);break;case 3:this.#C()?this.#i(4,1):this.#g()&&this.#i(5,1);break;case 4:this.#g()&&this.#i(5,1);break;case 5:this.#O()?this.#h+=1:this.#S()&&(this.#h-=1),this.#v()&&!this.#h?this.#i(6,1):this.#b()?this.#i(7,0):this.#d()?this.#i(8,1):this.#u()&&this.#i(9,1);break;case 6:this.#b()?this.#i(7,0):this.#d()?this.#i(8,1):this.#u()&&this.#i(9,1);break;case 7:this.#d()?this.#i(8,1):this.#u()&&this.#i(9,1);break;case 8:this.#u()&&this.#i(9,1);break;case 9:break;case 10:break}}this.#r.hostname!==void 0&&this.#r.port===void 0&&(this.#r.port="")}#i(t,e){switch(this.#o){case 0:break;case 1:this.#r.protocol=this.#c();break;case 2:break;case 3:this.#r.username=this.#c();break;case 4:this.#r.password=this.#c();break;case 5:this.#r.hostname=this.#c();break;case 6:this.#r.port=this.#c();break;case 7:this.#r.pathname=this.#c();break;case 8:this.#r.search=this.#c();break;case 9:this.#r.hash=this.#c();break;case 10:break}this.#o!==0&&t!==10&&([1,2,3,4].includes(this.#o)&&[6,7,8,9].includes(t)&&(this.#r.hostname??=""),[1,2,3,4,5,6].includes(this.#o)&&[8,9].includes(t)&&(this.#r.pathname??=this.#p?"/":""),[1,2,3,4,5,6,7].includes(this.#o)&&t===9&&(this.#r.search??="")),this.#E(t,e)}#E(t,e){this.#o=t,this.#a=this.#e+e,this.#e+=e,this.#s=0}#w(){this.#e=this.#a,this.#s=0}#m(t){this.#w(),this.#o=t}#y(t){return t<0&&(t=this.#t.length-t),t<this.#t.length?this.#t[t]:this.#t[this.#t.length-1]}#l(t,e){let r=this.#y(t);return r.value===e&&(r.type==="CHAR"||r.type==="ESCAPED_CHAR"||r.type==="INVALID_CHAR")}#x(){return this.#l(this.#e,":")}#A(){return this.#l(this.#e+1,"/")&&this.#l(this.#e+2,"/")}#g(){return this.#l(this.#e,"@")}#C(){return this.#l(this.#e,":")}#v(){return this.#l(this.#e,":")}#b(){return this.#l(this.#e,"/")}#d(){if(this.#l(this.#e,"?"))return!0;if(this.#t[this.#e].value!=="?")return!1;let t=this.#y(this.#e-1);return t.type!=="NAME"&&t.type!=="REGEX"&&t.type!=="CLOSE"&&t.type!=="ASTERISK"}#u(){return this.#l(this.#e,"#")}#R(){return this.#t[this.#e].type=="OPEN"}#T(){return this.#t[this.#e].type=="CLOSE"}#O(){return this.#l(this.#e,"[")}#S(){return this.#l(this.#e,"]")}#c(){let t=this.#t[this.#e],e=this.#y(this.#a).index;return this.#n.substring(e,t.index)}#$(){let t={};Object.assign(t,$),t.encodePart=q;let e=He(this.#c(),void 0,t);this.#p=xe(e)}};h(ot,"Parser");var ue=["protocol","username","password","hostname","port","pathname","search","hash"],S="*";function de(t,e){if(typeof t!="string")throw new TypeError("parameter 1 is not of type 'string'.");let r=new URL(t,e);return{protocol:r.protocol.substring(0,r.protocol.length-1),username:r.username,password:r.password,hostname:r.hostname,port:r.port,pathname:r.pathname,search:r.search!==""?r.search.substring(1,r.search.length):void 0,hash:r.hash!==""?r.hash.substring(1,r.hash.length):void 0}}h(de,"extractValues");function v(t,e){return e?M(t):t}h(v,"processBaseURLString");function N(t,e,r){let n;if(typeof e.baseURL=="string")try{n=new URL(e.baseURL),e.protocol===void 0&&(t.protocol=v(n.protocol.substring(0,n.protocol.length-1),r)),!r&&e.protocol===void 0&&e.hostname===void 0&&e.port===void 0&&e.username===void 0&&(t.username=v(n.username,r)),!r&&e.protocol===void 0&&e.hostname===void 0&&e.port===void 0&&e.username===void 0&&e.password===void 0&&(t.password=v(n.password,r)),e.protocol===void 0&&e.hostname===void 0&&(t.hostname=v(n.hostname,r)),e.protocol===void 0&&e.hostname===void 0&&e.port===void 0&&(t.port=v(n.port,r)),e.protocol===void 0&&e.hostname===void 0&&e.port===void 0&&e.pathname===void 0&&(t.pathname=v(n.pathname,r)),e.protocol===void 0&&e.hostname===void 0&&e.port===void 0&&e.pathname===void 0&&e.search===void 0&&(t.search=v(n.search.substring(1,n.search.length),r)),e.protocol===void 0&&e.hostname===void 0&&e.port===void 0&&e.pathname===void 0&&e.search===void 0&&e.hash===void 0&&(t.hash=v(n.hash.substring(1,n.hash.length),r))}catch{throw new TypeError(`invalid baseURL '${e.baseURL}'.`)}if(typeof e.protocol=="string"&&(t.protocol=Qe(e.protocol,r)),typeof e.username=="string"&&(t.username=Je(e.username,r)),typeof e.password=="string"&&(t.password=qe(e.password,r)),typeof e.hostname=="string"&&(t.hostname=Ke(e.hostname,r)),typeof e.port=="string"&&(t.port=Xe(e.port,t.protocol,r)),typeof e.pathname=="string"){if(t.pathname=e.pathname,n&&!ze(t.pathname,r)){let s=n.pathname.lastIndexOf("/");s>=0&&(t.pathname=v(n.pathname.substring(0,s+1),r)+t.pathname)}t.pathname=Ze(t.pathname,t.protocol,r)}return typeof e.search=="string"&&(t.search=Ye(e.search,r)),typeof e.hash=="string"&&(t.hash=We(e.hash,r)),t}h(N,"applyInit");function M(t){return t.replace(/([+*?:{}()\\])/g,"\\$1")}h(M,"escapePatternString");function at(t){return t.replace(/([.+*?^${}()[\]|/\\])/g,"\\$1")}h(at,"escapeRegexpString");function lt(t,e){e.delimiter??="/#?",e.prefixes??="./",e.sensitive??=!1,e.strict??=!1,e.end??=!0,e.start??=!0,e.endsWith="";let r=".*",n=`[^${at(e.delimiter)}]+?`,s=/[$_\u200C\u200D\p{ID_Continue}]/u,o="";for(let a=0;a<t.length;++a){let i=t[a];if(i.type===3){if(i.modifier===3){o+=M(i.value);continue}o+=`{${M(i.value)}}${I(i.modifier)}`;continue}let l=i.hasCustomName(),c=!!i.suffix.length||!!i.prefix.length&&(i.prefix.length!==1||!e.prefixes.includes(i.prefix)),u=a>0?t[a-1]:null,y=a<t.length-1?t[a+1]:null;if(!c&&l&&i.type===1&&i.modifier===3&&y&&!y.prefix.length&&!y.suffix.length)if(y.type===3){let R=y.value.length>0?y.value[0]:"";c=s.test(R)}else c=!y.hasCustomName();if(!c&&!i.prefix.length&&u&&u.type===3){let R=u.value[u.value.length-1];c=e.prefixes.includes(R)}c&&(o+="{"),o+=M(i.prefix),l&&(o+=`:${i.name}`),i.type===2?o+=`(${i.value})`:i.type===1?l||(o+=`(${n})`):i.type===0&&(!l&&(!u||u.type===3||u.modifier!==3||c||i.prefix!=="")?o+="*":o+=`(${r})`),i.type===1&&l&&i.suffix.length&&s.test(i.suffix[0])&&(o+="\\"),o+=M(i.suffix),c&&(o+="}"),i.modifier!==3&&(o+=I(i.modifier))}return o}h(lt,"partsToPattern");var Re=class{#n;#t={};#r={};#e={};#s={};#a=!1;constructor(t={},e,r){try{let n;if(typeof e=="string"?n=e:r=e,typeof t=="string"){let i=new ot(t);if(i.parse(),t=i.result,n===void 0&&typeof t.protocol!="string")throw new TypeError("A base URL must be provided for a relative constructor string.");t.baseURL=n}else{if(!t||typeof t!="object")throw new TypeError("parameter 1 is not of type 'string' and cannot convert to dictionary.");if(n)throw new TypeError("parameter 1 is not of type 'string'.")}typeof r>"u"&&(r={ignoreCase:!1});let s={ignoreCase:r.ignoreCase===!0},o={pathname:S,protocol:S,username:S,password:S,hostname:S,port:S,search:S,hash:S};this.#n=N(o,t,!0),Ee(this.#n.protocol)===this.#n.port&&(this.#n.port="");let a;for(a of ue){if(!(a in this.#n))continue;let i={},l=this.#n[a];switch(this.#r[a]=[],a){case"protocol":Object.assign(i,$),i.encodePart=q;break;case"username":Object.assign(i,$),i.encodePart=et;break;case"password":Object.assign(i,$),i.encodePart=tt;break;case"hostname":Object.assign(i,zt),we(l)?i.encodePart=Ce:i.encodePart=Ae;break;case"port":Object.assign(i,$),i.encodePart=ve;break;case"pathname":xe(this.#t.protocol)?(Object.assign(i,Gt,s),i.encodePart=rt):(Object.assign(i,$,s),i.encodePart=nt);break;case"search":Object.assign(i,$,s),i.encodePart=st;break;case"hash":Object.assign(i,$,s),i.encodePart=it;break}try{this.#s[a]=ye(l,i),this.#t[a]=ge(this.#s[a],this.#r[a],i),this.#e[a]=lt(this.#s[a],i),this.#a=this.#a||this.#s[a].some(c=>c.type===2)}catch{throw new TypeError(`invalid ${a} pattern '${this.#n[a]}'.`)}}}catch(n){throw new TypeError(`Failed to construct 'URLPattern': ${n.message}`)}}get[Symbol.toStringTag](){return"URLPattern"}test(t={},e){let r={pathname:"",protocol:"",username:"",password:"",hostname:"",port:"",search:"",hash:""};if(typeof t!="string"&&e)throw new TypeError("parameter 1 is not of type 'string'.");if(typeof t>"u")return!1;try{typeof t=="object"?r=N(r,t,!1):r=N(r,de(t,e),!1)}catch{return!1}let n;for(n of ue)if(!this.#t[n].exec(r[n]))return!1;return!0}exec(t={},e){let r={pathname:"",protocol:"",username:"",password:"",hostname:"",port:"",search:"",hash:""};if(typeof t!="string"&&e)throw new TypeError("parameter 1 is not of type 'string'.");if(typeof t>"u")return;try{typeof t=="object"?r=N(r,t,!1):r=N(r,de(t,e),!1)}catch{return null}let n={};e?n.inputs=[t,e]:n.inputs=[t];let s;for(s of ue){let o=this.#t[s].exec(r[s]);if(!o)return null;let a={};for(let[i,l]of this.#r[s].entries())if(typeof l=="string"||typeof l=="number"){let c=o[i+1];a[l]=c}n[s]={input:r[s]??"",groups:a}}return n}static compareComponent(t,e,r){let n=h((i,l)=>{for(let c of["type","modifier","prefix","value","suffix"]){if(i[c]<l[c])return-1;if(i[c]!==l[c])return 1}return 0},"comparePart"),s=new P(3,"","","","",3),o=new P(0,"","","","",3),a=h((i,l)=>{let c=0;for(;c<Math.min(i.length,l.length);++c){let u=n(i[c],l[c]);if(u)return u}return i.length===l.length?0:n(i[c]??s,l[c]??s)},"comparePartList");return!e.#e[t]&&!r.#e[t]?0:e.#e[t]&&!r.#e[t]?a(e.#s[t],[o]):!e.#e[t]&&r.#e[t]?a([o],r.#s[t]):a(e.#s[t],r.#s[t])}get protocol(){return this.#e.protocol}get username(){return this.#e.username}get password(){return this.#e.password}get hostname(){return this.#e.hostname}get port(){return this.#e.port}get pathname(){return this.#e.pathname}get search(){return this.#e.search}get hash(){return this.#e.hash}get hasRegExpGroups(){return this.#a}};h(Re,"URLPattern");globalThis.URLPattern||(globalThis.URLPattern=Re);function ct(t){let e=new URLPattern({pathname:t});return r=>e.exec({pathname:r})?.pathname.groups??null}var J=class{#n=[];#t=[];#r={onRequest:null,preHandler:null,onSend:null,onError:null};#e=null;constructor(){}registerRoutes(e){for(let r of e)this.registerRoute(r)}registerRoute(e){let r={...e,match:ct(e.path)};this.#n.push(r)}setAppHandlers(e=[]){this.#t=Array.isArray(e)?e:[]}async cleanupAppHandlers(){for(let e of this.#t)e?.cleanup&&await e.cleanup();this.#t=[]}hooks(e){Object.assign(this.#r,e)}setStaticFallback(e,r){this.#e={outputDir:e,handler:r}}async handle(e){let r;try{let n=await this.#r.onRequest?.(e);if(n)return r=n,r;for(let i of this.#t)try{if(!i?.match||!i?.handle)continue;if(await i.match(e.req)){let l=await i.handle(e);if(l)return r=l,r}}catch(l){return r=await this.#r.onError?.(e,l)??e.respond.text("Internal Server Error",500),r}let s=null,o=this.#n.find(i=>{if(i.method!==e.req.method)return!1;let l=i.match(e.req.path);return l?(s=l,!0):!1});if(!o){if(this.#e){let i=await this.#e.handler(e,this.#e.outputDir);r=i&&i.status!==404?i:e.respond.text("Not Found",404)}else r=e.respond.text("Not Found",404);return r}e.req.params=s||{};let a=await this.#r.preHandler?.(e,o);if(a)return r=a,r;r=await o.handler(e)}catch(n){r=await this.#r.onError?.(e,n)??e.respond.text("Internal Server Error",500)}finally{await this.#r.onSend?.(e,r)}return r??e.respond.text("",204)}getRoutes(){return this.#n.map(e=>({method:e.method,path:e.path,params:e.params||[],compiled:!0}))}};Se();Te();import Wt from"node:http";var Z=class extends _{#n=new Set;constructor(){super("http")}async initialize(e,r={},n=null){await super.initialize(e,r,n),r.middleware?.length>0&&(n?.warn('Middleware configured but HTTP adapter selected. Consider using adapter: "express" for full middleware support.'),n?.info("HTTP adapter will simulate middleware using hooks for basic compatibility."))}async start({port:e=3e3,host:r="0.0.0.0"}={}){return this.server=Wt.createServer(async(n,s)=>{try{if(this.opts.middleware?.length>0&&!await this.#t(n,s,this.opts.middleware))return;n.body||(n.body=await ht(n));let o=this.createContext(n,s),a=await this.kernel.handle(o);await this.sendResponse(s,a,n.method==="HEAD")}catch(o){await this.handleError(s,o)}}),this.server.on("connection",n=>{this.#n.add(n),n.on("close",()=>{this.#n.delete(n)})}),await new Promise((n,s)=>this.server.listen(e,r,o=>o?s(o):n())),this.log?.info?.(`HTTP Server listening on http://${r}:${e}`),this.server}async stop(){if(this.server){for(let e of this.#n)e.destroy();this.#n.clear(),await new Promise(e=>this.server.close(()=>e())),this.server=null}}async#t(e,r,n){for(let s of n)try{let o=!1,a=i=>{if(i)throw i;o=!0};if(r.json||(r.json=i=>(r.setHeader("Content-Type","application/json"),r.end(JSON.stringify(i)),!1)),await s(e,r,a),!o&&r.headersSent)return!1}catch(o){return this.log?.error(`Middleware simulation error: ${o.message}`),r.statusCode=500,r.end("Internal Server Error"),!1}return!0}};var ft=(t=0)=>e=>`\x1B[${e+t}m`,pt=(t=0)=>e=>`\x1B[${38+t};5;${e}m`,dt=(t=0)=>(e,r,n)=>`\x1B[${38+t};2;${e};${r};${n}m`,p={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},zn=Object.keys(p.modifier),Yt=Object.keys(p.color),Kt=Object.keys(p.bgColor),Gn=[...Yt,...Kt];function qt(){let t=new Map;for(let[e,r]of Object.entries(p)){for(let[n,s]of Object.entries(r))p[n]={open:`\x1B[${s[0]}m`,close:`\x1B[${s[1]}m`},r[n]=p[n],t.set(s[0],s[1]);Object.defineProperty(p,e,{value:r,enumerable:!1})}return Object.defineProperty(p,"codes",{value:t,enumerable:!1}),p.color.close="\x1B[39m",p.bgColor.close="\x1B[49m",p.color.ansi=ft(),p.color.ansi256=pt(),p.color.ansi16m=dt(),p.bgColor.ansi=ft(10),p.bgColor.ansi256=pt(10),p.bgColor.ansi16m=dt(10),Object.defineProperties(p,{rgbToAnsi256:{value(e,r,n){return e===r&&r===n?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(n/255*5)},enumerable:!1},hexToRgb:{value(e){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!r)return[0,0,0];let[n]=r;n.length===3&&(n=[...n].map(o=>o+o).join(""));let s=Number.parseInt(n,16);return[s>>16&255,s>>8&255,s&255]},enumerable:!1},hexToAnsi256:{value:e=>p.rgbToAnsi256(...p.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let r,n,s;if(e>=232)r=((e-232)*10+8)/255,n=r,s=r;else{e-=16;let i=e%36;r=Math.floor(e/36)/5,n=Math.floor(i/6)/5,s=i%6/5}let o=Math.max(r,n,s)*2;if(o===0)return 30;let a=30+(Math.round(s)<<2|Math.round(n)<<1|Math.round(r));return o===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(e,r,n)=>p.ansi256ToAnsi(p.rgbToAnsi256(e,r,n)),enumerable:!1},hexToAnsi:{value:e=>p.ansi256ToAnsi(p.hexToAnsi256(e)),enumerable:!1}}),p}var Jt=qt(),C=Jt;import $e from"node:process";import Zt from"node:os";import mt from"node:tty";function E(t,e=globalThis.Deno?globalThis.Deno.args:$e.argv){let r=t.startsWith("-")?"":t.length===1?"-":"--",n=e.indexOf(r+t),s=e.indexOf("--");return n!==-1&&(s===-1||n<s)}var{env:d}=$e,X;E("no-color")||E("no-colors")||E("color=false")||E("color=never")?X=0:(E("color")||E("colors")||E("color=true")||E("color=always"))&&(X=1);function Xt(){if("FORCE_COLOR"in d)return d.FORCE_COLOR==="true"?1:d.FORCE_COLOR==="false"?0:d.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(d.FORCE_COLOR,10),3)}function Qt(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function er(t,{streamIsTTY:e,sniffFlags:r=!0}={}){let n=Xt();n!==void 0&&(X=n);let s=r?X:n;if(s===0)return 0;if(r){if(E("color=16m")||E("color=full")||E("color=truecolor"))return 3;if(E("color=256"))return 2}if("TF_BUILD"in d&&"AGENT_NAME"in d)return 1;if(t&&!e&&s===void 0)return 0;let o=s||0;if(d.TERM==="dumb")return o;if($e.platform==="win32"){let a=Zt.release().split(".");return Number(a[0])>=10&&Number(a[2])>=10586?Number(a[2])>=14931?3:2:1}if("CI"in d)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(a=>a in d)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(a=>a in d)||d.CI_NAME==="codeship"?1:o;if("TEAMCITY_VERSION"in d)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(d.TEAMCITY_VERSION)?1:0;if(d.COLORTERM==="truecolor"||d.TERM==="xterm-kitty"||d.TERM==="xterm-ghostty"||d.TERM==="wezterm")return 3;if("TERM_PROGRAM"in d){let a=Number.parseInt((d.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(d.TERM_PROGRAM){case"iTerm.app":return a>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(d.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(d.TERM)||"COLORTERM"in d?1:o}function yt(t,e={}){let r=er(t,{streamIsTTY:t&&t.isTTY,...e});return Qt(r)}var tr={stdout:yt({isTTY:mt.isatty(1)}),stderr:yt({isTTY:mt.isatty(2)})},gt=tr;function bt(t,e,r){let n=t.indexOf(e);if(n===-1)return t;let s=e.length,o=0,a="";do a+=t.slice(o,n)+e+r,o=n+s,n=t.indexOf(e,o);while(n!==-1);return a+=t.slice(o),a}function wt(t,e,r,n){let s=0,o="";do{let a=t[n-1]==="\r";o+=t.slice(s,a?n-1:n)+e+(a?`\r
2
- `:`
3
- `)+r,s=n+1,n=t.indexOf(`
4
- `,s)}while(n!==-1);return o+=t.slice(s),o}var{stdout:xt,stderr:Et}=gt,ke=Symbol("GENERATOR"),F=Symbol("STYLER"),z=Symbol("IS_EMPTY"),At=["ansi","ansi","ansi256","ansi16m"],L=Object.create(null),rr=(t,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=xt?xt.level:0;t.level=e.level===void 0?r:e.level};var nr=t=>{let e=(...r)=>r.join(" ");return rr(e,t),Object.setPrototypeOf(e,G.prototype),e};function G(t){return nr(t)}Object.setPrototypeOf(G.prototype,Function.prototype);for(let[t,e]of Object.entries(C))L[t]={get(){let r=Q(this,je(e.open,e.close,this[F]),this[z]);return Object.defineProperty(this,t,{value:r}),r}};L.visible={get(){let t=Q(this,this[F],!0);return Object.defineProperty(this,"visible",{value:t}),t}};var Ie=(t,e,r,...n)=>t==="rgb"?e==="ansi16m"?C[r].ansi16m(...n):e==="ansi256"?C[r].ansi256(C.rgbToAnsi256(...n)):C[r].ansi(C.rgbToAnsi(...n)):t==="hex"?Ie("rgb",e,r,...C.hexToRgb(...n)):C[r][t](...n),sr=["rgb","hex","ansi256"];for(let t of sr){L[t]={get(){let{level:r}=this;return function(...n){let s=je(Ie(t,At[r],"color",...n),C.color.close,this[F]);return Q(this,s,this[z])}}};let e="bg"+t[0].toUpperCase()+t.slice(1);L[e]={get(){let{level:r}=this;return function(...n){let s=je(Ie(t,At[r],"bgColor",...n),C.bgColor.close,this[F]);return Q(this,s,this[z])}}}}var ir=Object.defineProperties(()=>{},{...L,level:{enumerable:!0,get(){return this[ke].level},set(t){this[ke].level=t}}}),je=(t,e,r)=>{let n,s;return r===void 0?(n=t,s=e):(n=r.openAll+t,s=e+r.closeAll),{open:t,close:e,openAll:n,closeAll:s,parent:r}},Q=(t,e,r)=>{let n=(...s)=>or(n,s.length===1?""+s[0]:s.join(" "));return Object.setPrototypeOf(n,ir),n[ke]=t,n[F]=e,n[z]=r,n},or=(t,e)=>{if(t.level<=0||!e)return t[z]?"":e;let r=t[F];if(r===void 0)return e;let{openAll:n,closeAll:s}=r;if(e.includes("\x1B"))for(;r!==void 0;)e=bt(e,r.close,r.open),r=r.parent;let o=e.indexOf(`
5
- `);return o!==-1&&(e=wt(e,s,n,o)),n+e+s};Object.defineProperties(G.prototype,L);var ar=G(),es=G({level:Et?Et.level:0});var f=ar;import{exec as lr}from"child_process";import{promisify as cr}from"util";var hr=cr(lr);async function Ct({port:t,host:e,mode:r},n){let o=`${r==="production"?"https":"http"}://${e==="0.0.0.0"?"localhost":e}:${t}`;if(["",f.bold.blue("\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557"),f.bold.blue("\u2551")+f.bold.white(" \u{1F680} Clovie Server Ready! \u{1F680} ")+f.bold.blue("\u2551"),f.bold.blue("\u2560\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2563"),f.bold.blue("\u2551")+f.white(` Mode: ${f.green(r.toUpperCase())} `)+f.bold.blue("\u2551"),f.bold.blue("\u2551")+f.white(` URL: ${f.cyan.underline(o)} `)+f.bold.blue("\u2551"),f.bold.blue("\u2551")+f.white(` Host: ${f.yellow(e)}:${f.yellow(t)} `)+f.bold.blue("\u2551"),f.bold.blue("\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D"),""].forEach(l=>n.info(l)),r==="development")try{await ur(o),n.info(f.green("\u{1F310} Browser opened automatically"))}catch(l){n.debug("Could not open browser automatically:",l.message)}["",f.gray("\u{1F4A1} Quick Commands:"),f.gray(` \u2022 Press ${f.yellow("Ctrl+C")} to stop the server`),f.gray(` \u2022 Visit ${f.cyan(o)} to view your site`),f.gray(" \u2022 Check the console for live reload updates"),""].forEach(l=>n.info(l))}async function ur(t){let e=process.platform,r;switch(e){case"darwin":r=`open "${t}"`;break;case"win32":r=`start "${t}"`;break;default:r=`xdg-open "${t}"`;break}try{await hr(r)}catch(n){throw new Error(`Failed to open browser: ${n.message}`)}}var Tt=class extends H{static manifest={name:"Clovie Server",namespace:"server",version:"1.0.0"};#n=[];#t=null;#r={onRequest:null,preHandler:null,onSend:null,onError:null};#e=!1;#s={};#a=[];actions(e){return{use:(...r)=>(this.#a.push(...r),this),add:(r,n,s,o={})=>{this.#o(null,r,n,s,o)},useAdapter:r=>(this.#t=r,this),hooks:r=>(this.#r={...this.#r,...r},this),listen:async(r={})=>{this.#s={...this.config,...r},this.#e=!0,this.#f();let n=e("relay"),s=this.#s.port||3e3,o=this.#s.host||"0.0.0.0",a=e("log"),i=new J;if(i.hooks(this.#r),i.registerRoutes(this.#n),i.registerRoutes([{method:"GET",path:"/health",handler:u=>u.respond.json({status:"ok",timestamp:new Date().toISOString(),mode:this.#s.mode||"production"})},{method:"GET",path:"/api/info",handler:u=>u.respond.json({name:"Clovie",version:"1.0.0",mode:this.#s.mode||"production",routes:this.#n.length})}]),this.#s.outputDir&&i.setStaticFallback(this.#s.outputDir,(u,y)=>this.#p(u,y)),!this.#t)if(this.#s.adapter==="express"||this.#s.middleware?.length>0){let{ExpressAdapter:u}=await Promise.resolve().then(()=>(Rt(),vt));this.#t=u.create(),a.debug("Using Express adapter for middleware support")}else this.#t=Z.create(),a.debug("Using HTTP adapter");await this.#t.initialize(i,this.#s,a),typeof this.#t.registerKernelHandler=="function"&&this.#t.registerKernelHandler(this.#s);let l=await this.#t.start({port:s,host:o}),c=l.address()?.port||s;return await Ct({port:c,host:o,mode:this.#s.mode||"production"},a),n.broadcast("server:ready",l),l},getRoutes:()=>this.#n,clearRoutes:()=>{this.#n=[]},stop:async()=>{this.#t&&await this.#t.stop()},isRunning:()=>this.#t&&this.#t.isRunning(),getHttpServer:()=>this.#t?this.#t.getHttpServer():null}}#o(e="",r,n,s,o={},a=[]){if(e&&(n=e+n),Array.isArray(a))for(let i of a)typeof i=="function"?this.#e?this.#h(i):this.#a.push(i):this.#o(n,i.method,i.path,i.handler,i.meta,i.children);else typeof a=="function"&&(this.#e?this.#h(a):this.#a.push(a));this.#n.push({method:r.toUpperCase(),path:n,handler:s,meta:o})}#f(){this.#e&&this.#a.length!==0&&(this.#h(...this.#a),this.#a=[])}#h(...e){try{for(let r of e){let n=B(r);switch(n){case"routes":let s=r(this.useContext,this.#s);if(Array.isArray(s))for(let l of s)this.#o(null,l.method,l.path,l.handler,l.meta,l.children);else throw new Error("Routes must be an array");break;case"route":let o=r(this.useContext,this.#s);if(typeof o=="object"&&o!==null)this.#o(null,o.method,o.path,o.handler,o.meta,o.children);else throw new Error("Route must be an object");break;case"hooks":let a=r(this.useContext,this.#s);if(typeof a=="object"&&a!==null)this.#r={...this.#r,...a};else throw new Error("Hooks must be an object");break;case"hook":let i=r(this.useContext,this.#s);if(typeof i=="function")this.#r={...this.#r,...i};else throw new Error("Hook must be a function");break;default:throw new Error(`Invalid factory type: ${n}`)}}}catch(r){throw console.error(`
6
- \u274C Error using factories: ${r.message}
7
- `),r}}async#p(e,r){let n=await import("fs/promises"),s=await import("path");try{let o=e.req.path==="/"?"/index.html":e.req.path,a=s.join(r,o),i;try{i=await n.stat(a)}catch{if(s.extname(o))return e.respond.text("Not Found",404);{let u=s.join(r,`${o}.html`);try{i=await n.stat(u),a=u}catch{return e.respond.text("Not Found",404)}}}if(i.isFile()){let l=s.extname(a),c=this.#i(l),u=await n.readFile(a);return c==="text/html"?e.respond.html(u.toString(),200):c==="text/css"?e.respond.text(u.toString(),200,{"Content-Type":"text/css"}):c==="application/javascript"?e.respond.text(u.toString(),200,{"Content-Type":"application/javascript"}):c.startsWith("text/")?e.respond.text(u.toString(),200,{"Content-Type":c}):e.respond.file(a,200,{"Content-Type":c})}else return e.respond.text("Not Found",404)}catch{return e.respond.text("Not Found",404)}}#i(e){return{".html":"text/html",".css":"text/css",".js":"application/javascript",".json":"application/json",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".svg":"image/svg+xml",".ico":"image/x-icon",".woff":"font/woff",".woff2":"font/woff2",".ttf":"font/ttf",".eot":"application/vnd.ms-fontobject"}[e.toLowerCase()]||"application/octet-stream"}};export{Tt as Server};
8
- //# sourceMappingURL=server.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/utils/httpParsing.js", "../src/adapters/AdapterInterface.js", "../src/adapters/ExpressAdapter.js", "../../../src/lib/relay/src/Relay.js", "../../../src/utils/typeChecker.js", "../../../src/definitions/createDefinition.js", "../../../src/utils/asserts.js", "../../../src/definitions/defaults.js", "../../../src/definitions/DefinitionBuilder.js", "../../../src/ServiceProvider.js", "../../../src/global.js", "../../../../node_modules/urlpattern-polyfill/dist/urlpattern.js", "../../../../node_modules/urlpattern-polyfill/index.js", "../src/utils/routeMatch.js", "../src/Kernel.js", "../src/adapters/HttpAdapter.js", "../../../../node_modules/chalk/source/vendor/ansi-styles/index.js", "../../../../node_modules/chalk/source/vendor/supports-color/index.js", "../../../../node_modules/chalk/source/utilities.js", "../../../../node_modules/chalk/source/index.js", "../src/utils/serverReady.js", "../src/server.js"],
4
- "sourcesContent": ["/**\n * HTTP parsing utilities for request body and query parameters\n */\n\n/**\n * Parse request body based on content type\n * @param {Object} req - Node.js request object\n * @returns {Object|null} Parsed body object or null\n */\nexport async function parseBody(req) {\n return new Promise((resolve) => {\n if (req.method === 'GET' || req.method === 'HEAD') {\n resolve(null);\n return;\n }\n\n const contentType = req.headers['content-type'] || '';\n let body = '';\n\n req.on('data', chunk => {\n body += chunk.toString();\n });\n\n req.on('end', () => {\n try {\n if (contentType.includes('application/json')) {\n resolve(body ? JSON.parse(body) : {});\n } else if (contentType.includes('application/x-www-form-urlencoded')) {\n resolve(parseUrlEncoded(body));\n } else if (contentType.includes('multipart/form-data')) {\n // For now, just return the raw body for multipart\n // Could be enhanced with proper multipart parsing\n resolve({ raw: body });\n } else {\n resolve(body || null);\n }\n } catch (error) {\n resolve(null);\n }\n });\n\n req.on('error', () => {\n resolve(null);\n });\n });\n}\n\n/**\n * Parse URL-encoded form data\n * @param {string} data - URL-encoded string\n * @returns {Object} Parsed object\n */\nfunction parseUrlEncoded(data) {\n const result = {};\n const pairs = data.split('&');\n \n for (const pair of pairs) {\n const [key, value] = pair.split('=');\n if (key) {\n const decodedKey = decodeURIComponent(key);\n const decodedValue = value ? decodeURIComponent(value) : '';\n \n // Handle arrays (key[] or key[0])\n if (decodedKey.endsWith('[]')) {\n const arrayKey = decodedKey.slice(0, -2);\n if (!result[arrayKey]) result[arrayKey] = [];\n result[arrayKey].push(decodedValue);\n } else {\n result[decodedKey] = decodedValue;\n }\n }\n }\n \n return result;\n}\n\n/**\n * Parse query parameters from URLSearchParams\n * @param {URLSearchParams} searchParams - URL search parameters\n * @returns {Object} Parsed query object with support for arrays\n */\nexport function parseQuery(searchParams) {\n const result = {};\n \n for (const [key, value] of searchParams.entries()) {\n // Handle array parameters (key[] or key[0])\n if (key.endsWith('[]') || /\\[\\d*\\]$/.test(key)) {\n const arrayKey = key.replace(/\\[\\d*\\]$/, '').replace('[]', '');\n if (!result[arrayKey]) result[arrayKey] = [];\n result[arrayKey].push(value);\n } else {\n result[key] = value;\n }\n }\n \n return result;\n}\n", "/**\n * Clovie Adapter Interface\n * \n * This defines the contract that all HTTP server adapters must implement.\n * The Clovie kernel uses this interface to delegate HTTP handling to\n * any compatible adapter (Express, Fastify, Node HTTP, etc.)\n */\nimport { parseQuery } from '../utils/httpParsing.js';\n\n/**\n * Adapter Interface - All adapters must implement this\n */\nexport class AdapterInterface {\n static create(name) {\n return new this(name);\n }\n\n constructor(name) {\n this.name = name;\n this.server = null;\n this.kernel = null;\n this.log = null;\n this.hooks = null;\n }\n\n /**\n * Initialize the adapter with kernel and context\n * @param {Object} kernel - Clovie kernel instance\n * @param {Object} opts - Configuration options (including middleware)\n * @param {Object} log - Clovie logger\n */\n async initialize(kernel, opts = {}, log = null) {\n this.kernel = kernel;\n this.opts = opts;\n this.log = log;\n \n // Validate options\n if (opts.middleware && !Array.isArray(opts.middleware)) {\n throw new Error('opts.middleware must be an array');\n }\n }\n\n /**\n * Start the HTTP server\n * @param {Object} options - Server options (port, host, etc.)\n * @returns {Promise<Object>} - Server instance\n */\n async start(options) {\n throw new Error(`start() must be implemented by ${this.name} adapter`);\n }\n\n /**\n * Stop the HTTP server\n * @returns {Promise<void>}\n */\n async stop() {\n throw new Error(`stop() must be implemented by ${this.name} adapter`);\n }\n\n /**\n * Get the underlying HTTP server instance\n * Used by services like LiveReload for Socket.IO integration\n * @returns {Object|null} - HTTP server instance\n */\n getHttpServer() {\n return this.server;\n }\n\n /**\n * Check if the server is currently running\n * @returns {boolean}\n */\n isRunning() {\n return this.server !== null;\n }\n\n /**\n * Handle a request through the adapter\n * @param {Object} req - HTTP request\n * @param {Object} res - HTTP response\n * @returns {Promise<void>}\n */\n async handleRequest(req, res) {\n throw new Error(`handleRequest() must be implemented by ${this.name} adapter`);\n }\n\n /**\n * Create standardized context object from request\n * @param {Object} req - HTTP request\n * @param {Object} res - HTTP response\n * @returns {Object} - Standardized context object\n */\n createContext(req, res) {\n const url = new URL(req.url || req.originalUrl, `http://${req.headers.host}`);\n\n return {\n req: {\n method: req.method,\n url: url.toString(),\n path: url.pathname,\n headers: Object.fromEntries(\n Object.entries(req.headers).map(([k, v]) => [k.toLowerCase(), v])\n ),\n query: req.query || parseQuery(url.searchParams),\n body: req.body || null,\n raw: { req, res },\n params: {}\n },\n res,\n respond: new RespondHelpers(),\n };\n }\n\n /**\n * Send response using standardized response format\n * @param {Object} res - HTTP response\n * @param {Object} response - Response object from route handler\n * @param {boolean} isHead - Whether this is a HEAD request\n * @returns {Promise<void>}\n */\n async sendResponse(res, response, isHead = false) {\n // Default to 204 if no response object was returned\n const resp = response ?? { type: 'text', status: 204, headers: {}, body: '' };\n\n if (resp.type === 'handled') {\n return;\n }\n\n if (res.headersSent) return; // defensive guard\n\n // Set status and headers (normalize keys)\n res.statusCode = resp.status ?? 200;\n if (resp.headers) {\n for (const [k, v] of Object.entries(resp.headers)) {\n res.setHeader(k.toLowerCase(), v);\n }\n }\n\n // Respect HEAD requests: send headers only\n if (isHead) {\n return res.end();\n }\n\n switch (resp.type) {\n case 'json': {\n if (!res.getHeader('content-type')) {\n res.setHeader('content-type', 'application/json; charset=utf-8');\n }\n return res.end(JSON.stringify(resp.body));\n }\n\n case 'text': {\n if (!res.getHeader('content-type')) {\n res.setHeader('content-type', 'text/plain; charset=utf-8');\n }\n return res.end(resp.body ?? '');\n }\n\n case 'html': {\n if (!res.getHeader('content-type')) {\n res.setHeader('content-type', 'text/html; charset=utf-8');\n }\n return res.end(resp.body ?? '');\n }\n\n case 'file': {\n return await this.serveFile(res, resp.path);\n }\n\n case 'stream': {\n const b = resp.body;\n if (!b) return res.end();\n // Node stream\n if (typeof b.pipe === 'function') return b.pipe(res);\n // AsyncIterable\n if (Symbol.asyncIterator in Object(b)) {\n for await (const chunk of b) {\n if (!res.write(chunk)) {\n await new Promise(r => res.once('drain', r));\n }\n }\n return res.end();\n }\n // Fallback\n return res.end(b);\n }\n\n default:\n return res.end('');\n }\n }\n\n /**\n * Serve static files with proper MIME types and streaming\n * @param {Object} res - HTTP response\n * @param {string} filePath - Path to file to serve\n * @returns {Promise<void>}\n */\n async serveFile(res, filePath) {\n const fs = await import('node:fs');\n const fsp = await import('node:fs/promises');\n const path = await import('node:path');\n const { pipeline } = await import('node:stream');\n const { promisify } = await import('node:util');\n \n const pipelineAsync = promisify(pipeline);\n\n const MIME = {\n '.html': 'text/html; charset=utf-8',\n '.css': 'text/css; charset=utf-8',\n '.js': 'application/javascript; charset=utf-8',\n '.mjs': 'application/javascript; charset=utf-8',\n '.json': 'application/json; charset=utf-8',\n '.svg': 'image/svg+xml',\n '.png': 'image/png',\n '.jpg': 'image/jpeg',\n '.jpeg': 'image/jpeg',\n '.gif': 'image/gif',\n '.ico': 'image/x-icon',\n '.woff': 'font/woff',\n '.woff2': 'font/woff2',\n '.ttf': 'font/ttf',\n '.eot': 'application/vnd.ms-fontobject'\n };\n\n try {\n const st = await fsp.stat(filePath);\n if (!st.isFile()) {\n res.statusCode = 404;\n res.setHeader('content-type', 'text/plain; charset=utf-8');\n return res.end('Not Found');\n }\n\n const ext = path.extname(filePath).toLowerCase();\n if (!res.getHeader('content-type')) {\n res.setHeader('content-type', MIME[ext] ?? 'application/octet-stream');\n }\n res.setHeader('content-length', String(st.size));\n\n const rs = fs.createReadStream(filePath);\n rs.on('error', () => {\n if (!res.headersSent) res.statusCode = 404;\n res.end('Not Found');\n });\n await pipelineAsync(rs, res); // backpressure-aware piping\n } catch {\n if (!res.headersSent) {\n res.statusCode = 404;\n res.setHeader('content-type', 'text/plain; charset=utf-8');\n }\n res.end('Not Found');\n }\n }\n\n /**\n * Handle request errors consistently\n * @param {Object} res - HTTP response\n * @param {Error} error - Error that occurred\n * @returns {Promise<void>}\n */\n async handleError(res, error) {\n this.log?.error?.('Request handling error:', error);\n if (!res.headersSent) {\n res.statusCode = 500;\n res.setHeader('content-type', 'text/plain; charset=utf-8');\n res.end('Internal Server Error');\n }\n }\n}\n\n/**\n * Route object structure that adapters receive from Clovie kernel\n */\nexport class ClovieRoute {\n constructor(method, path, handler, options = {}) {\n this.method = method.toUpperCase();\n this.path = path;\n this.handler = handler;\n this.options = options;\n this.params = options.params || [];\n }\n}\n\n/**\n * Hook object structure for lifecycle management\n */\nexport class ClovieHooks {\n constructor() {\n this.onRequest = null;\n this.preHandler = null;\n this.onSend = null;\n this.onError = null;\n }\n}\n\n/**\n * Context object passed to route handlers\n */\nexport class ClovieContext {\n constructor(req, res, state, cache) {\n this.req = req;\n this.res = res;\n this.state = state;\n this.cache = cache;\n this.respond = new RespondHelpers();\n }\n}\n\n/**\n * Response helpers for route handlers\n */\nexport class RespondHelpers {\n handled() {\n return { type: 'handled' };\n }\n\n json(data, status = 200, headers = {}) {\n return { type: 'json', status, headers, body: data };\n }\n\n text(data, status = 200, headers = {}) {\n return { type: 'text', status, headers, body: data };\n }\n\n html(data, status = 200, headers = {}) {\n return { type: 'html', status, headers, body: data };\n }\n\n file(path, status = 200, headers = {}) {\n return { type: 'file', status, headers, path };\n }\n\n stream(body, status = 200, headers = {}) {\n return { type: 'stream', status, headers, body };\n }\n\n redirect(location, status = 302, headers = {}) {\n return { type:'text', status, headers: { ...headers, location }, body: '' };\n }\n}\n", "/**\n * Express adapter for Clovie with full middleware support\n */\nimport { AdapterInterface } from './AdapterInterface.js';\n\nexport class ExpressAdapter extends AdapterInterface {\n #connections = new Set();\n\n constructor(express = null) {\n super('express');\n this.express = express;\n this.app = null;\n }\n\n async initialize(kernel, opts = {}, log = null) {\n await super.initialize(kernel, opts, log);\n \n // Import Express\n if (!this.express) {\n try {\n this.express = await import('express');\n this.express = this.express.default;\n } catch (error) {\n throw new Error('Express not installed. Run: npm install express');\n }\n }\n\n // Create Express app\n this.app = this.express();\n\n // Apply default middleware (can be overridden by user middleware)\n if (!opts.middleware || !this.#hasBodyParser(opts.middleware)) {\n this.app.use(this.express.json());\n this.app.use(this.express.urlencoded({ extended: true }));\n }\n\n // Apply user-defined middleware\n if (opts.middleware && Array.isArray(opts.middleware)) {\n this.log?.info(`Applying ${opts.middleware.length} middleware functions`);\n \n for (const [index, middleware] of opts.middleware.entries()) {\n try {\n this.app.use(middleware);\n this.log?.debug(`Applied middleware ${index + 1}/${opts.middleware.length}`);\n } catch (error) {\n throw new Error(`Failed to apply middleware[${index}]: ${error.message}`);\n }\n }\n }\n\n // Additional middleware will be mounted by the server before kernel handler registration\n }\n\n registerKernelHandler() {\n if (!this.app) {\n return;\n }\n\n this.app.all('*', async (req, res) => {\n await this.handleRequest(req, res);\n });\n }\n\n getExpressApp() {\n return this.app;\n }\n\n async start({ port = 3000, host = '0.0.0.0' } = {}) {\n return new Promise((resolve, reject) => {\n this.server = this.app.listen(port, host, (err) => {\n if (err) {\n reject(err);\n } else {\n // Track connections for clean shutdown\n this.server.on('connection', (conn) => {\n this.#connections.add(conn);\n conn.on('close', () => {\n this.#connections.delete(conn);\n });\n });\n\n this.log?.info(`Express Server with middleware listening on http://${host}:${port}`);\n resolve(this.server);\n }\n });\n });\n }\n\n async stop() {\n if (this.server?.close) {\n // Destroy all active connections\n for (const conn of this.#connections) {\n conn.destroy();\n }\n this.#connections.clear();\n\n return new Promise((resolve) => {\n this.server.close(() => {\n this.log?.info('Express Server stopped');\n resolve();\n });\n });\n }\n }\n\n async handleRequest(req, res) {\n try {\n // Create context from Express request\n const ctx = this.createContext(req, res);\n \n // Delegate to kernel for route matching and handling\n const response = await this.kernel.handle(ctx);\n \n // Send response using shared method\n await this.sendResponse(res, response, req.method === 'HEAD');\n\n } catch (error) {\n await this.handleError(res, error);\n }\n }\n\n /**\n * Check if middleware array contains body parser\n * @private\n */\n #hasBodyParser(middlewareArray) {\n return middlewareArray.some(mw => {\n // Check for common body parser middleware names\n const name = mw.name?.toLowerCase() || mw.toString().toLowerCase();\n return name.includes('json') || name.includes('urlencoded') || name.includes('bodyparser');\n });\n }\n}\n", "// Simple, readable relay with wildcard matching and no indexing\n\nconst GLOBAL_NS_OBJ = Object.freeze(Object.create(null));\n\nfunction queueMicrotask(fn) {\n if (globalThis.queueMicrotask && typeof globalThis.queueMicrotask === 'function') {\n globalThis.queueMicrotask(fn);\n return;\n }\n setTimeout(fn, 0);\n}\n\nclass Channel {\n #nsObj; #relay;\n constructor(nsObj, relay) { this.#nsObj = nsObj; this.#relay = relay; }\n\n // Any source -> me\n on(event, handler) {\n return this.#relay.subscribe(event, GLOBAL_NS_OBJ, this.#nsObj, handler);\n }\n\n once(event, handler) {\n return this.#relay.once(event, GLOBAL_NS_OBJ, this.#nsObj, handler);\n }\n\n // Me -> everyone (sender never hears itself)\n broadcast(event, ...payload) {\n this.#relay.publish(event, this.#nsObj, GLOBAL_NS_OBJ, payload);\n }\n\n // Specific source -> me\n from(fromNs) {\n return {\n subscribe: (event, handler) => this.#relay.subscribe(event, fromNs, this.#nsObj, handler),\n once: (event, handler) => this.#relay.once(event, fromNs, this.#nsObj, handler),\n };\n }\n\n // Me -> specific target\n to(toNs) {\n return {\n publish: (event, ...payload) => this.#relay.publish(event, this.#nsObj, toNs, payload),\n publishAsync: (event, ...payload) => this.#relay.publishAsync(event, this.#nsObj, toNs, payload),\n };\n }\n}\n\nexport class Relay {\n #channels = new WeakMap(); // nsObj -> Channel\n #events = new Map(); // eventName -> Set<Listener>\n #onError = null;\n\n static create(config = {}) {\n return new Relay(config);\n }\n\n constructor({ onError = null } = {}) {\n this.#onError = onError;\n this.createChannel(GLOBAL_NS_OBJ);\n }\n\n // Public convenience\n channel(nsObj) { return this.createChannel(nsObj); }\n createChannel(nsObj) {\n if (this.#channels.has(nsObj)) return this.#channels.get(nsObj);\n const ch = new Channel(nsObj, this);\n this.#channels.set(nsObj, ch);\n return ch;\n }\n\n // Internal helpers\n #listeners(event) {\n let set = this.#events.get(event);\n if (!set) { set = new Set(); this.#events.set(event, set); }\n return set;\n }\n\n // Wildcard matcher:\n // - If published `from` is GLOBAL, it matches every listener.from\n // - If listener.from is GLOBAL, it matches every published from\n // Same for `to`. This makes broadcast (to = GLOBAL) hit specific targets too.\n static #matchSide(published, constraint) {\n return published === GLOBAL_NS_OBJ || constraint === GLOBAL_NS_OBJ || published === constraint;\n }\n\n static #matches(publishedFrom, publishedTo, listenerFrom, listenerTo) {\n return Relay.#matchSide(publishedFrom, listenerFrom)\n && Relay.#matchSide(publishedTo, listenerTo);\n }\n\n subscribe(event, from, to, handler) {\n const listener = { from, to, handler };\n this.#listeners(event).add(listener);\n return () => {\n const set = this.#events.get(event);\n if (set) set.delete(listener);\n };\n }\n\n once(event, from, to, handler) {\n let off = null;\n const wrapped = (payload) => {\n try { handler(payload); } finally { off && off(); }\n };\n off = this.subscribe(event, from, to, wrapped);\n return off;\n }\n\n offAllFor(nsObj) {\n for (const set of this.#events.values()) {\n for (const l of Array.from(set)) {\n if (l.from === nsObj || l.to === nsObj) set.delete(l);\n }\n }\n }\n\n listenerCount(event) {\n const set = this.#events.get(event);\n return set ? set.size : 0;\n }\n\n #deliver(event, from, to, payload) {\n const set = this.#events.get(event);\n if (!set || set.size === 0) return;\n\n for (const l of set) {\n // Always skip self-delivery\n if (l.to === from) continue;\n\n if (Relay.#matches(from, to, l.from, l.to)) {\n try { l.handler(...payload); }\n catch (err) { if (this.#onError) this.#onError(err, { event, from, to, listener: l }); }\n }\n }\n }\n\n publish(event, from, to, payload) {\n this.#deliver(event, from, to, payload);\n }\n\n publishAsync(event, from, to, payload) {\n queueMicrotask(() => this.#deliver(event, from, to, payload));\n }\n\n broadcast(event, from, payload) {\n this.publish(event, from, GLOBAL_NS_OBJ, payload);\n }\n}\n", "/**\n * Type Checker Utility\n * \n * Supports syntax like:\n * - createDefinition('action', [Array, Function]) // Array or Function\n * - createDefinition('name', String) // Must be String\n * - createDefinition('items', Array) // Must be Array\n * - createDefinition('callback', Function) // Must be Function\n * - createDefinition('value', [String, Number]) // String or Number\n */\n\n/**\n * Type definitions mapping constructor names to actual constructors\n */\nconst TYPE_MAP = {\n String,\n Number,\n Boolean,\n Array,\n Object,\n Function,\n Date,\n RegExp,\n Promise,\n Map,\n Set,\n WeakMap,\n WeakSet,\n Symbol,\n BigInt,\n Error,\n TypeError,\n RangeError,\n ReferenceError,\n SyntaxError,\n EvalError,\n URIError\n};\n\n/**\n * Checks if a value matches the expected type(s)\n * @param {*} value - The value to check\n * @param {Function|Array<Function>} expectedType - Single type or array of possible types\n * @param {string} name - Name of the parameter for error messages\n * @returns {boolean} - True if value matches expected type(s)\n */\nexport function checkType(value, expectedType, name = 'value') {\n // Handle array of possible types\n if (Array.isArray(expectedType)) {\n for (const type of expectedType) {\n if (matchesType(value, type)) {\n return true;\n }\n }\n \n const typeNames = expectedType.map(getTypeName).join(' | ');\n throw new TypeError(`${name} must be one of: ${typeNames}. Got ${getTypeName(value)}`);\n }\n \n // Handle single type\n if (!matchesType(value, expectedType)) {\n throw new TypeError(`${name} must be ${getTypeName(expectedType)}. Got ${getTypeName(value)}`);\n }\n \n return true;\n}\n\n/**\n * Checks if a value matches a specific type\n * @param {*} value - The value to check\n * @param {Function} type - The expected constructor/type\n * @returns {boolean} - True if value matches the type\n */\nfunction matchesType(value, type) {\n // Handle primitive constructors\n if (type === String) {\n return typeof value === 'string';\n }\n if (type === Number) {\n return typeof value === 'number' && !isNaN(value);\n }\n if (type === Boolean) {\n return typeof value === 'boolean';\n }\n if (type === Symbol) {\n return typeof value === 'symbol';\n }\n if (type === BigInt) {\n return typeof value === 'bigint';\n }\n if (type === Function) {\n return typeof value === 'function';\n }\n \n // Handle object constructors (including Array, Object, Date, etc.)\n if (type === Array) {\n return Array.isArray(value);\n }\n if (type === Object) {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n }\n \n // Handle other constructors (Date, RegExp, Map, Set, etc.)\n return value instanceof type;\n}\n\n/**\n * Gets a human-readable name for a type\n * @param {*} value - The value or constructor to get name for\n * @returns {string} - Human-readable type name\n */\nfunction getTypeName(value) {\n if (value === String) return 'String';\n if (value === Number) return 'Number';\n if (value === Boolean) return 'Boolean';\n if (value === Array) return 'Array';\n if (value === Object) return 'Object';\n if (value === Function) return 'Function';\n if (value === Date) return 'Date';\n if (value === RegExp) return 'RegExp';\n if (value === Promise) return 'Promise';\n if (value === Map) return 'Map';\n if (value === Set) return 'Set';\n if (value === WeakMap) return 'WeakMap';\n if (value === WeakSet) return 'WeakSet';\n if (value === Symbol) return 'Symbol';\n if (value === BigInt) return 'BigInt';\n if (value === Error) return 'Error';\n \n if (typeof value === 'string') return 'string';\n if (typeof value === 'number') return 'number';\n if (typeof value === 'boolean') return 'boolean';\n if (typeof value === 'symbol') return 'symbol';\n if (typeof value === 'bigint') return 'bigint';\n if (typeof value === 'function') return 'function';\n if (Array.isArray(value)) return 'Array';\n if (value === null) return 'null';\n if (value === undefined) return 'undefined';\n if (typeof value === 'object') {\n return value.constructor?.name || 'Object';\n }\n \n return 'unknown';\n}\n\n/**\n * Creates a type checker function for a specific parameter\n * @param {Function|Array<Function>} expectedType - Expected type(s)\n * @param {string} name - Parameter name\n * @returns {Function} - Type checker function\n */\nexport function createTypeChecker(expectedType, name = 'value') {\n return (value) => checkType(value, expectedType, name);\n}\n\n/**\n * Validates an object against a schema\n * @param {Object} obj - Object to validate\n * @param {Object} schema - Schema definition { prop: Type, prop2: [Type1, Type2] }\n * @param {string} objName - Name of the object for error messages\n */\nexport function validateObject(obj, schema, objName = 'object') {\n if (!obj || typeof obj !== 'object') {\n throw new TypeError(`${objName} must be an object`);\n }\n \n for (const [prop, expectedType] of Object.entries(schema)) {\n if (prop in obj) {\n checkType(obj[prop], expectedType, `${objName}.${prop}`);\n }\n }\n}\n\n/**\n * Creates a validator function for an object schema\n * @param {Object} schema - Schema definition\n * @param {string} objName - Name of the object\n * @returns {Function} - Validator function\n */\nexport function createObjectValidator(schema, objName = 'object') {\n return (obj) => validateObject(obj, schema, objName);\n}\n\n// Export the type map for advanced usage\nexport { TYPE_MAP };\n", "const DefinitionTypes = new Map();\nconst Definitions = new WeakMap();\nimport { createTypeChecker } from '../utils/typeChecker.js';\n\n/**\n * Creates a definition type with return type validation\n * @param {string} type - The definition type name\n * @param {Function|Array<Function>} returnTypes - Expected return type(s)\n * @returns {Function} - Definition creator function\n */\n\n\nexport const definitionType = (definition) => {\n if (Definitions.has(definition)) {\n return Definitions.get(definition);\n }\n return undefined;\n}\n\nexport const createDefinition = (type, returnTypes = []) => { \n // Create type checker for return values if returnTypes specified\n const returnTypeChecker = returnTypes.length > 0 ? createTypeChecker(returnTypes, 'return value') : null;\n \n if (DefinitionTypes.has(type)) {\n console.warn(`Definition type \"${type}\" already exists`);\n return DefinitionTypes.get(type);\n }\n\n const definitionType = (name, factory, ...defaultArgs) => {\n // Validate inputs using type checker\n createTypeChecker(String, 'name')(name);\n createTypeChecker(Function, 'factory')(factory);\n\n const definition = (...args) => {\n try {\n const combinedArgs = [...args, ...defaultArgs];\n const res = factory(...combinedArgs);\n \n if (returnTypeChecker && res === undefined) {\n throw new Error(`Factory ${type} must return a value for ${name}`);\n }\n\n // Use type checker to validate return value\n if (returnTypeChecker) {\n returnTypeChecker(res);\n }\n\n return res\n } catch (error) {\n console.error(`Error creating definition \"${name}\"`, error);\n throw error;\n }\n }\n\n Object.defineProperty(definition, '_name', {\n value: name,\n enumerable: false,\n configurable: false\n });\n\n Definitions.set(definition, type);\n\n return definition;\n }\n\n DefinitionTypes.set(type, definitionType);\n\n return definitionType;\n}; ", "// utils/asserts.js\n\nconst BAD_KEYS = new Set(['__proto__', 'prototype', 'constructor']);\nconst RESERVED_NAMESPACES = new Set(['use', 'install', 'uninstall', 'relay', 'state', 'debug']);\n\nconst MAX_NAME_LENGTH = 64;\nconst VALID_NAME = /^[a-zA-Z_$][a-zA-Z_$0-9]*$/;\n\n/**\n * Throw if key is unsafe (__proto__, constructor, etc.)\n */\nexport function assertSafeKey(key, where = 'key') {\n if (BAD_KEYS.has(key)) {\n throw new Error(`Illegal key \"${key}\" in ${where}`);\n }\n}\n\n/**\n * Validate a namespace string: format, length, reserved words, proto poisoning.\n */\nexport function assertNamespace(ns) {\n assertSafeKey(ns, 'namespace');\n if (typeof ns !== 'string') {\n throw new Error(`Namespace must be a string, got ${typeof ns}`);\n }\n if (!VALID_NAME.test(ns)) {\n throw new Error(`Invalid namespace \"${ns}\". Must be a valid JS identifier`);\n }\n if (ns.length > MAX_NAME_LENGTH) {\n throw new Error(`Namespace \"${ns}\" too long (max ${MAX_NAME_LENGTH} chars)`);\n }\n if (RESERVED_NAMESPACES.has(ns)) {\n throw new Error(`Namespace \"${ns}\" is reserved`);\n }\n return ns;\n}\n\n/**\n * Validate an action or getter name within a namespace.\n */\nexport function assertMemberName(name, namespace, kind = 'member') {\n assertSafeKey(name, `${kind}:${namespace}`);\n if (typeof name !== 'string') {\n throw new Error(`${kind} name in ${namespace} must be a string`);\n }\n if (!VALID_NAME.test(name)) {\n throw new Error(`Invalid ${kind} name \"${name}\" in ${namespace}`);\n }\n if (name.length > MAX_NAME_LENGTH) {\n throw new Error(\n `${kind} name \"${name}\" in ${namespace} too long (max ${MAX_NAME_LENGTH})`\n );\n }\n return name;\n}\n", "import { createDefinition, definitionType } from './createDefinition.js';\nexport const defineMiddleware = createDefinition('MIDDLEWARE', [Function, Array]);\nexport const defineActions = createDefinition('ACTIONS', [Object]);\nexport const defineUninstall = createDefinition('UNINSTALL');\nexport const defineInitialize = createDefinition('INITIALIZE');\nexport const defineGetters = createDefinition('GETTERS', [Object]);\nexport { createDefinition, definitionType };", "// DefinitionBuilder.js\nimport { defineActions, defineGetters, defineMiddleware, defineInitialize, defineUninstall } from './defaults.js';\n\nexport class DefinitionBuilder {\n static create(namespace) {\n return new DefinitionBuilder(namespace);\n }\n\n #ns; #args;\n #slots = { MIDDLEWARE:null, GETTERS:null, ACTIONS:null, INITIALIZE:null, UNINSTALL:null };\n constructor(namespace) { this.#ns = namespace }\n\n #set(type, factory, creator) {\n if (this.#slots[type]) throw new Error(`${type} already defined for ${this.#ns}`);\n this.#slots[type] = creator(this.#ns, factory);\n }\n\n defineMiddleware = (factory) => this.#set('MIDDLEWARE', factory, defineMiddleware);\n defineGetters = (factory) => this.#set('GETTERS', factory, defineGetters);\n defineActions = (factory) => this.#set('ACTIONS', factory, defineActions);\n defineInitialize = (factory) => this.#set('INITIALIZE', factory, defineInitialize);\n defineUninstall = (factory) => this.#set('UNINSTALL', factory, defineUninstall);\n\n _toArray() {\n return [\n this.#slots.MIDDLEWARE,\n this.#slots.GETTERS,\n this.#slots.ACTIONS,\n this.#slots.INITIALIZE,\n this.#slots.UNINSTALL\n ].filter(Boolean);\n }\n}\n\n", "import { assertNamespace } from './utils/asserts.js';\nimport { DefinitionBuilder } from './definitions/DefinitionBuilder.js';\n\n\nexport class ServiceProvider {\n static #services = new Set();\n\n static manifest = {\n name: 'base',\n dependencies: [],\n version: '1.0.0',\n description: 'Base extension template',\n };\n\n static config = null;\n\n static unique = false;\n\n static configure(options = {}) {\n return {\n install: (useContext, config) => this.install(useContext, config),\n manifest: this.manifest,\n config: { ...(this.config || this.manifest.defaults || {}), ...options },\n unique: true,\n configured: true\n };\n }\n\n static install(useContext, config) { \n try {\n const {namespace} = this.manifest;\n assertNamespace(namespace);\n\n // instantiate\n const instance = new this();\n ServiceProvider.#services.add(instance);\n\n // bind context/config\n // bind config (frozen to avoid accidental mutation)\n Object.defineProperty(instance, 'config', {\n value: Object.freeze({ ...config }),\n writable: false,\n configurable: false,\n enumerable: false,\n });\n\n // expose both a live context getter AND the keyed accessor\n Object.defineProperty(instance, 'context', {\n get: () => useContext(), // always fresh, via your proxy\n configurable: false,\n enumerable: false,\n });\n \n Object.defineProperty(instance, 'useContext', {\n value: (...keys) => useContext(...keys),\n writable: false,\n configurable: false,\n enumerable: false,\n });\n\n const builder = DefinitionBuilder.create(namespace);\n\n if (instance.setup) {\n // Create properly bound context for setup pattern\n const setupContext = {\n defineActions: (factory) => builder.defineActions(() => factory(useContext, config)),\n defineMiddleware: (factory) => builder.defineMiddleware(() => factory(useContext, config)),\n defineGetters: (factory) => builder.defineGetters(() => factory(useContext, config)),\n defineInitialize: (factory) => builder.defineInitialize(() => factory(useContext, config)),\n defineUninstall: (factory) => builder.defineUninstall(() => factory(useContext, config))\n };\n const maybe = instance.setup(setupContext);\n return maybe?.then ? maybe.then(() => builder._toArray()) : builder._toArray();\n }\n\n if (instance.middleware) builder.defineMiddleware(() => instance.middleware(useContext, config));\n if (instance.getters) builder.defineGetters (() => instance.getters(useContext, config));\n if (instance.actions) builder.defineActions (() => instance.actions(useContext, config));\n if (instance.initialize) builder.defineInitialize(() => instance.initialize(useContext, config));\n if (instance.uninstall) builder.defineUninstall (() => instance.uninstall(useContext, config));\n\n return builder._toArray();\n } catch (error) {\n throw error;\n }\n }\n}", "const ENGINE_CONTEXT = Symbol('jucie.engine');\n\n/**\n * Registers the engine globally, but only if no engine has already been set.\n * @param {object} engine \n */\n\nexport function provideEngine(engine) {\n if (!globalThis[ENGINE_CONTEXT]) {\n globalThis[ENGINE_CONTEXT] = engine;\n }\n}\n\nexport function hasEngine() {\n return globalThis[ENGINE_CONTEXT] !== undefined;\n}\n\n/**\n * Forcefully override the engine in the global context.\n * Useful for testing or resetting.\n */\nexport function forceEngine(engine) {\n globalThis[ENGINE_CONTEXT] = engine;\n}\n\n/**\n * Retrieves the globally registered engine.\n */\nexport function getEngine() {\n return globalThis[ENGINE_CONTEXT] || null;\n}\n\n/**\n * Retrieves the globally registered engine.\n */\nexport function useEngine() {\n return getEngine();\n}", "var Pe=Object.defineProperty;var a=(e,t)=>Pe(e,\"name\",{value:t,configurable:!0});var P=class{type=3;name=\"\";prefix=\"\";value=\"\";suffix=\"\";modifier=3;constructor(t,r,n,c,l,f){this.type=t,this.name=r,this.prefix=n,this.value=c,this.suffix=l,this.modifier=f}hasCustomName(){return this.name!==\"\"&&typeof this.name!=\"number\"}};a(P,\"Part\");var Re=/[$_\\p{ID_Start}]/u,Ee=/[$_\\u200C\\u200D\\p{ID_Continue}]/u,v=\".*\";function Oe(e,t){return(t?/^[\\x00-\\xFF]*$/:/^[\\x00-\\x7F]*$/).test(e)}a(Oe,\"isASCII\");function D(e,t=!1){let r=[],n=0;for(;n<e.length;){let c=e[n],l=a(function(f){if(!t)throw new TypeError(f);r.push({type:\"INVALID_CHAR\",index:n,value:e[n++]})},\"ErrorOrInvalid\");if(c===\"*\"){r.push({type:\"ASTERISK\",index:n,value:e[n++]});continue}if(c===\"+\"||c===\"?\"){r.push({type:\"OTHER_MODIFIER\",index:n,value:e[n++]});continue}if(c===\"\\\\\"){r.push({type:\"ESCAPED_CHAR\",index:n++,value:e[n++]});continue}if(c===\"{\"){r.push({type:\"OPEN\",index:n,value:e[n++]});continue}if(c===\"}\"){r.push({type:\"CLOSE\",index:n,value:e[n++]});continue}if(c===\":\"){let f=\"\",s=n+1;for(;s<e.length;){let i=e.substr(s,1);if(s===n+1&&Re.test(i)||s!==n+1&&Ee.test(i)){f+=e[s++];continue}break}if(!f){l(`Missing parameter name at ${n}`);continue}r.push({type:\"NAME\",index:n,value:f}),n=s;continue}if(c===\"(\"){let f=1,s=\"\",i=n+1,o=!1;if(e[i]===\"?\"){l(`Pattern cannot start with \"?\" at ${i}`);continue}for(;i<e.length;){if(!Oe(e[i],!1)){l(`Invalid character '${e[i]}' at ${i}.`),o=!0;break}if(e[i]===\"\\\\\"){s+=e[i++]+e[i++];continue}if(e[i]===\")\"){if(f--,f===0){i++;break}}else if(e[i]===\"(\"&&(f++,e[i+1]!==\"?\")){l(`Capturing groups are not allowed at ${i}`),o=!0;break}s+=e[i++]}if(o)continue;if(f){l(`Unbalanced pattern at ${n}`);continue}if(!s){l(`Missing pattern at ${n}`);continue}r.push({type:\"REGEX\",index:n,value:s}),n=i;continue}r.push({type:\"CHAR\",index:n,value:e[n++]})}return r.push({type:\"END\",index:n,value:\"\"}),r}a(D,\"lexer\");function F(e,t={}){let r=D(e);t.delimiter??=\"/#?\",t.prefixes??=\"./\";let n=`[^${x(t.delimiter)}]+?`,c=[],l=0,f=0,s=\"\",i=new Set,o=a(u=>{if(f<r.length&&r[f].type===u)return r[f++].value},\"tryConsume\"),h=a(()=>o(\"OTHER_MODIFIER\")??o(\"ASTERISK\"),\"tryConsumeModifier\"),p=a(u=>{let d=o(u);if(d!==void 0)return d;let{type:g,index:y}=r[f];throw new TypeError(`Unexpected ${g} at ${y}, expected ${u}`)},\"mustConsume\"),A=a(()=>{let u=\"\",d;for(;d=o(\"CHAR\")??o(\"ESCAPED_CHAR\");)u+=d;return u},\"consumeText\"),xe=a(u=>u,\"DefaultEncodePart\"),N=t.encodePart||xe,H=\"\",$=a(u=>{H+=u},\"appendToPendingFixedValue\"),M=a(()=>{H.length&&(c.push(new P(3,\"\",\"\",N(H),\"\",3)),H=\"\")},\"maybeAddPartFromPendingFixedValue\"),X=a((u,d,g,y,Z)=>{let m=3;switch(Z){case\"?\":m=1;break;case\"*\":m=0;break;case\"+\":m=2;break}if(!d&&!g&&m===3){$(u);return}if(M(),!d&&!g){if(!u)return;c.push(new P(3,\"\",\"\",N(u),\"\",m));return}let S;g?g===\"*\"?S=v:S=g:S=n;let k=2;S===n?(k=1,S=\"\"):S===v&&(k=0,S=\"\");let E;if(d?E=d:g&&(E=l++),i.has(E))throw new TypeError(`Duplicate name '${E}'.`);i.add(E),c.push(new P(k,E,N(u),S,N(y),m))},\"addPart\");for(;f<r.length;){let u=o(\"CHAR\"),d=o(\"NAME\"),g=o(\"REGEX\");if(!d&&!g&&(g=o(\"ASTERISK\")),d||g){let m=u??\"\";t.prefixes.indexOf(m)===-1&&($(m),m=\"\"),M();let S=h();X(m,d,g,\"\",S);continue}let y=u??o(\"ESCAPED_CHAR\");if(y){$(y);continue}if(o(\"OPEN\")){let m=A(),S=o(\"NAME\"),k=o(\"REGEX\");!S&&!k&&(k=o(\"ASTERISK\"));let E=A();p(\"CLOSE\");let be=h();X(m,S,k,E,be);continue}M(),p(\"END\")}return c}a(F,\"parse\");function x(e){return e.replace(/([.+*?^${}()[\\]|/\\\\])/g,\"\\\\$1\")}a(x,\"escapeString\");function B(e){return e&&e.ignoreCase?\"ui\":\"u\"}a(B,\"flags\");function q(e,t,r){return W(F(e,r),t,r)}a(q,\"stringToRegexp\");function T(e){switch(e){case 0:return\"*\";case 1:return\"?\";case 2:return\"+\";case 3:return\"\"}}a(T,\"modifierToString\");function W(e,t,r={}){r.delimiter??=\"/#?\",r.prefixes??=\"./\",r.sensitive??=!1,r.strict??=!1,r.end??=!0,r.start??=!0,r.endsWith=\"\";let n=r.start?\"^\":\"\";for(let s of e){if(s.type===3){s.modifier===3?n+=x(s.value):n+=`(?:${x(s.value)})${T(s.modifier)}`;continue}t&&t.push(s.name);let i=`[^${x(r.delimiter)}]+?`,o=s.value;if(s.type===1?o=i:s.type===0&&(o=v),!s.prefix.length&&!s.suffix.length){s.modifier===3||s.modifier===1?n+=`(${o})${T(s.modifier)}`:n+=`((?:${o})${T(s.modifier)})`;continue}if(s.modifier===3||s.modifier===1){n+=`(?:${x(s.prefix)}(${o})${x(s.suffix)})`,n+=T(s.modifier);continue}n+=`(?:${x(s.prefix)}`,n+=`((?:${o})(?:`,n+=x(s.suffix),n+=x(s.prefix),n+=`(?:${o}))*)${x(s.suffix)})`,s.modifier===0&&(n+=\"?\")}let c=`[${x(r.endsWith)}]|$`,l=`[${x(r.delimiter)}]`;if(r.end)return r.strict||(n+=`${l}?`),r.endsWith.length?n+=`(?=${c})`:n+=\"$\",new RegExp(n,B(r));r.strict||(n+=`(?:${l}(?=${c}))?`);let f=!1;if(e.length){let s=e[e.length-1];s.type===3&&s.modifier===3&&(f=r.delimiter.indexOf(s)>-1)}return f||(n+=`(?=${l}|${c})`),new RegExp(n,B(r))}a(W,\"partsToRegexp\");var b={delimiter:\"\",prefixes:\"\",sensitive:!0,strict:!0},J={delimiter:\".\",prefixes:\"\",sensitive:!0,strict:!0},Q={delimiter:\"/\",prefixes:\"/\",sensitive:!0,strict:!0};function ee(e,t){return e.length?e[0]===\"/\"?!0:!t||e.length<2?!1:(e[0]==\"\\\\\"||e[0]==\"{\")&&e[1]==\"/\":!1}a(ee,\"isAbsolutePathname\");function te(e,t){return e.startsWith(t)?e.substring(t.length,e.length):e}a(te,\"maybeStripPrefix\");function ke(e,t){return e.endsWith(t)?e.substr(0,e.length-t.length):e}a(ke,\"maybeStripSuffix\");function _(e){return!e||e.length<2?!1:e[0]===\"[\"||(e[0]===\"\\\\\"||e[0]===\"{\")&&e[1]===\"[\"}a(_,\"treatAsIPv6Hostname\");var re=[\"ftp\",\"file\",\"http\",\"https\",\"ws\",\"wss\"];function U(e){if(!e)return!0;for(let t of re)if(e.test(t))return!0;return!1}a(U,\"isSpecialScheme\");function ne(e,t){if(e=te(e,\"#\"),t||e===\"\")return e;let r=new URL(\"https://example.com\");return r.hash=e,r.hash?r.hash.substring(1,r.hash.length):\"\"}a(ne,\"canonicalizeHash\");function se(e,t){if(e=te(e,\"?\"),t||e===\"\")return e;let r=new URL(\"https://example.com\");return r.search=e,r.search?r.search.substring(1,r.search.length):\"\"}a(se,\"canonicalizeSearch\");function ie(e,t){return t||e===\"\"?e:_(e)?K(e):j(e)}a(ie,\"canonicalizeHostname\");function ae(e,t){if(t||e===\"\")return e;let r=new URL(\"https://example.com\");return r.password=e,r.password}a(ae,\"canonicalizePassword\");function oe(e,t){if(t||e===\"\")return e;let r=new URL(\"https://example.com\");return r.username=e,r.username}a(oe,\"canonicalizeUsername\");function ce(e,t,r){if(r||e===\"\")return e;if(t&&!re.includes(t))return new URL(`${t}:${e}`).pathname;let n=e[0]==\"/\";return e=new URL(n?e:\"/-\"+e,\"https://example.com\").pathname,n||(e=e.substring(2,e.length)),e}a(ce,\"canonicalizePathname\");function le(e,t,r){return z(t)===e&&(e=\"\"),r||e===\"\"?e:G(e)}a(le,\"canonicalizePort\");function fe(e,t){return e=ke(e,\":\"),t||e===\"\"?e:w(e)}a(fe,\"canonicalizeProtocol\");function z(e){switch(e){case\"ws\":case\"http\":return\"80\";case\"wws\":case\"https\":return\"443\";case\"ftp\":return\"21\";default:return\"\"}}a(z,\"defaultPortForProtocol\");function w(e){if(e===\"\")return e;if(/^[-+.A-Za-z0-9]*$/.test(e))return e.toLowerCase();throw new TypeError(`Invalid protocol '${e}'.`)}a(w,\"protocolEncodeCallback\");function he(e){if(e===\"\")return e;let t=new URL(\"https://example.com\");return t.username=e,t.username}a(he,\"usernameEncodeCallback\");function ue(e){if(e===\"\")return e;let t=new URL(\"https://example.com\");return t.password=e,t.password}a(ue,\"passwordEncodeCallback\");function j(e){if(e===\"\")return e;if(/[\\t\\n\\r #%/:<>?@[\\]^\\\\|]/g.test(e))throw new TypeError(`Invalid hostname '${e}'`);let t=new URL(\"https://example.com\");return t.hostname=e,t.hostname}a(j,\"hostnameEncodeCallback\");function K(e){if(e===\"\")return e;if(/[^0-9a-fA-F[\\]:]/g.test(e))throw new TypeError(`Invalid IPv6 hostname '${e}'`);return e.toLowerCase()}a(K,\"ipv6HostnameEncodeCallback\");function G(e){if(e===\"\"||/^[0-9]*$/.test(e)&&parseInt(e)<=65535)return e;throw new TypeError(`Invalid port '${e}'.`)}a(G,\"portEncodeCallback\");function de(e){if(e===\"\")return e;let t=new URL(\"https://example.com\");return t.pathname=e[0]!==\"/\"?\"/-\"+e:e,e[0]!==\"/\"?t.pathname.substring(2,t.pathname.length):t.pathname}a(de,\"standardURLPathnameEncodeCallback\");function pe(e){return e===\"\"?e:new URL(`data:${e}`).pathname}a(pe,\"pathURLPathnameEncodeCallback\");function ge(e){if(e===\"\")return e;let t=new URL(\"https://example.com\");return t.search=e,t.search.substring(1,t.search.length)}a(ge,\"searchEncodeCallback\");function me(e){if(e===\"\")return e;let t=new URL(\"https://example.com\");return t.hash=e,t.hash.substring(1,t.hash.length)}a(me,\"hashEncodeCallback\");var C=class{#i;#n=[];#t={};#e=0;#s=1;#l=0;#o=0;#d=0;#p=0;#g=!1;constructor(t){this.#i=t}get result(){return this.#t}parse(){for(this.#n=D(this.#i,!0);this.#e<this.#n.length;this.#e+=this.#s){if(this.#s=1,this.#n[this.#e].type===\"END\"){if(this.#o===0){this.#b(),this.#f()?this.#r(9,1):this.#h()?this.#r(8,1):this.#r(7,0);continue}else if(this.#o===2){this.#u(5);continue}this.#r(10,0);break}if(this.#d>0)if(this.#A())this.#d-=1;else continue;if(this.#T()){this.#d+=1;continue}switch(this.#o){case 0:this.#P()&&this.#u(1);break;case 1:if(this.#P()){this.#C();let t=7,r=1;this.#E()?(t=2,r=3):this.#g&&(t=2),this.#r(t,r)}break;case 2:this.#S()?this.#u(3):(this.#x()||this.#h()||this.#f())&&this.#u(5);break;case 3:this.#O()?this.#r(4,1):this.#S()&&this.#r(5,1);break;case 4:this.#S()&&this.#r(5,1);break;case 5:this.#y()?this.#p+=1:this.#w()&&(this.#p-=1),this.#k()&&!this.#p?this.#r(6,1):this.#x()?this.#r(7,0):this.#h()?this.#r(8,1):this.#f()&&this.#r(9,1);break;case 6:this.#x()?this.#r(7,0):this.#h()?this.#r(8,1):this.#f()&&this.#r(9,1);break;case 7:this.#h()?this.#r(8,1):this.#f()&&this.#r(9,1);break;case 8:this.#f()&&this.#r(9,1);break;case 9:break;case 10:break}}this.#t.hostname!==void 0&&this.#t.port===void 0&&(this.#t.port=\"\")}#r(t,r){switch(this.#o){case 0:break;case 1:this.#t.protocol=this.#c();break;case 2:break;case 3:this.#t.username=this.#c();break;case 4:this.#t.password=this.#c();break;case 5:this.#t.hostname=this.#c();break;case 6:this.#t.port=this.#c();break;case 7:this.#t.pathname=this.#c();break;case 8:this.#t.search=this.#c();break;case 9:this.#t.hash=this.#c();break;case 10:break}this.#o!==0&&t!==10&&([1,2,3,4].includes(this.#o)&&[6,7,8,9].includes(t)&&(this.#t.hostname??=\"\"),[1,2,3,4,5,6].includes(this.#o)&&[8,9].includes(t)&&(this.#t.pathname??=this.#g?\"/\":\"\"),[1,2,3,4,5,6,7].includes(this.#o)&&t===9&&(this.#t.search??=\"\")),this.#R(t,r)}#R(t,r){this.#o=t,this.#l=this.#e+r,this.#e+=r,this.#s=0}#b(){this.#e=this.#l,this.#s=0}#u(t){this.#b(),this.#o=t}#m(t){return t<0&&(t=this.#n.length-t),t<this.#n.length?this.#n[t]:this.#n[this.#n.length-1]}#a(t,r){let n=this.#m(t);return n.value===r&&(n.type===\"CHAR\"||n.type===\"ESCAPED_CHAR\"||n.type===\"INVALID_CHAR\")}#P(){return this.#a(this.#e,\":\")}#E(){return this.#a(this.#e+1,\"/\")&&this.#a(this.#e+2,\"/\")}#S(){return this.#a(this.#e,\"@\")}#O(){return this.#a(this.#e,\":\")}#k(){return this.#a(this.#e,\":\")}#x(){return this.#a(this.#e,\"/\")}#h(){if(this.#a(this.#e,\"?\"))return!0;if(this.#n[this.#e].value!==\"?\")return!1;let t=this.#m(this.#e-1);return t.type!==\"NAME\"&&t.type!==\"REGEX\"&&t.type!==\"CLOSE\"&&t.type!==\"ASTERISK\"}#f(){return this.#a(this.#e,\"#\")}#T(){return this.#n[this.#e].type==\"OPEN\"}#A(){return this.#n[this.#e].type==\"CLOSE\"}#y(){return this.#a(this.#e,\"[\")}#w(){return this.#a(this.#e,\"]\")}#c(){let t=this.#n[this.#e],r=this.#m(this.#l).index;return this.#i.substring(r,t.index)}#C(){let t={};Object.assign(t,b),t.encodePart=w;let r=q(this.#c(),void 0,t);this.#g=U(r)}};a(C,\"Parser\");var V=[\"protocol\",\"username\",\"password\",\"hostname\",\"port\",\"pathname\",\"search\",\"hash\"],O=\"*\";function Se(e,t){if(typeof e!=\"string\")throw new TypeError(\"parameter 1 is not of type 'string'.\");let r=new URL(e,t);return{protocol:r.protocol.substring(0,r.protocol.length-1),username:r.username,password:r.password,hostname:r.hostname,port:r.port,pathname:r.pathname,search:r.search!==\"\"?r.search.substring(1,r.search.length):void 0,hash:r.hash!==\"\"?r.hash.substring(1,r.hash.length):void 0}}a(Se,\"extractValues\");function R(e,t){return t?I(e):e}a(R,\"processBaseURLString\");function L(e,t,r){let n;if(typeof t.baseURL==\"string\")try{n=new URL(t.baseURL),t.protocol===void 0&&(e.protocol=R(n.protocol.substring(0,n.protocol.length-1),r)),!r&&t.protocol===void 0&&t.hostname===void 0&&t.port===void 0&&t.username===void 0&&(e.username=R(n.username,r)),!r&&t.protocol===void 0&&t.hostname===void 0&&t.port===void 0&&t.username===void 0&&t.password===void 0&&(e.password=R(n.password,r)),t.protocol===void 0&&t.hostname===void 0&&(e.hostname=R(n.hostname,r)),t.protocol===void 0&&t.hostname===void 0&&t.port===void 0&&(e.port=R(n.port,r)),t.protocol===void 0&&t.hostname===void 0&&t.port===void 0&&t.pathname===void 0&&(e.pathname=R(n.pathname,r)),t.protocol===void 0&&t.hostname===void 0&&t.port===void 0&&t.pathname===void 0&&t.search===void 0&&(e.search=R(n.search.substring(1,n.search.length),r)),t.protocol===void 0&&t.hostname===void 0&&t.port===void 0&&t.pathname===void 0&&t.search===void 0&&t.hash===void 0&&(e.hash=R(n.hash.substring(1,n.hash.length),r))}catch{throw new TypeError(`invalid baseURL '${t.baseURL}'.`)}if(typeof t.protocol==\"string\"&&(e.protocol=fe(t.protocol,r)),typeof t.username==\"string\"&&(e.username=oe(t.username,r)),typeof t.password==\"string\"&&(e.password=ae(t.password,r)),typeof t.hostname==\"string\"&&(e.hostname=ie(t.hostname,r)),typeof t.port==\"string\"&&(e.port=le(t.port,e.protocol,r)),typeof t.pathname==\"string\"){if(e.pathname=t.pathname,n&&!ee(e.pathname,r)){let c=n.pathname.lastIndexOf(\"/\");c>=0&&(e.pathname=R(n.pathname.substring(0,c+1),r)+e.pathname)}e.pathname=ce(e.pathname,e.protocol,r)}return typeof t.search==\"string\"&&(e.search=se(t.search,r)),typeof t.hash==\"string\"&&(e.hash=ne(t.hash,r)),e}a(L,\"applyInit\");function I(e){return e.replace(/([+*?:{}()\\\\])/g,\"\\\\$1\")}a(I,\"escapePatternString\");function Te(e){return e.replace(/([.+*?^${}()[\\]|/\\\\])/g,\"\\\\$1\")}a(Te,\"escapeRegexpString\");function Ae(e,t){t.delimiter??=\"/#?\",t.prefixes??=\"./\",t.sensitive??=!1,t.strict??=!1,t.end??=!0,t.start??=!0,t.endsWith=\"\";let r=\".*\",n=`[^${Te(t.delimiter)}]+?`,c=/[$_\\u200C\\u200D\\p{ID_Continue}]/u,l=\"\";for(let f=0;f<e.length;++f){let s=e[f];if(s.type===3){if(s.modifier===3){l+=I(s.value);continue}l+=`{${I(s.value)}}${T(s.modifier)}`;continue}let i=s.hasCustomName(),o=!!s.suffix.length||!!s.prefix.length&&(s.prefix.length!==1||!t.prefixes.includes(s.prefix)),h=f>0?e[f-1]:null,p=f<e.length-1?e[f+1]:null;if(!o&&i&&s.type===1&&s.modifier===3&&p&&!p.prefix.length&&!p.suffix.length)if(p.type===3){let A=p.value.length>0?p.value[0]:\"\";o=c.test(A)}else o=!p.hasCustomName();if(!o&&!s.prefix.length&&h&&h.type===3){let A=h.value[h.value.length-1];o=t.prefixes.includes(A)}o&&(l+=\"{\"),l+=I(s.prefix),i&&(l+=`:${s.name}`),s.type===2?l+=`(${s.value})`:s.type===1?i||(l+=`(${n})`):s.type===0&&(!i&&(!h||h.type===3||h.modifier!==3||o||s.prefix!==\"\")?l+=\"*\":l+=`(${r})`),s.type===1&&i&&s.suffix.length&&c.test(s.suffix[0])&&(l+=\"\\\\\"),l+=I(s.suffix),o&&(l+=\"}\"),s.modifier!==3&&(l+=T(s.modifier))}return l}a(Ae,\"partsToPattern\");var Y=class{#i;#n={};#t={};#e={};#s={};#l=!1;constructor(t={},r,n){try{let c;if(typeof r==\"string\"?c=r:n=r,typeof t==\"string\"){let i=new C(t);if(i.parse(),t=i.result,c===void 0&&typeof t.protocol!=\"string\")throw new TypeError(\"A base URL must be provided for a relative constructor string.\");t.baseURL=c}else{if(!t||typeof t!=\"object\")throw new TypeError(\"parameter 1 is not of type 'string' and cannot convert to dictionary.\");if(c)throw new TypeError(\"parameter 1 is not of type 'string'.\")}typeof n>\"u\"&&(n={ignoreCase:!1});let l={ignoreCase:n.ignoreCase===!0},f={pathname:O,protocol:O,username:O,password:O,hostname:O,port:O,search:O,hash:O};this.#i=L(f,t,!0),z(this.#i.protocol)===this.#i.port&&(this.#i.port=\"\");let s;for(s of V){if(!(s in this.#i))continue;let i={},o=this.#i[s];switch(this.#t[s]=[],s){case\"protocol\":Object.assign(i,b),i.encodePart=w;break;case\"username\":Object.assign(i,b),i.encodePart=he;break;case\"password\":Object.assign(i,b),i.encodePart=ue;break;case\"hostname\":Object.assign(i,J),_(o)?i.encodePart=K:i.encodePart=j;break;case\"port\":Object.assign(i,b),i.encodePart=G;break;case\"pathname\":U(this.#n.protocol)?(Object.assign(i,Q,l),i.encodePart=de):(Object.assign(i,b,l),i.encodePart=pe);break;case\"search\":Object.assign(i,b,l),i.encodePart=ge;break;case\"hash\":Object.assign(i,b,l),i.encodePart=me;break}try{this.#s[s]=F(o,i),this.#n[s]=W(this.#s[s],this.#t[s],i),this.#e[s]=Ae(this.#s[s],i),this.#l=this.#l||this.#s[s].some(h=>h.type===2)}catch{throw new TypeError(`invalid ${s} pattern '${this.#i[s]}'.`)}}}catch(c){throw new TypeError(`Failed to construct 'URLPattern': ${c.message}`)}}get[Symbol.toStringTag](){return\"URLPattern\"}test(t={},r){let n={pathname:\"\",protocol:\"\",username:\"\",password:\"\",hostname:\"\",port:\"\",search:\"\",hash:\"\"};if(typeof t!=\"string\"&&r)throw new TypeError(\"parameter 1 is not of type 'string'.\");if(typeof t>\"u\")return!1;try{typeof t==\"object\"?n=L(n,t,!1):n=L(n,Se(t,r),!1)}catch{return!1}let c;for(c of V)if(!this.#n[c].exec(n[c]))return!1;return!0}exec(t={},r){let n={pathname:\"\",protocol:\"\",username:\"\",password:\"\",hostname:\"\",port:\"\",search:\"\",hash:\"\"};if(typeof t!=\"string\"&&r)throw new TypeError(\"parameter 1 is not of type 'string'.\");if(typeof t>\"u\")return;try{typeof t==\"object\"?n=L(n,t,!1):n=L(n,Se(t,r),!1)}catch{return null}let c={};r?c.inputs=[t,r]:c.inputs=[t];let l;for(l of V){let f=this.#n[l].exec(n[l]);if(!f)return null;let s={};for(let[i,o]of this.#t[l].entries())if(typeof o==\"string\"||typeof o==\"number\"){let h=f[i+1];s[o]=h}c[l]={input:n[l]??\"\",groups:s}}return c}static compareComponent(t,r,n){let c=a((i,o)=>{for(let h of[\"type\",\"modifier\",\"prefix\",\"value\",\"suffix\"]){if(i[h]<o[h])return-1;if(i[h]===o[h])continue;return 1}return 0},\"comparePart\"),l=new P(3,\"\",\"\",\"\",\"\",3),f=new P(0,\"\",\"\",\"\",\"\",3),s=a((i,o)=>{let h=0;for(;h<Math.min(i.length,o.length);++h){let p=c(i[h],o[h]);if(p)return p}return i.length===o.length?0:c(i[h]??l,o[h]??l)},\"comparePartList\");return!r.#e[t]&&!n.#e[t]?0:r.#e[t]&&!n.#e[t]?s(r.#s[t],[f]):!r.#e[t]&&n.#e[t]?s([f],n.#s[t]):s(r.#s[t],n.#s[t])}get protocol(){return this.#e.protocol}get username(){return this.#e.username}get password(){return this.#e.password}get hostname(){return this.#e.hostname}get port(){return this.#e.port}get pathname(){return this.#e.pathname}get search(){return this.#e.search}get hash(){return this.#e.hash}get hasRegExpGroups(){return this.#l}};a(Y,\"URLPattern\");export{Y as URLPattern};\n", "import { URLPattern } from \"./dist/urlpattern.js\";\n\nexport { URLPattern };\n\nif (!globalThis.URLPattern) {\n globalThis.URLPattern = URLPattern;\n}\n", "// Import URLPattern polyfill synchronously - no-op on modern Node.js\nimport 'urlpattern-polyfill';\n\n/**\n * Compile a route pattern into a matcher function using URLPattern\n * @param {string} pattern - Route pattern (e.g., '/users/:id', '/api/*')\n * @returns {Function} - Function that returns params object or null\n */\nexport function compileRoute(pattern) {\n // URLPattern supports :param syntax directly, no conversion needed\n const pat = new URLPattern({ pathname: pattern });\n \n return (pathname) => {\n const match = pat.exec({ pathname });\n return match?.pathname.groups ?? null;\n };\n}\n\n/**\n * Parse route parameters from a route path for documentation\n * @param {string} routePath - The route path (e.g., '/users/:id/posts/:postId')\n * @returns {Array} Array of parameter objects with name and type info\n */\nexport function parseRouteParams(routePath) {\n const paramRegex = /:([a-zA-Z_][a-zA-Z0-9_]*)(\\?)?(\\*)?/g;\n const params = [];\n let match;\n \n while ((match = paramRegex.exec(routePath)) !== null) {\n const [, name, optional, splat] = match;\n params.push({\n name,\n optional: !!optional,\n splat: !!splat,\n fullMatch: match[0]\n });\n }\n \n // Also handle standalone wildcard routes (*)\n if (routePath.includes('*') && !routePath.includes(':*')) {\n params.push({\n name: 'wild',\n optional: false,\n splat: true,\n fullMatch: '*'\n });\n }\n \n return params;\n}\n\n/**\n * Replace route parameters with actual values\n * @param {string} routePath - The route path template\n * @param {Object} params - Object with parameter values\n * @param {Object} options - Replacement options\n * @returns {string} - The resolved path\n */\nexport function replaceRouteParams(routePath, params = {}, options = {}) {\n const {\n strict = true, // Throw error if required param is missing\n encode = true, // URL encode parameter values\n defaultValue = '' // Default value for missing params\n } = options;\n \n let resolvedPath = routePath;\n const routeParams = parseRouteParams(routePath);\n \n for (const param of routeParams) {\n const { name, optional, fullMatch } = param;\n let value = params[name];\n \n // Handle missing parameters\n if (value === undefined || value === null) {\n if (optional) {\n // Remove optional parameter and its leading slash if present\n resolvedPath = resolvedPath.replace(`/${fullMatch}`, '').replace(fullMatch, '');\n continue;\n } else if (strict) {\n throw new Error(`Missing required route parameter: ${name}`);\n } else {\n value = defaultValue;\n }\n }\n \n // Convert value to string and optionally encode\n const stringValue = String(value);\n const encodedValue = encode ? encodeURIComponent(stringValue) : stringValue;\n \n // Replace the parameter in the path\n resolvedPath = resolvedPath.replace(fullMatch, encodedValue);\n }\n \n // Clean up any double slashes that might have been created\n resolvedPath = resolvedPath.replace(/\\/+/g, '/');\n \n return resolvedPath;\n}\n", "import { compileRoute } from './utils/routeMatch.js';\n\n/**\n * Kernel handles route registration and matching\n * Separates routing logic from HTTP protocol handling\n */\nexport class Kernel {\n #routes = []; // { method, path, match, handler, mode, revalidate, ... }\n #appHandlers = []; // [{ match, handle, cleanup? }]\n #hooks = { \n onRequest: null, \n preHandler: null, \n onSend: null, \n onError: null \n };\n\n #staticFallback = null;\n\n constructor() {}\n\n /**\n * Register multiple routes at once\n * @param {Array} rawRoutes - Array of route objects\n */\n registerRoutes(rawRoutes) {\n for (const r of rawRoutes) {\n this.registerRoute(r);\n }\n }\n\n /**\n * Register a single route\n * @param {Object} route - Route object with method, path, handler, etc.\n */\n registerRoute(route) {\n const compiledRoute = {\n ...route,\n match: compileRoute(route.path)\n };\n this.#routes.push(compiledRoute);\n }\n\n setAppHandlers(handlers = []) {\n this.#appHandlers = Array.isArray(handlers) ? handlers : [];\n }\n\n async cleanupAppHandlers() {\n for (const handler of this.#appHandlers) {\n if (handler?.cleanup) {\n await handler.cleanup();\n }\n }\n this.#appHandlers = [];\n }\n\n /**\n * Configure hooks\n * @param {Object} hooks - Hook functions\n */\n hooks(h) { \n Object.assign(this.#hooks, h); \n }\n\n /**\n * Set static file fallback handler\n * @param {string} outputDir - Directory to serve static files from\n * @param {Function} handler - Static file handler function\n */\n setStaticFallback(outputDir, handler) {\n this.#staticFallback = { outputDir, handler };\n }\n\n /**\n * Handle a request through the routing system\n * @param {Object} ctx - Request context\n * @returns {Object} Response object\n */\n async handle(ctx) {\n let response;\n try {\n // onRequest can short-circuit\n const onReqOut = await this.#hooks.onRequest?.(ctx);\n if (onReqOut) { response = onReqOut; return response; }\n\n // app handlers first\n for (const handler of this.#appHandlers) {\n try {\n if (!handler?.match || !handler?.handle) continue;\n if (await handler.match(ctx.req)) {\n const handlerResponse = await handler.handle(ctx);\n if (handlerResponse) {\n response = handlerResponse;\n return response;\n }\n }\n } catch (handlerError) {\n response = (await this.#hooks.onError?.(ctx, handlerError))\n ?? ctx.respond.text('Internal Server Error', 500);\n return response;\n }\n }\n\n // route match \u2026\n let matchParams = null;\n const route = this.#routes.find(r => {\n if (r.method !== ctx.req.method) return false;\n const m = r.match(ctx.req.path);\n if (m) { matchParams = m; return true; }\n return false;\n });\n\n if (!route) {\n if (this.#staticFallback) {\n const staticResponse = await this.#staticFallback.handler(ctx, this.#staticFallback.outputDir);\n response = (staticResponse && staticResponse.status !== 404)\n ? staticResponse\n : ctx.respond.text('Not Found', 404);\n } else {\n response = ctx.respond.text('Not Found', 404);\n }\n return response;\n }\n\n ctx.req.params = matchParams || {};\n\n // preHandler can short-circuit\n const preOut = await this.#hooks.preHandler?.(ctx, route);\n if (preOut) { response = preOut; return response; }\n\n // route handler\n response = await route.handler(ctx);\n\n } catch (err) {\n response = (await this.#hooks.onError?.(ctx, err))\n ?? ctx.respond.text('Internal Server Error', 500);\n } finally {\n await this.#hooks.onSend?.(ctx, response);\n }\n return response ?? ctx.respond.text('', 204);\n }\n\n\n /**\n * Get all registered routes\n * @returns {Array} Array of registered routes\n */\n getRoutes() {\n return this.#routes.map(route => ({\n method: route.method,\n path: route.path,\n params: route.params || [],\n compiled: true\n }));\n }\n}\n", "/**\n * HTTP Adapter for Node.js native HTTP server\n * Thin I/O shim: normalize req/res, call kernel, send response\n */\nimport http from 'node:http';\nimport { AdapterInterface } from './AdapterInterface.js';\nimport { parseBody } from '../utils/httpParsing.js';\n\nexport class HttpAdapter extends AdapterInterface {\n #connections = new Set();\n\n constructor() {\n super('http');\n }\n\n async initialize(kernel, opts = {}, log = null) {\n await super.initialize(kernel, opts, log);\n \n // Warn if middleware is configured for HTTP adapter\n if (opts.middleware?.length > 0) {\n log?.warn('Middleware configured but HTTP adapter selected. Consider using adapter: \"express\" for full middleware support.');\n log?.info('HTTP adapter will simulate middleware using hooks for basic compatibility.');\n }\n }\n\n async start({ port = 3000, host = '0.0.0.0' } = {}) {\n this.server = http.createServer(async (req, res) => {\n try {\n // Simulate middleware execution for HTTP adapter\n if (this.opts.middleware?.length > 0) {\n const success = await this.#simulateMiddleware(req, res, this.opts.middleware);\n if (!success) return; // Response was sent by middleware\n }\n\n // Parse body for HTTP adapter\n if (!req.body) {\n req.body = await parseBody(req);\n }\n\n const ctx = this.createContext(req, res);\n const out = await this.kernel.handle(ctx);\n await this.sendResponse(res, out, req.method === 'HEAD');\n } catch (error) {\n await this.handleError(res, error);\n }\n });\n\n // Track connections for clean shutdown\n this.server.on('connection', (conn) => {\n this.#connections.add(conn);\n conn.on('close', () => {\n this.#connections.delete(conn);\n });\n });\n\n await new Promise((resolve, reject) =>\n this.server.listen(port, host, err => (err ? reject(err) : resolve()))\n );\n\n this.log?.info?.(`HTTP Server listening on http://${host}:${port}`);\n return this.server;\n }\n\n async stop() {\n if (this.server) {\n // Destroy all active connections\n for (const conn of this.#connections) {\n conn.destroy();\n }\n this.#connections.clear();\n\n // Close the server\n await new Promise(resolve => this.server.close(() => resolve()));\n this.server = null;\n }\n }\n\n /**\n * Simulate Express middleware for HTTP adapter\n * Limited compatibility - not all Express middleware will work\n * @private\n */\n async #simulateMiddleware(req, res, middlewareArray) {\n for (const middleware of middlewareArray) {\n try {\n let nextCalled = false;\n const next = (err) => {\n if (err) throw err;\n nextCalled = true;\n };\n\n // Add Express-like methods to response\n if (!res.json) {\n res.json = (data) => {\n res.setHeader('Content-Type', 'application/json');\n res.end(JSON.stringify(data));\n return false; // Indicates response was sent\n };\n }\n\n await middleware(req, res, next);\n \n // If next wasn't called and response was sent, stop processing\n if (!nextCalled && res.headersSent) {\n return false;\n }\n } catch (error) {\n this.log?.error(`Middleware simulation error: ${error.message}`);\n res.statusCode = 500;\n res.end('Internal Server Error');\n return false;\n }\n }\n return true; // Continue to kernel\n }\n\n}\n", "const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n", "import process from 'node:process';\nimport os from 'node:os';\nimport tty from 'node:tty';\n\n// From: https://github.com/sindresorhus/has-flag/blob/main/index.js\n/// function hasFlag(flag, argv = globalThis.Deno?.args ?? process.argv) {\nfunction hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process.argv) {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n}\n\nconst {env} = process;\n\nlet flagForceColor;\nif (\n\thasFlag('no-color')\n\t|| hasFlag('no-colors')\n\t|| hasFlag('color=false')\n\t|| hasFlag('color=never')\n) {\n\tflagForceColor = 0;\n} else if (\n\thasFlag('color')\n\t|| hasFlag('colors')\n\t|| hasFlag('color=true')\n\t|| hasFlag('color=always')\n) {\n\tflagForceColor = 1;\n}\n\nfunction envForceColor() {\n\tif ('FORCE_COLOR' in env) {\n\t\tif (env.FORCE_COLOR === 'true') {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (env.FORCE_COLOR === 'false') {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3,\n\t};\n}\n\nfunction _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {\n\tconst noFlagForceColor = envForceColor();\n\tif (noFlagForceColor !== undefined) {\n\t\tflagForceColor = noFlagForceColor;\n\t}\n\n\tconst forceColor = sniffFlags ? flagForceColor : noFlagForceColor;\n\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (sniffFlags) {\n\t\tif (hasFlag('color=16m')\n\t\t\t|| hasFlag('color=full')\n\t\t\t|| hasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\t// Check for Azure DevOps pipelines.\n\t// Has to be above the `!streamIsTTY` check.\n\tif ('TF_BUILD' in env && 'AGENT_NAME' in env) {\n\t\treturn 1;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10\n\t\t\t&& Number(osRelease[2]) >= 10_586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14_931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['GITHUB_ACTIONS', 'GITEA_ACTIONS', 'CIRCLECI'].some(key => key in env)) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (['TRAVIS', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-kitty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-ghostty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'wezterm') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app': {\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\t}\n\n\t\t\tcase 'Apple_Terminal': {\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nexport function createSupportsColor(stream, options = {}) {\n\tconst level = _supportsColor(stream, {\n\t\tstreamIsTTY: stream && stream.isTTY,\n\t\t...options,\n\t});\n\n\treturn translateLevel(level);\n}\n\nconst supportsColor = {\n\tstdout: createSupportsColor({isTTY: tty.isatty(1)}),\n\tstderr: createSupportsColor({isTTY: tty.isatty(2)}),\n};\n\nexport default supportsColor;\n", "// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`.\nexport function stringReplaceAll(string, substring, replacer) {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.slice(endIndex, index) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n\nexport function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n", "import ansiStyles from '#ansi-styles';\nimport supportsColor from '#supports-color';\nimport { // eslint-disable-line import/order\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex,\n} from './utilities.js';\n\nconst {stdout: stdoutColor, stderr: stderrColor} = supportsColor;\n\nconst GENERATOR = Symbol('GENERATOR');\nconst STYLER = Symbol('STYLER');\nconst IS_EMPTY = Symbol('IS_EMPTY');\n\n// `supportsColor.level` \u2192 `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m',\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nexport class Chalk {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = (...strings) => strings.join(' ');\n\tapplyOptions(chalk, options);\n\n\tObject.setPrototypeOf(chalk, createChalk.prototype);\n\n\treturn chalk;\n};\n\nfunction createChalk(options) {\n\treturn chalkFactory(options);\n}\n\nObject.setPrototypeOf(createChalk.prototype, Function.prototype);\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t},\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this[STYLER], true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t},\n};\n\nconst getModelAnsi = (model, level, type, ...arguments_) => {\n\tif (model === 'rgb') {\n\t\tif (level === 'ansi16m') {\n\t\t\treturn ansiStyles[type].ansi16m(...arguments_);\n\t\t}\n\n\t\tif (level === 'ansi256') {\n\t\t\treturn ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));\n\t\t}\n\n\t\treturn ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));\n\t}\n\n\tif (model === 'hex') {\n\t\treturn getModelAnsi('rgb', level, type, ...ansiStyles.hexToRgb(...arguments_));\n\t}\n\n\treturn ansiStyles[type][model](...arguments_);\n};\n\nconst usedModels = ['rgb', 'hex', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), ansiStyles.color.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), ansiStyles.bgColor.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this[GENERATOR].level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis[GENERATOR].level = level;\n\t\t},\n\t},\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent,\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\t// Single argument is hot path, implicit coercion is faster than anything\n\t// eslint-disable-next-line no-implicit-coercion\n\tconst builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder[GENERATOR] = self;\n\tbuilder[STYLER] = _styler;\n\tbuilder[IS_EMPTY] = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self[IS_EMPTY] ? '' : string;\n\t}\n\n\tlet styler = self[STYLER];\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.includes('\\u001B')) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nObject.defineProperties(createChalk.prototype, styles);\n\nconst chalk = createChalk();\nexport const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0});\n\nexport {\n\tmodifierNames,\n\tforegroundColorNames,\n\tbackgroundColorNames,\n\tcolorNames,\n\n\t// TODO: Remove these aliases in the next major version\n\tmodifierNames as modifiers,\n\tforegroundColorNames as foregroundColors,\n\tbackgroundColorNames as backgroundColors,\n\tcolorNames as colors,\n} from './vendor/ansi-styles/index.js';\n\nexport {\n\tstdoutColor as supportsColor,\n\tstderrColor as supportsColorStderr,\n};\n\nexport default chalk;\n", "import chalk from 'chalk';\nimport { exec } from 'child_process';\nimport { promisify } from 'util';\n\nconst execAsync = promisify(exec);\n\n/**\n * Display a pretty server ready message with clickable URL\n * @param {object} options - Server options\n * @param {number} options.port - Server port\n * @param {string} options.host - Server host\n * @param {string} options.mode - Server mode (development/production)\n * @param {object} logger - Logger instance\n */\nexport async function displayServerReady({ port, host, mode }, logger) {\n const protocol = mode === 'production' ? 'https' : 'http';\n const url = `${protocol}://${host === '0.0.0.0' ? 'localhost' : host}:${port}`;\n \n // Create a nice banner\n const banner = [\n '',\n chalk.bold.blue('\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557'),\n chalk.bold.blue('\u2551') + chalk.bold.white(' \uD83D\uDE80 Clovie Server Ready! \uD83D\uDE80 ') + chalk.bold.blue('\u2551'),\n chalk.bold.blue('\u2560\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2563'),\n chalk.bold.blue('\u2551') + chalk.white(` Mode: ${chalk.green(mode.toUpperCase())} `) + chalk.bold.blue('\u2551'),\n chalk.bold.blue('\u2551') + chalk.white(` URL: ${chalk.cyan.underline(url)} `) + chalk.bold.blue('\u2551'),\n chalk.bold.blue('\u2551') + chalk.white(` Host: ${chalk.yellow(host)}:${chalk.yellow(port)} `) + chalk.bold.blue('\u2551'),\n chalk.bold.blue('\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D'),\n ''\n ];\n\n // Display the banner\n banner.forEach(line => logger.info(line));\n\n // Try to open browser automatically in development mode\n if (mode === 'development') {\n try {\n await openBrowser(url);\n logger.info(chalk.green('\uD83C\uDF10 Browser opened automatically'));\n } catch (error) {\n logger.debug('Could not open browser automatically:', error.message);\n }\n }\n\n // Display helpful commands\n const commands = [\n '',\n chalk.gray('\uD83D\uDCA1 Quick Commands:'),\n chalk.gray(` \u2022 Press ${chalk.yellow('Ctrl+C')} to stop the server`),\n chalk.gray(` \u2022 Visit ${chalk.cyan(url)} to view your site`),\n chalk.gray(` \u2022 Check the console for live reload updates`),\n ''\n ];\n\n commands.forEach(line => logger.info(line));\n}\n\n/**\n * Open browser with the given URL\n * @param {string} url - URL to open\n */\nasync function openBrowser(url) {\n const platform = process.platform;\n let command;\n\n switch (platform) {\n case 'darwin': // macOS\n command = `open \"${url}\"`;\n break;\n case 'win32': // Windows\n command = `start \"${url}\"`;\n break;\n default: // Linux and others\n command = `xdg-open \"${url}\"`;\n break;\n }\n\n try {\n await execAsync(command);\n } catch (error) {\n throw new Error(`Failed to open browser: ${error.message}`);\n }\n}", "import { ServiceProvider, definitionType } from '@jucie.io/engine';\nimport { Kernel } from './Kernel.js';\nimport { HttpAdapter } from './adapters/HttpAdapter.js';\nimport { displayServerReady } from './utils/serverReady.js';\n\nexport class Server extends ServiceProvider {\n static manifest = {\n name: 'Clovie Server',\n namespace: 'server',\n version: '1.0.0'\n };\n\n #routes = [];\n #adapter = null;\n #hooks = {\n onRequest: null,\n preHandler: null,\n onSend: null,\n onError: null\n };\n #live = false;\n #liveConfig = {};\n #factories = [];\n\n actions(useContext) { \n return {\n use: (...factories) => {\n this.#factories.push(...factories);\n return this;\n },\n // Add a route\n\n add: (method, path, handler, meta = {}) => {\n this.#addRoute(null, method, path, handler, meta);\n },\n\n // Set server adapter\n useAdapter: (adapter) => {\n this.#adapter = adapter;\n return this;\n },\n\n // Configure hooks\n hooks: (hooks) => {\n this.#hooks = { ...this.#hooks, ...hooks };\n return this;\n },\n\n // Start listening server\n listen: async (opts = {}) => {\n this.#liveConfig = { ...this.config, ...opts };\n this.#live = true;\n this.#initializeFactories();\n const relay = useContext('relay');\n const port = this.#liveConfig.port || 3000;\n const host = this.#liveConfig.host || '0.0.0.0';\n const log = useContext('log');\n \n // Create kernel with services\n const kernel = new Kernel();\n\n // Configure kernel hooks\n kernel.hooks(this.#hooks);\n\n // 1) Register app routes first\n kernel.registerRoutes(this.#routes);\n\n // 2) Add system routes (won't shadow user routes)\n kernel.registerRoutes([\n {\n method: 'GET',\n path: '/health',\n handler: (ctx) => ctx.respond.json({\n status: 'ok',\n timestamp: new Date().toISOString(),\n mode: this.#liveConfig.mode || 'production'\n })\n },\n {\n method: 'GET',\n path: '/api/info',\n handler: (ctx) => ctx.respond.json({\n name: 'Clovie',\n version: '1.0.0',\n mode: this.#liveConfig.mode || 'production',\n routes: this.#routes.length\n })\n }\n ]);\n\n // 3) Configure static file serving as 404 fallback\n if (this.#liveConfig.outputDir) {\n kernel.setStaticFallback(this.#liveConfig.outputDir, (ctx, outputDir) => {\n return this.#serveStaticFile(ctx, outputDir);\n });\n }\n\n // 4) Boot adapter with middleware support\n if (!this.#adapter) {\n // Choose adapter based on config\n if (this.#liveConfig.adapter === 'express' || this.#liveConfig.middleware?.length > 0) {\n const { ExpressAdapter } = await import('./adapters/ExpressAdapter.js');\n this.#adapter = ExpressAdapter.create();\n log.debug('Using Express adapter for middleware support');\n } else {\n this.#adapter = HttpAdapter.create();\n log.debug('Using HTTP adapter');\n }\n }\n\n // Pass configuration to adapter\n await this.#adapter.initialize(kernel, this.#liveConfig, log);\n\n if (typeof this.#adapter.registerKernelHandler === 'function') {\n this.#adapter.registerKernelHandler(this.#liveConfig);\n }\n \n // Start the server and return the instance\n const server = await this.#adapter.start({ port, host });\n \n // Display pretty server ready message\n const actualPort = server.address()?.port || port;\n await displayServerReady({ \n port: actualPort, \n host, \n mode: this.#liveConfig.mode || 'production' \n }, log);\n \n // Broadcast server ready event\n relay.broadcast('server:ready', server);\n return server;\n },\n\n // Get all routes\n getRoutes: () => this.#routes,\n\n // Clear all routes (useful for testing)\n clearRoutes: () => {\n this.#routes = [];\n },\n\n // Stop the server\n stop: async () => {\n if (this.#adapter) {\n await this.#adapter.stop();\n }\n },\n\n // Check if server is running\n isRunning: () => this.#adapter && this.#adapter.isRunning(),\n\n // Get the underlying HTTP server (for Socket.IO integration)\n getHttpServer: () => {\n if (this.#adapter) {\n return this.#adapter.getHttpServer();\n }\n return null;\n }\n };\n }\n /**\n * Serve static files from the output directory\n * @private\n */\n\n #addRoute(basePath = '', method, path, handler, meta = {}, children = []) {\n if (basePath) {\n path = basePath + path;\n }\n if (Array.isArray(children)) {\n for (const child of children) {\n if (typeof child === 'function') {\n if (!this.#live) {\n this.#factories.push(child);\n } else {\n this.#use(child);\n }\n } else {\n this.#addRoute(path, child.method, child.path, child.handler, child.meta, child.children);\n }\n }\n } else if (typeof children === 'function') {\n if (!this.#live) {\n this.#factories.push(children);\n } else {\n this.#use(children);\n }\n }\n\n this.#routes.push({\n method: method.toUpperCase(),\n path,\n handler,\n meta\n });\n }\n\n #initializeFactories() {\n if (!this.#live) {\n return;\n }\n\n if (this.#factories.length === 0) {\n return;\n }\n\n this.#use(...this.#factories);\n this.#factories = [];\n }\n\n #use(...factories) {\n try {\n for (const factory of factories) {\n const type = definitionType(factory);\n switch (type) {\n case 'routes':\n const routes = factory(this.useContext, this.#liveConfig);\n if (Array.isArray(routes)) {\n for (const route of routes) {\n this.#addRoute(null, route.method, route.path, route.handler, route.meta, route.children);\n }\n } else {\n throw new Error('Routes must be an array');\n }\n break;\n\n case 'route':\n const route = factory(this.useContext, this.#liveConfig);\n if (typeof route === 'object' && route !== null) {\n this.#addRoute(null, route.method, route.path, route.handler, route.meta, route.children);\n } else {\n throw new Error('Route must be an object');\n }\n break;\n\n case 'hooks':\n const hooks = factory(this.useContext, this.#liveConfig);\n if (typeof hooks === 'object' && hooks !== null) {\n this.#hooks = { ...this.#hooks, ...hooks };\n } else {\n throw new Error('Hooks must be an object');\n }\n break;\n \n case 'hook':\n const hook = factory(this.useContext, this.#liveConfig);\n if (typeof hook === 'function') {\n this.#hooks = { ...this.#hooks, ...hook };\n } else {\n throw new Error('Hook must be a function');\n }\n break;\n\n default:\n throw new Error(`Invalid factory type: ${type}`);\n }\n }\n } catch (error) {\n console.error(`\\n\u274C Error using factories: ${error.message}\\n`);\n throw error;\n }\n }\n\n async #serveStaticFile(context, outputDir) {\n const fs = await import('fs/promises');\n const path = await import('path');\n \n try {\n // Get the requested file path\n const requestPath = context.req.path === '/' ? '/index.html' : context.req.path;\n let filePath = path.join(outputDir, requestPath);\n let stats;\n \n try {\n // Try the path as-is first\n stats = await fs.stat(filePath);\n } catch (error) {\n // If it fails and has no extension, try adding .html\n const ext = path.extname(requestPath);\n if (!ext) {\n const htmlPath = path.join(outputDir, `${requestPath}.html`);\n try {\n stats = await fs.stat(htmlPath);\n filePath = htmlPath; // Use the .html version\n } catch (htmlError) {\n // Neither worked, return 404\n return context.respond.text('Not Found', 404);\n }\n } else {\n // Had an extension but file not found\n return context.respond.text('Not Found', 404);\n }\n }\n \n if (stats.isFile()) {\n // Determine content type\n const ext = path.extname(filePath);\n const contentType = this.#getContentType(ext);\n \n // Read and serve the file\n const content = await fs.readFile(filePath);\n \n // Serve with correct content type\n if (contentType === 'text/html') {\n return context.respond.html(content.toString(), 200);\n } else if (contentType === 'text/css') {\n return context.respond.text(content.toString(), 200, { 'Content-Type': 'text/css' });\n } else if (contentType === 'application/javascript') {\n return context.respond.text(content.toString(), 200, { 'Content-Type': 'application/javascript' });\n } else if (contentType.startsWith('text/')) {\n return context.respond.text(content.toString(), 200, { 'Content-Type': contentType });\n } else {\n // For binary files, send as file response\n return context.respond.file(filePath, 200, { 'Content-Type': contentType });\n }\n } else {\n return context.respond.text('Not Found', 404);\n }\n } catch (error) {\n return context.respond.text('Not Found', 404);\n }\n }\n\n /**\n * Get content type based on file extension\n * @private\n */\n #getContentType(ext) {\n const types = {\n '.html': 'text/html',\n '.css': 'text/css',\n '.js': 'application/javascript',\n '.json': 'application/json',\n '.png': 'image/png',\n '.jpg': 'image/jpeg',\n '.jpeg': 'image/jpeg',\n '.gif': 'image/gif',\n '.svg': 'image/svg+xml',\n '.ico': 'image/x-icon',\n '.woff': 'font/woff',\n '.woff2': 'font/woff2',\n '.ttf': 'font/ttf',\n '.eot': 'application/vnd.ms-fontobject'\n };\n \n return types[ext.toLowerCase()] || 'application/octet-stream';\n }\n}"],
5
- "mappings": "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",
6
- "names": ["parseBody", "req", "resolve", "contentType", "body", "chunk", "parseUrlEncoded", "data", "result", "pairs", "pair", "key", "value", "decodedKey", "decodedValue", "arrayKey", "parseQuery", "searchParams", "init_httpParsing", "__esmMin", "AdapterInterface", "RespondHelpers", "init_AdapterInterface", "__esmMin", "init_httpParsing", "name", "kernel", "opts", "log", "options", "req", "res", "url", "k", "v", "parseQuery", "response", "isHead", "resp", "b", "chunk", "r", "filePath", "fs", "fsp", "path", "pipeline", "promisify", "pipelineAsync", "MIME", "st", "ext", "rs", "error", "data", "status", "headers", "body", "location", "ExpressAdapter_exports", "__export", "ExpressAdapter", "init_ExpressAdapter", "__esmMin", "init_AdapterInterface", "AdapterInterface", "#connections", "express", "kernel", "opts", "log", "#hasBodyParser", "index", "middleware", "error", "req", "res", "port", "host", "resolve", "reject", "err", "conn", "ctx", "response", "middlewareArray", "mw", "name", "GLOBAL_NS_OBJ", "checkType", "value", "expectedType", "name", "type", "matchesType", "typeNames", "getTypeName", "createTypeChecker", "DefinitionTypes", "Definitions", "definitionType", "definition", "createDefinition", "type", "returnTypes", "returnTypeChecker", "createTypeChecker", "name", "factory", "defaultArgs", "args", "combinedArgs", "res", "error", "BAD_KEYS", "RESERVED_NAMESPACES", "MAX_NAME_LENGTH", "VALID_NAME", "assertSafeKey", "key", "where", "assertNamespace", "ns", "defineMiddleware", "createDefinition", "defineActions", "defineUninstall", "defineInitialize", "defineGetters", "DefinitionBuilder", "_DefinitionBuilder", "namespace", "#ns", "#args", "#slots", "#set", "type", "factory", "creator", "defineMiddleware", "defineGetters", "defineActions", "defineInitialize", "defineUninstall", "ServiceProvider", "_ServiceProvider", "#services", "options", "useContext", "config", "namespace", "assertNamespace", "instance", "keys", "builder", "DefinitionBuilder", "setupContext", "factory", "maybe", "error", "ENGINE_CONTEXT", "Pe", "a", "e", "t", "r", "n", "c", "l", "f", "Re", "Ee", "v", "Oe", "D", "s", "i", "o", "F", "x", "u", "h", "p", "d", "g", "y", "A", "xe", "N", "H", "$", "M", "X", "Z", "m", "S", "k", "E", "be", "B", "q", "W", "T", "b", "J", "Q", "ee", "te", "ke", "_", "re", "U", "ne", "se", "ie", "K", "j", "ae", "oe", "ce", "le", "z", "G", "fe", "w", "he", "ue", "de", "pe", "ge", "me", "C", "#i", "#n", "#t", "#l", "#d", "#p", "#g", "#b", "#f", "#r", "#h", "#u", "#A", "#T", "#P", "#C", "#E", "#S", "#x", "#O", "#y", "#w", "#k", "#R", "#m", "#a", "V", "O", "Se", "R", "I", "L", "Te", "Ae", "Y", "Y", "compileRoute", "pattern", "pat", "pathname", "Kernel", "#routes", "#appHandlers", "#hooks", "#staticFallback", "rawRoutes", "route", "compiledRoute", "compileRoute", "handlers", "handler", "h", "outputDir", "ctx", "response", "onReqOut", "handlerResponse", "handlerError", "matchParams", "r", "m", "staticResponse", "preOut", "err", "init_AdapterInterface", "init_httpParsing", "http", "HttpAdapter", "AdapterInterface", "#connections", "kernel", "opts", "log", "port", "host", "req", "res", "#simulateMiddleware", "parseBody", "ctx", "out", "error", "conn", "resolve", "reject", "err", "middlewareArray", "middleware", "nextCalled", "next", "data", "wrapAnsi16", "offset", "code", "wrapAnsi256", "wrapAnsi16m", "red", "green", "blue", "styles", "modifierNames", "foregroundColorNames", "backgroundColorNames", "colorNames", "assembleStyles", "codes", "groupName", "group", "styleName", "style", "hex", "matches", "colorString", "character", "integer", "remainder", "value", "result", "ansiStyles", "ansi_styles_default", "process", "os", "tty", "hasFlag", "flag", "argv", "prefix", "position", "terminatorPosition", "env", "flagForceColor", "envForceColor", "translateLevel", "level", "_supportsColor", "haveStream", "streamIsTTY", "sniffFlags", "noFlagForceColor", "forceColor", "min", "osRelease", "key", "sign", "version", "createSupportsColor", "stream", "options", "supportsColor", "supports_color_default", "stringReplaceAll", "string", "substring", "replacer", "index", "substringLength", "endIndex", "returnValue", "stringEncaseCRLFWithFirstIndex", "prefix", "postfix", "gotCR", "stdoutColor", "stderrColor", "supports_color_default", "GENERATOR", "STYLER", "IS_EMPTY", "levelMapping", "styles", "applyOptions", "object", "options", "colorLevel", "chalkFactory", "options", "chalk", "strings", "applyOptions", "createChalk", "styleName", "style", "ansi_styles_default", "styles", "builder", "createBuilder", "createStyler", "STYLER", "IS_EMPTY", "getModelAnsi", "model", "level", "type", "arguments_", "usedModels", "styler", "levelMapping", "bgModel", "proto", "GENERATOR", "open", "close", "parent", "openAll", "closeAll", "self", "_styler", "_isEmpty", "applyStyle", "string", "stringReplaceAll", "lfIndex", "stringEncaseCRLFWithFirstIndex", "chalkStderr", "stderrColor", "source_default", "chalk", "exec", "promisify", "execAsync", "displayServerReady", "port", "host", "mode", "logger", "url", "source_default", "line", "openBrowser", "error", "platform", "command", "Server", "ServiceProvider", "#routes", "#adapter", "#hooks", "#live", "#liveConfig", "#factories", "useContext", "factories", "method", "path", "handler", "meta", "#addRoute", "adapter", "hooks", "opts", "#initializeFactories", "relay", "port", "host", "log", "kernel", "Kernel", "ctx", "outputDir", "#serveStaticFile", "ExpressAdapter", "HttpAdapter", "server", "actualPort", "displayServerReady", "basePath", "children", "child", "#use", "factory", "type", "definitionType", "routes", "route", "hook", "error", "context", "fs", "requestPath", "filePath", "stats", "htmlPath", "ext", "contentType", "#getContentType", "content"]
7
- }