[{"data":1,"prerenderedAt":1979},["ShallowReactive",2],{"navigation":3,"-deploy-providers-vercel":398,"-deploy-providers-vercel-surround":1974},[4,93,222,228,383,395],{"title":5,"path":6,"stem":7,"children":8,"icon":92},"","/docs","1.docs/1.index",[9,12,17,22,27,32,37,42,47,52,57,62,67,72,77,82,87],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-compass",{"title":13,"path":14,"stem":15,"icon":16},"Quick Start","/docs/quick-start","1.docs/2.quick-start","i-lucide-zap",{"title":18,"path":19,"stem":20,"icon":21},"Renderer","/docs/renderer","1.docs/4.renderer","ri:layout-masonry-line",{"title":23,"path":24,"stem":25,"icon":26},"Routing","/docs/routing","1.docs/5.routing","ri:direction-line",{"title":28,"path":29,"stem":30,"icon":31},"Assets","/docs/assets","1.docs/50.assets","ri:image-2-line",{"title":33,"path":34,"stem":35,"icon":36},"Configuration","/docs/configuration","1.docs/50.configuration","ri:settings-3-line",{"title":38,"path":39,"stem":40,"icon":41},"Database","/docs/database","1.docs/50.database","ri:database-2-line",{"title":43,"path":44,"stem":45,"icon":46},"Lifecycle","/docs/lifecycle","1.docs/50.lifecycle","i-lucide-layers",{"title":48,"path":49,"stem":50,"icon":51},"OpenAPI","/docs/openapi","1.docs/50.openapi","ri:contract-line",{"title":53,"path":54,"stem":55,"icon":56},"Plugins","/docs/plugins","1.docs/50.plugins","ri:plug-line",{"title":58,"path":59,"stem":60,"icon":61},"Tasks","/docs/tasks","1.docs/50.tasks","codicon:run-all",{"title":63,"path":64,"stem":65,"icon":66},"WebSocket","/docs/websocket","1.docs/50.websocket","ri:broadcast-fill",{"title":68,"path":69,"stem":70,"icon":71},"Server Entry","/docs/server-entry","1.docs/6.server-entry","ri:server-line",{"title":73,"path":74,"stem":75,"icon":76},"Cache","/docs/cache","1.docs/7.cache","ri:speed-line",{"title":78,"path":79,"stem":80,"icon":81},"KV Storage","/docs/storage","1.docs/8.storage","carbon:datastore",{"title":83,"path":84,"stem":85,"icon":86},"Migration Guide","/docs/migration","1.docs/99.migration","ri:arrow-right-up-line",{"title":88,"path":89,"stem":90,"icon":91},"Nightly Channel","/docs/nightly","1.docs/99.nightly","ri:moon-fill","i-lucide-book-open",{"title":94,"path":95,"stem":96,"children":97,"icon":99},"Deploy","/deploy","2.deploy/0.index",[98,100,121],{"title":94,"path":95,"stem":96,"icon":99},"ri:upload-cloud-2-line",{"title":101,"path":102,"stem":103,"children":104,"page":120},"Runtimes","/deploy/runtimes","2.deploy/10.runtimes",[105,110,115],{"title":106,"path":107,"stem":108,"icon":109},"Node.js","/deploy/runtimes/node","2.deploy/10.runtimes/1.node","akar-icons:node-fill",{"title":111,"path":112,"stem":113,"icon":114},"Bun","/deploy/runtimes/bun","2.deploy/10.runtimes/bun","simple-icons:bun",{"title":116,"path":117,"stem":118,"icon":119},"Deno","/deploy/runtimes/deno","2.deploy/10.runtimes/deno","simple-icons:deno",false,{"title":122,"path":123,"stem":124,"children":125,"page":120},"Providers","/deploy/providers","2.deploy/20.providers",[126,130,134,138,142,146,150,154,158,162,166,170,174,178,182,186,190,194,198,202,206,210,214,218],{"title":127,"path":128,"stem":129},"Alwaysdata","/deploy/providers/alwaysdata","2.deploy/20.providers/alwaysdata",{"title":131,"path":132,"stem":133},"AWS Lambda","/deploy/providers/aws","2.deploy/20.providers/aws",{"title":135,"path":136,"stem":137},"AWS Amplify","/deploy/providers/aws-amplify","2.deploy/20.providers/aws-amplify",{"title":139,"path":140,"stem":141},"Azure","/deploy/providers/azure","2.deploy/20.providers/azure",{"title":143,"path":144,"stem":145},"Cleavr","/deploy/providers/cleavr","2.deploy/20.providers/cleavr",{"title":147,"path":148,"stem":149},"Cloudflare","/deploy/providers/cloudflare","2.deploy/20.providers/cloudflare",{"title":151,"path":152,"stem":153},"Deno Deploy","/deploy/providers/deno-deploy","2.deploy/20.providers/deno-deploy",{"title":155,"path":156,"stem":157},"DigitalOcean","/deploy/providers/digitalocean","2.deploy/20.providers/digitalocean",{"title":159,"path":160,"stem":161},"Firebase","/deploy/providers/firebase","2.deploy/20.providers/firebase",{"title":163,"path":164,"stem":165},"Flightcontrol","/deploy/providers/flightcontrol","2.deploy/20.providers/flightcontrol",{"title":167,"path":168,"stem":169},"Genezio","/deploy/providers/genezio","2.deploy/20.providers/genezio",{"title":171,"path":172,"stem":173},"GitHub Pages","/deploy/providers/github-pages","2.deploy/20.providers/github-pages",{"title":175,"path":176,"stem":177},"GitLab Pages","/deploy/providers/gitlab-pages","2.deploy/20.providers/gitlab-pages",{"title":179,"path":180,"stem":181},"Heroku","/deploy/providers/heroku","2.deploy/20.providers/heroku",{"title":183,"path":184,"stem":185},"IIS","/deploy/providers/iis","2.deploy/20.providers/iis",{"title":187,"path":188,"stem":189},"Koyeb","/deploy/providers/koyeb","2.deploy/20.providers/koyeb",{"title":191,"path":192,"stem":193},"Netlify","/deploy/providers/netlify","2.deploy/20.providers/netlify",{"title":195,"path":196,"stem":197},"Platform.sh","/deploy/providers/platform-sh","2.deploy/20.providers/platform-sh",{"title":199,"path":200,"stem":201},"Render.com","/deploy/providers/render","2.deploy/20.providers/render",{"title":203,"path":204,"stem":205},"StormKit","/deploy/providers/stormkit","2.deploy/20.providers/stormkit",{"title":207,"path":208,"stem":209},"Vercel","/deploy/providers/vercel","2.deploy/20.providers/vercel",{"title":211,"path":212,"stem":213},"Zeabur","/deploy/providers/zeabur","2.deploy/20.providers/zeabur",{"title":215,"path":216,"stem":217},"Zephyr Cloud","/deploy/providers/zephyr","2.deploy/20.providers/zephyr",{"title":219,"path":220,"stem":221},"Zerops","/deploy/providers/zerops","2.deploy/20.providers/zerops",{"title":223,"path":224,"stem":225,"children":226,"icon":36},"Config","/config","3.config/0.index",[227],{"title":223,"path":224,"stem":225,"icon":36},{"title":229,"path":230,"stem":231,"children":232,"icon":234},"Examples","/examples","4.examples/0.index",[233,235,240,245,250,255,259,264,269,274,279,284,289,293,298,302,306,311,316,321,326,331,336,341,346,351,355,360,365,369,374,379],{"title":229,"path":230,"stem":231,"icon":234},"i-lucide-folder-code",{"title":236,"path":237,"stem":238,"icon":239},"API Routes","/examples/api-routes","4.examples/api-routes","i-lucide-route",{"title":241,"path":242,"stem":243,"icon":244},"Auto Imports","/examples/auto-imports","4.examples/auto-imports","i-lucide-import",{"title":246,"path":247,"stem":248,"icon":249},"Cached Handler","/examples/cached-handler","4.examples/cached-handler","i-lucide-clock",{"title":251,"path":252,"stem":253,"icon":254},"Custom Error Handler","/examples/custom-error-handler","4.examples/custom-error-handler","i-lucide-alert-circle",{"title":38,"path":256,"stem":257,"icon":258},"/examples/database","4.examples/database","i-lucide-database",{"title":260,"path":261,"stem":262,"icon":263},"Elysia","/examples/elysia","4.examples/elysia","i-skill-icons-elysia-dark",{"title":265,"path":266,"stem":267,"icon":268},"Express","/examples/express","4.examples/express","i-simple-icons-express",{"title":270,"path":271,"stem":272,"icon":273},"Fastify","/examples/fastify","4.examples/fastify","i-simple-icons-fastify",{"title":275,"path":276,"stem":277,"icon":278},"Hello World","/examples/hello-world","4.examples/hello-world","i-lucide-sparkles",{"title":280,"path":281,"stem":282,"icon":283},"Hono","/examples/hono","4.examples/hono","i-logos-hono",{"title":285,"path":286,"stem":287,"icon":288},"Import Alias","/examples/import-alias","4.examples/import-alias","i-lucide-at-sign",{"title":290,"path":291,"stem":292,"icon":46},"Middleware","/examples/middleware","4.examples/middleware",{"title":294,"path":295,"stem":296,"icon":297},"Mono JSX","/examples/mono-jsx","4.examples/mono-jsx","i-lucide-brackets",{"title":299,"path":300,"stem":301,"icon":297},"Nano JSX","/examples/nano-jsx","4.examples/nano-jsx",{"title":53,"path":303,"stem":304,"icon":305},"/examples/plugins","4.examples/plugins","i-lucide-plug",{"title":307,"path":308,"stem":309,"icon":310},"Custom Renderer","/examples/renderer","4.examples/renderer","i-lucide-code",{"title":312,"path":313,"stem":314,"icon":315},"Runtime Config","/examples/runtime-config","4.examples/runtime-config","i-lucide-settings",{"title":317,"path":318,"stem":319,"icon":320},"Server Fetch","/examples/server-fetch","4.examples/server-fetch","i-lucide-arrow-right-left",{"title":322,"path":323,"stem":324,"icon":325},"Shiki","/examples/shiki","4.examples/shiki","i-lucide-highlighter",{"title":327,"path":328,"stem":329,"icon":330},"Virtual Routes","/examples/virtual-routes","4.examples/virtual-routes","i-lucide-box",{"title":332,"path":333,"stem":334,"icon":335},"Vite Nitro Plugin","/examples/vite-nitro-plugin","4.examples/vite-nitro-plugin","i-logos-vitejs",{"title":337,"path":338,"stem":339,"icon":340},"Vite RSC","/examples/vite-rsc","4.examples/vite-rsc","i-logos-react",{"title":342,"path":343,"stem":344,"icon":345},"Vite SSR HTML","/examples/vite-ssr-html","4.examples/vite-ssr-html","i-logos-html-5",{"title":347,"path":348,"stem":349,"icon":350},"SSR with Preact","/examples/vite-ssr-preact","4.examples/vite-ssr-preact","i-logos-preact",{"title":352,"path":353,"stem":354,"icon":340},"SSR with React","/examples/vite-ssr-react","4.examples/vite-ssr-react",{"title":356,"path":357,"stem":358,"icon":359},"SSR with SolidJS","/examples/vite-ssr-solid","4.examples/vite-ssr-solid","i-logos-solidjs-icon",{"title":361,"path":362,"stem":363,"icon":364},"SSR with TanStack Router","/examples/vite-ssr-tsr-react","4.examples/vite-ssr-tsr-react","i-simple-icons-tanstack",{"title":366,"path":367,"stem":368,"icon":364},"SSR with TanStack Start","/examples/vite-ssr-tss-react","4.examples/vite-ssr-tss-react",{"title":370,"path":371,"stem":372,"icon":373},"SSR with Vue Router","/examples/vite-ssr-vue-router","4.examples/vite-ssr-vue-router","i-logos-vue",{"title":375,"path":376,"stem":377,"icon":378},"Vite + tRPC","/examples/vite-trpc","4.examples/vite-trpc","i-simple-icons-trpc",{"title":63,"path":380,"stem":381,"icon":382},"/examples/websocket","4.examples/websocket","i-lucide-radio",{"title":384,"path":385,"stem":386,"children":387},"Blog","/blog","9.blog",[388,391],{"title":384,"path":385,"stem":389,"icon":390},"9.blog/index","i-lucide-file-text",{"title":392,"path":393,"stem":394,"icon":390},"Nitro v3 Beta is here!","/blog/v3-beta","9.blog/1.v3-beta",{"title":5,"path":396,"stem":397},"/","index",{"id":399,"title":207,"body":400,"description":1968,"extension":1969,"meta":1970,"navigation":1971,"path":208,"seo":1972,"stem":209,"__hash__":1973},"content/2.deploy/20.providers/vercel.md",{"type":401,"value":402,"toc":1944},"minimark",[403,415,420,432,437,440,473,481,486,494,498,505,513,517,520,536,605,615,657,661,681,689,851,868,872,885,940,944,951,974,978,984,1023,1035,1039,1043,1060,1157,1161,1165,1179,1183,1186,1197,1280,1284,1295,1408,1412,1418,1534,1538,1544,1654,1658,1673,1677,1680,1683,1775,1779,1782,1789,1867,1940],[404,405,406,410,411],"p",{},[407,408,409],"strong",{},"Preset:"," ",[412,413,414],"code",{},"vercel",[416,417],"read-more",{"title":418,"to":419},"Vercel Framework Support","https://vercel.com/docs/frameworks",[421,422,423],"note",{},[404,424,425,426,431],{},"Integration with this provider is possible with ",[427,428,430],"a",{"href":429},"/deploy/#zero-config-providers","zero configuration",".",[433,434,436],"h2",{"id":435},"getting-started","Getting started",[404,438,439],{},"Deploying to Vercel comes with the following features:",[441,442,443,452,459,466],"ul",{},[444,445,446],"li",{},[427,447,451],{"href":448,"rel":449},"https://vercel.com/docs/deployments/environments",[450],"nofollow","Preview deployments",[444,453,454],{},[427,455,458],{"href":456,"rel":457},"https://vercel.com/docs/fluid-compute",[450],"Fluid compute",[444,460,461],{},[427,462,465],{"href":463,"rel":464},"https://vercel.com/docs/observability",[450],"Observability",[444,467,468],{},[427,469,472],{"href":470,"rel":471},"https://vercel.com/docs/vercel-firewall",[450],"Vercel Firewall",[404,474,475,476,431],{},"And much more. Learn more in ",[427,477,480],{"href":478,"rel":479},"https://vercel.com/docs",[450],"the Vercel documentation",[482,483,485],"h3",{"id":484},"deploy-with-git","Deploy with Git",[404,487,488,489,431],{},"Vercel supports Nitro with zero-configuration. ",[427,490,493],{"href":491,"rel":492},"https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fvercel%2Fvercel%2Ftree%2Fmain%2Fexamples%2Fnitro",[450],"Deploy Nitro to Vercel now",[433,495,497],{"id":496},"api-routes","API routes",[404,499,500,501,504],{},"Nitro ",[412,502,503],{},"/api"," directory isn't compatible with Vercel. Instead, you should use:",[441,506,507],{},[444,508,509,512],{},[412,510,511],{},"routes/api/"," for standalone usage",[433,514,516],{"id":515},"bun-runtime","Bun runtime",[416,518],{"title":207,"to":519},"https://vercel.com/docs/functions/runtimes/bun",[404,521,522,523,527,528,531,532,535],{},"You can use ",[427,524,111],{"href":525,"rel":526},"https://bun.com",[450]," instead of Node.js by specifying the runtime using the ",[412,529,530],{},"vercel.functions"," key inside ",[412,533,534],{},"nitro.config",":",[537,538,543],"pre",{"className":539,"code":540,"filename":541,"language":542,"meta":5,"style":5},"language-ts shiki shiki-themes github-light github-dark github-dark","export default defineConfig({\n  vercel: {\n    functions: {\n      runtime: \"bun1.x\"\n    }\n  }\n})\n","nitro.config.ts","ts",[412,544,545,565,571,577,587,593,599],{"__ignoreMap":5},[546,547,550,554,557,561],"span",{"class":548,"line":549},"line",1,[546,551,553],{"class":552},"so5gQ","export",[546,555,556],{"class":552}," default",[546,558,560],{"class":559},"shcOC"," defineConfig",[546,562,564],{"class":563},"slsVL","({\n",[546,566,568],{"class":548,"line":567},2,[546,569,570],{"class":563},"  vercel: {\n",[546,572,574],{"class":548,"line":573},3,[546,575,576],{"class":563},"    functions: {\n",[546,578,580,583],{"class":548,"line":579},4,[546,581,582],{"class":563},"      runtime: ",[546,584,586],{"class":585},"sfrk1","\"bun1.x\"\n",[546,588,590],{"class":548,"line":589},5,[546,591,592],{"class":563},"    }\n",[546,594,596],{"class":548,"line":595},6,[546,597,598],{"class":563},"  }\n",[546,600,602],{"class":548,"line":601},7,[546,603,604],{"class":563},"})\n",[404,606,607,608,611,612,535],{},"Alternatively, Nitro also detects Bun automatically if you specify a ",[412,609,610],{},"bunVersion"," property in your ",[412,613,614],{},"vercel.json",[537,616,620],{"className":617,"code":618,"filename":614,"language":619,"meta":5,"style":5},"language-json shiki shiki-themes github-light github-dark github-dark","{\n  \"$schema\": \"https://openapi.vercel.sh/vercel.json\",\n  \"bunVersion\": \"1.x\"\n}\n","json",[412,621,622,627,642,652],{"__ignoreMap":5},[546,623,624],{"class":548,"line":549},[546,625,626],{"class":563},"{\n",[546,628,629,633,636,639],{"class":548,"line":567},[546,630,632],{"class":631},"suiK_","  \"$schema\"",[546,634,635],{"class":563},": ",[546,637,638],{"class":585},"\"https://openapi.vercel.sh/vercel.json\"",[546,640,641],{"class":563},",\n",[546,643,644,647,649],{"class":548,"line":573},[546,645,646],{"class":631},"  \"bunVersion\"",[546,648,635],{"class":563},[546,650,651],{"class":585},"\"1.x\"\n",[546,653,654],{"class":548,"line":579},[546,655,656],{"class":563},"}\n",[433,658,660],{"id":659},"per-route-function-configuration","Per-route function configuration",[404,662,663,664,667,668,673,674,676,677,680],{},"Use ",[412,665,666],{},"vercel.functionRules"," to override ",[427,669,672],{"href":670,"rel":671},"https://vercel.com/docs/build-output-api/primitives#serverless-function-configuration",[450],"serverless function settings"," for specific routes. Each key is a route pattern and its value is a partial function configuration object that gets merged with the base ",[412,675,530],{}," config. Note: array properties (e.g., ",[412,678,679],{},"regions",") from route config will replace the base config arrays rather than merging them.",[404,682,683,684,431],{},"This is useful when certain routes need different resource limits, regions, or features like ",[427,685,688],{"href":686,"rel":687},"https://vercel.com/docs/queues",[450],"Vercel Queues triggers",[537,690,692],{"className":539,"code":691,"filename":541,"language":542,"meta":5,"style":5},"import { defineConfig } from \"nitro\";\n\nexport default defineConfig({\n  vercel: {\n    functionRules: {\n      \"/api/heavy-computation\": {\n        maxDuration: 800,\n        memory: 4096,\n      },\n      \"/api/regional\": {\n        regions: [\"lhr1\", \"cdg1\"],\n      },\n      \"/api/queues/process-order\": {\n        experimentalTriggers: [{ type: \"queue/v2beta\", topic: \"orders\" }],\n      },\n    },\n  },\n});\n",[412,693,694,711,717,727,731,736,744,754,765,771,779,797,802,810,828,833,839,845],{"__ignoreMap":5},[546,695,696,699,702,705,708],{"class":548,"line":549},[546,697,698],{"class":552},"import",[546,700,701],{"class":563}," { defineConfig } ",[546,703,704],{"class":552},"from",[546,706,707],{"class":585}," \"nitro\"",[546,709,710],{"class":563},";\n",[546,712,713],{"class":548,"line":567},[546,714,716],{"emptyLinePlaceholder":715},true,"\n",[546,718,719,721,723,725],{"class":548,"line":573},[546,720,553],{"class":552},[546,722,556],{"class":552},[546,724,560],{"class":559},[546,726,564],{"class":563},[546,728,729],{"class":548,"line":579},[546,730,570],{"class":563},[546,732,733],{"class":548,"line":589},[546,734,735],{"class":563},"    functionRules: {\n",[546,737,738,741],{"class":548,"line":595},[546,739,740],{"class":585},"      \"/api/heavy-computation\"",[546,742,743],{"class":563},": {\n",[546,745,746,749,752],{"class":548,"line":601},[546,747,748],{"class":563},"        maxDuration: ",[546,750,751],{"class":631},"800",[546,753,641],{"class":563},[546,755,757,760,763],{"class":548,"line":756},8,[546,758,759],{"class":563},"        memory: ",[546,761,762],{"class":631},"4096",[546,764,641],{"class":563},[546,766,768],{"class":548,"line":767},9,[546,769,770],{"class":563},"      },\n",[546,772,774,777],{"class":548,"line":773},10,[546,775,776],{"class":585},"      \"/api/regional\"",[546,778,743],{"class":563},[546,780,782,785,788,791,794],{"class":548,"line":781},11,[546,783,784],{"class":563},"        regions: [",[546,786,787],{"class":585},"\"lhr1\"",[546,789,790],{"class":563},", ",[546,792,793],{"class":585},"\"cdg1\"",[546,795,796],{"class":563},"],\n",[546,798,800],{"class":548,"line":799},12,[546,801,770],{"class":563},[546,803,805,808],{"class":548,"line":804},13,[546,806,807],{"class":585},"      \"/api/queues/process-order\"",[546,809,743],{"class":563},[546,811,813,816,819,822,825],{"class":548,"line":812},14,[546,814,815],{"class":563},"        experimentalTriggers: [{ type: ",[546,817,818],{"class":585},"\"queue/v2beta\"",[546,820,821],{"class":563},", topic: ",[546,823,824],{"class":585},"\"orders\"",[546,826,827],{"class":563}," }],\n",[546,829,831],{"class":548,"line":830},15,[546,832,770],{"class":563},[546,834,836],{"class":548,"line":835},16,[546,837,838],{"class":563},"    },\n",[546,840,842],{"class":548,"line":841},17,[546,843,844],{"class":563},"  },\n",[546,846,848],{"class":548,"line":847},18,[546,849,850],{"class":563},"});\n",[404,852,853,854,859,860,863,864,867],{},"Route patterns support wildcards via ",[427,855,858],{"href":856,"rel":857},"https://github.com/h3js/rou3",[450],"rou3"," matching (e.g., ",[412,861,862],{},"/api/slow/**"," matches all routes under ",[412,865,866],{},"/api/slow/",").",[433,869,871],{"id":870},"proxy-route-rules","Proxy route rules",[404,873,874,875,878,879,884],{},"Nitro automatically optimizes ",[412,876,877],{},"proxy"," route rules on Vercel by generating ",[427,880,883],{"href":881,"rel":882},"https://vercel.com/docs/rewrites",[450],"CDN-level rewrites"," at build time. This means matching requests are proxied at the edge without invoking a serverless function, reducing latency and cost.",[537,886,888],{"className":539,"code":887,"filename":541,"language":542,"meta":5,"style":5},"export default defineConfig({\n  routeRules: {\n    // Proxied at CDN level — no function invocation\n    \"/api/**\": {\n      proxy: \"https://api.example.com/**\",\n    },\n  },\n});\n",[412,889,890,900,905,911,918,928,932,936],{"__ignoreMap":5},[546,891,892,894,896,898],{"class":548,"line":549},[546,893,553],{"class":552},[546,895,556],{"class":552},[546,897,560],{"class":559},[546,899,564],{"class":563},[546,901,902],{"class":548,"line":567},[546,903,904],{"class":563},"  routeRules: {\n",[546,906,907],{"class":548,"line":573},[546,908,910],{"class":909},"sCsY4","    // Proxied at CDN level — no function invocation\n",[546,912,913,916],{"class":548,"line":579},[546,914,915],{"class":585},"    \"/api/**\"",[546,917,743],{"class":563},[546,919,920,923,926],{"class":548,"line":589},[546,921,922],{"class":563},"      proxy: ",[546,924,925],{"class":585},"\"https://api.example.com/**\"",[546,927,641],{"class":563},[546,929,930],{"class":548,"line":595},[546,931,838],{"class":563},[546,933,934],{"class":548,"line":601},[546,935,844],{"class":563},[546,937,938],{"class":548,"line":756},[546,939,850],{"class":563},[482,941,943],{"id":942},"when-cdn-rewrites-apply","When CDN rewrites apply",[404,945,946,947,950],{},"A proxy rule is offloaded to a Vercel CDN rewrite when ",[407,948,949],{},"all"," of the following are true:",[441,952,953,967],{},[444,954,955,956,959,960,963,964,867],{},"The target is an ",[407,957,958],{},"external URL"," (starts with ",[412,961,962],{},"http://"," or ",[412,965,966],{},"https://",[444,968,969,970,973],{},"No advanced ",[412,971,972],{},"ProxyOptions"," are set on the rule.",[482,975,977],{"id":976},"fallback-to-runtime-proxy","Fallback to runtime proxy",[404,979,980,981,983],{},"When the proxy rule uses any of the following ",[412,982,972],{},", Nitro keeps it as a runtime proxy handled by the serverless function:",[441,985,986,992,1002,1008,1017],{},[444,987,988,991],{},[412,989,990],{},"headers"," — custom headers on the outgoing request to the upstream",[444,993,994,997,998,1001],{},[412,995,996],{},"forwardHeaders"," / ",[412,999,1000],{},"filterHeaders"," — header filtering",[444,1003,1004,1007],{},[412,1005,1006],{},"fetchOptions"," — custom fetch options",[444,1009,1010,997,1013,1016],{},[412,1011,1012],{},"cookieDomainRewrite",[412,1014,1015],{},"cookiePathRewrite"," — cookie manipulation",[444,1018,1019,1022],{},[412,1020,1021],{},"onResponse"," — response callback",[421,1024,1025],{},[404,1026,1027,1028,1030,1031,1034],{},"Response headers defined on the route rule via the ",[412,1029,990],{}," option are still applied to CDN-level rewrites. Only request-level ",[412,1032,1033],{},"ProxyOptions.headers"," (sent to the upstream) require a runtime proxy.",[433,1036,1038],{"id":1037},"scheduled-tasks-cron-jobs","Scheduled tasks (Cron Jobs)",[416,1040],{"title":1041,"to":1042},"Vercel Cron Jobs","https://vercel.com/docs/cron-jobs",[404,1044,1045,1046,1052,1053,1056,1057,1059],{},"Nitro automatically converts your ",[427,1047,1049],{"href":1048},"/docs/tasks#scheduled-tasks",[412,1050,1051],{},"scheduledTasks"," configuration into ",[427,1054,1041],{"href":1042,"rel":1055},[450]," at build time. Define your schedules in your Nitro config and deploy - no manual ",[412,1058,614],{}," cron configuration required.",[537,1061,1063],{"className":539,"code":1062,"filename":541,"language":542,"meta":5,"style":5},"import { defineConfig } from \"nitro\";\n\nexport default defineConfig({\n  experimental: {\n    tasks: true\n  },\n  scheduledTasks: {\n    // Run `cms:update` every hour\n    '0 * * * *': ['cms:update'],\n    // Run `db:cleanup` every day at midnight\n    '0 0 * * *': ['db:cleanup']\n  }\n})\n",[412,1064,1065,1077,1081,1091,1096,1104,1108,1113,1118,1131,1136,1149,1153],{"__ignoreMap":5},[546,1066,1067,1069,1071,1073,1075],{"class":548,"line":549},[546,1068,698],{"class":552},[546,1070,701],{"class":563},[546,1072,704],{"class":552},[546,1074,707],{"class":585},[546,1076,710],{"class":563},[546,1078,1079],{"class":548,"line":567},[546,1080,716],{"emptyLinePlaceholder":715},[546,1082,1083,1085,1087,1089],{"class":548,"line":573},[546,1084,553],{"class":552},[546,1086,556],{"class":552},[546,1088,560],{"class":559},[546,1090,564],{"class":563},[546,1092,1093],{"class":548,"line":579},[546,1094,1095],{"class":563},"  experimental: {\n",[546,1097,1098,1101],{"class":548,"line":589},[546,1099,1100],{"class":563},"    tasks: ",[546,1102,1103],{"class":631},"true\n",[546,1105,1106],{"class":548,"line":595},[546,1107,844],{"class":563},[546,1109,1110],{"class":548,"line":601},[546,1111,1112],{"class":563},"  scheduledTasks: {\n",[546,1114,1115],{"class":548,"line":756},[546,1116,1117],{"class":909},"    // Run `cms:update` every hour\n",[546,1119,1120,1123,1126,1129],{"class":548,"line":767},[546,1121,1122],{"class":585},"    '0 * * * *'",[546,1124,1125],{"class":563},": [",[546,1127,1128],{"class":585},"'cms:update'",[546,1130,796],{"class":563},[546,1132,1133],{"class":548,"line":773},[546,1134,1135],{"class":909},"    // Run `db:cleanup` every day at midnight\n",[546,1137,1138,1141,1143,1146],{"class":548,"line":781},[546,1139,1140],{"class":585},"    '0 0 * * *'",[546,1142,1125],{"class":563},[546,1144,1145],{"class":585},"'db:cleanup'",[546,1147,1148],{"class":563},"]\n",[546,1150,1151],{"class":548,"line":799},[546,1152,598],{"class":563},[546,1154,1155],{"class":548,"line":804},[546,1156,604],{"class":563},[482,1158,1160],{"id":1159},"secure-cron-job-endpoints","Secure cron job endpoints",[416,1162],{"title":1163,"to":1164},"Securing cron jobs","https://vercel.com/docs/cron-jobs/manage-cron-jobs#securing-cron-jobs",[404,1166,1167,1168,1171,1172,1174,1175,1178],{},"To prevent unauthorized access to the cron handler, set a ",[412,1169,1170],{},"CRON_SECRET"," environment variable in your Vercel project settings. When ",[412,1173,1170],{}," is set, Nitro validates the ",[412,1176,1177],{},"Authorization"," header on every cron invocation.",[433,1180,1182],{"id":1181},"queues","Queues",[416,1184],{"title":1185,"to":686},"Vercel Queues",[404,1187,1188,1189,1192,1193,1196],{},"Nitro integrates with ",[427,1190,1185],{"href":686,"rel":1191},[450]," to process messages asynchronously. Define your queue topics in the Nitro config and handle incoming messages with the ",[412,1194,1195],{},"vercel:queue"," runtime hook.",[537,1198,1200],{"className":539,"code":1199,"filename":541,"language":542,"meta":5,"style":5},"export default defineNitroConfig({\n  vercel: {\n    queues: {\n      triggers: [\n        // Only `topic` is required\n        { topic: \"notifications\" },\n        { topic: \"orders\", retryAfterSeconds: 60, initialDelaySeconds: 5 },\n      ],\n    },\n  },\n});\n",[412,1201,1202,1213,1217,1222,1227,1232,1243,1263,1268,1272,1276],{"__ignoreMap":5},[546,1203,1204,1206,1208,1211],{"class":548,"line":549},[546,1205,553],{"class":552},[546,1207,556],{"class":552},[546,1209,1210],{"class":559}," defineNitroConfig",[546,1212,564],{"class":563},[546,1214,1215],{"class":548,"line":567},[546,1216,570],{"class":563},[546,1218,1219],{"class":548,"line":573},[546,1220,1221],{"class":563},"    queues: {\n",[546,1223,1224],{"class":548,"line":579},[546,1225,1226],{"class":563},"      triggers: [\n",[546,1228,1229],{"class":548,"line":589},[546,1230,1231],{"class":909},"        // Only `topic` is required\n",[546,1233,1234,1237,1240],{"class":548,"line":595},[546,1235,1236],{"class":563},"        { topic: ",[546,1238,1239],{"class":585},"\"notifications\"",[546,1241,1242],{"class":563}," },\n",[546,1244,1245,1247,1249,1252,1255,1258,1261],{"class":548,"line":601},[546,1246,1236],{"class":563},[546,1248,824],{"class":585},[546,1250,1251],{"class":563},", retryAfterSeconds: ",[546,1253,1254],{"class":631},"60",[546,1256,1257],{"class":563},", initialDelaySeconds: ",[546,1259,1260],{"class":631},"5",[546,1262,1242],{"class":563},[546,1264,1265],{"class":548,"line":756},[546,1266,1267],{"class":563},"      ],\n",[546,1269,1270],{"class":548,"line":767},[546,1271,838],{"class":563},[546,1273,1274],{"class":548,"line":773},[546,1275,844],{"class":563},[546,1277,1278],{"class":548,"line":781},[546,1279,850],{"class":563},[482,1281,1283],{"id":1282},"handling-messages","Handling messages",[404,1285,1286,1287,1289,1290,1294],{},"Use the ",[412,1288,1195],{}," hook in a ",[427,1291,1293],{"href":1292},"/guide/plugins","Nitro plugin"," to process incoming queue messages:",[537,1296,1299],{"className":539,"code":1297,"filename":1298,"language":542,"meta":5,"style":5},"export default defineNitroPlugin((nitro) => {\n  nitro.hooks.hook(\"vercel:queue\", ({ message, metadata, send }) => {\n    console.log(`[${metadata.topicName}] Message ${metadata.messageId}:`, message);\n  });\n});\n","server/plugins/queues.ts",[412,1300,1301,1326,1363,1399,1404],{"__ignoreMap":5},[546,1302,1303,1305,1307,1310,1313,1317,1320,1323],{"class":548,"line":549},[546,1304,553],{"class":552},[546,1306,556],{"class":552},[546,1308,1309],{"class":559}," defineNitroPlugin",[546,1311,1312],{"class":563},"((",[546,1314,1316],{"class":1315},"sQHwn","nitro",[546,1318,1319],{"class":563},") ",[546,1321,1322],{"class":552},"=>",[546,1324,1325],{"class":563}," {\n",[546,1327,1328,1331,1334,1337,1340,1343,1346,1348,1351,1353,1356,1359,1361],{"class":548,"line":567},[546,1329,1330],{"class":563},"  nitro.hooks.",[546,1332,1333],{"class":559},"hook",[546,1335,1336],{"class":563},"(",[546,1338,1339],{"class":585},"\"vercel:queue\"",[546,1341,1342],{"class":563},", ({ ",[546,1344,1345],{"class":1315},"message",[546,1347,790],{"class":563},[546,1349,1350],{"class":1315},"metadata",[546,1352,790],{"class":563},[546,1354,1355],{"class":1315},"send",[546,1357,1358],{"class":563}," }) ",[546,1360,1322],{"class":552},[546,1362,1325],{"class":563},[546,1364,1365,1368,1371,1373,1376,1378,1380,1383,1386,1388,1390,1393,1396],{"class":548,"line":573},[546,1366,1367],{"class":563},"    console.",[546,1369,1370],{"class":559},"log",[546,1372,1336],{"class":563},[546,1374,1375],{"class":585},"`[${",[546,1377,1350],{"class":563},[546,1379,431],{"class":585},[546,1381,1382],{"class":563},"topicName",[546,1384,1385],{"class":585},"}] Message ${",[546,1387,1350],{"class":563},[546,1389,431],{"class":585},[546,1391,1392],{"class":563},"messageId",[546,1394,1395],{"class":585},"}:`",[546,1397,1398],{"class":563},", message);\n",[546,1400,1401],{"class":548,"line":579},[546,1402,1403],{"class":563},"  });\n",[546,1405,1406],{"class":548,"line":589},[546,1407,850],{"class":563},[482,1409,1411],{"id":1410},"running-tasks-from-queue-messages","Running tasks from queue messages",[404,1413,1414,1415,535],{},"You can use queue messages to trigger ",[427,1416,1417],{"href":59},"Nitro tasks",[537,1419,1421],{"className":539,"code":1420,"filename":1298,"language":542,"meta":5,"style":5},"import { runTask } from \"nitro/task\";\n\nexport default defineNitroPlugin((nitro) => {\n  nitro.hooks.hook(\"vercel:queue\", async ({ message, metadata }) => {\n    if (metadata.topicName === \"orders\") {\n      await runTask(\"orders:fulfill\", { payload: message });\n    }\n  });\n});\n",[412,1422,1423,1437,1441,1459,1489,1506,1522,1526,1530],{"__ignoreMap":5},[546,1424,1425,1427,1430,1432,1435],{"class":548,"line":549},[546,1426,698],{"class":552},[546,1428,1429],{"class":563}," { runTask } ",[546,1431,704],{"class":552},[546,1433,1434],{"class":585}," \"nitro/task\"",[546,1436,710],{"class":563},[546,1438,1439],{"class":548,"line":567},[546,1440,716],{"emptyLinePlaceholder":715},[546,1442,1443,1445,1447,1449,1451,1453,1455,1457],{"class":548,"line":573},[546,1444,553],{"class":552},[546,1446,556],{"class":552},[546,1448,1309],{"class":559},[546,1450,1312],{"class":563},[546,1452,1316],{"class":1315},[546,1454,1319],{"class":563},[546,1456,1322],{"class":552},[546,1458,1325],{"class":563},[546,1460,1461,1463,1465,1467,1469,1471,1474,1477,1479,1481,1483,1485,1487],{"class":548,"line":579},[546,1462,1330],{"class":563},[546,1464,1333],{"class":559},[546,1466,1336],{"class":563},[546,1468,1339],{"class":585},[546,1470,790],{"class":563},[546,1472,1473],{"class":552},"async",[546,1475,1476],{"class":563}," ({ ",[546,1478,1345],{"class":1315},[546,1480,790],{"class":563},[546,1482,1350],{"class":1315},[546,1484,1358],{"class":563},[546,1486,1322],{"class":552},[546,1488,1325],{"class":563},[546,1490,1491,1494,1497,1500,1503],{"class":548,"line":589},[546,1492,1493],{"class":552},"    if",[546,1495,1496],{"class":563}," (metadata.topicName ",[546,1498,1499],{"class":552},"===",[546,1501,1502],{"class":585}," \"orders\"",[546,1504,1505],{"class":563},") {\n",[546,1507,1508,1511,1514,1516,1519],{"class":548,"line":595},[546,1509,1510],{"class":552},"      await",[546,1512,1513],{"class":559}," runTask",[546,1515,1336],{"class":563},[546,1517,1518],{"class":585},"\"orders:fulfill\"",[546,1520,1521],{"class":563},", { payload: message });\n",[546,1523,1524],{"class":548,"line":601},[546,1525,592],{"class":563},[546,1527,1528],{"class":548,"line":756},[546,1529,1403],{"class":563},[546,1531,1532],{"class":548,"line":767},[546,1533,850],{"class":563},[482,1535,1537],{"id":1536},"sending-messages","Sending messages",[404,1539,1286,1540,1543],{},[412,1541,1542],{},"@vercel/queue"," package directly to send messages to a topic:",[537,1545,1548],{"className":539,"code":1546,"filename":1547,"language":542,"meta":5,"style":5},"import { send } from \"@vercel/queue\";\n\nexport default defineEventHandler(async (event) => {\n  const order = await event.req.json();\n  const { messageId } = await send(\"orders\", order);\n  return { messageId };\n});\n","server/routes/api/orders.post.ts",[412,1549,1550,1564,1568,1593,1615,1642,1650],{"__ignoreMap":5},[546,1551,1552,1554,1557,1559,1562],{"class":548,"line":549},[546,1553,698],{"class":552},[546,1555,1556],{"class":563}," { send } ",[546,1558,704],{"class":552},[546,1560,1561],{"class":585}," \"@vercel/queue\"",[546,1563,710],{"class":563},[546,1565,1566],{"class":548,"line":567},[546,1567,716],{"emptyLinePlaceholder":715},[546,1569,1570,1572,1574,1577,1579,1581,1584,1587,1589,1591],{"class":548,"line":573},[546,1571,553],{"class":552},[546,1573,556],{"class":552},[546,1575,1576],{"class":559}," defineEventHandler",[546,1578,1336],{"class":563},[546,1580,1473],{"class":552},[546,1582,1583],{"class":563}," (",[546,1585,1586],{"class":1315},"event",[546,1588,1319],{"class":563},[546,1590,1322],{"class":552},[546,1592,1325],{"class":563},[546,1594,1595,1598,1601,1604,1607,1610,1612],{"class":548,"line":579},[546,1596,1597],{"class":552},"  const",[546,1599,1600],{"class":631}," order",[546,1602,1603],{"class":552}," =",[546,1605,1606],{"class":552}," await",[546,1608,1609],{"class":563}," event.req.",[546,1611,619],{"class":559},[546,1613,1614],{"class":563},"();\n",[546,1616,1617,1619,1622,1624,1627,1630,1632,1635,1637,1639],{"class":548,"line":589},[546,1618,1597],{"class":552},[546,1620,1621],{"class":563}," { ",[546,1623,1392],{"class":631},[546,1625,1626],{"class":563}," } ",[546,1628,1629],{"class":552},"=",[546,1631,1606],{"class":552},[546,1633,1634],{"class":559}," send",[546,1636,1336],{"class":563},[546,1638,824],{"class":585},[546,1640,1641],{"class":563},", order);\n",[546,1643,1644,1647],{"class":548,"line":595},[546,1645,1646],{"class":552},"  return",[546,1648,1649],{"class":563}," { messageId };\n",[546,1651,1652],{"class":548,"line":601},[546,1653,850],{"class":563},[433,1655,1657],{"id":1656},"custom-build-output-configuration","Custom build output configuration",[404,1659,1660,1661,1666,1667,531,1670,1672],{},"You can provide additional ",[427,1662,1665],{"href":1663,"rel":1664},"https://vercel.com/docs/build-output-api/v3",[450],"build output configuration"," using ",[412,1668,1669],{},"vercel.config",[412,1671,534],{},". It will be merged with built-in auto-generated config.",[433,1674,1676],{"id":1675},"on-demand-incremental-static-regeneration-isr","On-Demand incremental static regeneration (ISR)",[404,1678,1679],{},"On-demand revalidation allows you to purge the cache for an ISR route whenever you want, foregoing the time interval required with background revalidation.",[404,1681,1682],{},"To revalidate a page on demand:",[1684,1685,1687,1705,1768],"steps",{"level":1686},"4",[1688,1689,1690,1691],"h4",{},"Create an Environment Variable which will store a revalidation secret",[441,1692,1693],{},[444,1694,1695,1696,963,1699,1704],{},"You can use the command ",[412,1697,1698],{},"openssl rand -base64 32",[427,1700,1703],{"href":1701,"rel":1702},"https://generate-secret.vercel.app/32",[450],"Generate a Secret"," to generate a random value.",[1688,1706,1707,1708],{},"Update your configuration:",[537,1709,1711],{"className":539,"code":1710,"filename":541,"language":542,"meta":5,"style":5},"import { defineConfig } from \"nitro\";\n\nexport default defineConfig({\n  vercel: {\n    config: {\n      bypassToken: process.env.VERCEL_BYPASS_TOKEN\n    }\n  }\n})\n",[412,1712,1713,1725,1729,1739,1743,1748,1756,1760,1764],{"__ignoreMap":5},[546,1714,1715,1717,1719,1721,1723],{"class":548,"line":549},[546,1716,698],{"class":552},[546,1718,701],{"class":563},[546,1720,704],{"class":552},[546,1722,707],{"class":585},[546,1724,710],{"class":563},[546,1726,1727],{"class":548,"line":567},[546,1728,716],{"emptyLinePlaceholder":715},[546,1730,1731,1733,1735,1737],{"class":548,"line":573},[546,1732,553],{"class":552},[546,1734,556],{"class":552},[546,1736,560],{"class":559},[546,1738,564],{"class":563},[546,1740,1741],{"class":548,"line":579},[546,1742,570],{"class":563},[546,1744,1745],{"class":548,"line":589},[546,1746,1747],{"class":563},"    config: {\n",[546,1749,1750,1753],{"class":548,"line":595},[546,1751,1752],{"class":563},"      bypassToken: process.env.",[546,1754,1755],{"class":631},"VERCEL_BYPASS_TOKEN\n",[546,1757,1758],{"class":548,"line":601},[546,1759,592],{"class":563},[546,1761,1762],{"class":548,"line":756},[546,1763,598],{"class":563},[546,1765,1766],{"class":548,"line":767},[546,1767,604],{"class":563},[1688,1769,1770,1771,1774],{},"To trigger \"On-Demand Incremental Static Regeneration (ISR)\" and revalidate a path to a Prerender Function, make a GET or HEAD request to that path with a header of x-prerender-revalidate: ",[412,1772,1773],{},"bypassToken",". When that Prerender Function endpoint is accessed with this header set, the cache will be revalidated. The next request to that function should return a fresh response.",[482,1776,1778],{"id":1777},"fine-grained-isr-config-via-route-rules","Fine-grained ISR config via route rules",[404,1780,1781],{},"By default, query params affect cache keys but are not passed to the route handler unless specified.",[404,1783,1784,1785,1788],{},"You can pass an options object to ",[412,1786,1787],{},"isr"," route rule to configure caching behavior.",[441,1790,1791,1805,1811,1840,1857],{},[444,1792,1793,1796,1797,1800,1801,1804],{},[412,1794,1795],{},"expiration",": Expiration time (in seconds) before the cached asset will be re-generated by invoking the Serverless Function. Setting the value to ",[412,1798,1799],{},"false"," (or ",[412,1802,1803],{},"isr: true"," route rule) means it will never expire.",[444,1806,1807,1810],{},[412,1808,1809],{},"group",": Group number of the asset. Prerender assets with the same group number will all be re-validated at the same time.",[444,1812,1813,1816,1817],{},[412,1814,1815],{},"allowQuery",": List of query string parameter names that will be cached independently.\n",[441,1818,1819,1822,1829],{},[444,1820,1821],{},"If an empty array, query values are not considered for caching.",[444,1823,1824,1825,1828],{},"If ",[412,1826,1827],{},"undefined"," each unique query value is cached independently.",[444,1830,1831,1832,1835,1836,1839],{},"For wildcard ",[412,1833,1834],{},"/**"," route rules, ",[412,1837,1838],{},"url"," is always added",[444,1841,1842,1845,1846,1849,1850,1853,1854,1856],{},[412,1843,1844],{},"passQuery",": When ",[412,1847,1848],{},"true",", the query string will be present on the ",[412,1851,1852],{},"request"," argument passed to the invoked function. The ",[412,1855,1815],{}," filter still applies.",[444,1858,1859,1845,1862,1864,1865],{},[412,1860,1861],{},"exposeErrBody",[412,1863,1848],{},", expose the response body regardless of status code including error status codes. (default ",[412,1866,1799],{},[537,1868,1870],{"className":539,"code":1869,"language":542,"meta":5,"style":5},"export default defineConfig({\n  routeRules: {\n    \"/products/**\": {\n      isr: {\n        allowQuery: [\"q\"],\n        passQuery: true,\n        exposeErrBody: true\n      },\n    },\n  },\n});\n",[412,1871,1872,1882,1886,1893,1898,1908,1917,1924,1928,1932,1936],{"__ignoreMap":5},[546,1873,1874,1876,1878,1880],{"class":548,"line":549},[546,1875,553],{"class":552},[546,1877,556],{"class":552},[546,1879,560],{"class":559},[546,1881,564],{"class":563},[546,1883,1884],{"class":548,"line":567},[546,1885,904],{"class":563},[546,1887,1888,1891],{"class":548,"line":573},[546,1889,1890],{"class":585},"    \"/products/**\"",[546,1892,743],{"class":563},[546,1894,1895],{"class":548,"line":579},[546,1896,1897],{"class":563},"      isr: {\n",[546,1899,1900,1903,1906],{"class":548,"line":589},[546,1901,1902],{"class":563},"        allowQuery: [",[546,1904,1905],{"class":585},"\"q\"",[546,1907,796],{"class":563},[546,1909,1910,1913,1915],{"class":548,"line":595},[546,1911,1912],{"class":563},"        passQuery: ",[546,1914,1848],{"class":631},[546,1916,641],{"class":563},[546,1918,1919,1922],{"class":548,"line":601},[546,1920,1921],{"class":563},"        exposeErrBody: ",[546,1923,1103],{"class":631},[546,1925,1926],{"class":548,"line":756},[546,1927,770],{"class":563},[546,1929,1930],{"class":548,"line":767},[546,1931,838],{"class":563},[546,1933,1934],{"class":548,"line":773},[546,1935,844],{"class":563},[546,1937,1938],{"class":548,"line":781},[546,1939,850],{"class":563},[1941,1942,1943],"style",{},"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 .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}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 .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sQHwn, html code.shiki .sQHwn{--shiki-light:#E36209;--shiki-default:#FFAB70;--shiki-dark:#FFAB70}",{"title":5,"searchDepth":567,"depth":567,"links":1945},[1946,1949,1950,1951,1952,1956,1959,1964,1965],{"id":435,"depth":567,"text":436,"children":1947},[1948],{"id":484,"depth":573,"text":485},{"id":496,"depth":567,"text":497},{"id":515,"depth":567,"text":516},{"id":659,"depth":567,"text":660},{"id":870,"depth":567,"text":871,"children":1953},[1954,1955],{"id":942,"depth":573,"text":943},{"id":976,"depth":573,"text":977},{"id":1037,"depth":567,"text":1038,"children":1957},[1958],{"id":1159,"depth":573,"text":1160},{"id":1181,"depth":567,"text":1182,"children":1960},[1961,1962,1963],{"id":1282,"depth":573,"text":1283},{"id":1410,"depth":573,"text":1411},{"id":1536,"depth":573,"text":1537},{"id":1656,"depth":567,"text":1657},{"id":1675,"depth":567,"text":1676,"children":1966},[1967],{"id":1777,"depth":573,"text":1778},"Deploy Nitro apps to Vercel.","md",{},{},{"title":207,"description":1968},"fUMY5pLi7_9JAkKf_vfi8qHEtIzOCtDAAkD05o9-VfA",[1975,1977],{"title":203,"path":204,"stem":205,"description":1976,"children":-1},"Deploy Nitro apps to StormKit.",{"title":211,"path":212,"stem":213,"description":1978,"children":-1},"Deploy Nitro apps to Zeabur.",1776117108196]