[{"data":1,"prerenderedAt":2645},["ShallowReactive",2],{"navigation":3,"examples-nav":377,"-examples-vite-ssr-html":478,"-examples-vite-ssr-html-surround":2642},[4,83,212,218,374],{"title":5,"path":6,"stem":7,"children":8,"icon":82},"","/docs","1.docs/1.index",[9,12,17,22,27,32,37,42,47,52,57,62,67,72,77],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-compass",{"title":13,"path":14,"stem":15,"icon":16},"Quick Start","/docs/quick-start","1.docs/2.quick-start","i-lucide-zap",{"title":18,"path":19,"stem":20,"icon":21},"Renderer","/docs/renderer","1.docs/4.renderer","ri:layout-masonry-line",{"title":23,"path":24,"stem":25,"icon":26},"Routing","/docs/routing","1.docs/5.routing","ri:direction-line",{"title":28,"path":29,"stem":30,"icon":31},"Assets","/docs/assets","1.docs/50.assets","ri:image-2-line",{"title":33,"path":34,"stem":35,"icon":36},"Configuration","/docs/configuration","1.docs/50.configuration","ri:settings-3-line",{"title":38,"path":39,"stem":40,"icon":41},"Database","/docs/database","1.docs/50.database","ri:database-2-line",{"title":43,"path":44,"stem":45,"icon":46},"Lifecycle","/docs/lifecycle","1.docs/50.lifecycle","i-lucide-layers",{"title":48,"path":49,"stem":50,"icon":51},"Plugins","/docs/plugins","1.docs/50.plugins","ri:plug-line",{"title":53,"path":54,"stem":55,"icon":56},"Tasks","/docs/tasks","1.docs/50.tasks","codicon:run-all",{"title":58,"path":59,"stem":60,"icon":61},"Server Entry","/docs/server-entry","1.docs/6.server-entry","ri:server-line",{"title":63,"path":64,"stem":65,"icon":66},"Cache","/docs/cache","1.docs/7.cache","ri:speed-line",{"title":68,"path":69,"stem":70,"icon":71},"KV Storage","/docs/storage","1.docs/8.storage","carbon:datastore",{"title":73,"path":74,"stem":75,"icon":76},"Migration Guide","/docs/migration","1.docs/99.migration","ri:arrow-right-up-line",{"title":78,"path":79,"stem":80,"icon":81},"Nightly Channel","/docs/nightly","1.docs/99.nightly","ri:moon-fill","i-lucide-book-open",{"title":84,"path":85,"stem":86,"children":87,"icon":89},"Deploy","/deploy","2.deploy/0.index",[88,90,111],{"title":84,"path":85,"stem":86,"icon":89},"ri:upload-cloud-2-line",{"title":91,"path":92,"stem":93,"children":94,"page":110},"Runtimes","/deploy/runtimes","2.deploy/10.runtimes",[95,100,105],{"title":96,"path":97,"stem":98,"icon":99},"Node.js","/deploy/runtimes/node","2.deploy/10.runtimes/1.node","akar-icons:node-fill",{"title":101,"path":102,"stem":103,"icon":104},"Bun","/deploy/runtimes/bun","2.deploy/10.runtimes/bun","simple-icons:bun",{"title":106,"path":107,"stem":108,"icon":109},"Deno","/deploy/runtimes/deno","2.deploy/10.runtimes/deno","simple-icons:deno",false,{"title":112,"path":113,"stem":114,"children":115,"page":110},"Providers","/deploy/providers","2.deploy/20.providers",[116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,196,200,204,208],{"title":117,"path":118,"stem":119},"Alwaysdata","/deploy/providers/alwaysdata","2.deploy/20.providers/alwaysdata",{"title":121,"path":122,"stem":123},"AWS Lambda","/deploy/providers/aws","2.deploy/20.providers/aws",{"title":125,"path":126,"stem":127},"AWS Amplify","/deploy/providers/aws-amplify","2.deploy/20.providers/aws-amplify",{"title":129,"path":130,"stem":131},"Azure","/deploy/providers/azure","2.deploy/20.providers/azure",{"title":133,"path":134,"stem":135},"Cleavr","/deploy/providers/cleavr","2.deploy/20.providers/cleavr",{"title":137,"path":138,"stem":139},"Cloudflare","/deploy/providers/cloudflare","2.deploy/20.providers/cloudflare",{"title":141,"path":142,"stem":143},"Deno Deploy","/deploy/providers/deno-deploy","2.deploy/20.providers/deno-deploy",{"title":145,"path":146,"stem":147},"DigitalOcean","/deploy/providers/digitalocean","2.deploy/20.providers/digitalocean",{"title":149,"path":150,"stem":151},"Firebase","/deploy/providers/firebase","2.deploy/20.providers/firebase",{"title":153,"path":154,"stem":155},"Flightcontrol","/deploy/providers/flightcontrol","2.deploy/20.providers/flightcontrol",{"title":157,"path":158,"stem":159},"Genezio","/deploy/providers/genezio","2.deploy/20.providers/genezio",{"title":161,"path":162,"stem":163},"GitHub Pages","/deploy/providers/github-pages","2.deploy/20.providers/github-pages",{"title":165,"path":166,"stem":167},"GitLab Pages","/deploy/providers/gitlab-pages","2.deploy/20.providers/gitlab-pages",{"title":169,"path":170,"stem":171},"Heroku","/deploy/providers/heroku","2.deploy/20.providers/heroku",{"title":173,"path":174,"stem":175},"IIS","/deploy/providers/iis","2.deploy/20.providers/iis",{"title":177,"path":178,"stem":179},"Koyeb","/deploy/providers/koyeb","2.deploy/20.providers/koyeb",{"title":181,"path":182,"stem":183},"Netlify","/deploy/providers/netlify","2.deploy/20.providers/netlify",{"title":185,"path":186,"stem":187},"Platform.sh","/deploy/providers/platform-sh","2.deploy/20.providers/platform-sh",{"title":189,"path":190,"stem":191},"Render.com","/deploy/providers/render","2.deploy/20.providers/render",{"title":193,"path":194,"stem":195},"StormKit","/deploy/providers/stormkit","2.deploy/20.providers/stormkit",{"title":197,"path":198,"stem":199},"Vercel","/deploy/providers/vercel","2.deploy/20.providers/vercel",{"title":201,"path":202,"stem":203},"Zeabur","/deploy/providers/zeabur","2.deploy/20.providers/zeabur",{"title":205,"path":206,"stem":207},"Zephyr Cloud","/deploy/providers/zephyr","2.deploy/20.providers/zephyr",{"title":209,"path":210,"stem":211},"Zerops","/deploy/providers/zerops","2.deploy/20.providers/zerops",{"title":213,"path":214,"stem":215,"children":216,"icon":36},"Config","/config","3.config/0.index",[217],{"title":213,"path":214,"stem":215,"icon":36},{"title":219,"path":220,"stem":221,"children":222,"icon":224},"Examples","/examples","4.examples/0.index",[223,225,230,235,240,245,249,254,259,264,269,274,279,283,288,292,296,301,306,311,316,321,326,331,336,341,345,350,355,359,364,369],{"title":219,"path":220,"stem":221,"icon":224},"i-lucide-folder-code",{"title":226,"path":227,"stem":228,"icon":229},"API Routes","/examples/api-routes","4.examples/api-routes","i-lucide-route",{"title":231,"path":232,"stem":233,"icon":234},"Auto Imports","/examples/auto-imports","4.examples/auto-imports","i-lucide-import",{"title":236,"path":237,"stem":238,"icon":239},"Cached Handler","/examples/cached-handler","4.examples/cached-handler","i-lucide-clock",{"title":241,"path":242,"stem":243,"icon":244},"Custom Error Handler","/examples/custom-error-handler","4.examples/custom-error-handler","i-lucide-alert-circle",{"title":38,"path":246,"stem":247,"icon":248},"/examples/database","4.examples/database","i-lucide-database",{"title":250,"path":251,"stem":252,"icon":253},"Elysia","/examples/elysia","4.examples/elysia","i-skill-icons-elysia-dark",{"title":255,"path":256,"stem":257,"icon":258},"Express","/examples/express","4.examples/express","i-simple-icons-express",{"title":260,"path":261,"stem":262,"icon":263},"Fastify","/examples/fastify","4.examples/fastify","i-simple-icons-fastify",{"title":265,"path":266,"stem":267,"icon":268},"Hello World","/examples/hello-world","4.examples/hello-world","i-lucide-sparkles",{"title":270,"path":271,"stem":272,"icon":273},"Hono","/examples/hono","4.examples/hono","i-logos-hono",{"title":275,"path":276,"stem":277,"icon":278},"Import Alias","/examples/import-alias","4.examples/import-alias","i-lucide-at-sign",{"title":280,"path":281,"stem":282,"icon":46},"Middleware","/examples/middleware","4.examples/middleware",{"title":284,"path":285,"stem":286,"icon":287},"Mono JSX","/examples/mono-jsx","4.examples/mono-jsx","i-lucide-brackets",{"title":289,"path":290,"stem":291,"icon":287},"Nano JSX","/examples/nano-jsx","4.examples/nano-jsx",{"title":48,"path":293,"stem":294,"icon":295},"/examples/plugins","4.examples/plugins","i-lucide-plug",{"title":297,"path":298,"stem":299,"icon":300},"Custom Renderer","/examples/renderer","4.examples/renderer","i-lucide-code",{"title":302,"path":303,"stem":304,"icon":305},"Runtime Config","/examples/runtime-config","4.examples/runtime-config","i-lucide-settings",{"title":307,"path":308,"stem":309,"icon":310},"Server Fetch","/examples/server-fetch","4.examples/server-fetch","i-lucide-arrow-right-left",{"title":312,"path":313,"stem":314,"icon":315},"Shiki","/examples/shiki","4.examples/shiki","i-lucide-highlighter",{"title":317,"path":318,"stem":319,"icon":320},"Virtual Routes","/examples/virtual-routes","4.examples/virtual-routes","i-lucide-box",{"title":322,"path":323,"stem":324,"icon":325},"Vite Nitro Plugin","/examples/vite-nitro-plugin","4.examples/vite-nitro-plugin","i-logos-vitejs",{"title":327,"path":328,"stem":329,"icon":330},"Vite RSC","/examples/vite-rsc","4.examples/vite-rsc","i-logos-react",{"title":332,"path":333,"stem":334,"icon":335},"Vite SSR HTML","/examples/vite-ssr-html","4.examples/vite-ssr-html","i-logos-html-5",{"title":337,"path":338,"stem":339,"icon":340},"SSR with Preact","/examples/vite-ssr-preact","4.examples/vite-ssr-preact","i-logos-preact",{"title":342,"path":343,"stem":344,"icon":330},"SSR with React","/examples/vite-ssr-react","4.examples/vite-ssr-react",{"title":346,"path":347,"stem":348,"icon":349},"SSR with SolidJS","/examples/vite-ssr-solid","4.examples/vite-ssr-solid","i-logos-solidjs-icon",{"title":351,"path":352,"stem":353,"icon":354},"SSR with TanStack Router","/examples/vite-ssr-tsr-react","4.examples/vite-ssr-tsr-react","i-simple-icons-tanstack",{"title":356,"path":357,"stem":358,"icon":354},"SSR with TanStack Start","/examples/vite-ssr-tss-react","4.examples/vite-ssr-tss-react",{"title":360,"path":361,"stem":362,"icon":363},"SSR with Vue Router","/examples/vite-ssr-vue-router","4.examples/vite-ssr-vue-router","i-logos-vue",{"title":365,"path":366,"stem":367,"icon":368},"Vite + tRPC","/examples/vite-trpc","4.examples/vite-trpc","i-simple-icons-trpc",{"title":370,"path":371,"stem":372,"icon":373},"WebSocket","/examples/websocket","4.examples/websocket","i-lucide-radio",{"title":5,"path":375,"stem":376},"/","index",[378,383,387,390,393,396,400,403,406,409,412,415,418,422,425,428,431,434,437,441,444,448,451,454,457,460,463,466,469,472,475],{"title":226,"description":379,"meta":380,"path":227},"File-based API routing with HTTP method support and dynamic parameters.",{"automd":381,"category":382,"icon":229},true,"features",{"title":231,"description":384,"meta":385,"path":232},"Automatic imports for utilities and composables.",{"automd":381,"category":386,"icon":234},"config",{"title":236,"description":388,"meta":389,"path":237},"Cache route responses with configurable bypass logic.",{"automd":381,"category":382,"icon":239},{"title":241,"description":391,"meta":392,"path":242},"Customize error responses with a global error handler.",{"automd":381,"category":382,"icon":244},{"title":38,"description":394,"meta":395,"path":246},"Built-in database support with SQL template literals.",{"automd":381,"category":382,"icon":248},{"title":250,"description":397,"meta":398,"path":251},"Integrate Elysia with Nitro using the server entry.",{"automd":381,"category":399,"icon":253},"backend frameworks",{"title":255,"description":401,"meta":402,"path":256},"Integrate Express with Nitro using the server entry.",{"automd":381,"category":399,"icon":258},{"title":260,"description":404,"meta":405,"path":261},"Integrate Fastify with Nitro using the server entry.",{"automd":381,"category":399,"icon":263},{"title":265,"description":407,"meta":408,"path":266},"Minimal Nitro server using the web standard fetch handler.",{"automd":381,"category":382,"icon":268},{"title":270,"description":410,"meta":411,"path":271},"Integrate Hono with Nitro using the server entry.",{"automd":381,"category":399,"icon":273},{"title":275,"description":413,"meta":414,"path":276},"Custom import aliases for cleaner module paths.",{"automd":381,"category":386,"icon":278},{"title":280,"description":416,"meta":417,"path":281},"Request middleware for authentication, logging, and request modification.",{"automd":381,"category":382,"icon":46},{"title":284,"description":419,"meta":420,"path":285},"Server-side JSX rendering in Nitro with mono-jsx.",{"automd":381,"category":421,"icon":287},"server side rendering",{"title":289,"description":423,"meta":424,"path":290},"Server-side JSX rendering in Nitro with nano-jsx.",{"automd":381,"category":421,"icon":287},{"title":48,"description":426,"meta":427,"path":293},"Extend Nitro with custom plugins for hooks and lifecycle events.",{"automd":381,"category":382,"icon":295},{"title":297,"description":429,"meta":430,"path":298},"Build a custom HTML renderer in Nitro with server-side data fetching.",{"automd":381,"category":421,"icon":300},{"title":302,"description":432,"meta":433,"path":303},"Environment-aware configuration with runtime access.",{"automd":381,"category":386,"icon":305},{"title":307,"description":435,"meta":436,"path":308},"Internal server-to-server requests without network overhead.",{"automd":381,"category":382,"icon":310},{"title":312,"description":438,"meta":439,"path":313},"Server-side syntax highlighting in Nitro with Shiki.",{"automd":381,"category":440,"icon":315},"integrations",{"title":317,"description":442,"meta":443,"path":318},"Define routes programmatically using Nitro's virtual module system.",{"automd":381,"category":382,"icon":320},{"title":322,"description":445,"meta":446,"path":323},"Use Nitro as a Vite plugin for programmatic configuration.",{"automd":381,"category":447,"icon":325},"vite",{"title":327,"description":449,"meta":450,"path":328},"React Server Components with Vite and Nitro.",{"automd":381,"category":447,"icon":330},{"title":332,"description":452,"meta":453,"path":333},"Server-side rendering with vanilla HTML, Vite, and Nitro.",{"automd":381,"category":421,"icon":335},{"title":337,"description":455,"meta":456,"path":338},"Server-side rendering with Preact in Nitro using Vite.",{"automd":381,"category":421,"icon":340},{"title":342,"description":458,"meta":459,"path":343},"Server-side rendering with React in Nitro using Vite.",{"automd":381,"category":421,"icon":330},{"title":346,"description":461,"meta":462,"path":347},"Server-side rendering with SolidJS in Nitro using Vite.",{"automd":381,"category":421,"icon":349},{"title":351,"description":464,"meta":465,"path":352},"Client-side routing with TanStack Router in Nitro using Vite.",{"automd":381,"category":421,"icon":354},{"title":356,"description":467,"meta":468,"path":357},"Full-stack React with TanStack Start in Nitro using Vite.",{"automd":381,"category":421,"icon":354},{"title":360,"description":470,"meta":471,"path":361},"Server-side rendering with Vue Router in Nitro using Vite.",{"automd":381,"category":421,"icon":363},{"title":365,"description":473,"meta":474,"path":366},"End-to-end typesafe APIs with tRPC in Nitro using Vite.",{"automd":381,"category":447,"icon":368},{"title":370,"description":476,"meta":477,"path":371},"Real-time bidirectional communication with WebSocket support.",{"automd":381,"category":382,"icon":373},{"id":479,"title":332,"body":480,"description":452,"extension":2637,"meta":2638,"navigation":2639,"path":333,"seo":2640,"stem":334,"__hash__":2641},"content/4.examples/vite-ssr-html.md",{"type":481,"value":482,"toc":2632,"icon":335},"minimark",[483,2538,2542,2547,2581,2585,2594,2609,2612,2616,2629],[484,485,488,1624,1759,1783,1902,2294],"code-tree",{":expand-all":486,"default-value":487},"true","app/entry-server.ts",[489,490,495],"pre",{"className":491,"code":492,"filename":493,"language":494,"meta":5,"style":5},"language-html shiki shiki-themes github-light github-dark github-dark","\u003C!doctype html>\n\u003Chtml lang=\"en\">\n  \u003Chead>\n    \u003Cmeta charset=\"UTF-8\" />\n    \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    \u003Ctitle>Nitro Quotes\u003C/title>\n    \u003Cstyle>\n      @import \"tailwindcss\";\n    \u003C/style>\n  \u003C/head>\n  \u003Cbody\n    class=\"min-h-screen flex items-center justify-center p-5 bg-gradient-to-br from-indigo-500 to-purple-600 font-sans\"\n  >\n    \u003Cdiv class=\"max-w-xl w-full text-center text-white\">\n      \u003Cdiv class=\"bg-white/10 backdrop-blur-md rounded-2xl p-10 shadow-xl border border-white/20\">\n        \u003Cdiv\n          id=\"quote\"\n          class=\"text-[clamp(1.2rem,4vw,1.8rem)] leading-relaxed mb-5 font-light opacity-70 transition-opacity duration-500\"\n        >\n          \u003C!--ssr-outlet-->\n        \u003C/div>\n        \u003Cdiv\n          id=\"author\"\n          class=\"text-[clamp(1rem,3vw,1.2rem)] opacity-0 font-normal transition-opacity duration-500\"\n        >\u003C/div>\n        \u003Cbutton\n          id=\"refresh-btn\"\n          class=\"mt-5 bg-white/20 border border-white/30 text-white px-6 py-3 rounded-full cursor-pointer text-sm transition hover:bg-white/30 hover:-translate-y-0.5\"\n          onclick=\"fetchQuote()\"\n        >\n          New Quote\n        \u003C/button>\n      \u003C/div>\n      \u003Cdiv class=\"mt-8 text-sm opacity-60\">\n        Powered by\n        \u003Ca\n          class=\"text-white no-underline border-b border-white/30 hover:border-white transition-colors\"\n          href=\"https://vitejs.dev/\"\n          >Vite\u003C/a\n        >\n        and\n        \u003Ca\n          class=\"text-white no-underline border-b border-white/30 hover:border-white transition-colors\"\n          href=\"https://github.com/nitrojs/nitro\"\n          >Nitro v3\u003C/a\n        >.\n      \u003C/div>\n    \u003C/div>\n\n    \u003Cscript>\n      const quoteElement = document.getElementById(\"quote\");\n      const authorElement = document.getElementById(\"author\");\n      const refreshBtn = document.getElementById(\"refresh-btn\");\n\n      const baseQuoteClasses =\n        \"text-[clamp(1.2rem,4vw,1.8rem)] leading-relaxed mb-5 font-light transition-opacity duration-500\";\n      const loadingQuoteClasses = baseQuoteClasses + \" opacity-70\";\n      const normalQuoteClasses = baseQuoteClasses + \" opacity-100\";\n      const errorQuoteClasses = baseQuoteClasses + \" text-red-400 opacity-100 text-sm\";\n\n      const baseAuthorClasses =\n        \"text-[clamp(1rem,3vw,1.2rem)] font-normal transition-opacity duration-500\";\n      const hiddenAuthorClasses = baseAuthorClasses + \" opacity-0\";\n      const visibleAuthorClasses = baseAuthorClasses + \" opacity-80\";\n\n      async function fetchQuote() {\n        try {\n          quoteElement.textContent = \"Loading...\";\n          quoteElement.className = loadingQuoteClasses;\n          authorElement.textContent = \"\";\n          authorElement.className = hiddenAuthorClasses;\n          refreshBtn.style.display = \"none\";\n          const response = await fetch(\"/quote\");\n          if (!response.ok) {\n            throw new Error(`HTTP error! status: ${response.status}`);\n          }\n          const { text, author } = await response.json();\n          quoteElement.textContent = `\"${text}\"`;\n          quoteElement.className = normalQuoteClasses;\n          authorElement.textContent = `— ${author}`;\n          authorElement.className = visibleAuthorClasses;\n        } catch (error) {\n          console.error(\"Error fetching quote:\", error);\n          quoteElement.textContent = \"Failed to load quote. Please try again.\";\n          quoteElement.className = errorQuoteClasses;\n          authorElement.textContent = \"\";\n          authorElement.className = hiddenAuthorClasses;\n        } finally {\n          refreshBtn.style.display = \"inline-block\";\n        }\n      }\n    \u003C/script>\n  \u003C/body>\n\u003C/html>\n","index.html","html",[496,497,498,518,538,549,569,594,609,619,632,642,652,660,671,677,695,712,721,732,743,749,756,766,773,783,793,803,811,821,831,848,853,859,869,879,895,901,909,919,930,938,943,949,956,965,975,983,989,998,1007,1013,1023,1051,1072,1093,1098,1109,1117,1138,1157,1176,1181,1191,1199,1219,1238,1243,1258,1267,1280,1291,1304,1315,1328,1352,1367,1398,1404,1437,1454,1464,1480,1490,1502,1519,1531,1541,1552,1561,1571,1583,1589,1595,1604,1614],"code",{"__ignoreMap":5},[499,500,503,507,511,515],"span",{"class":501,"line":502},"line",1,[499,504,506],{"class":505},"slsVL","\u003C!",[499,508,510],{"class":509},"sByVh","doctype",[499,512,514],{"class":513},"shcOC"," html",[499,516,517],{"class":505},">\n",[499,519,521,524,526,529,532,536],{"class":501,"line":520},2,[499,522,523],{"class":505},"\u003C",[499,525,494],{"class":509},[499,527,528],{"class":513}," lang",[499,530,531],{"class":505},"=",[499,533,535],{"class":534},"sfrk1","\"en\"",[499,537,517],{"class":505},[499,539,541,544,547],{"class":501,"line":540},3,[499,542,543],{"class":505},"  \u003C",[499,545,546],{"class":509},"head",[499,548,517],{"class":505},[499,550,552,555,558,561,563,566],{"class":501,"line":551},4,[499,553,554],{"class":505},"    \u003C",[499,556,557],{"class":509},"meta",[499,559,560],{"class":513}," charset",[499,562,531],{"class":505},[499,564,565],{"class":534},"\"UTF-8\"",[499,567,568],{"class":505}," />\n",[499,570,572,574,576,579,581,584,587,589,592],{"class":501,"line":571},5,[499,573,554],{"class":505},[499,575,557],{"class":509},[499,577,578],{"class":513}," name",[499,580,531],{"class":505},[499,582,583],{"class":534},"\"viewport\"",[499,585,586],{"class":513}," content",[499,588,531],{"class":505},[499,590,591],{"class":534},"\"width=device-width, initial-scale=1.0\"",[499,593,568],{"class":505},[499,595,597,599,602,605,607],{"class":501,"line":596},6,[499,598,554],{"class":505},[499,600,601],{"class":509},"title",[499,603,604],{"class":505},">Nitro Quotes\u003C/",[499,606,601],{"class":509},[499,608,517],{"class":505},[499,610,612,614,617],{"class":501,"line":611},7,[499,613,554],{"class":505},[499,615,616],{"class":509},"style",[499,618,517],{"class":505},[499,620,622,626,629],{"class":501,"line":621},8,[499,623,625],{"class":624},"so5gQ","      @import",[499,627,628],{"class":534}," \"tailwindcss\"",[499,630,631],{"class":505},";\n",[499,633,635,638,640],{"class":501,"line":634},9,[499,636,637],{"class":505},"    \u003C/",[499,639,616],{"class":509},[499,641,517],{"class":505},[499,643,645,648,650],{"class":501,"line":644},10,[499,646,647],{"class":505},"  \u003C/",[499,649,546],{"class":509},[499,651,517],{"class":505},[499,653,655,657],{"class":501,"line":654},11,[499,656,543],{"class":505},[499,658,659],{"class":509},"body\n",[499,661,663,666,668],{"class":501,"line":662},12,[499,664,665],{"class":513},"    class",[499,667,531],{"class":505},[499,669,670],{"class":534},"\"min-h-screen flex items-center justify-center p-5 bg-gradient-to-br from-indigo-500 to-purple-600 font-sans\"\n",[499,672,674],{"class":501,"line":673},13,[499,675,676],{"class":505},"  >\n",[499,678,680,682,685,688,690,693],{"class":501,"line":679},14,[499,681,554],{"class":505},[499,683,684],{"class":509},"div",[499,686,687],{"class":513}," class",[499,689,531],{"class":505},[499,691,692],{"class":534},"\"max-w-xl w-full text-center text-white\"",[499,694,517],{"class":505},[499,696,698,701,703,705,707,710],{"class":501,"line":697},15,[499,699,700],{"class":505},"      \u003C",[499,702,684],{"class":509},[499,704,687],{"class":513},[499,706,531],{"class":505},[499,708,709],{"class":534},"\"bg-white/10 backdrop-blur-md rounded-2xl p-10 shadow-xl border border-white/20\"",[499,711,517],{"class":505},[499,713,715,718],{"class":501,"line":714},16,[499,716,717],{"class":505},"        \u003C",[499,719,720],{"class":509},"div\n",[499,722,724,727,729],{"class":501,"line":723},17,[499,725,726],{"class":513},"          id",[499,728,531],{"class":505},[499,730,731],{"class":534},"\"quote\"\n",[499,733,735,738,740],{"class":501,"line":734},18,[499,736,737],{"class":513},"          class",[499,739,531],{"class":505},[499,741,742],{"class":534},"\"text-[clamp(1.2rem,4vw,1.8rem)] leading-relaxed mb-5 font-light opacity-70 transition-opacity duration-500\"\n",[499,744,746],{"class":501,"line":745},19,[499,747,748],{"class":505},"        >\n",[499,750,752],{"class":501,"line":751},20,[499,753,755],{"class":754},"sCsY4","          \u003C!--ssr-outlet-->\n",[499,757,759,762,764],{"class":501,"line":758},21,[499,760,761],{"class":505},"        \u003C/",[499,763,684],{"class":509},[499,765,517],{"class":505},[499,767,769,771],{"class":501,"line":768},22,[499,770,717],{"class":505},[499,772,720],{"class":509},[499,774,776,778,780],{"class":501,"line":775},23,[499,777,726],{"class":513},[499,779,531],{"class":505},[499,781,782],{"class":534},"\"author\"\n",[499,784,786,788,790],{"class":501,"line":785},24,[499,787,737],{"class":513},[499,789,531],{"class":505},[499,791,792],{"class":534},"\"text-[clamp(1rem,3vw,1.2rem)] opacity-0 font-normal transition-opacity duration-500\"\n",[499,794,796,799,801],{"class":501,"line":795},25,[499,797,798],{"class":505},"        >\u003C/",[499,800,684],{"class":509},[499,802,517],{"class":505},[499,804,806,808],{"class":501,"line":805},26,[499,807,717],{"class":505},[499,809,810],{"class":509},"button\n",[499,812,814,816,818],{"class":501,"line":813},27,[499,815,726],{"class":513},[499,817,531],{"class":505},[499,819,820],{"class":534},"\"refresh-btn\"\n",[499,822,824,826,828],{"class":501,"line":823},28,[499,825,737],{"class":513},[499,827,531],{"class":505},[499,829,830],{"class":534},"\"mt-5 bg-white/20 border border-white/30 text-white px-6 py-3 rounded-full cursor-pointer text-sm transition hover:bg-white/30 hover:-translate-y-0.5\"\n",[499,832,834,837,839,842,845],{"class":501,"line":833},29,[499,835,836],{"class":513},"          onclick",[499,838,531],{"class":505},[499,840,841],{"class":534},"\"",[499,843,844],{"class":513},"fetchQuote",[499,846,847],{"class":534},"()\"\n",[499,849,851],{"class":501,"line":850},30,[499,852,748],{"class":505},[499,854,856],{"class":501,"line":855},31,[499,857,858],{"class":505},"          New Quote\n",[499,860,862,864,867],{"class":501,"line":861},32,[499,863,761],{"class":505},[499,865,866],{"class":509},"button",[499,868,517],{"class":505},[499,870,872,875,877],{"class":501,"line":871},33,[499,873,874],{"class":505},"      \u003C/",[499,876,684],{"class":509},[499,878,517],{"class":505},[499,880,882,884,886,888,890,893],{"class":501,"line":881},34,[499,883,700],{"class":505},[499,885,684],{"class":509},[499,887,687],{"class":513},[499,889,531],{"class":505},[499,891,892],{"class":534},"\"mt-8 text-sm opacity-60\"",[499,894,517],{"class":505},[499,896,898],{"class":501,"line":897},35,[499,899,900],{"class":505},"        Powered by\n",[499,902,904,906],{"class":501,"line":903},36,[499,905,717],{"class":505},[499,907,908],{"class":509},"a\n",[499,910,912,914,916],{"class":501,"line":911},37,[499,913,737],{"class":513},[499,915,531],{"class":505},[499,917,918],{"class":534},"\"text-white no-underline border-b border-white/30 hover:border-white transition-colors\"\n",[499,920,922,925,927],{"class":501,"line":921},38,[499,923,924],{"class":513},"          href",[499,926,531],{"class":505},[499,928,929],{"class":534},"\"https://vitejs.dev/\"\n",[499,931,933,936],{"class":501,"line":932},39,[499,934,935],{"class":505},"          >Vite\u003C/",[499,937,908],{"class":509},[499,939,941],{"class":501,"line":940},40,[499,942,748],{"class":505},[499,944,946],{"class":501,"line":945},41,[499,947,948],{"class":505},"        and\n",[499,950,952,954],{"class":501,"line":951},42,[499,953,717],{"class":505},[499,955,908],{"class":509},[499,957,959,961,963],{"class":501,"line":958},43,[499,960,737],{"class":513},[499,962,531],{"class":505},[499,964,918],{"class":534},[499,966,968,970,972],{"class":501,"line":967},44,[499,969,924],{"class":513},[499,971,531],{"class":505},[499,973,974],{"class":534},"\"https://github.com/nitrojs/nitro\"\n",[499,976,978,981],{"class":501,"line":977},45,[499,979,980],{"class":505},"          >Nitro v3\u003C/",[499,982,908],{"class":509},[499,984,986],{"class":501,"line":985},46,[499,987,988],{"class":505},"        >.\n",[499,990,992,994,996],{"class":501,"line":991},47,[499,993,874],{"class":505},[499,995,684],{"class":509},[499,997,517],{"class":505},[499,999,1001,1003,1005],{"class":501,"line":1000},48,[499,1002,637],{"class":505},[499,1004,684],{"class":509},[499,1006,517],{"class":505},[499,1008,1010],{"class":501,"line":1009},49,[499,1011,1012],{"emptyLinePlaceholder":381},"\n",[499,1014,1016,1018,1021],{"class":501,"line":1015},50,[499,1017,554],{"class":505},[499,1019,1020],{"class":509},"script",[499,1022,517],{"class":505},[499,1024,1026,1029,1033,1036,1039,1042,1045,1048],{"class":501,"line":1025},51,[499,1027,1028],{"class":624},"      const",[499,1030,1032],{"class":1031},"suiK_"," quoteElement",[499,1034,1035],{"class":624}," =",[499,1037,1038],{"class":505}," document.",[499,1040,1041],{"class":513},"getElementById",[499,1043,1044],{"class":505},"(",[499,1046,1047],{"class":534},"\"quote\"",[499,1049,1050],{"class":505},");\n",[499,1052,1054,1056,1059,1061,1063,1065,1067,1070],{"class":501,"line":1053},52,[499,1055,1028],{"class":624},[499,1057,1058],{"class":1031}," authorElement",[499,1060,1035],{"class":624},[499,1062,1038],{"class":505},[499,1064,1041],{"class":513},[499,1066,1044],{"class":505},[499,1068,1069],{"class":534},"\"author\"",[499,1071,1050],{"class":505},[499,1073,1075,1077,1080,1082,1084,1086,1088,1091],{"class":501,"line":1074},53,[499,1076,1028],{"class":624},[499,1078,1079],{"class":1031}," refreshBtn",[499,1081,1035],{"class":624},[499,1083,1038],{"class":505},[499,1085,1041],{"class":513},[499,1087,1044],{"class":505},[499,1089,1090],{"class":534},"\"refresh-btn\"",[499,1092,1050],{"class":505},[499,1094,1096],{"class":501,"line":1095},54,[499,1097,1012],{"emptyLinePlaceholder":381},[499,1099,1101,1103,1106],{"class":501,"line":1100},55,[499,1102,1028],{"class":624},[499,1104,1105],{"class":1031}," baseQuoteClasses",[499,1107,1108],{"class":624}," =\n",[499,1110,1112,1115],{"class":501,"line":1111},56,[499,1113,1114],{"class":534},"        \"text-[clamp(1.2rem,4vw,1.8rem)] leading-relaxed mb-5 font-light transition-opacity duration-500\"",[499,1116,631],{"class":505},[499,1118,1120,1122,1125,1127,1130,1133,1136],{"class":501,"line":1119},57,[499,1121,1028],{"class":624},[499,1123,1124],{"class":1031}," loadingQuoteClasses",[499,1126,1035],{"class":624},[499,1128,1129],{"class":505}," baseQuoteClasses ",[499,1131,1132],{"class":624},"+",[499,1134,1135],{"class":534}," \" opacity-70\"",[499,1137,631],{"class":505},[499,1139,1141,1143,1146,1148,1150,1152,1155],{"class":501,"line":1140},58,[499,1142,1028],{"class":624},[499,1144,1145],{"class":1031}," normalQuoteClasses",[499,1147,1035],{"class":624},[499,1149,1129],{"class":505},[499,1151,1132],{"class":624},[499,1153,1154],{"class":534}," \" opacity-100\"",[499,1156,631],{"class":505},[499,1158,1160,1162,1165,1167,1169,1171,1174],{"class":501,"line":1159},59,[499,1161,1028],{"class":624},[499,1163,1164],{"class":1031}," errorQuoteClasses",[499,1166,1035],{"class":624},[499,1168,1129],{"class":505},[499,1170,1132],{"class":624},[499,1172,1173],{"class":534}," \" text-red-400 opacity-100 text-sm\"",[499,1175,631],{"class":505},[499,1177,1179],{"class":501,"line":1178},60,[499,1180,1012],{"emptyLinePlaceholder":381},[499,1182,1184,1186,1189],{"class":501,"line":1183},61,[499,1185,1028],{"class":624},[499,1187,1188],{"class":1031}," baseAuthorClasses",[499,1190,1108],{"class":624},[499,1192,1194,1197],{"class":501,"line":1193},62,[499,1195,1196],{"class":534},"        \"text-[clamp(1rem,3vw,1.2rem)] font-normal transition-opacity duration-500\"",[499,1198,631],{"class":505},[499,1200,1202,1204,1207,1209,1212,1214,1217],{"class":501,"line":1201},63,[499,1203,1028],{"class":624},[499,1205,1206],{"class":1031}," hiddenAuthorClasses",[499,1208,1035],{"class":624},[499,1210,1211],{"class":505}," baseAuthorClasses ",[499,1213,1132],{"class":624},[499,1215,1216],{"class":534}," \" opacity-0\"",[499,1218,631],{"class":505},[499,1220,1222,1224,1227,1229,1231,1233,1236],{"class":501,"line":1221},64,[499,1223,1028],{"class":624},[499,1225,1226],{"class":1031}," visibleAuthorClasses",[499,1228,1035],{"class":624},[499,1230,1211],{"class":505},[499,1232,1132],{"class":624},[499,1234,1235],{"class":534}," \" opacity-80\"",[499,1237,631],{"class":505},[499,1239,1241],{"class":501,"line":1240},65,[499,1242,1012],{"emptyLinePlaceholder":381},[499,1244,1246,1249,1252,1255],{"class":501,"line":1245},66,[499,1247,1248],{"class":624},"      async",[499,1250,1251],{"class":624}," function",[499,1253,1254],{"class":513}," fetchQuote",[499,1256,1257],{"class":505},"() {\n",[499,1259,1261,1264],{"class":501,"line":1260},67,[499,1262,1263],{"class":624},"        try",[499,1265,1266],{"class":505}," {\n",[499,1268,1270,1273,1275,1278],{"class":501,"line":1269},68,[499,1271,1272],{"class":505},"          quoteElement.textContent ",[499,1274,531],{"class":624},[499,1276,1277],{"class":534}," \"Loading...\"",[499,1279,631],{"class":505},[499,1281,1283,1286,1288],{"class":501,"line":1282},69,[499,1284,1285],{"class":505},"          quoteElement.className ",[499,1287,531],{"class":624},[499,1289,1290],{"class":505}," loadingQuoteClasses;\n",[499,1292,1294,1297,1299,1302],{"class":501,"line":1293},70,[499,1295,1296],{"class":505},"          authorElement.textContent ",[499,1298,531],{"class":624},[499,1300,1301],{"class":534}," \"\"",[499,1303,631],{"class":505},[499,1305,1307,1310,1312],{"class":501,"line":1306},71,[499,1308,1309],{"class":505},"          authorElement.className ",[499,1311,531],{"class":624},[499,1313,1314],{"class":505}," hiddenAuthorClasses;\n",[499,1316,1318,1321,1323,1326],{"class":501,"line":1317},72,[499,1319,1320],{"class":505},"          refreshBtn.style.display ",[499,1322,531],{"class":624},[499,1324,1325],{"class":534}," \"none\"",[499,1327,631],{"class":505},[499,1329,1331,1334,1337,1339,1342,1345,1347,1350],{"class":501,"line":1330},73,[499,1332,1333],{"class":624},"          const",[499,1335,1336],{"class":1031}," response",[499,1338,1035],{"class":624},[499,1340,1341],{"class":624}," await",[499,1343,1344],{"class":513}," fetch",[499,1346,1044],{"class":505},[499,1348,1349],{"class":534},"\"/quote\"",[499,1351,1050],{"class":505},[499,1353,1355,1358,1361,1364],{"class":501,"line":1354},74,[499,1356,1357],{"class":624},"          if",[499,1359,1360],{"class":505}," (",[499,1362,1363],{"class":624},"!",[499,1365,1366],{"class":505},"response.ok) {\n",[499,1368,1370,1373,1376,1379,1381,1384,1387,1390,1393,1396],{"class":501,"line":1369},75,[499,1371,1372],{"class":624},"            throw",[499,1374,1375],{"class":624}," new",[499,1377,1378],{"class":513}," Error",[499,1380,1044],{"class":505},[499,1382,1383],{"class":534},"`HTTP error! status: ${",[499,1385,1386],{"class":505},"response",[499,1388,1389],{"class":534},".",[499,1391,1392],{"class":505},"status",[499,1394,1395],{"class":534},"}`",[499,1397,1050],{"class":505},[499,1399,1401],{"class":501,"line":1400},76,[499,1402,1403],{"class":505},"          }\n",[499,1405,1407,1409,1412,1415,1418,1421,1424,1426,1428,1431,1434],{"class":501,"line":1406},77,[499,1408,1333],{"class":624},[499,1410,1411],{"class":505}," { ",[499,1413,1414],{"class":1031},"text",[499,1416,1417],{"class":505},", ",[499,1419,1420],{"class":1031},"author",[499,1422,1423],{"class":505}," } ",[499,1425,531],{"class":624},[499,1427,1341],{"class":624},[499,1429,1430],{"class":505}," response.",[499,1432,1433],{"class":513},"json",[499,1435,1436],{"class":505},"();\n",[499,1438,1440,1442,1444,1447,1449,1452],{"class":501,"line":1439},78,[499,1441,1272],{"class":505},[499,1443,531],{"class":624},[499,1445,1446],{"class":534}," `\"${",[499,1448,1414],{"class":505},[499,1450,1451],{"class":534},"}\"`",[499,1453,631],{"class":505},[499,1455,1457,1459,1461],{"class":501,"line":1456},79,[499,1458,1285],{"class":505},[499,1460,531],{"class":624},[499,1462,1463],{"class":505}," normalQuoteClasses;\n",[499,1465,1467,1469,1471,1474,1476,1478],{"class":501,"line":1466},80,[499,1468,1296],{"class":505},[499,1470,531],{"class":624},[499,1472,1473],{"class":534}," `— ${",[499,1475,1420],{"class":505},[499,1477,1395],{"class":534},[499,1479,631],{"class":505},[499,1481,1483,1485,1487],{"class":501,"line":1482},81,[499,1484,1309],{"class":505},[499,1486,531],{"class":624},[499,1488,1489],{"class":505}," visibleAuthorClasses;\n",[499,1491,1493,1496,1499],{"class":501,"line":1492},82,[499,1494,1495],{"class":505},"        } ",[499,1497,1498],{"class":624},"catch",[499,1500,1501],{"class":505}," (error) {\n",[499,1503,1505,1508,1511,1513,1516],{"class":501,"line":1504},83,[499,1506,1507],{"class":505},"          console.",[499,1509,1510],{"class":513},"error",[499,1512,1044],{"class":505},[499,1514,1515],{"class":534},"\"Error fetching quote:\"",[499,1517,1518],{"class":505},", error);\n",[499,1520,1522,1524,1526,1529],{"class":501,"line":1521},84,[499,1523,1272],{"class":505},[499,1525,531],{"class":624},[499,1527,1528],{"class":534}," \"Failed to load quote. Please try again.\"",[499,1530,631],{"class":505},[499,1532,1534,1536,1538],{"class":501,"line":1533},85,[499,1535,1285],{"class":505},[499,1537,531],{"class":624},[499,1539,1540],{"class":505}," errorQuoteClasses;\n",[499,1542,1544,1546,1548,1550],{"class":501,"line":1543},86,[499,1545,1296],{"class":505},[499,1547,531],{"class":624},[499,1549,1301],{"class":534},[499,1551,631],{"class":505},[499,1553,1555,1557,1559],{"class":501,"line":1554},87,[499,1556,1309],{"class":505},[499,1558,531],{"class":624},[499,1560,1314],{"class":505},[499,1562,1564,1566,1569],{"class":501,"line":1563},88,[499,1565,1495],{"class":505},[499,1567,1568],{"class":624},"finally",[499,1570,1266],{"class":505},[499,1572,1574,1576,1578,1581],{"class":501,"line":1573},89,[499,1575,1320],{"class":505},[499,1577,531],{"class":624},[499,1579,1580],{"class":534}," \"inline-block\"",[499,1582,631],{"class":505},[499,1584,1586],{"class":501,"line":1585},90,[499,1587,1588],{"class":505},"        }\n",[499,1590,1592],{"class":501,"line":1591},91,[499,1593,1594],{"class":505},"      }\n",[499,1596,1598,1600,1602],{"class":501,"line":1597},92,[499,1599,637],{"class":505},[499,1601,1020],{"class":509},[499,1603,517],{"class":505},[499,1605,1607,1609,1612],{"class":501,"line":1606},93,[499,1608,647],{"class":505},[499,1610,1611],{"class":509},"body",[499,1613,517],{"class":505},[499,1615,1617,1620,1622],{"class":501,"line":1616},94,[499,1618,1619],{"class":505},"\u003C/",[499,1621,494],{"class":509},[499,1623,517],{"class":505},[489,1625,1629],{"className":1626,"code":1627,"filename":1628,"language":1433,"meta":5,"style":5},"language-json shiki shiki-themes github-light github-dark github-dark","{\n  \"type\": \"module\",\n  \"scripts\": {\n    \"build\": \"vite build\",\n    \"dev\": \"vite dev\",\n    \"preview\": \"vite preview\"\n  },\n  \"devDependencies\": {\n    \"@tailwindcss/vite\": \"^4.1.18\",\n    \"nitro\": \"latest\",\n    \"tailwindcss\": \"^4.1.18\",\n    \"vite\": \"beta\"\n  }\n}\n","package.json",[496,1630,1631,1636,1650,1658,1670,1682,1692,1697,1704,1716,1728,1739,1749,1754],{"__ignoreMap":5},[499,1632,1633],{"class":501,"line":502},[499,1634,1635],{"class":505},"{\n",[499,1637,1638,1641,1644,1647],{"class":501,"line":520},[499,1639,1640],{"class":1031},"  \"type\"",[499,1642,1643],{"class":505},": ",[499,1645,1646],{"class":534},"\"module\"",[499,1648,1649],{"class":505},",\n",[499,1651,1652,1655],{"class":501,"line":540},[499,1653,1654],{"class":1031},"  \"scripts\"",[499,1656,1657],{"class":505},": {\n",[499,1659,1660,1663,1665,1668],{"class":501,"line":551},[499,1661,1662],{"class":1031},"    \"build\"",[499,1664,1643],{"class":505},[499,1666,1667],{"class":534},"\"vite build\"",[499,1669,1649],{"class":505},[499,1671,1672,1675,1677,1680],{"class":501,"line":571},[499,1673,1674],{"class":1031},"    \"dev\"",[499,1676,1643],{"class":505},[499,1678,1679],{"class":534},"\"vite dev\"",[499,1681,1649],{"class":505},[499,1683,1684,1687,1689],{"class":501,"line":596},[499,1685,1686],{"class":1031},"    \"preview\"",[499,1688,1643],{"class":505},[499,1690,1691],{"class":534},"\"vite preview\"\n",[499,1693,1694],{"class":501,"line":611},[499,1695,1696],{"class":505},"  },\n",[499,1698,1699,1702],{"class":501,"line":621},[499,1700,1701],{"class":1031},"  \"devDependencies\"",[499,1703,1657],{"class":505},[499,1705,1706,1709,1711,1714],{"class":501,"line":634},[499,1707,1708],{"class":1031},"    \"@tailwindcss/vite\"",[499,1710,1643],{"class":505},[499,1712,1713],{"class":534},"\"^4.1.18\"",[499,1715,1649],{"class":505},[499,1717,1718,1721,1723,1726],{"class":501,"line":644},[499,1719,1720],{"class":1031},"    \"nitro\"",[499,1722,1643],{"class":505},[499,1724,1725],{"class":534},"\"latest\"",[499,1727,1649],{"class":505},[499,1729,1730,1733,1735,1737],{"class":501,"line":654},[499,1731,1732],{"class":1031},"    \"tailwindcss\"",[499,1734,1643],{"class":505},[499,1736,1713],{"class":534},[499,1738,1649],{"class":505},[499,1740,1741,1744,1746],{"class":501,"line":662},[499,1742,1743],{"class":1031},"    \"vite\"",[499,1745,1643],{"class":505},[499,1747,1748],{"class":534},"\"beta\"\n",[499,1750,1751],{"class":501,"line":673},[499,1752,1753],{"class":505},"  }\n",[499,1755,1756],{"class":501,"line":679},[499,1757,1758],{"class":505},"}\n",[489,1760,1763],{"className":1626,"code":1761,"filename":1762,"language":1433,"meta":5,"style":5},"{\n  \"extends\": \"nitro/tsconfig\"\n}\n","tsconfig.json",[496,1764,1765,1769,1779],{"__ignoreMap":5},[499,1766,1767],{"class":501,"line":502},[499,1768,1635],{"class":505},[499,1770,1771,1774,1776],{"class":501,"line":520},[499,1772,1773],{"class":1031},"  \"extends\"",[499,1775,1643],{"class":505},[499,1777,1778],{"class":534},"\"nitro/tsconfig\"\n",[499,1780,1781],{"class":501,"line":540},[499,1782,1758],{"class":505},[489,1784,1789],{"className":1785,"code":1786,"filename":1787,"language":1788,"meta":5,"style":5},"language-ts shiki shiki-themes github-light github-dark github-dark","import { defineConfig } from \"vite\";\nimport { nitro } from \"nitro/vite\";\n\nimport tailwindcss from \"@tailwindcss/vite\";\n\nexport default defineConfig({\n  plugins: [\n    nitro({\n      serverDir: \"./\",\n    }),\n    tailwindcss(),\n  ],\n});\n","vite.config.ts","ts",[496,1790,1791,1807,1821,1825,1839,1843,1857,1862,1869,1879,1884,1892,1897],{"__ignoreMap":5},[499,1792,1793,1796,1799,1802,1805],{"class":501,"line":502},[499,1794,1795],{"class":624},"import",[499,1797,1798],{"class":505}," { defineConfig } ",[499,1800,1801],{"class":624},"from",[499,1803,1804],{"class":534}," \"vite\"",[499,1806,631],{"class":505},[499,1808,1809,1811,1814,1816,1819],{"class":501,"line":520},[499,1810,1795],{"class":624},[499,1812,1813],{"class":505}," { nitro } ",[499,1815,1801],{"class":624},[499,1817,1818],{"class":534}," \"nitro/vite\"",[499,1820,631],{"class":505},[499,1822,1823],{"class":501,"line":540},[499,1824,1012],{"emptyLinePlaceholder":381},[499,1826,1827,1829,1832,1834,1837],{"class":501,"line":551},[499,1828,1795],{"class":624},[499,1830,1831],{"class":505}," tailwindcss ",[499,1833,1801],{"class":624},[499,1835,1836],{"class":534}," \"@tailwindcss/vite\"",[499,1838,631],{"class":505},[499,1840,1841],{"class":501,"line":571},[499,1842,1012],{"emptyLinePlaceholder":381},[499,1844,1845,1848,1851,1854],{"class":501,"line":596},[499,1846,1847],{"class":624},"export",[499,1849,1850],{"class":624}," default",[499,1852,1853],{"class":513}," defineConfig",[499,1855,1856],{"class":505},"({\n",[499,1858,1859],{"class":501,"line":611},[499,1860,1861],{"class":505},"  plugins: [\n",[499,1863,1864,1867],{"class":501,"line":621},[499,1865,1866],{"class":513},"    nitro",[499,1868,1856],{"class":505},[499,1870,1871,1874,1877],{"class":501,"line":634},[499,1872,1873],{"class":505},"      serverDir: ",[499,1875,1876],{"class":534},"\"./\"",[499,1878,1649],{"class":505},[499,1880,1881],{"class":501,"line":644},[499,1882,1883],{"class":505},"    }),\n",[499,1885,1886,1889],{"class":501,"line":654},[499,1887,1888],{"class":513},"    tailwindcss",[499,1890,1891],{"class":505},"(),\n",[499,1893,1894],{"class":501,"line":662},[499,1895,1896],{"class":505},"  ],\n",[499,1898,1899],{"class":501,"line":673},[499,1900,1901],{"class":505},"});\n",[489,1903,1905],{"className":1785,"code":1904,"filename":487,"language":1788,"meta":5,"style":5},"import { fetch } from \"nitro\";\n\nexport default {\n  async fetch() {\n    const quote = (await fetch(\"/quote\").then((res) => res.json())) as {\n      text: string;\n    };\n    return tokenizedStream(quote.text, 50);\n  },\n};\n\nfunction tokenizedStream(text: string, delay: number): ReadableStream\u003CUint8Array> {\n  const tokens = text.split(\" \");\n  return new ReadableStream({\n    start(controller) {\n      let index = 0;\n      function push() {\n        if (index \u003C tokens.length) {\n          const word = tokens[index++] + (index \u003C tokens.length ? \" \" : \"\");\n          controller.enqueue(new TextEncoder().encode(word));\n          setTimeout(push, delay);\n        } else {\n          controller.close();\n        }\n      }\n      push();\n    },\n  });\n}\n",[496,1906,1907,1921,1925,1933,1942,1995,2008,2013,2029,2033,2038,2042,2083,2106,2117,2130,2145,2155,2173,2214,2239,2247,2256,2265,2269,2273,2280,2285,2290],{"__ignoreMap":5},[499,1908,1909,1911,1914,1916,1919],{"class":501,"line":502},[499,1910,1795],{"class":624},[499,1912,1913],{"class":505}," { fetch } ",[499,1915,1801],{"class":624},[499,1917,1918],{"class":534}," \"nitro\"",[499,1920,631],{"class":505},[499,1922,1923],{"class":501,"line":520},[499,1924,1012],{"emptyLinePlaceholder":381},[499,1926,1927,1929,1931],{"class":501,"line":540},[499,1928,1847],{"class":624},[499,1930,1850],{"class":624},[499,1932,1266],{"class":505},[499,1934,1935,1938,1940],{"class":501,"line":551},[499,1936,1937],{"class":624},"  async",[499,1939,1344],{"class":513},[499,1941,1257],{"class":505},[499,1943,1944,1947,1950,1952,1954,1957,1959,1961,1963,1966,1969,1972,1976,1979,1982,1985,1987,1990,1993],{"class":501,"line":571},[499,1945,1946],{"class":624},"    const",[499,1948,1949],{"class":1031}," quote",[499,1951,1035],{"class":624},[499,1953,1360],{"class":505},[499,1955,1956],{"class":624},"await",[499,1958,1344],{"class":513},[499,1960,1044],{"class":505},[499,1962,1349],{"class":534},[499,1964,1965],{"class":505},").",[499,1967,1968],{"class":513},"then",[499,1970,1971],{"class":505},"((",[499,1973,1975],{"class":1974},"sQHwn","res",[499,1977,1978],{"class":505},") ",[499,1980,1981],{"class":624},"=>",[499,1983,1984],{"class":505}," res.",[499,1986,1433],{"class":513},[499,1988,1989],{"class":505},"())) ",[499,1991,1992],{"class":624},"as",[499,1994,1266],{"class":505},[499,1996,1997,2000,2003,2006],{"class":501,"line":596},[499,1998,1999],{"class":1974},"      text",[499,2001,2002],{"class":624},":",[499,2004,2005],{"class":1031}," string",[499,2007,631],{"class":505},[499,2009,2010],{"class":501,"line":611},[499,2011,2012],{"class":505},"    };\n",[499,2014,2015,2018,2021,2024,2027],{"class":501,"line":621},[499,2016,2017],{"class":624},"    return",[499,2019,2020],{"class":513}," tokenizedStream",[499,2022,2023],{"class":505},"(quote.text, ",[499,2025,2026],{"class":1031},"50",[499,2028,1050],{"class":505},[499,2030,2031],{"class":501,"line":634},[499,2032,1696],{"class":505},[499,2034,2035],{"class":501,"line":644},[499,2036,2037],{"class":505},"};\n",[499,2039,2040],{"class":501,"line":654},[499,2041,1012],{"emptyLinePlaceholder":381},[499,2043,2044,2047,2049,2051,2053,2055,2057,2059,2062,2064,2067,2070,2072,2075,2077,2080],{"class":501,"line":662},[499,2045,2046],{"class":624},"function",[499,2048,2020],{"class":513},[499,2050,1044],{"class":505},[499,2052,1414],{"class":1974},[499,2054,2002],{"class":624},[499,2056,2005],{"class":1031},[499,2058,1417],{"class":505},[499,2060,2061],{"class":1974},"delay",[499,2063,2002],{"class":624},[499,2065,2066],{"class":1031}," number",[499,2068,2069],{"class":505},")",[499,2071,2002],{"class":624},[499,2073,2074],{"class":513}," ReadableStream",[499,2076,523],{"class":505},[499,2078,2079],{"class":513},"Uint8Array",[499,2081,2082],{"class":505},"> {\n",[499,2084,2085,2088,2091,2093,2096,2099,2101,2104],{"class":501,"line":673},[499,2086,2087],{"class":624},"  const",[499,2089,2090],{"class":1031}," tokens",[499,2092,1035],{"class":624},[499,2094,2095],{"class":505}," text.",[499,2097,2098],{"class":513},"split",[499,2100,1044],{"class":505},[499,2102,2103],{"class":534},"\" \"",[499,2105,1050],{"class":505},[499,2107,2108,2111,2113,2115],{"class":501,"line":679},[499,2109,2110],{"class":624},"  return",[499,2112,1375],{"class":624},[499,2114,2074],{"class":513},[499,2116,1856],{"class":505},[499,2118,2119,2122,2124,2127],{"class":501,"line":697},[499,2120,2121],{"class":513},"    start",[499,2123,1044],{"class":505},[499,2125,2126],{"class":1974},"controller",[499,2128,2129],{"class":505},") {\n",[499,2131,2132,2135,2138,2140,2143],{"class":501,"line":714},[499,2133,2134],{"class":624},"      let",[499,2136,2137],{"class":505}," index ",[499,2139,531],{"class":624},[499,2141,2142],{"class":1031}," 0",[499,2144,631],{"class":505},[499,2146,2147,2150,2153],{"class":501,"line":723},[499,2148,2149],{"class":624},"      function",[499,2151,2152],{"class":513}," push",[499,2154,1257],{"class":505},[499,2156,2157,2160,2163,2165,2168,2171],{"class":501,"line":734},[499,2158,2159],{"class":624},"        if",[499,2161,2162],{"class":505}," (index ",[499,2164,523],{"class":624},[499,2166,2167],{"class":505}," tokens.",[499,2169,2170],{"class":1031},"length",[499,2172,2129],{"class":505},[499,2174,2175,2177,2180,2182,2185,2188,2191,2193,2195,2197,2199,2201,2204,2207,2210,2212],{"class":501,"line":745},[499,2176,1333],{"class":624},[499,2178,2179],{"class":1031}," word",[499,2181,1035],{"class":624},[499,2183,2184],{"class":505}," tokens[index",[499,2186,2187],{"class":624},"++",[499,2189,2190],{"class":505},"] ",[499,2192,1132],{"class":624},[499,2194,2162],{"class":505},[499,2196,523],{"class":624},[499,2198,2167],{"class":505},[499,2200,2170],{"class":1031},[499,2202,2203],{"class":624}," ?",[499,2205,2206],{"class":534}," \" \"",[499,2208,2209],{"class":624}," :",[499,2211,1301],{"class":534},[499,2213,1050],{"class":505},[499,2215,2216,2219,2222,2224,2227,2230,2233,2236],{"class":501,"line":751},[499,2217,2218],{"class":505},"          controller.",[499,2220,2221],{"class":513},"enqueue",[499,2223,1044],{"class":505},[499,2225,2226],{"class":624},"new",[499,2228,2229],{"class":513}," TextEncoder",[499,2231,2232],{"class":505},"().",[499,2234,2235],{"class":513},"encode",[499,2237,2238],{"class":505},"(word));\n",[499,2240,2241,2244],{"class":501,"line":758},[499,2242,2243],{"class":513},"          setTimeout",[499,2245,2246],{"class":505},"(push, delay);\n",[499,2248,2249,2251,2254],{"class":501,"line":768},[499,2250,1495],{"class":505},[499,2252,2253],{"class":624},"else",[499,2255,1266],{"class":505},[499,2257,2258,2260,2263],{"class":501,"line":775},[499,2259,2218],{"class":505},[499,2261,2262],{"class":513},"close",[499,2264,1436],{"class":505},[499,2266,2267],{"class":501,"line":785},[499,2268,1588],{"class":505},[499,2270,2271],{"class":501,"line":795},[499,2272,1594],{"class":505},[499,2274,2275,2278],{"class":501,"line":805},[499,2276,2277],{"class":513},"      push",[499,2279,1436],{"class":505},[499,2281,2282],{"class":501,"line":813},[499,2283,2284],{"class":505},"    },\n",[499,2286,2287],{"class":501,"line":823},[499,2288,2289],{"class":505},"  });\n",[499,2291,2292],{"class":501,"line":833},[499,2293,1758],{"class":505},[489,2295,2298],{"className":1785,"code":2296,"filename":2297,"language":1788,"meta":5,"style":5},"const QUOTES_URL =\n  \"https://github.com/JamesFT/Database-Quotes-JSON/raw/refs/heads/master/quotes.json\";\n\nlet _quotes: Promise\u003Cunknown> | undefined;\n\nfunction getQuotes() {\n  return (_quotes ??= fetch(QUOTES_URL).then((res) => res.json())) as Promise\u003C\n    { quoteText: string; quoteAuthor: string }[]\n  >;\n}\n\nexport default async function quotesHandler() {\n  const quotes = await getQuotes();\n  const randomQuote = quotes[Math.floor(Math.random() * quotes.length)];\n  return Response.json({\n    text: randomQuote.quoteText,\n    author: randomQuote.quoteAuthor,\n  });\n}\n","routes/quote.ts",[496,2299,2300,2310,2317,2321,2350,2354,2363,2405,2430,2435,2439,2443,2459,2474,2509,2520,2525,2530,2534],{"__ignoreMap":5},[499,2301,2302,2305,2308],{"class":501,"line":502},[499,2303,2304],{"class":624},"const",[499,2306,2307],{"class":1031}," QUOTES_URL",[499,2309,1108],{"class":624},[499,2311,2312,2315],{"class":501,"line":520},[499,2313,2314],{"class":534},"  \"https://github.com/JamesFT/Database-Quotes-JSON/raw/refs/heads/master/quotes.json\"",[499,2316,631],{"class":505},[499,2318,2319],{"class":501,"line":540},[499,2320,1012],{"emptyLinePlaceholder":381},[499,2322,2323,2326,2329,2331,2334,2336,2339,2342,2345,2348],{"class":501,"line":551},[499,2324,2325],{"class":624},"let",[499,2327,2328],{"class":505}," _quotes",[499,2330,2002],{"class":624},[499,2332,2333],{"class":513}," Promise",[499,2335,523],{"class":505},[499,2337,2338],{"class":1031},"unknown",[499,2340,2341],{"class":505},"> ",[499,2343,2344],{"class":624},"|",[499,2346,2347],{"class":1031}," undefined",[499,2349,631],{"class":505},[499,2351,2352],{"class":501,"line":571},[499,2353,1012],{"emptyLinePlaceholder":381},[499,2355,2356,2358,2361],{"class":501,"line":596},[499,2357,2046],{"class":624},[499,2359,2360],{"class":513}," getQuotes",[499,2362,1257],{"class":505},[499,2364,2365,2367,2370,2373,2375,2377,2380,2382,2384,2386,2388,2390,2392,2394,2396,2398,2400,2402],{"class":501,"line":611},[499,2366,2110],{"class":624},[499,2368,2369],{"class":505}," (_quotes ",[499,2371,2372],{"class":624},"??=",[499,2374,1344],{"class":513},[499,2376,1044],{"class":505},[499,2378,2379],{"class":1031},"QUOTES_URL",[499,2381,1965],{"class":505},[499,2383,1968],{"class":513},[499,2385,1971],{"class":505},[499,2387,1975],{"class":1974},[499,2389,1978],{"class":505},[499,2391,1981],{"class":624},[499,2393,1984],{"class":505},[499,2395,1433],{"class":513},[499,2397,1989],{"class":505},[499,2399,1992],{"class":624},[499,2401,2333],{"class":513},[499,2403,2404],{"class":505},"\u003C\n",[499,2406,2407,2410,2413,2415,2417,2420,2423,2425,2427],{"class":501,"line":621},[499,2408,2409],{"class":505},"    { ",[499,2411,2412],{"class":1974},"quoteText",[499,2414,2002],{"class":624},[499,2416,2005],{"class":1031},[499,2418,2419],{"class":505},"; ",[499,2421,2422],{"class":1974},"quoteAuthor",[499,2424,2002],{"class":624},[499,2426,2005],{"class":1031},[499,2428,2429],{"class":505}," }[]\n",[499,2431,2432],{"class":501,"line":634},[499,2433,2434],{"class":505},"  >;\n",[499,2436,2437],{"class":501,"line":644},[499,2438,1758],{"class":505},[499,2440,2441],{"class":501,"line":654},[499,2442,1012],{"emptyLinePlaceholder":381},[499,2444,2445,2447,2449,2452,2454,2457],{"class":501,"line":662},[499,2446,1847],{"class":624},[499,2448,1850],{"class":624},[499,2450,2451],{"class":624}," async",[499,2453,1251],{"class":624},[499,2455,2456],{"class":513}," quotesHandler",[499,2458,1257],{"class":505},[499,2460,2461,2463,2466,2468,2470,2472],{"class":501,"line":673},[499,2462,2087],{"class":624},[499,2464,2465],{"class":1031}," quotes",[499,2467,1035],{"class":624},[499,2469,1341],{"class":624},[499,2471,2360],{"class":513},[499,2473,1436],{"class":505},[499,2475,2476,2478,2481,2483,2486,2489,2492,2495,2498,2501,2504,2506],{"class":501,"line":679},[499,2477,2087],{"class":624},[499,2479,2480],{"class":1031}," randomQuote",[499,2482,1035],{"class":624},[499,2484,2485],{"class":505}," quotes[Math.",[499,2487,2488],{"class":513},"floor",[499,2490,2491],{"class":505},"(Math.",[499,2493,2494],{"class":513},"random",[499,2496,2497],{"class":505},"() ",[499,2499,2500],{"class":624},"*",[499,2502,2503],{"class":505}," quotes.",[499,2505,2170],{"class":1031},[499,2507,2508],{"class":505},")];\n",[499,2510,2511,2513,2516,2518],{"class":501,"line":697},[499,2512,2110],{"class":624},[499,2514,2515],{"class":505}," Response.",[499,2517,1433],{"class":513},[499,2519,1856],{"class":505},[499,2521,2522],{"class":501,"line":714},[499,2523,2524],{"class":505},"    text: randomQuote.quoteText,\n",[499,2526,2527],{"class":501,"line":723},[499,2528,2529],{"class":505},"    author: randomQuote.quoteAuthor,\n",[499,2531,2532],{"class":501,"line":734},[499,2533,2289],{"class":505},[499,2535,2536],{"class":501,"line":745},[499,2537,1758],{"class":505},[2539,2540,2541],"p",{},"This example renders an HTML template with server-side data and streams the response word by word. It demonstrates how to use Nitro's Vite SSR integration without a framework.",[2543,2544,2546],"h2",{"id":2545},"overview","Overview",[2548,2549,2551,2559,2569,2575],"steps",{"level":2550},"4",[2552,2553,2554,2558],"h4",{},[2555,2556,2557],"strong",{},"Add the Nitro Vite plugin"," to enable SSR",[2552,2560,2561,2564,2565,2568],{},[2555,2562,2563],{},"Create an HTML template"," with a ",[496,2566,2567],{},"\u003C!--ssr-outlet-->"," comment where server content goes",[2552,2570,2571,2574],{},[2555,2572,2573],{},"Create a server entry"," that fetches data and returns a stream",[2552,2576,2577,2580],{},[2555,2578,2579],{},"Add API routes"," for server-side data",[2543,2582,2584],{"id":2583},"how-it-works","How It Works",[2539,2586,2587,2588,2590,2591,2593],{},"The ",[496,2589,493],{}," file contains an ",[496,2592,2567],{}," comment that marks where server-rendered content will be inserted. Nitro replaces this comment with the output from your server entry.",[2539,2595,2596,2597,2600,2601,2604,2605,2608],{},"The server entry exports an object with a ",[496,2598,2599],{},"fetch"," method. It calls the ",[496,2602,2603],{},"/quote"," API route using Nitro's internal fetch, then returns a ",[496,2606,2607],{},"ReadableStream"," that emits the quote text word by word with a 50ms delay between each word.",[2539,2610,2611],{},"The quote route fetches a JSON file of quotes from GitHub, caches the result, and returns a random quote. The server entry calls this route to get content for the page.",[2543,2613,2615],{"id":2614},"learn-more","Learn More",[2617,2618,2619,2625],"ul",{},[2620,2621,2622],"li",{},[2623,2624,18],"a",{"href":19},[2620,2626,2627],{},[2623,2628,58],{"href":59},[616,2630,2631],{},"html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}html pre.shiki code .sByVh, html code.shiki .sByVh{--shiki-light:#22863A;--shiki-default:#85E89D;--shiki-dark:#85E89D}html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}html pre.shiki code .sfrk1, html code.shiki .sfrk1{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF}html pre.shiki code .so5gQ, html code.shiki .so5gQ{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F97583}html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}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);}html pre.shiki code .sQHwn, html code.shiki .sQHwn{--shiki-light:#E36209;--shiki-default:#FFAB70;--shiki-dark:#FFAB70}",{"title":5,"searchDepth":520,"depth":520,"links":2633},[2634,2635,2636],{"id":2545,"depth":520,"text":2546},{"id":2583,"depth":520,"text":2584},{"id":2614,"depth":520,"text":2615},"md",{"automd":381,"category":421,"icon":335},{"icon":335},{"title":332,"description":452},"UtiEU5TfxqWBw3NZoscEoolIcv2LNyBDUYoIvAaBfBg",[2643,2644],{"title":327,"path":328,"stem":329,"description":449,"icon":330,"children":-1},{"title":337,"path":338,"stem":339,"description":455,"icon":340,"children":-1},1773242041978]