[{"data":1,"prerenderedAt":464},["ShallowReactive",2],{"navigation":3,"-guide-middleware":51,"-guide-middleware-surround":459},[4],{"title":5,"path":6,"stem":7,"children":8,"icon":10},"Getting Started","/guide","1.guide/1.index",[9,11,16,21,26,31,36,41,46],{"title":5,"path":6,"stem":7,"icon":10},"ph:book-open-duotone",{"title":12,"path":13,"stem":14,"icon":15},"Fetch Handler","/guide/handler","1.guide/2.handler","i-fluent:target-24-regular",{"title":17,"path":18,"stem":19,"icon":20},"Server Instance","/guide/server","1.guide/3.server","radix-icons:component-instance",{"title":22,"path":23,"stem":24,"icon":25},"Middleware","/guide/middleware","1.guide/4.middleware","clarity:plugin-line",{"title":27,"path":28,"stem":29,"icon":30},"Server Options","/guide/options","1.guide/5.options","ri:settings-3-line",{"title":32,"path":33,"stem":34,"icon":35},"Bundler Usage","/guide/bundler","1.guide/6.bundler","clarity:bundle-line",{"title":37,"path":38,"stem":39,"icon":40},"Node.js Support","/guide/node","1.guide/7.node","akar-icons:node-fill",{"title":42,"path":43,"stem":44,"icon":45},"AWS Lambda","/guide/aws-lambda","1.guide/8.aws-lambda","clarity:cloud-traffic-line",{"title":47,"path":48,"stem":49,"icon":50},"Using CLI","/guide/cli","1.guide/9.cli","garden:terminal-cli-stroke-12",{"id":52,"title":22,"body":53,"description":453,"extension":454,"meta":455,"navigation":456,"path":23,"seo":457,"stem":24,"__hash__":458},"content/1.guide/4.middleware.md",{"type":54,"value":55,"toc":450,"icon":25},"minimark",[56,61,446],[57,58,60],"h2",{"id":59},"example","Example",[62,63,68],"pre",{"className":64,"code":65,"language":66,"meta":67,"style":67},"language-ts shiki shiki-themes github-light github-dark github-dark","import { serve, type ServerMiddleware, type ServerPlugin } from \"srvx\";\n\nconst xPoweredBy: ServerMiddleware = async (req, next) => {\n  const res = await next();\n  res.headers.set(\"X-Powered-By\", \"srvx\");\n  return res;\n};\n\nconst devLogs: ServerPlugin = (server) => {\n  if (process.env.NODE_ENV === \"production\") {\n    return;\n  }\n  console.log(`Logger plugin enabled!`);\n  server.options.middleware.push((req, next) => {\n    console.log(`[request] [${req.method}] ${req.url}`);\n    return next();\n  });\n};\n\nserve({\n  middleware: [xPoweredBy],\n  plugins: [devLogs],\n  fetch(request) {\n    return new Response(`👋 Hello there.`);\n  },\n});\n","ts","",[69,70,71,105,112,156,177,200,209,215,220,246,267,275,281,297,321,357,366,372,377,382,391,397,403,416,434,440],"code",{"__ignoreMap":67},[72,73,76,80,84,87,90,92,95,98,102],"span",{"class":74,"line":75},"line",1,[72,77,79],{"class":78},"so5gQ","import",[72,81,83],{"class":82},"slsVL"," { serve, ",[72,85,86],{"class":78},"type",[72,88,89],{"class":82}," ServerMiddleware, ",[72,91,86],{"class":78},[72,93,94],{"class":82}," ServerPlugin } ",[72,96,97],{"class":78},"from",[72,99,101],{"class":100},"sfrk1"," \"srvx\"",[72,103,104],{"class":82},";\n",[72,106,108],{"class":74,"line":107},2,[72,109,111],{"emptyLinePlaceholder":110},true,"\n",[72,113,115,118,122,125,128,131,134,137,141,144,147,150,153],{"class":74,"line":114},3,[72,116,117],{"class":78},"const",[72,119,121],{"class":120},"shcOC"," xPoweredBy",[72,123,124],{"class":78},":",[72,126,127],{"class":120}," ServerMiddleware",[72,129,130],{"class":78}," =",[72,132,133],{"class":78}," async",[72,135,136],{"class":82}," (",[72,138,140],{"class":139},"sQHwn","req",[72,142,143],{"class":82},", ",[72,145,146],{"class":139},"next",[72,148,149],{"class":82},") ",[72,151,152],{"class":78},"=>",[72,154,155],{"class":82}," {\n",[72,157,159,162,166,168,171,174],{"class":74,"line":158},4,[72,160,161],{"class":78},"  const",[72,163,165],{"class":164},"suiK_"," res",[72,167,130],{"class":78},[72,169,170],{"class":78}," await",[72,172,173],{"class":120}," next",[72,175,176],{"class":82},"();\n",[72,178,180,183,186,189,192,194,197],{"class":74,"line":179},5,[72,181,182],{"class":82},"  res.headers.",[72,184,185],{"class":120},"set",[72,187,188],{"class":82},"(",[72,190,191],{"class":100},"\"X-Powered-By\"",[72,193,143],{"class":82},[72,195,196],{"class":100},"\"srvx\"",[72,198,199],{"class":82},");\n",[72,201,203,206],{"class":74,"line":202},6,[72,204,205],{"class":78},"  return",[72,207,208],{"class":82}," res;\n",[72,210,212],{"class":74,"line":211},7,[72,213,214],{"class":82},"};\n",[72,216,218],{"class":74,"line":217},8,[72,219,111],{"emptyLinePlaceholder":110},[72,221,223,225,228,230,233,235,237,240,242,244],{"class":74,"line":222},9,[72,224,117],{"class":78},[72,226,227],{"class":120}," devLogs",[72,229,124],{"class":78},[72,231,232],{"class":120}," ServerPlugin",[72,234,130],{"class":78},[72,236,136],{"class":82},[72,238,239],{"class":139},"server",[72,241,149],{"class":82},[72,243,152],{"class":78},[72,245,155],{"class":82},[72,247,249,252,255,258,261,264],{"class":74,"line":248},10,[72,250,251],{"class":78},"  if",[72,253,254],{"class":82}," (process.env.",[72,256,257],{"class":164},"NODE_ENV",[72,259,260],{"class":78}," ===",[72,262,263],{"class":100}," \"production\"",[72,265,266],{"class":82},") {\n",[72,268,270,273],{"class":74,"line":269},11,[72,271,272],{"class":78},"    return",[72,274,104],{"class":82},[72,276,278],{"class":74,"line":277},12,[72,279,280],{"class":82},"  }\n",[72,282,284,287,290,292,295],{"class":74,"line":283},13,[72,285,286],{"class":82},"  console.",[72,288,289],{"class":120},"log",[72,291,188],{"class":82},[72,293,294],{"class":100},"`Logger plugin enabled!`",[72,296,199],{"class":82},[72,298,300,303,306,309,311,313,315,317,319],{"class":74,"line":299},14,[72,301,302],{"class":82},"  server.options.middleware.",[72,304,305],{"class":120},"push",[72,307,308],{"class":82},"((",[72,310,140],{"class":139},[72,312,143],{"class":82},[72,314,146],{"class":139},[72,316,149],{"class":82},[72,318,152],{"class":78},[72,320,155],{"class":82},[72,322,324,327,329,331,334,336,339,342,345,347,349,352,355],{"class":74,"line":323},15,[72,325,326],{"class":82},"    console.",[72,328,289],{"class":120},[72,330,188],{"class":82},[72,332,333],{"class":100},"`[request] [${",[72,335,140],{"class":82},[72,337,338],{"class":100},".",[72,340,341],{"class":82},"method",[72,343,344],{"class":100},"}] ${",[72,346,140],{"class":82},[72,348,338],{"class":100},[72,350,351],{"class":82},"url",[72,353,354],{"class":100},"}`",[72,356,199],{"class":82},[72,358,360,362,364],{"class":74,"line":359},16,[72,361,272],{"class":78},[72,363,173],{"class":120},[72,365,176],{"class":82},[72,367,369],{"class":74,"line":368},17,[72,370,371],{"class":82},"  });\n",[72,373,375],{"class":74,"line":374},18,[72,376,214],{"class":82},[72,378,380],{"class":74,"line":379},19,[72,381,111],{"emptyLinePlaceholder":110},[72,383,385,388],{"class":74,"line":384},20,[72,386,387],{"class":120},"serve",[72,389,390],{"class":82},"({\n",[72,392,394],{"class":74,"line":393},21,[72,395,396],{"class":82},"  middleware: [xPoweredBy],\n",[72,398,400],{"class":74,"line":399},22,[72,401,402],{"class":82},"  plugins: [devLogs],\n",[72,404,406,409,411,414],{"class":74,"line":405},23,[72,407,408],{"class":120},"  fetch",[72,410,188],{"class":82},[72,412,413],{"class":139},"request",[72,415,266],{"class":82},[72,417,419,421,424,427,429,432],{"class":74,"line":418},24,[72,420,272],{"class":78},[72,422,423],{"class":78}," new",[72,425,426],{"class":120}," Response",[72,428,188],{"class":82},[72,430,431],{"class":100},"`👋 Hello there.`",[72,433,199],{"class":82},[72,435,437],{"class":74,"line":436},25,[72,438,439],{"class":82},"  },\n",[72,441,443],{"class":74,"line":442},26,[72,444,445],{"class":82},"});\n",[447,448,449],"style",{},"html pre.shiki code .so5gQ, html code.shiki .so5gQ{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F97583}html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}html pre.shiki code .sfrk1, html code.shiki .sfrk1{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF}html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}html pre.shiki code .sQHwn, html code.shiki .sQHwn{--shiki-light:#E36209;--shiki-default:#FFAB70;--shiki-dark:#FFAB70}html pre.shiki code .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":67,"searchDepth":107,"depth":107,"links":451},[452],{"id":59,"depth":107,"text":60},"Plugins and middleware allow adding reusable server extensions.","md",{"icon":25},{"icon":25},{"title":22,"description":453},"fQr7BUvPsL_bRsh9N9MgnTD6pk6Jm6elp0ijNFnYXTU",[460,462],{"title":17,"path":18,"stem":19,"description":461,"icon":20,"children":-1},"Control srvx server lifecycle.",{"title":27,"path":28,"stem":29,"description":463,"icon":30,"children":-1},"Provide additional options to customize listening server.",1771317514428]