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