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