[{"data":1,"prerenderedAt":1837},["ShallowReactive",2],{"navigation":3,"-docs-server-entry":407,"-docs-server-entry-surround":1832},[4,93,226,232,392,404],{"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,360,364,369,374,378,383,388],{"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},"Takumi","\u002Fexamples\u002Ftakumi","4.examples\u002Ftakumi","i-lucide-image",{"title":336,"path":337,"stem":338,"icon":339},"Virtual Routes","\u002Fexamples\u002Fvirtual-routes","4.examples\u002Fvirtual-routes","i-lucide-box",{"title":341,"path":342,"stem":343,"icon":344},"Vite Nitro Plugin","\u002Fexamples\u002Fvite-nitro-plugin","4.examples\u002Fvite-nitro-plugin","i-logos-vitejs",{"title":346,"path":347,"stem":348,"icon":349},"Vite RSC","\u002Fexamples\u002Fvite-rsc","4.examples\u002Fvite-rsc","i-logos-react",{"title":351,"path":352,"stem":353,"icon":354},"Vite SSR HTML","\u002Fexamples\u002Fvite-ssr-html","4.examples\u002Fvite-ssr-html","i-logos-html-5",{"title":356,"path":357,"stem":358,"icon":359},"SSR with Preact","\u002Fexamples\u002Fvite-ssr-preact","4.examples\u002Fvite-ssr-preact","i-logos-preact",{"title":361,"path":362,"stem":363,"icon":349},"SSR with React","\u002Fexamples\u002Fvite-ssr-react","4.examples\u002Fvite-ssr-react",{"title":365,"path":366,"stem":367,"icon":368},"SSR with SolidJS","\u002Fexamples\u002Fvite-ssr-solid","4.examples\u002Fvite-ssr-solid","i-logos-solidjs-icon",{"title":370,"path":371,"stem":372,"icon":373},"SSR with TanStack Router","\u002Fexamples\u002Fvite-ssr-tsr-react","4.examples\u002Fvite-ssr-tsr-react","i-simple-icons-tanstack",{"title":375,"path":376,"stem":377,"icon":373},"SSR with TanStack Start","\u002Fexamples\u002Fvite-ssr-tss-react","4.examples\u002Fvite-ssr-tss-react",{"title":379,"path":380,"stem":381,"icon":382},"SSR with Vue Router","\u002Fexamples\u002Fvite-ssr-vue-router","4.examples\u002Fvite-ssr-vue-router","i-logos-vue",{"title":384,"path":385,"stem":386,"icon":387},"Vite + tRPC","\u002Fexamples\u002Fvite-trpc","4.examples\u002Fvite-trpc","i-simple-icons-trpc",{"title":63,"path":389,"stem":390,"icon":391},"\u002Fexamples\u002Fwebsocket","4.examples\u002Fwebsocket","i-lucide-radio",{"title":393,"path":394,"stem":395,"children":396},"Blog","\u002Fblog","9.blog",[397,400],{"title":393,"path":394,"stem":398,"icon":399},"9.blog\u002Findex","i-lucide-file-text",{"title":401,"path":402,"stem":403,"icon":399},"Nitro v3 Beta is here!","\u002Fblog\u002Fv3-beta","9.blog\u002F1.v3-beta",{"title":5,"path":405,"stem":406},"\u002F","index",{"id":408,"title":409,"body":410,"description":1827,"extension":1706,"meta":1828,"navigation":1829,"path":69,"seo":1830,"stem":70,"__hash__":1831},"content\u002F1.docs\u002F6.server-entry.md","Nitro Server Entry",{"type":411,"value":412,"toc":1810,"icon":71},"minimark",[413,417,426,449,452,718,730,733,755,759,766,771,780,1044,1048,1086,1278,1281,1285,1292,1340,1351,1416,1420,1426,1450,1464,1468,1478,1520,1524,1531,1678,1688,1692,1702,1759,1762,1766,1769,1773,1806],[414,415,416],"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.",[418,419,421,422],"h2",{"id":420},"auto-detected-serverts","Auto-detected ",[423,424,425],"code",{},"server.ts",[414,427,428,429,431,432,435,436,435,439,435,442,435,445,448],{},"By default, Nitro automatically looks for a ",[423,430,425],{}," (or ",[423,433,434],{},".js",", ",[423,437,438],{},".mjs",[423,440,441],{},".mts",[423,443,444],{},".tsx",[423,446,447],{},".jsx",") file in your project root directory.",[414,450,451],{},"If found, Nitro will use it as the server entry and run it for all incoming requests.",[453,454,455,649],"code-group",{},[456,457,461],"pre",{"className":458,"code":459,"filename":425,"language":460,"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",[423,462,463,479,505,527,534,541,559,578,590,608,614,620,625,631,637,643],{"__ignoreMap":5},[464,465,468,472,475],"span",{"class":466,"line":467},"line",1,[464,469,471],{"class":470},"so5gQ","export",[464,473,474],{"class":470}," default",[464,476,478],{"class":477},"slsVL"," {\n",[464,480,482,485,489,492,496,499,502],{"class":466,"line":481},2,[464,483,484],{"class":470},"  async",[464,486,488],{"class":487},"shcOC"," fetch",[464,490,491],{"class":477},"(",[464,493,495],{"class":494},"sQHwn","req",[464,497,498],{"class":470},":",[464,500,501],{"class":487}," Request",[464,503,504],{"class":477},") {\n",[464,506,508,511,515,518,521,524],{"class":466,"line":507},3,[464,509,510],{"class":470},"    const",[464,512,514],{"class":513},"suiK_"," url",[464,516,517],{"class":470}," =",[464,519,520],{"class":470}," new",[464,522,523],{"class":487}," URL",[464,525,526],{"class":477},"(req.url);\n",[464,528,530],{"class":466,"line":529},4,[464,531,533],{"emptyLinePlaceholder":532},true,"\n",[464,535,537],{"class":466,"line":536},5,[464,538,540],{"class":539},"sCsY4","    \u002F\u002F Handle specific routes\n",[464,542,544,547,550,553,557],{"class":466,"line":543},6,[464,545,546],{"class":470},"    if",[464,548,549],{"class":477}," (url.pathname ",[464,551,552],{"class":470},"===",[464,554,556],{"class":555},"sfrk1"," \"\u002Fhealth\"",[464,558,504],{"class":477},[464,560,562,565,567,570,572,575],{"class":466,"line":561},7,[464,563,564],{"class":470},"      return",[464,566,520],{"class":470},[464,568,569],{"class":487}," Response",[464,571,491],{"class":477},[464,573,574],{"class":555},"\"OK\"",[464,576,577],{"class":477},", {\n",[464,579,581,584,587],{"class":466,"line":580},8,[464,582,583],{"class":477},"        status: ",[464,585,586],{"class":513},"200",[464,588,589],{"class":477},",\n",[464,591,593,596,599,602,605],{"class":466,"line":592},9,[464,594,595],{"class":477},"        headers: { ",[464,597,598],{"class":555},"\"content-type\"",[464,600,601],{"class":477},": ",[464,603,604],{"class":555},"\"text\u002Fplain\"",[464,606,607],{"class":477}," }\n",[464,609,611],{"class":466,"line":610},10,[464,612,613],{"class":477},"      });\n",[464,615,617],{"class":466,"line":616},11,[464,618,619],{"class":477},"    }\n",[464,621,623],{"class":466,"line":622},12,[464,624,533],{"emptyLinePlaceholder":532},[464,626,628],{"class":466,"line":627},13,[464,629,630],{"class":539},"    \u002F\u002F Add custom headers to all requests\n",[464,632,634],{"class":466,"line":633},14,[464,635,636],{"class":539},"    \u002F\u002F Return nothing to continue to the next handler\n",[464,638,640],{"class":466,"line":639},15,[464,641,642],{"class":477},"  }\n",[464,644,646],{"class":466,"line":645},16,[464,647,648],{"class":477},"}\n",[456,650,653],{"className":458,"code":651,"filename":652,"language":460,"meta":5,"style":5},"import { defineHandler } from \"nitro\";\n\nexport default defineHandler((event) => {\n  return { hello: \"API\" };\n});\n","routes\u002Fapi\u002Fhello.ts",[423,654,655,672,676,699,713],{"__ignoreMap":5},[464,656,657,660,663,666,669],{"class":466,"line":467},[464,658,659],{"class":470},"import",[464,661,662],{"class":477}," { defineHandler } ",[464,664,665],{"class":470},"from",[464,667,668],{"class":555}," \"nitro\"",[464,670,671],{"class":477},";\n",[464,673,674],{"class":466,"line":481},[464,675,533],{"emptyLinePlaceholder":532},[464,677,678,680,682,685,688,691,694,697],{"class":466,"line":507},[464,679,471],{"class":470},[464,681,474],{"class":470},[464,683,684],{"class":487}," defineHandler",[464,686,687],{"class":477},"((",[464,689,690],{"class":494},"event",[464,692,693],{"class":477},") ",[464,695,696],{"class":470},"=>",[464,698,478],{"class":477},[464,700,701,704,707,710],{"class":466,"line":529},[464,702,703],{"class":470},"  return",[464,705,706],{"class":477}," { hello: ",[464,708,709],{"class":555},"\"API\"",[464,711,712],{"class":477}," };\n",[464,714,715],{"class":466,"line":536},[464,716,717],{"class":477},"});\n",[719,720,721],"tip",{},[414,722,723,724,726,727],{},"When ",[423,725,425],{}," is detected, Nitro will log in the terminal: ",[423,728,729],{},"Detected `server.ts` as server entry.",[414,731,732],{},"With this setup:",[734,735,736,743,749],"ul",{},[737,738,739,742],"li",{},[423,740,741],{},"\u002Fhealth"," → Handled by server entry (returns a response)",[737,744,745,748],{},[423,746,747],{},"\u002Fapi\u002Fhello"," → Handled by the API route handler directly",[737,750,751,754],{},[423,752,753],{},"\u002Fabout",", etc. → Server entry runs first, then continues to the renderer if no response is returned",[418,756,758],{"id":757},"framework-compatibility","Framework compatibility",[414,760,761,762,765],{},"The server entry is a great way to integrate with other frameworks. Any framework that exposes a standard Web ",[423,763,764],{},"fetch(request: Request): Response"," interface can be used as a server entry.",[767,768,770],"h3",{"id":769},"web-compatible-frameworks","Web-compatible frameworks",[414,772,773,774,777,778,498],{},"Frameworks that implement the Web ",[423,775,776],{},"fetch"," API work directly with ",[423,779,425],{},[781,782,783,870,962],"tabs",{},[784,785,788],"tabs-item",{"label":786,"icon":787},"H3","i-undocs-h3",[456,789,791],{"className":458,"code":790,"filename":425,"language":460,"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",[423,792,793,807,811,829,833,857,861],{"__ignoreMap":5},[464,794,795,797,800,802,805],{"class":466,"line":467},[464,796,659],{"class":470},[464,798,799],{"class":477}," { H3 } ",[464,801,665],{"class":470},[464,803,804],{"class":555}," \"h3\"",[464,806,671],{"class":477},[464,808,809],{"class":466,"line":481},[464,810,533],{"emptyLinePlaceholder":532},[464,812,813,816,819,821,823,826],{"class":466,"line":507},[464,814,815],{"class":470},"const",[464,817,818],{"class":513}," app",[464,820,517],{"class":470},[464,822,520],{"class":470},[464,824,825],{"class":487}," H3",[464,827,828],{"class":477},"()\n",[464,830,831],{"class":466,"line":529},[464,832,533],{"emptyLinePlaceholder":532},[464,834,835,838,841,843,846,849,851,854],{"class":466,"line":536},[464,836,837],{"class":477},"app.",[464,839,840],{"class":487},"get",[464,842,491],{"class":477},[464,844,845],{"class":555},"\"\u002F\"",[464,847,848],{"class":477},", () ",[464,850,696],{"class":470},[464,852,853],{"class":555}," \"⚡️ Hello from H3!\"",[464,855,856],{"class":477},");\n",[464,858,859],{"class":466,"line":543},[464,860,533],{"emptyLinePlaceholder":532},[464,862,863,865,867],{"class":466,"line":561},[464,864,471],{"class":470},[464,866,474],{"class":470},[464,868,869],{"class":477}," app;\n",[784,871,873],{"label":284,"icon":872},"i-undocs-hono",[456,874,876],{"className":458,"code":875,"filename":425,"language":460,"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",[423,877,878,892,896,912,916,950,954],{"__ignoreMap":5},[464,879,880,882,885,887,890],{"class":466,"line":467},[464,881,659],{"class":470},[464,883,884],{"class":477}," { Hono } ",[464,886,665],{"class":470},[464,888,889],{"class":555}," \"hono\"",[464,891,671],{"class":477},[464,893,894],{"class":466,"line":481},[464,895,533],{"emptyLinePlaceholder":532},[464,897,898,900,902,904,906,909],{"class":466,"line":507},[464,899,815],{"class":470},[464,901,818],{"class":513},[464,903,517],{"class":470},[464,905,520],{"class":470},[464,907,908],{"class":487}," Hono",[464,910,911],{"class":477},"();\n",[464,913,914],{"class":466,"line":529},[464,915,533],{"emptyLinePlaceholder":532},[464,917,918,920,922,924,926,929,932,934,936,939,942,944,947],{"class":466,"line":536},[464,919,837],{"class":477},[464,921,840],{"class":487},[464,923,491],{"class":477},[464,925,845],{"class":555},[464,927,928],{"class":477},", (",[464,930,931],{"class":494},"c",[464,933,693],{"class":477},[464,935,696],{"class":470},[464,937,938],{"class":477}," c.",[464,940,941],{"class":487},"text",[464,943,491],{"class":477},[464,945,946],{"class":555},"\"🔥 Hello from Hono!\"",[464,948,949],{"class":477},"));\n",[464,951,952],{"class":466,"line":543},[464,953,533],{"emptyLinePlaceholder":532},[464,955,956,958,960],{"class":466,"line":561},[464,957,471],{"class":470},[464,959,474],{"class":470},[464,961,869],{"class":477},[784,963,965],{"label":264,"icon":964},"i-undocs-elysia",[456,966,968],{"className":458,"code":967,"filename":425,"language":460,"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",[423,969,970,984,988,1003,1007,1026,1030],{"__ignoreMap":5},[464,971,972,974,977,979,982],{"class":466,"line":467},[464,973,659],{"class":470},[464,975,976],{"class":477}," { Elysia } ",[464,978,665],{"class":470},[464,980,981],{"class":555}," \"elysia\"",[464,983,671],{"class":477},[464,985,986],{"class":466,"line":481},[464,987,533],{"emptyLinePlaceholder":532},[464,989,990,992,994,996,998,1001],{"class":466,"line":507},[464,991,815],{"class":470},[464,993,818],{"class":513},[464,995,517],{"class":470},[464,997,520],{"class":470},[464,999,1000],{"class":487}," Elysia",[464,1002,911],{"class":477},[464,1004,1005],{"class":466,"line":529},[464,1006,533],{"emptyLinePlaceholder":532},[464,1008,1009,1011,1013,1015,1017,1019,1021,1024],{"class":466,"line":536},[464,1010,837],{"class":477},[464,1012,840],{"class":487},[464,1014,491],{"class":477},[464,1016,845],{"class":555},[464,1018,848],{"class":477},[464,1020,696],{"class":470},[464,1022,1023],{"class":555}," \"🦊 Hello from Elysia!\"",[464,1025,856],{"class":477},[464,1027,1028],{"class":466,"line":543},[464,1029,533],{"emptyLinePlaceholder":532},[464,1031,1032,1034,1036,1039,1042],{"class":466,"line":561},[464,1033,471],{"class":470},[464,1035,474],{"class":470},[464,1037,1038],{"class":477}," app.",[464,1040,1041],{"class":487},"compile",[464,1043,911],{"class":477},[767,1045,1047],{"id":1046},"nodejs-frameworks","Node.js frameworks",[414,1049,1050,1051,1054,1055,1061,1062,1066,1067,1070,1071,1073,1074,1077,1078,1085],{},"For Node.js frameworks that use ",[423,1052,1053],{},"(req, res)"," style handlers (like ",[1056,1057,269],"a",{"href":1058,"rel":1059},"https:\u002F\u002Fexpressjs.com\u002F",[1060],"nofollow"," or ",[1056,1063,274],{"href":1064,"rel":1065},"https:\u002F\u002Ffastify.dev\u002F",[1060],"), name your server entry file ",[423,1068,1069],{},"server.node.ts"," instead of ",[423,1072,425],{},". Nitro will automatically detect the ",[423,1075,1076],{},".node."," suffix and convert the Node.js handler to a web-compatible fetch handler using ",[1056,1079,1082],{"href":1080,"rel":1081},"https:\u002F\u002Fsrvx.h3.dev\u002F",[1060],[423,1083,1084],{},"srvx",".",[781,1087,1088,1188],{},[784,1089,1090],{"label":269},[456,1091,1093],{"className":458,"code":1092,"filename":1069,"language":460,"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",[423,1094,1095,1109,1113,1126,1130,1157,1172,1176,1180],{"__ignoreMap":5},[464,1096,1097,1099,1102,1104,1107],{"class":466,"line":467},[464,1098,659],{"class":470},[464,1100,1101],{"class":477}," Express ",[464,1103,665],{"class":470},[464,1105,1106],{"class":555}," \"express\"",[464,1108,671],{"class":477},[464,1110,1111],{"class":466,"line":481},[464,1112,533],{"emptyLinePlaceholder":532},[464,1114,1115,1117,1119,1121,1124],{"class":466,"line":507},[464,1116,815],{"class":470},[464,1118,818],{"class":513},[464,1120,517],{"class":470},[464,1122,1123],{"class":487}," Express",[464,1125,911],{"class":477},[464,1127,1128],{"class":466,"line":529},[464,1129,533],{"emptyLinePlaceholder":532},[464,1131,1132,1134,1137,1139,1141,1143,1146,1148,1151,1153,1155],{"class":466,"line":536},[464,1133,837],{"class":477},[464,1135,1136],{"class":487},"use",[464,1138,491],{"class":477},[464,1140,845],{"class":555},[464,1142,928],{"class":477},[464,1144,1145],{"class":494},"_req",[464,1147,435],{"class":477},[464,1149,1150],{"class":494},"res",[464,1152,693],{"class":477},[464,1154,696],{"class":470},[464,1156,478],{"class":477},[464,1158,1159,1162,1165,1167,1170],{"class":466,"line":543},[464,1160,1161],{"class":477},"  res.",[464,1163,1164],{"class":487},"send",[464,1166,491],{"class":477},[464,1168,1169],{"class":555},"\"Hello from Express with Nitro!\"",[464,1171,856],{"class":477},[464,1173,1174],{"class":466,"line":561},[464,1175,717],{"class":477},[464,1177,1178],{"class":466,"line":580},[464,1179,533],{"emptyLinePlaceholder":532},[464,1181,1182,1184,1186],{"class":466,"line":592},[464,1183,471],{"class":470},[464,1185,474],{"class":470},[464,1187,869],{"class":477},[784,1189,1190],{"label":274},[456,1191,1193],{"className":458,"code":1192,"filename":1069,"language":460,"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",[423,1194,1195,1209,1213,1226,1230,1249,1253,1265,1269],{"__ignoreMap":5},[464,1196,1197,1199,1202,1204,1207],{"class":466,"line":467},[464,1198,659],{"class":470},[464,1200,1201],{"class":477}," Fastify ",[464,1203,665],{"class":470},[464,1205,1206],{"class":555}," \"fastify\"",[464,1208,671],{"class":477},[464,1210,1211],{"class":466,"line":481},[464,1212,533],{"emptyLinePlaceholder":532},[464,1214,1215,1217,1219,1221,1224],{"class":466,"line":507},[464,1216,815],{"class":470},[464,1218,818],{"class":513},[464,1220,517],{"class":470},[464,1222,1223],{"class":487}," Fastify",[464,1225,911],{"class":477},[464,1227,1228],{"class":466,"line":529},[464,1229,533],{"emptyLinePlaceholder":532},[464,1231,1232,1234,1236,1238,1240,1242,1244,1247],{"class":466,"line":536},[464,1233,837],{"class":477},[464,1235,840],{"class":487},[464,1237,491],{"class":477},[464,1239,845],{"class":555},[464,1241,848],{"class":477},[464,1243,696],{"class":470},[464,1245,1246],{"class":555}," \"Hello, Fastify with Nitro!\"",[464,1248,856],{"class":477},[464,1250,1251],{"class":466,"line":543},[464,1252,533],{"emptyLinePlaceholder":532},[464,1254,1255,1258,1260,1263],{"class":466,"line":561},[464,1256,1257],{"class":470},"await",[464,1259,1038],{"class":477},[464,1261,1262],{"class":487},"ready",[464,1264,911],{"class":477},[464,1266,1267],{"class":466,"line":580},[464,1268,533],{"emptyLinePlaceholder":532},[464,1270,1271,1273,1275],{"class":466,"line":592},[464,1272,471],{"class":470},[464,1274,474],{"class":470},[464,1276,1277],{"class":477}," app.routing;\n",[418,1279,33],{"id":1280},"configuration",[767,1282,1284],{"id":1283},"custom-server-entry-file","Custom server entry file",[414,1286,1287,1288,1291],{},"You can specify a custom server entry file using the ",[423,1289,1290],{},"serverEntry"," option in your Nitro configuration:",[456,1293,1296],{"className":458,"code":1294,"filename":1295,"language":460,"meta":5,"style":5},"import { defineConfig } from \"nitro\";\n\nexport default defineConfig({\n  serverEntry: \".\u002Fnitro.server.ts\"\n})\n","nitro.config.ts",[423,1297,1298,1311,1315,1327,1335],{"__ignoreMap":5},[464,1299,1300,1302,1305,1307,1309],{"class":466,"line":467},[464,1301,659],{"class":470},[464,1303,1304],{"class":477}," { defineConfig } ",[464,1306,665],{"class":470},[464,1308,668],{"class":555},[464,1310,671],{"class":477},[464,1312,1313],{"class":466,"line":481},[464,1314,533],{"emptyLinePlaceholder":532},[464,1316,1317,1319,1321,1324],{"class":466,"line":507},[464,1318,471],{"class":470},[464,1320,474],{"class":470},[464,1322,1323],{"class":487}," defineConfig",[464,1325,1326],{"class":477},"({\n",[464,1328,1329,1332],{"class":466,"line":529},[464,1330,1331],{"class":477},"  serverEntry: ",[464,1333,1334],{"class":555},"\".\u002Fnitro.server.ts\"\n",[464,1336,1337],{"class":466,"line":536},[464,1338,1339],{"class":477},"})\n",[414,1341,1342,1343,1346,1347,1350],{},"You can also provide an object with ",[423,1344,1345],{},"handler"," and ",[423,1348,1349],{},"format"," options:",[456,1352,1354],{"className":458,"code":1353,"filename":1295,"language":460,"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",[423,1355,1356,1368,1372,1382,1387,1397,1408,1412],{"__ignoreMap":5},[464,1357,1358,1360,1362,1364,1366],{"class":466,"line":467},[464,1359,659],{"class":470},[464,1361,1304],{"class":477},[464,1363,665],{"class":470},[464,1365,668],{"class":555},[464,1367,671],{"class":477},[464,1369,1370],{"class":466,"line":481},[464,1371,533],{"emptyLinePlaceholder":532},[464,1373,1374,1376,1378,1380],{"class":466,"line":507},[464,1375,471],{"class":470},[464,1377,474],{"class":470},[464,1379,1323],{"class":487},[464,1381,1326],{"class":477},[464,1383,1384],{"class":466,"line":529},[464,1385,1386],{"class":477},"  serverEntry: {\n",[464,1388,1389,1392,1395],{"class":466,"line":536},[464,1390,1391],{"class":477},"    handler: ",[464,1393,1394],{"class":555},"\".\u002Fserver.ts\"",[464,1396,589],{"class":477},[464,1398,1399,1402,1405],{"class":466,"line":543},[464,1400,1401],{"class":477},"    format: ",[464,1403,1404],{"class":555},"\"node\"",[464,1406,1407],{"class":539}," \u002F\u002F \"web\" (default) or \"node\"\n",[464,1409,1410],{"class":466,"line":561},[464,1411,642],{"class":477},[464,1413,1414],{"class":466,"line":580},[464,1415,1339],{"class":477},[767,1417,1419],{"id":1418},"handler-format","Handler format",[414,1421,1422,1423,1425],{},"The ",[423,1424,1349],{}," option controls how Nitro treats the default export of your server entry:",[734,1427,1428,1440],{},[737,1429,1430,1436,1437,1439],{},[1431,1432,1433],"strong",{},[423,1434,1435],{},"\"web\""," (default) — Expects a Web-compatible handler with a ",[423,1438,764],{}," method.",[737,1441,1442,1446,1447,1449],{},[1431,1443,1444],{},[423,1445,1404],{}," — Expects a Node.js-style ",[423,1448,1053],{}," handler. Nitro automatically converts it to a web-compatible handler.",[414,1451,1452,1453,1455,1456,1458,1459,1455,1461,1463],{},"When auto-detecting, the format is determined by the filename: ",[423,1454,1069],{}," uses ",[423,1457,1404],{}," format, while ",[423,1460,425],{},[423,1462,1435],{}," format.",[767,1465,1467],{"id":1466},"disabling-server-entry","Disabling server entry",[414,1469,1470,1471,1473,1474,1477],{},"Set ",[423,1472,1290],{}," to ",[423,1475,1476],{},"false"," to disable auto-detection and prevent Nitro from using any server entry:",[456,1479,1481],{"className":458,"code":1480,"filename":1295,"language":460,"meta":5,"style":5},"import { defineConfig } from \"nitro\";\n\nexport default defineConfig({\n  serverEntry: false\n})\n",[423,1482,1483,1495,1499,1509,1516],{"__ignoreMap":5},[464,1484,1485,1487,1489,1491,1493],{"class":466,"line":467},[464,1486,659],{"class":470},[464,1488,1304],{"class":477},[464,1490,665],{"class":470},[464,1492,668],{"class":555},[464,1494,671],{"class":477},[464,1496,1497],{"class":466,"line":481},[464,1498,533],{"emptyLinePlaceholder":532},[464,1500,1501,1503,1505,1507],{"class":466,"line":507},[464,1502,471],{"class":470},[464,1504,474],{"class":470},[464,1506,1323],{"class":487},[464,1508,1326],{"class":477},[464,1510,1511,1513],{"class":466,"line":529},[464,1512,1331],{"class":477},[464,1514,1515],{"class":513},"false\n",[464,1517,1518],{"class":466,"line":536},[464,1519,1339],{"class":477},[418,1521,1523],{"id":1522},"using-event-handler","Using event handler",[414,1525,1526,1527,1530],{},"You can also export an event handler using ",[423,1528,1529],{},"defineHandler"," for better type inference and access to the h3 event object:",[456,1532,1534],{"className":458,"code":1533,"filename":425,"language":460,"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",[423,1535,1536,1548,1552,1570,1575,1591,1606,1610,1615,1665,1669,1674],{"__ignoreMap":5},[464,1537,1538,1540,1542,1544,1546],{"class":466,"line":467},[464,1539,659],{"class":470},[464,1541,662],{"class":477},[464,1543,665],{"class":470},[464,1545,668],{"class":555},[464,1547,671],{"class":477},[464,1549,1550],{"class":466,"line":481},[464,1551,533],{"emptyLinePlaceholder":532},[464,1553,1554,1556,1558,1560,1562,1564,1566,1568],{"class":466,"line":507},[464,1555,471],{"class":470},[464,1557,474],{"class":470},[464,1559,684],{"class":487},[464,1561,687],{"class":477},[464,1563,690],{"class":494},[464,1565,693],{"class":477},[464,1567,696],{"class":470},[464,1569,478],{"class":477},[464,1571,1572],{"class":466,"line":529},[464,1573,1574],{"class":539},"  \u002F\u002F Add custom context\n",[464,1576,1577,1580,1583,1586,1589],{"class":466,"line":536},[464,1578,1579],{"class":477},"  event.context.requestId ",[464,1581,1582],{"class":470},"=",[464,1584,1585],{"class":477}," crypto.",[464,1587,1588],{"class":487},"randomUUID",[464,1590,911],{"class":477},[464,1592,1593,1596,1598,1601,1604],{"class":466,"line":543},[464,1594,1595],{"class":477},"  event.context.timestamp ",[464,1597,1582],{"class":470},[464,1599,1600],{"class":477}," Date.",[464,1602,1603],{"class":487},"now",[464,1605,911],{"class":477},[464,1607,1608],{"class":466,"line":561},[464,1609,533],{"emptyLinePlaceholder":532},[464,1611,1612],{"class":466,"line":580},[464,1613,1614],{"class":539},"  \u002F\u002F Log the request\n",[464,1616,1617,1620,1623,1625,1628,1630,1632,1635,1637,1640,1643,1645,1647,1650,1653,1655,1657,1660,1663],{"class":466,"line":592},[464,1618,1619],{"class":477},"  console.",[464,1621,1622],{"class":487},"log",[464,1624,491],{"class":477},[464,1626,1627],{"class":555},"`[${",[464,1629,690],{"class":477},[464,1631,1085],{"class":555},[464,1633,1634],{"class":477},"context",[464,1636,1085],{"class":555},[464,1638,1639],{"class":477},"requestId",[464,1641,1642],{"class":555},"}] ${",[464,1644,690],{"class":477},[464,1646,1085],{"class":555},[464,1648,1649],{"class":477},"method",[464,1651,1652],{"class":555},"} ${",[464,1654,690],{"class":477},[464,1656,1085],{"class":555},[464,1658,1659],{"class":477},"path",[464,1661,1662],{"class":555},"}`",[464,1664,856],{"class":477},[464,1666,1667],{"class":466,"line":610},[464,1668,533],{"emptyLinePlaceholder":532},[464,1670,1671],{"class":466,"line":616},[464,1672,1673],{"class":539},"  \u002F\u002F Continue to the next handler (don't return anything)\n",[464,1675,1676],{"class":466,"line":622},[464,1677,717],{"class":477},[1679,1680,1681],"important",{},[414,1682,1683,1684,1687],{},"If your server entry returns ",[423,1685,1686],{},"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.",[418,1689,1691],{"id":1690},"request-lifecycle","Request lifecycle",[414,1693,1694,1695,1698,1699,1701],{},"The server entry is registered as a catch-all (",[423,1696,1697],{},"\u002F**",") route handler. When a specific route (like ",[423,1700,747],{},") matches a request, that route handler takes priority. For requests that don't match any specific route, the server entry runs before the renderer:",[456,1703,1707],{"className":1704,"code":1705,"language":1706,"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",[423,1708,1709,1720,1728,1736,1744,1749,1754],{"__ignoreMap":5},[464,1710,1711,1714,1717],{"class":466,"line":467},[464,1712,1713],{"class":494},"1.",[464,1715,1716],{"class":477}," Server hook: ",[464,1718,1719],{"class":513},"`request`\n",[464,1721,1722,1725],{"class":466,"line":481},[464,1723,1724],{"class":494},"2.",[464,1726,1727],{"class":477}," Route rules (headers, redirects, etc.)\n",[464,1729,1730,1733],{"class":466,"line":507},[464,1731,1732],{"class":494},"3.",[464,1734,1735],{"class":477}," Global middleware (middleware\u002F)\n",[464,1737,1738,1741],{"class":466,"line":529},[464,1739,1740],{"class":494},"4.",[464,1742,1743],{"class":477}," Route matching:\n",[464,1745,1746],{"class":466,"line":536},[464,1747,1748],{"class":477},"   a. Specific routes (routes\u002F) ← if matched, handles the request\n",[464,1750,1751],{"class":466,"line":543},[464,1752,1753],{"class":477},"   b. Server entry ← runs for unmatched routes\n",[464,1755,1756],{"class":466,"line":561},[464,1757,1758],{"class":477},"   c. Renderer (renderer.ts or index.html)\n",[414,1760,1761],{},"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.",[418,1763,1765],{"id":1764},"development-mode","Development mode",[414,1767,1768],{},"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.",[418,1770,1772],{"id":1771},"best-practices","Best practices",[734,1774,1775,1781,1787,1790,1793,1800,1803],{},[737,1776,1777,1778],{},"Use server entry for cross-cutting concerns that affect ",[1431,1779,1780],{},"all routes",[737,1782,1783,1784,1786],{},"Return ",[423,1785,1686],{}," to continue processing, return a response to terminate",[737,1788,1789],{},"Keep server entry logic lightweight for better performance",[737,1791,1792],{},"Use global middleware for modular concerns instead of one large server entry",[737,1794,1795,1796,1799],{},"Consider using ",[1056,1797,1798],{"href":54},"Nitro plugins"," for initialization logic",[737,1801,1802],{},"Avoid heavy computation in server entry (it runs for every request)",[737,1804,1805],{},"Don't use server entry for route-specific logic (use route handlers instead as they are more performant)",[1807,1808,1809],"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":481,"depth":481,"links":1811},[1812,1814,1818,1823,1824,1825,1826],{"id":420,"depth":481,"text":1813},"Auto-detected server.ts",{"id":757,"depth":481,"text":758,"children":1815},[1816,1817],{"id":769,"depth":507,"text":770},{"id":1046,"depth":507,"text":1047},{"id":1280,"depth":481,"text":33,"children":1819},[1820,1821,1822],{"id":1283,"depth":507,"text":1284},{"id":1418,"depth":507,"text":1419},{"id":1466,"depth":507,"text":1467},{"id":1522,"depth":481,"text":1523},{"id":1690,"depth":481,"text":1691},{"id":1764,"depth":481,"text":1765},{"id":1771,"depth":481,"text":1772},"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":409,"description":1827},"GJMu53mS0TXxi5pF2NfTPWjiLf4wudOuUd3Lh3QonLw",[1833,1835],{"title":63,"path":64,"stem":65,"description":1834,"icon":66,"children":-1},"Nitro provides cross-platform WebSocket support powered by CrossWS and H3.",{"title":73,"path":74,"stem":75,"description":1836,"icon":76,"children":-1},"Nitro provides a caching system built on top of the storage layer, powered by ocache.",1784130427638]