[{"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},"","\u002Fdocs","1.docs\u002F1.index",[9,12,17,22,27,32,37,42,47,52,57,62,67,72,77,82,87],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-compass",{"title":13,"path":14,"stem":15,"icon":16},"Quick Start","\u002Fdocs\u002Fquick-start","1.docs\u002F2.quick-start","i-lucide-zap",{"title":18,"path":19,"stem":20,"icon":21},"Renderer","\u002Fdocs\u002Frenderer","1.docs\u002F4.renderer","ri:layout-masonry-line",{"title":23,"path":24,"stem":25,"icon":26},"Routing","\u002Fdocs\u002Frouting","1.docs\u002F5.routing","ri:direction-line",{"title":28,"path":29,"stem":30,"icon":31},"Assets","\u002Fdocs\u002Fassets","1.docs\u002F50.assets","ri:image-2-line",{"title":33,"path":34,"stem":35,"icon":36},"Configuration","\u002Fdocs\u002Fconfiguration","1.docs\u002F50.configuration","ri:settings-3-line",{"title":38,"path":39,"stem":40,"icon":41},"Database","\u002Fdocs\u002Fdatabase","1.docs\u002F50.database","ri:database-2-line",{"title":43,"path":44,"stem":45,"icon":46},"Lifecycle","\u002Fdocs\u002Flifecycle","1.docs\u002F50.lifecycle","i-lucide-layers",{"title":48,"path":49,"stem":50,"icon":51},"OpenAPI","\u002Fdocs\u002Fopenapi","1.docs\u002F50.openapi","ri:contract-line",{"title":53,"path":54,"stem":55,"icon":56},"Plugins","\u002Fdocs\u002Fplugins","1.docs\u002F50.plugins","ri:plug-line",{"title":58,"path":59,"stem":60,"icon":61},"Tasks","\u002Fdocs\u002Ftasks","1.docs\u002F50.tasks","codicon:run-all",{"title":63,"path":64,"stem":65,"icon":66},"WebSocket","\u002Fdocs\u002Fwebsocket","1.docs\u002F50.websocket","ri:broadcast-fill",{"title":68,"path":69,"stem":70,"icon":71},"Server Entry","\u002Fdocs\u002Fserver-entry","1.docs\u002F6.server-entry","ri:server-line",{"title":73,"path":74,"stem":75,"icon":76},"Cache","\u002Fdocs\u002Fcache","1.docs\u002F7.cache","ri:speed-line",{"title":78,"path":79,"stem":80,"icon":81},"KV Storage","\u002Fdocs\u002Fstorage","1.docs\u002F8.storage","carbon:datastore",{"title":83,"path":84,"stem":85,"icon":86},"Migration Guide","\u002Fdocs\u002Fmigration","1.docs\u002F99.migration","ri:arrow-right-up-line",{"title":88,"path":89,"stem":90,"icon":91},"Nightly Channel","\u002Fdocs\u002Fnightly","1.docs\u002F99.nightly","ri:moon-fill","i-lucide-book-open",{"title":94,"path":95,"stem":96,"children":97,"icon":99},"Deploy","\u002Fdeploy","2.deploy\u002F0.index",[98,100,121],{"title":94,"path":95,"stem":96,"icon":99},"ri:upload-cloud-2-line",{"title":101,"path":102,"stem":103,"children":104,"page":120},"Runtimes","\u002Fdeploy\u002Fruntimes","2.deploy\u002F10.runtimes",[105,110,115],{"title":106,"path":107,"stem":108,"icon":109},"Node.js","\u002Fdeploy\u002Fruntimes\u002Fnode","2.deploy\u002F10.runtimes\u002F1.node","akar-icons:node-fill",{"title":111,"path":112,"stem":113,"icon":114},"Bun","\u002Fdeploy\u002Fruntimes\u002Fbun","2.deploy\u002F10.runtimes\u002Fbun","simple-icons:bun",{"title":116,"path":117,"stem":118,"icon":119},"Deno","\u002Fdeploy\u002Fruntimes\u002Fdeno","2.deploy\u002F10.runtimes\u002Fdeno","simple-icons:deno",false,{"title":122,"path":123,"stem":124,"children":125,"page":120},"Providers","\u002Fdeploy\u002Fproviders","2.deploy\u002F20.providers",[126,130,134,138,142,146,150,154,158,162,166,170,174,178,182,186,190,194,198,202,206,210,214,218,222],{"title":127,"path":128,"stem":129},"Alwaysdata","\u002Fdeploy\u002Fproviders\u002Falwaysdata","2.deploy\u002F20.providers\u002Falwaysdata",{"title":131,"path":132,"stem":133},"AWS Lambda","\u002Fdeploy\u002Fproviders\u002Faws","2.deploy\u002F20.providers\u002Faws",{"title":135,"path":136,"stem":137},"AWS Amplify","\u002Fdeploy\u002Fproviders\u002Faws-amplify","2.deploy\u002F20.providers\u002Faws-amplify",{"title":139,"path":140,"stem":141},"Azure","\u002Fdeploy\u002Fproviders\u002Fazure","2.deploy\u002F20.providers\u002Fazure",{"title":143,"path":144,"stem":145},"Cleavr","\u002Fdeploy\u002Fproviders\u002Fcleavr","2.deploy\u002F20.providers\u002Fcleavr",{"title":147,"path":148,"stem":149},"Cloudflare","\u002Fdeploy\u002Fproviders\u002Fcloudflare","2.deploy\u002F20.providers\u002Fcloudflare",{"title":151,"path":152,"stem":153},"Deno Deploy","\u002Fdeploy\u002Fproviders\u002Fdeno-deploy","2.deploy\u002F20.providers\u002Fdeno-deploy",{"title":155,"path":156,"stem":157},"DigitalOcean","\u002Fdeploy\u002Fproviders\u002Fdigitalocean","2.deploy\u002F20.providers\u002Fdigitalocean",{"title":159,"path":160,"stem":161},"EdgeOne Pages","\u002Fdeploy\u002Fproviders\u002Fedgeone","2.deploy\u002F20.providers\u002Fedgeone",{"title":163,"path":164,"stem":165},"Firebase","\u002Fdeploy\u002Fproviders\u002Ffirebase","2.deploy\u002F20.providers\u002Ffirebase",{"title":167,"path":168,"stem":169},"Flightcontrol","\u002Fdeploy\u002Fproviders\u002Fflightcontrol","2.deploy\u002F20.providers\u002Fflightcontrol",{"title":171,"path":172,"stem":173},"Genezio","\u002Fdeploy\u002Fproviders\u002Fgenezio","2.deploy\u002F20.providers\u002Fgenezio",{"title":175,"path":176,"stem":177},"GitHub Pages","\u002Fdeploy\u002Fproviders\u002Fgithub-pages","2.deploy\u002F20.providers\u002Fgithub-pages",{"title":179,"path":180,"stem":181},"GitLab Pages","\u002Fdeploy\u002Fproviders\u002Fgitlab-pages","2.deploy\u002F20.providers\u002Fgitlab-pages",{"title":183,"path":184,"stem":185},"Heroku","\u002Fdeploy\u002Fproviders\u002Fheroku","2.deploy\u002F20.providers\u002Fheroku",{"title":187,"path":188,"stem":189},"IIS","\u002Fdeploy\u002Fproviders\u002Fiis","2.deploy\u002F20.providers\u002Fiis",{"title":191,"path":192,"stem":193},"Koyeb","\u002Fdeploy\u002Fproviders\u002Fkoyeb","2.deploy\u002F20.providers\u002Fkoyeb",{"title":195,"path":196,"stem":197},"Netlify","\u002Fdeploy\u002Fproviders\u002Fnetlify","2.deploy\u002F20.providers\u002Fnetlify",{"title":199,"path":200,"stem":201},"Platform.sh","\u002Fdeploy\u002Fproviders\u002Fplatform-sh","2.deploy\u002F20.providers\u002Fplatform-sh",{"title":203,"path":204,"stem":205},"Render.com","\u002Fdeploy\u002Fproviders\u002Frender","2.deploy\u002F20.providers\u002Frender",{"title":207,"path":208,"stem":209},"StormKit","\u002Fdeploy\u002Fproviders\u002Fstormkit","2.deploy\u002F20.providers\u002Fstormkit",{"title":211,"path":212,"stem":213},"Vercel","\u002Fdeploy\u002Fproviders\u002Fvercel","2.deploy\u002F20.providers\u002Fvercel",{"title":215,"path":216,"stem":217},"Zeabur","\u002Fdeploy\u002Fproviders\u002Fzeabur","2.deploy\u002F20.providers\u002Fzeabur",{"title":219,"path":220,"stem":221},"Zephyr Cloud","\u002Fdeploy\u002Fproviders\u002Fzephyr","2.deploy\u002F20.providers\u002Fzephyr",{"title":223,"path":224,"stem":225},"Zerops","\u002Fdeploy\u002Fproviders\u002Fzerops","2.deploy\u002F20.providers\u002Fzerops",{"title":227,"path":228,"stem":229,"children":230,"icon":36},"Config","\u002Fconfig","3.config\u002F0.index",[231],{"title":227,"path":228,"stem":229,"icon":36},{"title":233,"path":234,"stem":235,"children":236,"icon":238},"Examples","\u002Fexamples","4.examples\u002F0.index",[237,239,244,249,254,259,263,268,273,278,283,288,293,297,302,306,310,315,320,325,330,335,340,345,350,355,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","\u002Fexamples\u002Fapi-routes","4.examples\u002Fapi-routes","i-lucide-route",{"title":245,"path":246,"stem":247,"icon":248},"Auto Imports","\u002Fexamples\u002Fauto-imports","4.examples\u002Fauto-imports","i-lucide-import",{"title":250,"path":251,"stem":252,"icon":253},"Cached Handler","\u002Fexamples\u002Fcached-handler","4.examples\u002Fcached-handler","i-lucide-clock",{"title":255,"path":256,"stem":257,"icon":258},"Custom Error Handler","\u002Fexamples\u002Fcustom-error-handler","4.examples\u002Fcustom-error-handler","i-lucide-alert-circle",{"title":38,"path":260,"stem":261,"icon":262},"\u002Fexamples\u002Fdatabase","4.examples\u002Fdatabase","i-lucide-database",{"title":264,"path":265,"stem":266,"icon":267},"Elysia","\u002Fexamples\u002Felysia","4.examples\u002Felysia","i-skill-icons-elysia-dark",{"title":269,"path":270,"stem":271,"icon":272},"Express","\u002Fexamples\u002Fexpress","4.examples\u002Fexpress","i-simple-icons-express",{"title":274,"path":275,"stem":276,"icon":277},"Fastify","\u002Fexamples\u002Ffastify","4.examples\u002Ffastify","i-simple-icons-fastify",{"title":279,"path":280,"stem":281,"icon":282},"Hello World","\u002Fexamples\u002Fhello-world","4.examples\u002Fhello-world","i-lucide-sparkles",{"title":284,"path":285,"stem":286,"icon":287},"Hono","\u002Fexamples\u002Fhono","4.examples\u002Fhono","i-logos-hono",{"title":289,"path":290,"stem":291,"icon":292},"Import Alias","\u002Fexamples\u002Fimport-alias","4.examples\u002Fimport-alias","i-lucide-at-sign",{"title":294,"path":295,"stem":296,"icon":46},"Middleware","\u002Fexamples\u002Fmiddleware","4.examples\u002Fmiddleware",{"title":298,"path":299,"stem":300,"icon":301},"Mono JSX","\u002Fexamples\u002Fmono-jsx","4.examples\u002Fmono-jsx","i-lucide-brackets",{"title":303,"path":304,"stem":305,"icon":301},"Nano JSX","\u002Fexamples\u002Fnano-jsx","4.examples\u002Fnano-jsx",{"title":53,"path":307,"stem":308,"icon":309},"\u002Fexamples\u002Fplugins","4.examples\u002Fplugins","i-lucide-plug",{"title":311,"path":312,"stem":313,"icon":314},"Custom Renderer","\u002Fexamples\u002Frenderer","4.examples\u002Frenderer","i-lucide-code",{"title":316,"path":317,"stem":318,"icon":319},"Runtime Config","\u002Fexamples\u002Fruntime-config","4.examples\u002Fruntime-config","i-lucide-settings",{"title":321,"path":322,"stem":323,"icon":324},"Server Fetch","\u002Fexamples\u002Fserver-fetch","4.examples\u002Fserver-fetch","i-lucide-arrow-right-left",{"title":326,"path":327,"stem":328,"icon":329},"Shiki","\u002Fexamples\u002Fshiki","4.examples\u002Fshiki","i-lucide-highlighter",{"title":331,"path":332,"stem":333,"icon":334},"Virtual Routes","\u002Fexamples\u002Fvirtual-routes","4.examples\u002Fvirtual-routes","i-lucide-box",{"title":336,"path":337,"stem":338,"icon":339},"Vite Nitro Plugin","\u002Fexamples\u002Fvite-nitro-plugin","4.examples\u002Fvite-nitro-plugin","i-logos-vitejs",{"title":341,"path":342,"stem":343,"icon":344},"Vite RSC","\u002Fexamples\u002Fvite-rsc","4.examples\u002Fvite-rsc","i-logos-react",{"title":346,"path":347,"stem":348,"icon":349},"Vite SSR HTML","\u002Fexamples\u002Fvite-ssr-html","4.examples\u002Fvite-ssr-html","i-logos-html-5",{"title":351,"path":352,"stem":353,"icon":354},"SSR with Preact","\u002Fexamples\u002Fvite-ssr-preact","4.examples\u002Fvite-ssr-preact","i-logos-preact",{"title":356,"path":357,"stem":358,"icon":344},"SSR with React","\u002Fexamples\u002Fvite-ssr-react","4.examples\u002Fvite-ssr-react",{"title":360,"path":361,"stem":362,"icon":363},"SSR with SolidJS","\u002Fexamples\u002Fvite-ssr-solid","4.examples\u002Fvite-ssr-solid","i-logos-solidjs-icon",{"title":365,"path":366,"stem":367,"icon":368},"SSR with TanStack Router","\u002Fexamples\u002Fvite-ssr-tsr-react","4.examples\u002Fvite-ssr-tsr-react","i-simple-icons-tanstack",{"title":370,"path":371,"stem":372,"icon":368},"SSR with TanStack Start","\u002Fexamples\u002Fvite-ssr-tss-react","4.examples\u002Fvite-ssr-tss-react",{"title":374,"path":375,"stem":376,"icon":377},"SSR with Vue Router","\u002Fexamples\u002Fvite-ssr-vue-router","4.examples\u002Fvite-ssr-vue-router","i-logos-vue",{"title":379,"path":380,"stem":381,"icon":382},"Vite + tRPC","\u002Fexamples\u002Fvite-trpc","4.examples\u002Fvite-trpc","i-simple-icons-trpc",{"title":63,"path":384,"stem":385,"icon":386},"\u002Fexamples\u002Fwebsocket","4.examples\u002Fwebsocket","i-lucide-radio",{"title":388,"path":389,"stem":390,"children":391},"Blog","\u002Fblog","9.blog",[392,395],{"title":388,"path":389,"stem":393,"icon":394},"9.blog\u002Findex","i-lucide-file-text",{"title":396,"path":397,"stem":398,"icon":394},"Nitro v3 Beta is here!","\u002Fblog\u002Fv3-beta","9.blog\u002F1.v3-beta",{"title":5,"path":400,"stem":401},"\u002F","index",{"id":403,"title":211,"body":404,"description":1972,"extension":1973,"meta":1974,"navigation":1975,"path":212,"seo":1976,"stem":213,"__hash__":1977},"content\u002F2.deploy\u002F20.providers\u002Fvercel.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:\u002F\u002Fvercel.com\u002Fdocs\u002Fframeworks",[425,426,427],"note",{},[408,428,429,430,435],{},"Integration with this provider is possible with ",[431,432,434],"a",{"href":433},"\u002Fdeploy\u002F#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:\u002F\u002Fvercel.com\u002Fdocs\u002Fdeployments\u002Fenvironments",[454],"nofollow","Preview deployments",[448,457,458],{},[431,459,462],{"href":460,"rel":461},"https:\u002F\u002Fvercel.com\u002Fdocs\u002Ffluid-compute",[454],"Fluid compute",[448,464,465],{},[431,466,469],{"href":467,"rel":468},"https:\u002F\u002Fvercel.com\u002Fdocs\u002Fobservability",[454],"Observability",[448,471,472],{},[431,473,476],{"href":474,"rel":475},"https:\u002F\u002Fvercel.com\u002Fdocs\u002Fvercel-firewall",[454],"Vercel Firewall",[408,478,479,480,435],{},"And much more. Learn more in ",[431,481,484],{"href":482,"rel":483},"https:\u002F\u002Fvercel.com\u002Fdocs",[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:\u002F\u002Fvercel.com\u002Fnew\u002Fclone?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],{},"\u002Fapi"," directory isn't compatible with Vercel. Instead, you should use:",[445,510,511],{},[448,512,513,516],{},[416,514,515],{},"routes\u002Fapi\u002F"," for standalone usage",[437,518,520],{"id":519},"bun-runtime","Bun runtime",[420,522],{"title":211,"to":523},"https:\u002F\u002Fvercel.com\u002Fdocs\u002Ffunctions\u002Fruntimes\u002Fbun",[408,525,526,527,531,532,535,536,539],{},"You can use ",[431,528,111],{"href":529,"rel":530},"https:\u002F\u002Fbun.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:\u002F\u002Fopenapi.vercel.sh\u002Fvercel.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:\u002F\u002Fopenapi.vercel.sh\u002Fvercel.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:\u002F\u002Fvercel.com\u002Fdocs\u002Fbuild-output-api\u002Fprimitives#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:\u002F\u002Fvercel.com\u002Fdocs\u002Fqueues",[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      \"\u002Fapi\u002Fheavy-computation\": {\n        maxDuration: 800,\n        memory: 4096,\n      },\n      \"\u002Fapi\u002Fregional\": {\n        regions: [\"lhr1\", \"cdg1\"],\n      },\n      \"\u002Fapi\u002Fqueues\u002Fprocess-order\": {\n        experimentalTriggers: [{ type: \"queue\u002Fv2beta\", 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},"      \"\u002Fapi\u002Fheavy-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},"      \"\u002Fapi\u002Fregional\"",[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},"      \"\u002Fapi\u002Fqueues\u002Fprocess-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\u002Fv2beta\"",[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:\u002F\u002Fgithub.com\u002Fh3js\u002Frou3",[454],"rou3"," matching (e.g., ",[416,865,866],{},"\u002Fapi\u002Fslow\u002F**"," matches all routes under ",[416,869,870],{},"\u002Fapi\u002Fslow\u002F",").",[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:\u002F\u002Fvercel.com\u002Fdocs\u002Frewrites",[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    \u002F\u002F Proxied at CDN level — no function invocation\n    \"\u002Fapi\u002F**\": {\n      proxy: \"https:\u002F\u002Fapi.example.com\u002F**\",\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","    \u002F\u002F Proxied at CDN level — no function invocation\n",[550,916,917,920],{"class":552,"line":583},[550,918,919],{"class":589},"    \"\u002Fapi\u002F**\"",[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:\u002F\u002Fapi.example.com\u002F**\"",[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:\u002F\u002F"," or ",[416,969,970],{},"https:\u002F\u002F",[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"," \u002F ",[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:\u002F\u002Fvercel.com\u002Fdocs\u002Fcron-jobs",[408,1048,1049,1050,1056,1057,1060,1061,1063],{},"Nitro automatically converts your ",[431,1051,1053],{"href":1052},"\u002Fdocs\u002Ftasks#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    \u002F\u002F Run `cms:update` every hour\n    '0 * * * *': ['cms:update'],\n    \u002F\u002F 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},"    \u002F\u002F 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},"    \u002F\u002F 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:\u002F\u002Fvercel.com\u002Fdocs\u002Fcron-jobs\u002Fmanage-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        \u002F\u002F 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},"        \u002F\u002F 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},"\u002Fguide\u002Fplugins","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\u002Fplugins\u002Fqueues.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\u002Ftask\";\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\u002Ftask\"",[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\u002Fqueue"," 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\u002Fqueue\";\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\u002Froutes\u002Fapi\u002Forders.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\u002Fqueue\"",[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:\u002F\u002Fvercel.com\u002Fdocs\u002Fbuild-output-api\u002Fv3",[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:\u002F\u002Fgenerate-secret.vercel.app\u002F32",[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],{},"\u002F**"," 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    \"\u002Fproducts\u002F**\": {\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},"    \"\u002Fproducts\u002F**\"",[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.",1776802471691]