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