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