[{"data":1,"prerenderedAt":1832},["ShallowReactive",2],{"navigation":3,"-docs-server-entry":402,"-docs-server-entry-surround":1827},[4,93,226,232,387,399],{"title":5,"path":6,"stem":7,"children":8,"icon":92},"","\u002Fdocs","1.docs\u002F1.index",[9,12,17,22,27,32,37,42,47,52,57,62,67,72,77,82,87],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-compass",{"title":13,"path":14,"stem":15,"icon":16},"Quick Start","\u002Fdocs\u002Fquick-start","1.docs\u002F2.quick-start","i-lucide-zap",{"title":18,"path":19,"stem":20,"icon":21},"Renderer","\u002Fdocs\u002Frenderer","1.docs\u002F4.renderer","ri:layout-masonry-line",{"title":23,"path":24,"stem":25,"icon":26},"Routing","\u002Fdocs\u002Frouting","1.docs\u002F5.routing","ri:direction-line",{"title":28,"path":29,"stem":30,"icon":31},"Assets","\u002Fdocs\u002Fassets","1.docs\u002F50.assets","ri:image-2-line",{"title":33,"path":34,"stem":35,"icon":36},"Configuration","\u002Fdocs\u002Fconfiguration","1.docs\u002F50.configuration","ri:settings-3-line",{"title":38,"path":39,"stem":40,"icon":41},"Database","\u002Fdocs\u002Fdatabase","1.docs\u002F50.database","ri:database-2-line",{"title":43,"path":44,"stem":45,"icon":46},"Lifecycle","\u002Fdocs\u002Flifecycle","1.docs\u002F50.lifecycle","i-lucide-layers",{"title":48,"path":49,"stem":50,"icon":51},"OpenAPI","\u002Fdocs\u002Fopenapi","1.docs\u002F50.openapi","ri:contract-line",{"title":53,"path":54,"stem":55,"icon":56},"Plugins","\u002Fdocs\u002Fplugins","1.docs\u002F50.plugins","ri:plug-line",{"title":58,"path":59,"stem":60,"icon":61},"Tasks","\u002Fdocs\u002Ftasks","1.docs\u002F50.tasks","codicon:run-all",{"title":63,"path":64,"stem":65,"icon":66},"WebSocket","\u002Fdocs\u002Fwebsocket","1.docs\u002F50.websocket","ri:broadcast-fill",{"title":68,"path":69,"stem":70,"icon":71},"Server Entry","\u002Fdocs\u002Fserver-entry","1.docs\u002F6.server-entry","ri:server-line",{"title":73,"path":74,"stem":75,"icon":76},"Cache","\u002Fdocs\u002Fcache","1.docs\u002F7.cache","ri:speed-line",{"title":78,"path":79,"stem":80,"icon":81},"KV Storage","\u002Fdocs\u002Fstorage","1.docs\u002F8.storage","carbon:datastore",{"title":83,"path":84,"stem":85,"icon":86},"Migration Guide","\u002Fdocs\u002Fmigration","1.docs\u002F99.migration","ri:arrow-right-up-line",{"title":88,"path":89,"stem":90,"icon":91},"Nightly Channel","\u002Fdocs\u002Fnightly","1.docs\u002F99.nightly","ri:moon-fill","i-lucide-book-open",{"title":94,"path":95,"stem":96,"children":97,"icon":99},"Deploy","\u002Fdeploy","2.deploy\u002F0.index",[98,100,121],{"title":94,"path":95,"stem":96,"icon":99},"ri:upload-cloud-2-line",{"title":101,"path":102,"stem":103,"children":104,"page":120},"Runtimes","\u002Fdeploy\u002Fruntimes","2.deploy\u002F10.runtimes",[105,110,115],{"title":106,"path":107,"stem":108,"icon":109},"Node.js","\u002Fdeploy\u002Fruntimes\u002Fnode","2.deploy\u002F10.runtimes\u002F1.node","akar-icons:node-fill",{"title":111,"path":112,"stem":113,"icon":114},"Bun","\u002Fdeploy\u002Fruntimes\u002Fbun","2.deploy\u002F10.runtimes\u002Fbun","simple-icons:bun",{"title":116,"path":117,"stem":118,"icon":119},"Deno","\u002Fdeploy\u002Fruntimes\u002Fdeno","2.deploy\u002F10.runtimes\u002Fdeno","simple-icons:deno",false,{"title":122,"path":123,"stem":124,"children":125,"page":120},"Providers","\u002Fdeploy\u002Fproviders","2.deploy\u002F20.providers",[126,130,134,138,142,146,150,154,158,162,166,170,174,178,182,186,190,194,198,202,206,210,214,218,222],{"title":127,"path":128,"stem":129},"Alwaysdata","\u002Fdeploy\u002Fproviders\u002Falwaysdata","2.deploy\u002F20.providers\u002Falwaysdata",{"title":131,"path":132,"stem":133},"AWS Lambda","\u002Fdeploy\u002Fproviders\u002Faws","2.deploy\u002F20.providers\u002Faws",{"title":135,"path":136,"stem":137},"AWS Amplify","\u002Fdeploy\u002Fproviders\u002Faws-amplify","2.deploy\u002F20.providers\u002Faws-amplify",{"title":139,"path":140,"stem":141},"Azure","\u002Fdeploy\u002Fproviders\u002Fazure","2.deploy\u002F20.providers\u002Fazure",{"title":143,"path":144,"stem":145},"Cleavr","\u002Fdeploy\u002Fproviders\u002Fcleavr","2.deploy\u002F20.providers\u002Fcleavr",{"title":147,"path":148,"stem":149},"Cloudflare","\u002Fdeploy\u002Fproviders\u002Fcloudflare","2.deploy\u002F20.providers\u002Fcloudflare",{"title":151,"path":152,"stem":153},"Deno Deploy","\u002Fdeploy\u002Fproviders\u002Fdeno-deploy","2.deploy\u002F20.providers\u002Fdeno-deploy",{"title":155,"path":156,"stem":157},"DigitalOcean","\u002Fdeploy\u002Fproviders\u002Fdigitalocean","2.deploy\u002F20.providers\u002Fdigitalocean",{"title":159,"path":160,"stem":161},"EdgeOne Pages","\u002Fdeploy\u002Fproviders\u002Fedgeone","2.deploy\u002F20.providers\u002Fedgeone",{"title":163,"path":164,"stem":165},"Firebase","\u002Fdeploy\u002Fproviders\u002Ffirebase","2.deploy\u002F20.providers\u002Ffirebase",{"title":167,"path":168,"stem":169},"Flightcontrol","\u002Fdeploy\u002Fproviders\u002Fflightcontrol","2.deploy\u002F20.providers\u002Fflightcontrol",{"title":171,"path":172,"stem":173},"Genezio","\u002Fdeploy\u002Fproviders\u002Fgenezio","2.deploy\u002F20.providers\u002Fgenezio",{"title":175,"path":176,"stem":177},"GitHub Pages","\u002Fdeploy\u002Fproviders\u002Fgithub-pages","2.deploy\u002F20.providers\u002Fgithub-pages",{"title":179,"path":180,"stem":181},"GitLab Pages","\u002Fdeploy\u002Fproviders\u002Fgitlab-pages","2.deploy\u002F20.providers\u002Fgitlab-pages",{"title":183,"path":184,"stem":185},"Heroku","\u002Fdeploy\u002Fproviders\u002Fheroku","2.deploy\u002F20.providers\u002Fheroku",{"title":187,"path":188,"stem":189},"IIS","\u002Fdeploy\u002Fproviders\u002Fiis","2.deploy\u002F20.providers\u002Fiis",{"title":191,"path":192,"stem":193},"Koyeb","\u002Fdeploy\u002Fproviders\u002Fkoyeb","2.deploy\u002F20.providers\u002Fkoyeb",{"title":195,"path":196,"stem":197},"Netlify","\u002Fdeploy\u002Fproviders\u002Fnetlify","2.deploy\u002F20.providers\u002Fnetlify",{"title":199,"path":200,"stem":201},"Platform.sh","\u002Fdeploy\u002Fproviders\u002Fplatform-sh","2.deploy\u002F20.providers\u002Fplatform-sh",{"title":203,"path":204,"stem":205},"Render.com","\u002Fdeploy\u002Fproviders\u002Frender","2.deploy\u002F20.providers\u002Frender",{"title":207,"path":208,"stem":209},"StormKit","\u002Fdeploy\u002Fproviders\u002Fstormkit","2.deploy\u002F20.providers\u002Fstormkit",{"title":211,"path":212,"stem":213},"Vercel","\u002Fdeploy\u002Fproviders\u002Fvercel","2.deploy\u002F20.providers\u002Fvercel",{"title":215,"path":216,"stem":217},"Zeabur","\u002Fdeploy\u002Fproviders\u002Fzeabur","2.deploy\u002F20.providers\u002Fzeabur",{"title":219,"path":220,"stem":221},"Zephyr Cloud","\u002Fdeploy\u002Fproviders\u002Fzephyr","2.deploy\u002F20.providers\u002Fzephyr",{"title":223,"path":224,"stem":225},"Zerops","\u002Fdeploy\u002Fproviders\u002Fzerops","2.deploy\u002F20.providers\u002Fzerops",{"title":227,"path":228,"stem":229,"children":230,"icon":36},"Config","\u002Fconfig","3.config\u002F0.index",[231],{"title":227,"path":228,"stem":229,"icon":36},{"title":233,"path":234,"stem":235,"children":236,"icon":238},"Examples","\u002Fexamples","4.examples\u002F0.index",[237,239,244,249,254,259,263,268,273,278,283,288,293,297,302,306,310,315,320,325,330,335,340,345,350,355,359,364,369,373,378,383],{"title":233,"path":234,"stem":235,"icon":238},"i-lucide-folder-code",{"title":240,"path":241,"stem":242,"icon":243},"API Routes","\u002Fexamples\u002Fapi-routes","4.examples\u002Fapi-routes","i-lucide-route",{"title":245,"path":246,"stem":247,"icon":248},"Auto Imports","\u002Fexamples\u002Fauto-imports","4.examples\u002Fauto-imports","i-lucide-import",{"title":250,"path":251,"stem":252,"icon":253},"Cached Handler","\u002Fexamples\u002Fcached-handler","4.examples\u002Fcached-handler","i-lucide-clock",{"title":255,"path":256,"stem":257,"icon":258},"Custom Error Handler","\u002Fexamples\u002Fcustom-error-handler","4.examples\u002Fcustom-error-handler","i-lucide-alert-circle",{"title":38,"path":260,"stem":261,"icon":262},"\u002Fexamples\u002Fdatabase","4.examples\u002Fdatabase","i-lucide-database",{"title":264,"path":265,"stem":266,"icon":267},"Elysia","\u002Fexamples\u002Felysia","4.examples\u002Felysia","i-skill-icons-elysia-dark",{"title":269,"path":270,"stem":271,"icon":272},"Express","\u002Fexamples\u002Fexpress","4.examples\u002Fexpress","i-simple-icons-express",{"title":274,"path":275,"stem":276,"icon":277},"Fastify","\u002Fexamples\u002Ffastify","4.examples\u002Ffastify","i-simple-icons-fastify",{"title":279,"path":280,"stem":281,"icon":282},"Hello World","\u002Fexamples\u002Fhello-world","4.examples\u002Fhello-world","i-lucide-sparkles",{"title":284,"path":285,"stem":286,"icon":287},"Hono","\u002Fexamples\u002Fhono","4.examples\u002Fhono","i-logos-hono",{"title":289,"path":290,"stem":291,"icon":292},"Import Alias","\u002Fexamples\u002Fimport-alias","4.examples\u002Fimport-alias","i-lucide-at-sign",{"title":294,"path":295,"stem":296,"icon":46},"Middleware","\u002Fexamples\u002Fmiddleware","4.examples\u002Fmiddleware",{"title":298,"path":299,"stem":300,"icon":301},"Mono JSX","\u002Fexamples\u002Fmono-jsx","4.examples\u002Fmono-jsx","i-lucide-brackets",{"title":303,"path":304,"stem":305,"icon":301},"Nano JSX","\u002Fexamples\u002Fnano-jsx","4.examples\u002Fnano-jsx",{"title":53,"path":307,"stem":308,"icon":309},"\u002Fexamples\u002Fplugins","4.examples\u002Fplugins","i-lucide-plug",{"title":311,"path":312,"stem":313,"icon":314},"Custom Renderer","\u002Fexamples\u002Frenderer","4.examples\u002Frenderer","i-lucide-code",{"title":316,"path":317,"stem":318,"icon":319},"Runtime Config","\u002Fexamples\u002Fruntime-config","4.examples\u002Fruntime-config","i-lucide-settings",{"title":321,"path":322,"stem":323,"icon":324},"Server Fetch","\u002Fexamples\u002Fserver-fetch","4.examples\u002Fserver-fetch","i-lucide-arrow-right-left",{"title":326,"path":327,"stem":328,"icon":329},"Shiki","\u002Fexamples\u002Fshiki","4.examples\u002Fshiki","i-lucide-highlighter",{"title":331,"path":332,"stem":333,"icon":334},"Virtual Routes","\u002Fexamples\u002Fvirtual-routes","4.examples\u002Fvirtual-routes","i-lucide-box",{"title":336,"path":337,"stem":338,"icon":339},"Vite Nitro Plugin","\u002Fexamples\u002Fvite-nitro-plugin","4.examples\u002Fvite-nitro-plugin","i-logos-vitejs",{"title":341,"path":342,"stem":343,"icon":344},"Vite RSC","\u002Fexamples\u002Fvite-rsc","4.examples\u002Fvite-rsc","i-logos-react",{"title":346,"path":347,"stem":348,"icon":349},"Vite SSR HTML","\u002Fexamples\u002Fvite-ssr-html","4.examples\u002Fvite-ssr-html","i-logos-html-5",{"title":351,"path":352,"stem":353,"icon":354},"SSR with Preact","\u002Fexamples\u002Fvite-ssr-preact","4.examples\u002Fvite-ssr-preact","i-logos-preact",{"title":356,"path":357,"stem":358,"icon":344},"SSR with React","\u002Fexamples\u002Fvite-ssr-react","4.examples\u002Fvite-ssr-react",{"title":360,"path":361,"stem":362,"icon":363},"SSR with SolidJS","\u002Fexamples\u002Fvite-ssr-solid","4.examples\u002Fvite-ssr-solid","i-logos-solidjs-icon",{"title":365,"path":366,"stem":367,"icon":368},"SSR with TanStack Router","\u002Fexamples\u002Fvite-ssr-tsr-react","4.examples\u002Fvite-ssr-tsr-react","i-simple-icons-tanstack",{"title":370,"path":371,"stem":372,"icon":368},"SSR with TanStack Start","\u002Fexamples\u002Fvite-ssr-tss-react","4.examples\u002Fvite-ssr-tss-react",{"title":374,"path":375,"stem":376,"icon":377},"SSR with Vue Router","\u002Fexamples\u002Fvite-ssr-vue-router","4.examples\u002Fvite-ssr-vue-router","i-logos-vue",{"title":379,"path":380,"stem":381,"icon":382},"Vite + tRPC","\u002Fexamples\u002Fvite-trpc","4.examples\u002Fvite-trpc","i-simple-icons-trpc",{"title":63,"path":384,"stem":385,"icon":386},"\u002Fexamples\u002Fwebsocket","4.examples\u002Fwebsocket","i-lucide-radio",{"title":388,"path":389,"stem":390,"children":391},"Blog","\u002Fblog","9.blog",[392,395],{"title":388,"path":389,"stem":393,"icon":394},"9.blog\u002Findex","i-lucide-file-text",{"title":396,"path":397,"stem":398,"icon":394},"Nitro v3 Beta is here!","\u002Fblog\u002Fv3-beta","9.blog\u002F1.v3-beta",{"title":5,"path":400,"stem":401},"\u002F","index",{"id":403,"title":404,"body":405,"description":1822,"extension":1701,"meta":1823,"navigation":1824,"path":69,"seo":1825,"stem":70,"__hash__":1826},"content\u002F1.docs\u002F6.server-entry.md","Nitro Server Entry",{"type":406,"value":407,"toc":1805,"icon":71},"minimark",[408,412,421,444,447,713,725,728,750,754,761,766,775,1039,1043,1081,1273,1276,1280,1287,1335,1346,1411,1415,1421,1445,1459,1463,1473,1515,1519,1526,1673,1683,1687,1697,1754,1757,1761,1764,1768,1801],[409,410,411],"p",{},"The server entry is a special handler in Nitro that acts as a global middleware, running for every incoming request before routes are matched. It's commonly used for cross-cutting concerns like authentication, logging, request preprocessing, or creating custom routing logic.",[413,414,416,417],"h2",{"id":415},"auto-detected-serverts","Auto-detected ",[418,419,420],"code",{},"server.ts",[409,422,423,424,426,427,430,431,430,434,430,437,430,440,443],{},"By default, Nitro automatically looks for a ",[418,425,420],{}," (or ",[418,428,429],{},".js",", ",[418,432,433],{},".mjs",[418,435,436],{},".mts",[418,438,439],{},".tsx",[418,441,442],{},".jsx",") file in your project root directory.",[409,445,446],{},"If found, Nitro will use it as the server entry and run it for all incoming requests.",[448,449,450,644],"code-group",{},[451,452,456],"pre",{"className":453,"code":454,"filename":420,"language":455,"meta":5,"style":5},"language-ts shiki shiki-themes github-light github-dark github-dark","export default {\n  async fetch(req: Request) {\n    const url = new URL(req.url);\n\n    \u002F\u002F Handle specific routes\n    if (url.pathname === \"\u002Fhealth\") {\n      return new Response(\"OK\", {\n        status: 200,\n        headers: { \"content-type\": \"text\u002Fplain\" }\n      });\n    }\n\n    \u002F\u002F Add custom headers to all requests\n    \u002F\u002F Return nothing to continue to the next handler\n  }\n}\n","ts",[418,457,458,474,500,522,529,536,554,573,585,603,609,615,620,626,632,638],{"__ignoreMap":5},[459,460,463,467,470],"span",{"class":461,"line":462},"line",1,[459,464,466],{"class":465},"so5gQ","export",[459,468,469],{"class":465}," default",[459,471,473],{"class":472},"slsVL"," {\n",[459,475,477,480,484,487,491,494,497],{"class":461,"line":476},2,[459,478,479],{"class":465},"  async",[459,481,483],{"class":482},"shcOC"," fetch",[459,485,486],{"class":472},"(",[459,488,490],{"class":489},"sQHwn","req",[459,492,493],{"class":465},":",[459,495,496],{"class":482}," Request",[459,498,499],{"class":472},") {\n",[459,501,503,506,510,513,516,519],{"class":461,"line":502},3,[459,504,505],{"class":465},"    const",[459,507,509],{"class":508},"suiK_"," url",[459,511,512],{"class":465}," =",[459,514,515],{"class":465}," new",[459,517,518],{"class":482}," URL",[459,520,521],{"class":472},"(req.url);\n",[459,523,525],{"class":461,"line":524},4,[459,526,528],{"emptyLinePlaceholder":527},true,"\n",[459,530,532],{"class":461,"line":531},5,[459,533,535],{"class":534},"sCsY4","    \u002F\u002F Handle specific routes\n",[459,537,539,542,545,548,552],{"class":461,"line":538},6,[459,540,541],{"class":465},"    if",[459,543,544],{"class":472}," (url.pathname ",[459,546,547],{"class":465},"===",[459,549,551],{"class":550},"sfrk1"," \"\u002Fhealth\"",[459,553,499],{"class":472},[459,555,557,560,562,565,567,570],{"class":461,"line":556},7,[459,558,559],{"class":465},"      return",[459,561,515],{"class":465},[459,563,564],{"class":482}," Response",[459,566,486],{"class":472},[459,568,569],{"class":550},"\"OK\"",[459,571,572],{"class":472},", {\n",[459,574,576,579,582],{"class":461,"line":575},8,[459,577,578],{"class":472},"        status: ",[459,580,581],{"class":508},"200",[459,583,584],{"class":472},",\n",[459,586,588,591,594,597,600],{"class":461,"line":587},9,[459,589,590],{"class":472},"        headers: { ",[459,592,593],{"class":550},"\"content-type\"",[459,595,596],{"class":472},": ",[459,598,599],{"class":550},"\"text\u002Fplain\"",[459,601,602],{"class":472}," }\n",[459,604,606],{"class":461,"line":605},10,[459,607,608],{"class":472},"      });\n",[459,610,612],{"class":461,"line":611},11,[459,613,614],{"class":472},"    }\n",[459,616,618],{"class":461,"line":617},12,[459,619,528],{"emptyLinePlaceholder":527},[459,621,623],{"class":461,"line":622},13,[459,624,625],{"class":534},"    \u002F\u002F Add custom headers to all requests\n",[459,627,629],{"class":461,"line":628},14,[459,630,631],{"class":534},"    \u002F\u002F Return nothing to continue to the next handler\n",[459,633,635],{"class":461,"line":634},15,[459,636,637],{"class":472},"  }\n",[459,639,641],{"class":461,"line":640},16,[459,642,643],{"class":472},"}\n",[451,645,648],{"className":453,"code":646,"filename":647,"language":455,"meta":5,"style":5},"import { defineHandler } from \"nitro\";\n\nexport default defineHandler((event) => {\n  return { hello: \"API\" };\n});\n","routes\u002Fapi\u002Fhello.ts",[418,649,650,667,671,694,708],{"__ignoreMap":5},[459,651,652,655,658,661,664],{"class":461,"line":462},[459,653,654],{"class":465},"import",[459,656,657],{"class":472}," { defineHandler } ",[459,659,660],{"class":465},"from",[459,662,663],{"class":550}," \"nitro\"",[459,665,666],{"class":472},";\n",[459,668,669],{"class":461,"line":476},[459,670,528],{"emptyLinePlaceholder":527},[459,672,673,675,677,680,683,686,689,692],{"class":461,"line":502},[459,674,466],{"class":465},[459,676,469],{"class":465},[459,678,679],{"class":482}," defineHandler",[459,681,682],{"class":472},"((",[459,684,685],{"class":489},"event",[459,687,688],{"class":472},") ",[459,690,691],{"class":465},"=>",[459,693,473],{"class":472},[459,695,696,699,702,705],{"class":461,"line":524},[459,697,698],{"class":465},"  return",[459,700,701],{"class":472}," { hello: ",[459,703,704],{"class":550},"\"API\"",[459,706,707],{"class":472}," };\n",[459,709,710],{"class":461,"line":531},[459,711,712],{"class":472},"});\n",[714,715,716],"tip",{},[409,717,718,719,721,722],{},"When ",[418,720,420],{}," is detected, Nitro will log in the terminal: ",[418,723,724],{},"Detected `server.ts` as server entry.",[409,726,727],{},"With this setup:",[729,730,731,738,744],"ul",{},[732,733,734,737],"li",{},[418,735,736],{},"\u002Fhealth"," → Handled by server entry (returns a response)",[732,739,740,743],{},[418,741,742],{},"\u002Fapi\u002Fhello"," → Handled by the API route handler directly",[732,745,746,749],{},[418,747,748],{},"\u002Fabout",", etc. → Server entry runs first, then continues to the renderer if no response is returned",[413,751,753],{"id":752},"framework-compatibility","Framework compatibility",[409,755,756,757,760],{},"The server entry is a great way to integrate with other frameworks. Any framework that exposes a standard Web ",[418,758,759],{},"fetch(request: Request): Response"," interface can be used as a server entry.",[762,763,765],"h3",{"id":764},"web-compatible-frameworks","Web-compatible frameworks",[409,767,768,769,772,773,493],{},"Frameworks that implement the Web ",[418,770,771],{},"fetch"," API work directly with ",[418,774,420],{},[776,777,778,865,957],"tabs",{},[779,780,783],"tabs-item",{"label":781,"icon":782},"H3","i-undocs-h3",[451,784,786],{"className":453,"code":785,"filename":420,"language":455,"meta":5,"style":5},"import { H3 } from \"h3\";\n\nconst app = new H3()\n\napp.get(\"\u002F\", () => \"⚡️ Hello from H3!\");\n\nexport default app;\n",[418,787,788,802,806,824,828,852,856],{"__ignoreMap":5},[459,789,790,792,795,797,800],{"class":461,"line":462},[459,791,654],{"class":465},[459,793,794],{"class":472}," { H3 } ",[459,796,660],{"class":465},[459,798,799],{"class":550}," \"h3\"",[459,801,666],{"class":472},[459,803,804],{"class":461,"line":476},[459,805,528],{"emptyLinePlaceholder":527},[459,807,808,811,814,816,818,821],{"class":461,"line":502},[459,809,810],{"class":465},"const",[459,812,813],{"class":508}," app",[459,815,512],{"class":465},[459,817,515],{"class":465},[459,819,820],{"class":482}," H3",[459,822,823],{"class":472},"()\n",[459,825,826],{"class":461,"line":524},[459,827,528],{"emptyLinePlaceholder":527},[459,829,830,833,836,838,841,844,846,849],{"class":461,"line":531},[459,831,832],{"class":472},"app.",[459,834,835],{"class":482},"get",[459,837,486],{"class":472},[459,839,840],{"class":550},"\"\u002F\"",[459,842,843],{"class":472},", () ",[459,845,691],{"class":465},[459,847,848],{"class":550}," \"⚡️ Hello from H3!\"",[459,850,851],{"class":472},");\n",[459,853,854],{"class":461,"line":538},[459,855,528],{"emptyLinePlaceholder":527},[459,857,858,860,862],{"class":461,"line":556},[459,859,466],{"class":465},[459,861,469],{"class":465},[459,863,864],{"class":472}," app;\n",[779,866,868],{"label":284,"icon":867},"i-undocs-hono",[451,869,871],{"className":453,"code":870,"filename":420,"language":455,"meta":5,"style":5},"import { Hono } from \"hono\";\n\nconst app = new Hono();\n\napp.get(\"\u002F\", (c) => c.text(\"🔥 Hello from Hono!\"));\n\nexport default app;\n",[418,872,873,887,891,907,911,945,949],{"__ignoreMap":5},[459,874,875,877,880,882,885],{"class":461,"line":462},[459,876,654],{"class":465},[459,878,879],{"class":472}," { Hono } ",[459,881,660],{"class":465},[459,883,884],{"class":550}," \"hono\"",[459,886,666],{"class":472},[459,888,889],{"class":461,"line":476},[459,890,528],{"emptyLinePlaceholder":527},[459,892,893,895,897,899,901,904],{"class":461,"line":502},[459,894,810],{"class":465},[459,896,813],{"class":508},[459,898,512],{"class":465},[459,900,515],{"class":465},[459,902,903],{"class":482}," Hono",[459,905,906],{"class":472},"();\n",[459,908,909],{"class":461,"line":524},[459,910,528],{"emptyLinePlaceholder":527},[459,912,913,915,917,919,921,924,927,929,931,934,937,939,942],{"class":461,"line":531},[459,914,832],{"class":472},[459,916,835],{"class":482},[459,918,486],{"class":472},[459,920,840],{"class":550},[459,922,923],{"class":472},", (",[459,925,926],{"class":489},"c",[459,928,688],{"class":472},[459,930,691],{"class":465},[459,932,933],{"class":472}," c.",[459,935,936],{"class":482},"text",[459,938,486],{"class":472},[459,940,941],{"class":550},"\"🔥 Hello from Hono!\"",[459,943,944],{"class":472},"));\n",[459,946,947],{"class":461,"line":538},[459,948,528],{"emptyLinePlaceholder":527},[459,950,951,953,955],{"class":461,"line":556},[459,952,466],{"class":465},[459,954,469],{"class":465},[459,956,864],{"class":472},[779,958,960],{"label":264,"icon":959},"i-undocs-elysia",[451,961,963],{"className":453,"code":962,"filename":420,"language":455,"meta":5,"style":5},"import { Elysia } from \"elysia\";\n\nconst app = new Elysia();\n\napp.get(\"\u002F\", () => \"🦊 Hello from Elysia!\");\n\nexport default app.compile();\n",[418,964,965,979,983,998,1002,1021,1025],{"__ignoreMap":5},[459,966,967,969,972,974,977],{"class":461,"line":462},[459,968,654],{"class":465},[459,970,971],{"class":472}," { Elysia } ",[459,973,660],{"class":465},[459,975,976],{"class":550}," \"elysia\"",[459,978,666],{"class":472},[459,980,981],{"class":461,"line":476},[459,982,528],{"emptyLinePlaceholder":527},[459,984,985,987,989,991,993,996],{"class":461,"line":502},[459,986,810],{"class":465},[459,988,813],{"class":508},[459,990,512],{"class":465},[459,992,515],{"class":465},[459,994,995],{"class":482}," Elysia",[459,997,906],{"class":472},[459,999,1000],{"class":461,"line":524},[459,1001,528],{"emptyLinePlaceholder":527},[459,1003,1004,1006,1008,1010,1012,1014,1016,1019],{"class":461,"line":531},[459,1005,832],{"class":472},[459,1007,835],{"class":482},[459,1009,486],{"class":472},[459,1011,840],{"class":550},[459,1013,843],{"class":472},[459,1015,691],{"class":465},[459,1017,1018],{"class":550}," \"🦊 Hello from Elysia!\"",[459,1020,851],{"class":472},[459,1022,1023],{"class":461,"line":538},[459,1024,528],{"emptyLinePlaceholder":527},[459,1026,1027,1029,1031,1034,1037],{"class":461,"line":556},[459,1028,466],{"class":465},[459,1030,469],{"class":465},[459,1032,1033],{"class":472}," app.",[459,1035,1036],{"class":482},"compile",[459,1038,906],{"class":472},[762,1040,1042],{"id":1041},"nodejs-frameworks","Node.js frameworks",[409,1044,1045,1046,1049,1050,1056,1057,1061,1062,1065,1066,1068,1069,1072,1073,1080],{},"For Node.js frameworks that use ",[418,1047,1048],{},"(req, res)"," style handlers (like ",[1051,1052,269],"a",{"href":1053,"rel":1054},"https:\u002F\u002Fexpressjs.com\u002F",[1055],"nofollow"," or ",[1051,1058,274],{"href":1059,"rel":1060},"https:\u002F\u002Ffastify.dev\u002F",[1055],"), name your server entry file ",[418,1063,1064],{},"server.node.ts"," instead of ",[418,1067,420],{},". Nitro will automatically detect the ",[418,1070,1071],{},".node."," suffix and convert the Node.js handler to a web-compatible fetch handler using ",[1051,1074,1077],{"href":1075,"rel":1076},"https:\u002F\u002Fsrvx.h3.dev\u002F",[1055],[418,1078,1079],{},"srvx",".",[776,1082,1083,1183],{},[779,1084,1085],{"label":269},[451,1086,1088],{"className":453,"code":1087,"filename":1064,"language":455,"meta":5,"style":5},"import Express from \"express\";\n\nconst app = Express();\n\napp.use(\"\u002F\", (_req, res) => {\n  res.send(\"Hello from Express with Nitro!\");\n});\n\nexport default app;\n",[418,1089,1090,1104,1108,1121,1125,1152,1167,1171,1175],{"__ignoreMap":5},[459,1091,1092,1094,1097,1099,1102],{"class":461,"line":462},[459,1093,654],{"class":465},[459,1095,1096],{"class":472}," Express ",[459,1098,660],{"class":465},[459,1100,1101],{"class":550}," \"express\"",[459,1103,666],{"class":472},[459,1105,1106],{"class":461,"line":476},[459,1107,528],{"emptyLinePlaceholder":527},[459,1109,1110,1112,1114,1116,1119],{"class":461,"line":502},[459,1111,810],{"class":465},[459,1113,813],{"class":508},[459,1115,512],{"class":465},[459,1117,1118],{"class":482}," Express",[459,1120,906],{"class":472},[459,1122,1123],{"class":461,"line":524},[459,1124,528],{"emptyLinePlaceholder":527},[459,1126,1127,1129,1132,1134,1136,1138,1141,1143,1146,1148,1150],{"class":461,"line":531},[459,1128,832],{"class":472},[459,1130,1131],{"class":482},"use",[459,1133,486],{"class":472},[459,1135,840],{"class":550},[459,1137,923],{"class":472},[459,1139,1140],{"class":489},"_req",[459,1142,430],{"class":472},[459,1144,1145],{"class":489},"res",[459,1147,688],{"class":472},[459,1149,691],{"class":465},[459,1151,473],{"class":472},[459,1153,1154,1157,1160,1162,1165],{"class":461,"line":538},[459,1155,1156],{"class":472},"  res.",[459,1158,1159],{"class":482},"send",[459,1161,486],{"class":472},[459,1163,1164],{"class":550},"\"Hello from Express with Nitro!\"",[459,1166,851],{"class":472},[459,1168,1169],{"class":461,"line":556},[459,1170,712],{"class":472},[459,1172,1173],{"class":461,"line":575},[459,1174,528],{"emptyLinePlaceholder":527},[459,1176,1177,1179,1181],{"class":461,"line":587},[459,1178,466],{"class":465},[459,1180,469],{"class":465},[459,1182,864],{"class":472},[779,1184,1185],{"label":274},[451,1186,1188],{"className":453,"code":1187,"filename":1064,"language":455,"meta":5,"style":5},"import Fastify from \"fastify\";\n\nconst app = Fastify();\n\napp.get(\"\u002F\", () => \"Hello, Fastify with Nitro!\");\n\nawait app.ready();\n\nexport default app.routing;\n",[418,1189,1190,1204,1208,1221,1225,1244,1248,1260,1264],{"__ignoreMap":5},[459,1191,1192,1194,1197,1199,1202],{"class":461,"line":462},[459,1193,654],{"class":465},[459,1195,1196],{"class":472}," Fastify ",[459,1198,660],{"class":465},[459,1200,1201],{"class":550}," \"fastify\"",[459,1203,666],{"class":472},[459,1205,1206],{"class":461,"line":476},[459,1207,528],{"emptyLinePlaceholder":527},[459,1209,1210,1212,1214,1216,1219],{"class":461,"line":502},[459,1211,810],{"class":465},[459,1213,813],{"class":508},[459,1215,512],{"class":465},[459,1217,1218],{"class":482}," Fastify",[459,1220,906],{"class":472},[459,1222,1223],{"class":461,"line":524},[459,1224,528],{"emptyLinePlaceholder":527},[459,1226,1227,1229,1231,1233,1235,1237,1239,1242],{"class":461,"line":531},[459,1228,832],{"class":472},[459,1230,835],{"class":482},[459,1232,486],{"class":472},[459,1234,840],{"class":550},[459,1236,843],{"class":472},[459,1238,691],{"class":465},[459,1240,1241],{"class":550}," \"Hello, Fastify with Nitro!\"",[459,1243,851],{"class":472},[459,1245,1246],{"class":461,"line":538},[459,1247,528],{"emptyLinePlaceholder":527},[459,1249,1250,1253,1255,1258],{"class":461,"line":556},[459,1251,1252],{"class":465},"await",[459,1254,1033],{"class":472},[459,1256,1257],{"class":482},"ready",[459,1259,906],{"class":472},[459,1261,1262],{"class":461,"line":575},[459,1263,528],{"emptyLinePlaceholder":527},[459,1265,1266,1268,1270],{"class":461,"line":587},[459,1267,466],{"class":465},[459,1269,469],{"class":465},[459,1271,1272],{"class":472}," app.routing;\n",[413,1274,33],{"id":1275},"configuration",[762,1277,1279],{"id":1278},"custom-server-entry-file","Custom server entry file",[409,1281,1282,1283,1286],{},"You can specify a custom server entry file using the ",[418,1284,1285],{},"serverEntry"," option in your Nitro configuration:",[451,1288,1291],{"className":453,"code":1289,"filename":1290,"language":455,"meta":5,"style":5},"import { defineConfig } from \"nitro\";\n\nexport default defineConfig({\n  serverEntry: \".\u002Fnitro.server.ts\"\n})\n","nitro.config.ts",[418,1292,1293,1306,1310,1322,1330],{"__ignoreMap":5},[459,1294,1295,1297,1300,1302,1304],{"class":461,"line":462},[459,1296,654],{"class":465},[459,1298,1299],{"class":472}," { defineConfig } ",[459,1301,660],{"class":465},[459,1303,663],{"class":550},[459,1305,666],{"class":472},[459,1307,1308],{"class":461,"line":476},[459,1309,528],{"emptyLinePlaceholder":527},[459,1311,1312,1314,1316,1319],{"class":461,"line":502},[459,1313,466],{"class":465},[459,1315,469],{"class":465},[459,1317,1318],{"class":482}," defineConfig",[459,1320,1321],{"class":472},"({\n",[459,1323,1324,1327],{"class":461,"line":524},[459,1325,1326],{"class":472},"  serverEntry: ",[459,1328,1329],{"class":550},"\".\u002Fnitro.server.ts\"\n",[459,1331,1332],{"class":461,"line":531},[459,1333,1334],{"class":472},"})\n",[409,1336,1337,1338,1341,1342,1345],{},"You can also provide an object with ",[418,1339,1340],{},"handler"," and ",[418,1343,1344],{},"format"," options:",[451,1347,1349],{"className":453,"code":1348,"filename":1290,"language":455,"meta":5,"style":5},"import { defineConfig } from \"nitro\";\n\nexport default defineConfig({\n  serverEntry: {\n    handler: \".\u002Fserver.ts\",\n    format: \"node\" \u002F\u002F \"web\" (default) or \"node\"\n  }\n})\n",[418,1350,1351,1363,1367,1377,1382,1392,1403,1407],{"__ignoreMap":5},[459,1352,1353,1355,1357,1359,1361],{"class":461,"line":462},[459,1354,654],{"class":465},[459,1356,1299],{"class":472},[459,1358,660],{"class":465},[459,1360,663],{"class":550},[459,1362,666],{"class":472},[459,1364,1365],{"class":461,"line":476},[459,1366,528],{"emptyLinePlaceholder":527},[459,1368,1369,1371,1373,1375],{"class":461,"line":502},[459,1370,466],{"class":465},[459,1372,469],{"class":465},[459,1374,1318],{"class":482},[459,1376,1321],{"class":472},[459,1378,1379],{"class":461,"line":524},[459,1380,1381],{"class":472},"  serverEntry: {\n",[459,1383,1384,1387,1390],{"class":461,"line":531},[459,1385,1386],{"class":472},"    handler: ",[459,1388,1389],{"class":550},"\".\u002Fserver.ts\"",[459,1391,584],{"class":472},[459,1393,1394,1397,1400],{"class":461,"line":538},[459,1395,1396],{"class":472},"    format: ",[459,1398,1399],{"class":550},"\"node\"",[459,1401,1402],{"class":534}," \u002F\u002F \"web\" (default) or \"node\"\n",[459,1404,1405],{"class":461,"line":556},[459,1406,637],{"class":472},[459,1408,1409],{"class":461,"line":575},[459,1410,1334],{"class":472},[762,1412,1414],{"id":1413},"handler-format","Handler format",[409,1416,1417,1418,1420],{},"The ",[418,1419,1344],{}," option controls how Nitro treats the default export of your server entry:",[729,1422,1423,1435],{},[732,1424,1425,1431,1432,1434],{},[1426,1427,1428],"strong",{},[418,1429,1430],{},"\"web\""," (default) — Expects a Web-compatible handler with a ",[418,1433,759],{}," method.",[732,1436,1437,1441,1442,1444],{},[1426,1438,1439],{},[418,1440,1399],{}," — Expects a Node.js-style ",[418,1443,1048],{}," handler. Nitro automatically converts it to a web-compatible handler.",[409,1446,1447,1448,1450,1451,1453,1454,1450,1456,1458],{},"When auto-detecting, the format is determined by the filename: ",[418,1449,1064],{}," uses ",[418,1452,1399],{}," format, while ",[418,1455,420],{},[418,1457,1430],{}," format.",[762,1460,1462],{"id":1461},"disabling-server-entry","Disabling server entry",[409,1464,1465,1466,1468,1469,1472],{},"Set ",[418,1467,1285],{}," to ",[418,1470,1471],{},"false"," to disable auto-detection and prevent Nitro from using any server entry:",[451,1474,1476],{"className":453,"code":1475,"filename":1290,"language":455,"meta":5,"style":5},"import { defineConfig } from \"nitro\";\n\nexport default defineConfig({\n  serverEntry: false\n})\n",[418,1477,1478,1490,1494,1504,1511],{"__ignoreMap":5},[459,1479,1480,1482,1484,1486,1488],{"class":461,"line":462},[459,1481,654],{"class":465},[459,1483,1299],{"class":472},[459,1485,660],{"class":465},[459,1487,663],{"class":550},[459,1489,666],{"class":472},[459,1491,1492],{"class":461,"line":476},[459,1493,528],{"emptyLinePlaceholder":527},[459,1495,1496,1498,1500,1502],{"class":461,"line":502},[459,1497,466],{"class":465},[459,1499,469],{"class":465},[459,1501,1318],{"class":482},[459,1503,1321],{"class":472},[459,1505,1506,1508],{"class":461,"line":524},[459,1507,1326],{"class":472},[459,1509,1510],{"class":508},"false\n",[459,1512,1513],{"class":461,"line":531},[459,1514,1334],{"class":472},[413,1516,1518],{"id":1517},"using-event-handler","Using event handler",[409,1520,1521,1522,1525],{},"You can also export an event handler using ",[418,1523,1524],{},"defineHandler"," for better type inference and access to the h3 event object:",[451,1527,1529],{"className":453,"code":1528,"filename":420,"language":455,"meta":5,"style":5},"import { defineHandler } from \"nitro\";\n\nexport default defineHandler((event) => {\n  \u002F\u002F Add custom context\n  event.context.requestId = crypto.randomUUID();\n  event.context.timestamp = Date.now();\n\n  \u002F\u002F Log the request\n  console.log(`[${event.context.requestId}] ${event.method} ${event.path}`);\n\n  \u002F\u002F Continue to the next handler (don't return anything)\n});\n",[418,1530,1531,1543,1547,1565,1570,1586,1601,1605,1610,1660,1664,1669],{"__ignoreMap":5},[459,1532,1533,1535,1537,1539,1541],{"class":461,"line":462},[459,1534,654],{"class":465},[459,1536,657],{"class":472},[459,1538,660],{"class":465},[459,1540,663],{"class":550},[459,1542,666],{"class":472},[459,1544,1545],{"class":461,"line":476},[459,1546,528],{"emptyLinePlaceholder":527},[459,1548,1549,1551,1553,1555,1557,1559,1561,1563],{"class":461,"line":502},[459,1550,466],{"class":465},[459,1552,469],{"class":465},[459,1554,679],{"class":482},[459,1556,682],{"class":472},[459,1558,685],{"class":489},[459,1560,688],{"class":472},[459,1562,691],{"class":465},[459,1564,473],{"class":472},[459,1566,1567],{"class":461,"line":524},[459,1568,1569],{"class":534},"  \u002F\u002F Add custom context\n",[459,1571,1572,1575,1578,1581,1584],{"class":461,"line":531},[459,1573,1574],{"class":472},"  event.context.requestId ",[459,1576,1577],{"class":465},"=",[459,1579,1580],{"class":472}," crypto.",[459,1582,1583],{"class":482},"randomUUID",[459,1585,906],{"class":472},[459,1587,1588,1591,1593,1596,1599],{"class":461,"line":538},[459,1589,1590],{"class":472},"  event.context.timestamp ",[459,1592,1577],{"class":465},[459,1594,1595],{"class":472}," Date.",[459,1597,1598],{"class":482},"now",[459,1600,906],{"class":472},[459,1602,1603],{"class":461,"line":556},[459,1604,528],{"emptyLinePlaceholder":527},[459,1606,1607],{"class":461,"line":575},[459,1608,1609],{"class":534},"  \u002F\u002F Log the request\n",[459,1611,1612,1615,1618,1620,1623,1625,1627,1630,1632,1635,1638,1640,1642,1645,1648,1650,1652,1655,1658],{"class":461,"line":587},[459,1613,1614],{"class":472},"  console.",[459,1616,1617],{"class":482},"log",[459,1619,486],{"class":472},[459,1621,1622],{"class":550},"`[${",[459,1624,685],{"class":472},[459,1626,1080],{"class":550},[459,1628,1629],{"class":472},"context",[459,1631,1080],{"class":550},[459,1633,1634],{"class":472},"requestId",[459,1636,1637],{"class":550},"}] ${",[459,1639,685],{"class":472},[459,1641,1080],{"class":550},[459,1643,1644],{"class":472},"method",[459,1646,1647],{"class":550},"} ${",[459,1649,685],{"class":472},[459,1651,1080],{"class":550},[459,1653,1654],{"class":472},"path",[459,1656,1657],{"class":550},"}`",[459,1659,851],{"class":472},[459,1661,1662],{"class":461,"line":605},[459,1663,528],{"emptyLinePlaceholder":527},[459,1665,1666],{"class":461,"line":611},[459,1667,1668],{"class":534},"  \u002F\u002F Continue to the next handler (don't return anything)\n",[459,1670,1671],{"class":461,"line":617},[459,1672,712],{"class":472},[1674,1675,1676],"important",{},[409,1677,1678,1679,1682],{},"If your server entry returns ",[418,1680,1681],{},"undefined"," or doesn't return anything, the request will continue to be processed by routes and the renderer. If it returns a response, the request lifecycle stops there.",[413,1684,1686],{"id":1685},"request-lifecycle","Request lifecycle",[409,1688,1689,1690,1693,1694,1696],{},"The server entry is registered as a catch-all (",[418,1691,1692],{},"\u002F**",") route handler. When a specific route (like ",[418,1695,742],{},") matches a request, that route handler takes priority. For requests that don't match any specific route, the server entry runs before the renderer:",[451,1698,1702],{"className":1699,"code":1700,"language":1701,"meta":5,"style":5},"language-md shiki shiki-themes github-light github-dark github-dark","1. Server hook: `request`\n2. Route rules (headers, redirects, etc.)\n3. Global middleware (middleware\u002F)\n4. Route matching:\n   a. Specific routes (routes\u002F) ← if matched, handles the request\n   b. Server entry ← runs for unmatched routes\n   c. Renderer (renderer.ts or index.html)\n","md",[418,1703,1704,1715,1723,1731,1739,1744,1749],{"__ignoreMap":5},[459,1705,1706,1709,1712],{"class":461,"line":462},[459,1707,1708],{"class":489},"1.",[459,1710,1711],{"class":472}," Server hook: ",[459,1713,1714],{"class":508},"`request`\n",[459,1716,1717,1720],{"class":461,"line":476},[459,1718,1719],{"class":489},"2.",[459,1721,1722],{"class":472}," Route rules (headers, redirects, etc.)\n",[459,1724,1725,1728],{"class":461,"line":502},[459,1726,1727],{"class":489},"3.",[459,1729,1730],{"class":472}," Global middleware (middleware\u002F)\n",[459,1732,1733,1736],{"class":461,"line":524},[459,1734,1735],{"class":489},"4.",[459,1737,1738],{"class":472}," Route matching:\n",[459,1740,1741],{"class":461,"line":531},[459,1742,1743],{"class":472},"   a. Specific routes (routes\u002F) ← if matched, handles the request\n",[459,1745,1746],{"class":461,"line":538},[459,1747,1748],{"class":472},"   b. Server entry ← runs for unmatched routes\n",[459,1750,1751],{"class":461,"line":556},[459,1752,1753],{"class":472},"   c. Renderer (renderer.ts or index.html)\n",[409,1755,1756],{},"When both a server entry and a renderer exist, they are chained: the server entry runs first, and if it doesn't return a response, the renderer handles the request.",[413,1758,1760],{"id":1759},"development-mode","Development mode",[409,1762,1763],{},"During development, Nitro watches for changes to your server entry file. When the file is created, modified, or deleted, the dev server automatically reloads to pick up the changes.",[413,1765,1767],{"id":1766},"best-practices","Best practices",[729,1769,1770,1776,1782,1785,1788,1795,1798],{},[732,1771,1772,1773],{},"Use server entry for cross-cutting concerns that affect ",[1426,1774,1775],{},"all routes",[732,1777,1778,1779,1781],{},"Return ",[418,1780,1681],{}," to continue processing, return a response to terminate",[732,1783,1784],{},"Keep server entry logic lightweight for better performance",[732,1786,1787],{},"Use global middleware for modular concerns instead of one large server entry",[732,1789,1790,1791,1794],{},"Consider using ",[1051,1792,1793],{"href":54},"Nitro plugins"," for initialization logic",[732,1796,1797],{},"Avoid heavy computation in server entry (it runs for every request)",[732,1799,1800],{},"Don't use server entry for route-specific logic (use route handlers instead as they are more performant)",[1802,1803,1804],"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 .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 pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sfrk1, html code.shiki .sfrk1{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF}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":5,"searchDepth":476,"depth":476,"links":1806},[1807,1809,1813,1818,1819,1820,1821],{"id":415,"depth":476,"text":1808},"Auto-detected server.ts",{"id":752,"depth":476,"text":753,"children":1810},[1811,1812],{"id":764,"depth":502,"text":765},{"id":1041,"depth":502,"text":1042},{"id":1275,"depth":476,"text":33,"children":1814},[1815,1816,1817],{"id":1278,"depth":502,"text":1279},{"id":1413,"depth":502,"text":1414},{"id":1461,"depth":502,"text":1462},{"id":1517,"depth":476,"text":1518},{"id":1685,"depth":476,"text":1686},{"id":1759,"depth":476,"text":1760},{"id":1766,"depth":476,"text":1767},"Use a server entry to create a global middleware that runs for all routes before they are matched.",{"icon":71},{"title":68,"icon":71},{"title":404,"description":1822},"GJMu53mS0TXxi5pF2NfTPWjiLf4wudOuUd3Lh3QonLw",[1828,1830],{"title":63,"path":64,"stem":65,"description":1829,"icon":66,"children":-1},"Nitro provides cross-platform WebSocket support powered by CrossWS and H3.",{"title":73,"path":74,"stem":75,"description":1831,"icon":76,"children":-1},"Nitro provides a caching system built on top of the storage layer, powered by ocache.",1781111276877]