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