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