[{"data":1,"prerenderedAt":1480},["ShallowReactive",2],{"navigation":3,"-deploy-providers-vercel":225,"-deploy-providers-vercel-surround":1475},[4,76,219],{"title":5,"path":6,"stem":7,"children":8,"icon":10},"Docs","/guide","1.guide/0.index",[9,11,16,21,26,31,36,41,46,51,56,61,66,71],{"title":5,"path":6,"stem":7,"icon":10},"ph:book-open-duotone",{"title":12,"path":13,"stem":14,"icon":15},"Server Utils","/guide/utils","1.guide/1.utils","ri:tools-line",{"title":17,"path":18,"stem":19,"icon":20},"Tasks","/guide/tasks","1.guide/10.tasks","codicon:run-all",{"title":22,"path":23,"stem":24,"icon":25},"Server Routes","/guide/routing","1.guide/2.routing","ri:direction-line",{"title":27,"path":28,"stem":29,"icon":30},"WebSocket","/guide/websocket","1.guide/3.websocket","cib:socket-io",{"title":32,"path":33,"stem":34,"icon":35},"KV Storage","/guide/storage","1.guide/4.storage","carbon:datastore",{"title":37,"path":38,"stem":39,"icon":40},"SQL Database","/guide/database","1.guide/5.database","ri:database-2-line",{"title":42,"path":43,"stem":44,"icon":45},"Cache","/guide/cache","1.guide/6.cache","ri:speed-line",{"title":47,"path":48,"stem":49,"icon":50},"Fetch","/guide/fetch","1.guide/7.fetch","ri:global-line",{"title":52,"path":53,"stem":54,"icon":55},"Assets","/guide/assets","1.guide/8.assets","ri:image-2-line",{"title":57,"path":58,"stem":59,"icon":60},"Plugins","/guide/plugins","1.guide/9.plugins","ri:plug-line",{"title":62,"path":63,"stem":64,"icon":65},"Configuration","/guide/configuration","1.guide/97.configuration","ri:settings-3-line",{"title":67,"path":68,"stem":69,"icon":70},"TypeScript","/guide/typescript","1.guide/98.typescript","tabler:brand-typescript",{"title":72,"path":73,"stem":74,"icon":75},"Nightly Channel","/guide/nightly","1.guide/99.nightly","ri:moon-fill",{"title":77,"path":78,"stem":79,"children":80,"icon":82},"Deploy","/deploy","2.deploy/0.index",[81,83,87,113,118],{"title":77,"path":78,"stem":79,"icon":82},"ri:upload-cloud-2-line",{"title":84,"path":85,"stem":86,"icon":50},"Edge Workers","/deploy/workers","2.deploy/1.workers",{"title":88,"path":89,"stem":90,"children":91,"page":112},"Runtimes","/deploy/runtimes","2.deploy/10.runtimes",[92,97,102,107],{"title":93,"path":94,"stem":95,"icon":96},"Node.js","/deploy/runtimes/node","2.deploy/10.runtimes/1.node","akar-icons:node-fill",{"title":98,"path":99,"stem":100,"icon":101},"WinterJS","/deploy/runtimes/_winterjs","2.deploy/10.runtimes/_winterjs","game-icons:cold-heart",{"title":103,"path":104,"stem":105,"icon":106},"Bun","/deploy/runtimes/bun","2.deploy/10.runtimes/bun","simple-icons:bun",{"title":108,"path":109,"stem":110,"icon":111},"Deno","/deploy/runtimes/deno","2.deploy/10.runtimes/deno","simple-icons:deno",false,{"title":114,"path":115,"stem":116,"icon":117},"Custom Preset","/deploy/custom-presets","2.deploy/2.custom-presets","ri:file-code-line",{"title":119,"path":120,"stem":121,"children":122,"page":112},"Providers","/deploy/providers","2.deploy/20.providers",[123,127,131,135,139,143,147,151,155,159,163,167,171,175,179,183,187,191,195,199,203,207,211,215],{"title":124,"path":125,"stem":126},"Alwaysdata","/deploy/providers/alwaysdata","2.deploy/20.providers/alwaysdata",{"title":128,"path":129,"stem":130},"AWS Lambda","/deploy/providers/aws","2.deploy/20.providers/aws",{"title":132,"path":133,"stem":134},"AWS Amplify","/deploy/providers/aws-amplify","2.deploy/20.providers/aws-amplify",{"title":136,"path":137,"stem":138},"Azure","/deploy/providers/azure","2.deploy/20.providers/azure",{"title":140,"path":141,"stem":142},"Cleavr","/deploy/providers/cleavr","2.deploy/20.providers/cleavr",{"title":144,"path":145,"stem":146},"Cloudflare","/deploy/providers/cloudflare","2.deploy/20.providers/cloudflare",{"title":148,"path":149,"stem":150},"Deno Deploy","/deploy/providers/deno-deploy","2.deploy/20.providers/deno-deploy",{"title":152,"path":153,"stem":154},"DigitalOcean","/deploy/providers/digitalocean","2.deploy/20.providers/digitalocean",{"title":156,"path":157,"stem":158},"Edgio","/deploy/providers/edgio","2.deploy/20.providers/edgio",{"title":160,"path":161,"stem":162},"Firebase","/deploy/providers/firebase","2.deploy/20.providers/firebase",{"title":164,"path":165,"stem":166},"Flightcontrol","/deploy/providers/flightcontrol","2.deploy/20.providers/flightcontrol",{"title":168,"path":169,"stem":170},"Genezio","/deploy/providers/genezio","2.deploy/20.providers/genezio",{"title":172,"path":173,"stem":174},"GitHub Pages","/deploy/providers/github-pages","2.deploy/20.providers/github-pages",{"title":176,"path":177,"stem":178},"GitLab Pages","/deploy/providers/gitlab-pages","2.deploy/20.providers/gitlab-pages",{"title":180,"path":181,"stem":182},"Heroku","/deploy/providers/heroku","2.deploy/20.providers/heroku",{"title":184,"path":185,"stem":186},"IIS","/deploy/providers/iis","2.deploy/20.providers/iis",{"title":188,"path":189,"stem":190},"Koyeb","/deploy/providers/koyeb","2.deploy/20.providers/koyeb",{"title":192,"path":193,"stem":194},"Netlify","/deploy/providers/netlify","2.deploy/20.providers/netlify",{"title":196,"path":197,"stem":198},"Platform.sh","/deploy/providers/platform-sh","2.deploy/20.providers/platform-sh",{"title":200,"path":201,"stem":202},"Render.com","/deploy/providers/render","2.deploy/20.providers/render",{"title":204,"path":205,"stem":206},"StormKit","/deploy/providers/stormkit","2.deploy/20.providers/stormkit",{"title":208,"path":209,"stem":210},"Vercel","/deploy/providers/vercel","2.deploy/20.providers/vercel",{"title":212,"path":213,"stem":214},"Zeabur","/deploy/providers/zeabur","2.deploy/20.providers/zeabur",{"title":216,"path":217,"stem":218},"Zerops","/deploy/providers/zerops","2.deploy/20.providers/zerops",{"title":220,"path":221,"stem":222,"children":223,"icon":65},"Config","/config","3.config/0.index",[224],{"title":220,"path":221,"stem":222,"icon":65},{"id":226,"title":208,"body":227,"description":1469,"extension":1470,"meta":1471,"navigation":1472,"path":209,"seo":1473,"stem":210,"__hash__":1474},"content/2.deploy/20.providers/vercel.md",{"type":228,"value":229,"toc":1451},"minimark",[230,242,247,259,264,267,300,308,313,321,324,333,340,427,439,443,446,462,513,523,565,569,573,584,674,690,694,704,817,821,827,948,952,957,1065,1069,1091,1098,1102,1117,1121,1124,1127,1258,1262,1265,1272,1350,1428,1432,1440,1447],[231,232,233,237,238],"p",{},[234,235,236],"strong",{},"Preset:"," ",[239,240,241],"code",{},"vercel",[243,244],"read-more",{"title":245,"to":246},"Vercel Framework Support","https://vercel.com/docs/frameworks",[248,249,250],"note",{},[231,251,252,253,258],{},"Integration with this provider is possible with ",[254,255,257],"a",{"href":256},"/deploy/#zero-config-providers","zero configuration",".",[260,261,263],"h2",{"id":262},"getting-started","Getting started",[231,265,266],{},"Deploying to Vercel comes with the following features:",[268,269,270,279,286,293],"ul",{},[271,272,273],"li",{},[254,274,278],{"href":275,"rel":276},"https://vercel.com/docs/deployments/environments",[277],"nofollow","Preview deployments",[271,280,281],{},[254,282,285],{"href":283,"rel":284},"https://vercel.com/docs/fluid-compute",[277],"Fluid compute",[271,287,288],{},[254,289,292],{"href":290,"rel":291},"https://vercel.com/docs/observability",[277],"Observability",[271,294,295],{},[254,296,299],{"href":297,"rel":298},"https://vercel.com/docs/vercel-firewall",[277],"Vercel Firewall",[231,301,302,303,258],{},"And much more. Learn more in ",[254,304,307],{"href":305,"rel":306},"https://vercel.com/docs",[277],"the Vercel documentation",[309,310,312],"h3",{"id":311},"deploy-with-git","Deploy with Git",[231,314,315,316,258],{},"Vercel supports Nitro with zero-configuration. ",[254,317,320],{"href":318,"rel":319},"https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fvercel%2Fvercel%2Ftree%2Fmain%2Fexamples%2Fnitro",[277],"Deploy Nitro to Vercel now",[260,322,292],{"id":323},"observability",[231,325,326,327,332],{},"Nitro (>=2.12) generates routing hints for ",[254,328,331],{"href":329,"rel":330},"https://vercel.com/docs/observability/insights#vercel-functions",[277],"functions observability insights",", providing a detailed view of performance broken down by route.",[231,334,335,336,339],{},"To enable this feature, ensure you are using a compatibility date of ",[239,337,338],{},"2025-07-15"," or later.",[341,342,343,396],"CodeGroup",{},[344,345,351],"pre",{"className":346,"code":347,"filename":348,"language":349,"meta":350,"style":350},"language-ts shiki shiki-themes github-light github-dark github-dark","export default defineNitroConfig({\n    compatibilityDate: \"2025-07-15\", // or \"latest\"\n})\n","nitro.config.ts","ts","",[239,352,353,373,390],{"__ignoreMap":350},[354,355,358,362,365,369],"span",{"class":356,"line":357},"line",1,[354,359,361],{"class":360},"so5gQ","export",[354,363,364],{"class":360}," default",[354,366,368],{"class":367},"shcOC"," defineNitroConfig",[354,370,372],{"class":371},"slsVL","({\n",[354,374,376,379,383,386],{"class":356,"line":375},2,[354,377,378],{"class":371},"    compatibilityDate: ",[354,380,382],{"class":381},"sfrk1","\"2025-07-15\"",[354,384,385],{"class":371},", ",[354,387,389],{"class":388},"sCsY4","// or \"latest\"\n",[354,391,393],{"class":356,"line":392},3,[354,394,395],{"class":371},"})\n",[344,397,400],{"className":346,"code":398,"filename":399,"language":349,"meta":350,"style":350},"export default defineNuxtConfig({\n    compatibilityDate: \"2025-07-15\", // or \"latest\"\n})\n","nuxt.config.ts",[239,401,402,413,423],{"__ignoreMap":350},[354,403,404,406,408,411],{"class":356,"line":357},[354,405,361],{"class":360},[354,407,364],{"class":360},[354,409,410],{"class":367}," defineNuxtConfig",[354,412,372],{"class":371},[354,414,415,417,419,421],{"class":356,"line":375},[354,416,378],{"class":371},[354,418,382],{"class":381},[354,420,385],{"class":371},[354,422,389],{"class":388},[354,424,425],{"class":356,"line":392},[354,426,395],{"class":371},[231,428,429,430,433,434,258],{},"Framework integrations can use the ",[239,431,432],{},"ssrRoutes"," configuration to declare SSR routes. For more information, see ",[254,435,438],{"href":436,"rel":437},"https://github.com/nitrojs/nitro/pull/3475",[277],"#3475",[260,440,442],{"id":441},"bun-runtime","Bun runtime",[243,444],{"title":208,"to":445},"https://vercel.com/docs/functions/runtimes/bun",[231,447,448,449,453,454,457,458,461],{},"You can use ",[254,450,103],{"href":451,"rel":452},"https://bun.com",[277]," instead of Node.js by specifying the runtime using the ",[239,455,456],{},"vercel.functions"," key inside ",[239,459,460],{},"nitro.config",":",[344,463,465],{"className":346,"code":464,"filename":348,"language":349,"meta":350,"style":350},"export default defineNitroConfig({\n  vercel: {\n    functions: {\n      runtime: \"bun1.x\"\n    }\n  }\n})\n",[239,466,467,477,482,487,496,502,508],{"__ignoreMap":350},[354,468,469,471,473,475],{"class":356,"line":357},[354,470,361],{"class":360},[354,472,364],{"class":360},[354,474,368],{"class":367},[354,476,372],{"class":371},[354,478,479],{"class":356,"line":375},[354,480,481],{"class":371},"  vercel: {\n",[354,483,484],{"class":356,"line":392},[354,485,486],{"class":371},"    functions: {\n",[354,488,490,493],{"class":356,"line":489},4,[354,491,492],{"class":371},"      runtime: ",[354,494,495],{"class":381},"\"bun1.x\"\n",[354,497,499],{"class":356,"line":498},5,[354,500,501],{"class":371},"    }\n",[354,503,505],{"class":356,"line":504},6,[354,506,507],{"class":371},"  }\n",[354,509,511],{"class":356,"line":510},7,[354,512,395],{"class":371},[231,514,515,516,519,520,461],{},"Alternatively, Nitro also detects Bun automatically if you specify a ",[239,517,518],{},"bunVersion"," property in your ",[239,521,522],{},"vercel.json",[344,524,528],{"className":525,"code":526,"filename":522,"language":527,"meta":350,"style":350},"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",[239,529,530,535,550,560],{"__ignoreMap":350},[354,531,532],{"class":356,"line":357},[354,533,534],{"class":371},"{\n",[354,536,537,541,544,547],{"class":356,"line":375},[354,538,540],{"class":539},"suiK_","  \"$schema\"",[354,542,543],{"class":371},": ",[354,545,546],{"class":381},"\"https://openapi.vercel.sh/vercel.json\"",[354,548,549],{"class":371},",\n",[354,551,552,555,557],{"class":356,"line":392},[354,553,554],{"class":539},"  \"bunVersion\"",[354,556,543],{"class":371},[354,558,559],{"class":381},"\"1.x\"\n",[354,561,562],{"class":356,"line":489},[354,563,564],{"class":371},"}\n",[260,566,568],{"id":567},"queues","Queues",[243,570],{"title":571,"to":572},"Vercel Queues","https://vercel.com/docs/queues",[231,574,575,576,579,580,583],{},"Nitro integrates with ",[254,577,571],{"href":572,"rel":578},[277]," to process messages asynchronously. Define your queue topics in the Nitro config and handle incoming messages with the ",[239,581,582],{},"vercel:queue"," runtime hook.",[344,585,587],{"className":346,"code":586,"filename":348,"language":349,"meta":350,"style":350},"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",[239,588,589,599,603,608,613,618,629,650,656,662,668],{"__ignoreMap":350},[354,590,591,593,595,597],{"class":356,"line":357},[354,592,361],{"class":360},[354,594,364],{"class":360},[354,596,368],{"class":367},[354,598,372],{"class":371},[354,600,601],{"class":356,"line":375},[354,602,481],{"class":371},[354,604,605],{"class":356,"line":392},[354,606,607],{"class":371},"    queues: {\n",[354,609,610],{"class":356,"line":489},[354,611,612],{"class":371},"      triggers: [\n",[354,614,615],{"class":356,"line":498},[354,616,617],{"class":388},"        // Only `topic` is required\n",[354,619,620,623,626],{"class":356,"line":504},[354,621,622],{"class":371},"        { topic: ",[354,624,625],{"class":381},"\"notifications\"",[354,627,628],{"class":371}," },\n",[354,630,631,633,636,639,642,645,648],{"class":356,"line":510},[354,632,622],{"class":371},[354,634,635],{"class":381},"\"orders\"",[354,637,638],{"class":371},", retryAfterSeconds: ",[354,640,641],{"class":539},"60",[354,643,644],{"class":371},", initialDelaySeconds: ",[354,646,647],{"class":539},"5",[354,649,628],{"class":371},[354,651,653],{"class":356,"line":652},8,[354,654,655],{"class":371},"      ],\n",[354,657,659],{"class":356,"line":658},9,[354,660,661],{"class":371},"    },\n",[354,663,665],{"class":356,"line":664},10,[354,666,667],{"class":371},"  },\n",[354,669,671],{"class":356,"line":670},11,[354,672,673],{"class":371},"});\n",[248,675,676],{},[231,677,678,679,686,687,689],{},"The ",[254,680,683],{"href":681,"rel":682},"https://www.npmjs.com/package/@vercel/queue",[277],[239,684,685],{},"@vercel/queue"," package is required when using queues. Install it in your project with your package manager. Local development requires ",[239,688,685],{}," v0.2.0 or newer.",[309,691,693],{"id":692},"handling-messages","Handling messages",[231,695,696,697,699,700,703],{},"Use the ",[239,698,582],{}," hook in a ",[254,701,702],{"href":58},"Nitro plugin"," to process incoming queue messages:",[344,705,708],{"className":346,"code":706,"filename":707,"language":349,"meta":350,"style":350},"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",[239,709,710,735,772,808,813],{"__ignoreMap":350},[354,711,712,714,716,719,722,726,729,732],{"class":356,"line":357},[354,713,361],{"class":360},[354,715,364],{"class":360},[354,717,718],{"class":367}," defineNitroPlugin",[354,720,721],{"class":371},"((",[354,723,725],{"class":724},"sQHwn","nitro",[354,727,728],{"class":371},") ",[354,730,731],{"class":360},"=>",[354,733,734],{"class":371}," {\n",[354,736,737,740,743,746,749,752,755,757,760,762,765,768,770],{"class":356,"line":375},[354,738,739],{"class":371},"  nitro.hooks.",[354,741,742],{"class":367},"hook",[354,744,745],{"class":371},"(",[354,747,748],{"class":381},"\"vercel:queue\"",[354,750,751],{"class":371},", ({ ",[354,753,754],{"class":724},"message",[354,756,385],{"class":371},[354,758,759],{"class":724},"metadata",[354,761,385],{"class":371},[354,763,764],{"class":724},"send",[354,766,767],{"class":371}," }) ",[354,769,731],{"class":360},[354,771,734],{"class":371},[354,773,774,777,780,782,785,787,789,792,795,797,799,802,805],{"class":356,"line":392},[354,775,776],{"class":371},"    console.",[354,778,779],{"class":367},"log",[354,781,745],{"class":371},[354,783,784],{"class":381},"`[${",[354,786,759],{"class":371},[354,788,258],{"class":381},[354,790,791],{"class":371},"topicName",[354,793,794],{"class":381},"}] Message ${",[354,796,759],{"class":371},[354,798,258],{"class":381},[354,800,801],{"class":371},"messageId",[354,803,804],{"class":381},"}:`",[354,806,807],{"class":371},", message);\n",[354,809,810],{"class":356,"line":489},[354,811,812],{"class":371},"  });\n",[354,814,815],{"class":356,"line":498},[354,816,673],{"class":371},[309,818,820],{"id":819},"running-tasks-from-queue-messages","Running tasks from queue messages",[231,822,823,824,461],{},"You can use queue messages to trigger ",[254,825,826],{"href":18},"Nitro tasks",[344,828,830],{"className":346,"code":829,"filename":707,"language":349,"meta":350,"style":350},"import { runTask } from \"nitropack/runtime\";\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",[239,831,832,849,855,873,903,920,936,940,944],{"__ignoreMap":350},[354,833,834,837,840,843,846],{"class":356,"line":357},[354,835,836],{"class":360},"import",[354,838,839],{"class":371}," { runTask } ",[354,841,842],{"class":360},"from",[354,844,845],{"class":381}," \"nitropack/runtime\"",[354,847,848],{"class":371},";\n",[354,850,851],{"class":356,"line":375},[354,852,854],{"emptyLinePlaceholder":853},true,"\n",[354,856,857,859,861,863,865,867,869,871],{"class":356,"line":392},[354,858,361],{"class":360},[354,860,364],{"class":360},[354,862,718],{"class":367},[354,864,721],{"class":371},[354,866,725],{"class":724},[354,868,728],{"class":371},[354,870,731],{"class":360},[354,872,734],{"class":371},[354,874,875,877,879,881,883,885,888,891,893,895,897,899,901],{"class":356,"line":489},[354,876,739],{"class":371},[354,878,742],{"class":367},[354,880,745],{"class":371},[354,882,748],{"class":381},[354,884,385],{"class":371},[354,886,887],{"class":360},"async",[354,889,890],{"class":371}," ({ ",[354,892,754],{"class":724},[354,894,385],{"class":371},[354,896,759],{"class":724},[354,898,767],{"class":371},[354,900,731],{"class":360},[354,902,734],{"class":371},[354,904,905,908,911,914,917],{"class":356,"line":498},[354,906,907],{"class":360},"    if",[354,909,910],{"class":371}," (metadata.topicName ",[354,912,913],{"class":360},"===",[354,915,916],{"class":381}," \"orders\"",[354,918,919],{"class":371},") {\n",[354,921,922,925,928,930,933],{"class":356,"line":504},[354,923,924],{"class":360},"      await",[354,926,927],{"class":367}," runTask",[354,929,745],{"class":371},[354,931,932],{"class":381},"\"orders:fulfill\"",[354,934,935],{"class":371},", { payload: message });\n",[354,937,938],{"class":356,"line":510},[354,939,501],{"class":371},[354,941,942],{"class":356,"line":652},[354,943,812],{"class":371},[354,945,946],{"class":356,"line":658},[354,947,673],{"class":371},[309,949,951],{"id":950},"sending-messages","Sending messages",[231,953,696,954,956],{},[239,955,685],{}," package directly to send messages to a topic:",[344,958,961],{"className":346,"code":959,"filename":960,"language":349,"meta":350,"style":350},"import { send } from \"@vercel/queue\";\n\nexport default defineEventHandler(async (event) => {\n  const order = await readBody(event);\n  const { messageId } = await send(\"orders\", order);\n  return { messageId };\n});\n","server/routes/api/orders.post.ts",[239,962,963,977,981,1006,1026,1053,1061],{"__ignoreMap":350},[354,964,965,967,970,972,975],{"class":356,"line":357},[354,966,836],{"class":360},[354,968,969],{"class":371}," { send } ",[354,971,842],{"class":360},[354,973,974],{"class":381}," \"@vercel/queue\"",[354,976,848],{"class":371},[354,978,979],{"class":356,"line":375},[354,980,854],{"emptyLinePlaceholder":853},[354,982,983,985,987,990,992,994,997,1000,1002,1004],{"class":356,"line":392},[354,984,361],{"class":360},[354,986,364],{"class":360},[354,988,989],{"class":367}," defineEventHandler",[354,991,745],{"class":371},[354,993,887],{"class":360},[354,995,996],{"class":371}," (",[354,998,999],{"class":724},"event",[354,1001,728],{"class":371},[354,1003,731],{"class":360},[354,1005,734],{"class":371},[354,1007,1008,1011,1014,1017,1020,1023],{"class":356,"line":489},[354,1009,1010],{"class":360},"  const",[354,1012,1013],{"class":539}," order",[354,1015,1016],{"class":360}," =",[354,1018,1019],{"class":360}," await",[354,1021,1022],{"class":367}," readBody",[354,1024,1025],{"class":371},"(event);\n",[354,1027,1028,1030,1033,1035,1038,1041,1043,1046,1048,1050],{"class":356,"line":498},[354,1029,1010],{"class":360},[354,1031,1032],{"class":371}," { ",[354,1034,801],{"class":539},[354,1036,1037],{"class":371}," } ",[354,1039,1040],{"class":360},"=",[354,1042,1019],{"class":360},[354,1044,1045],{"class":367}," send",[354,1047,745],{"class":371},[354,1049,635],{"class":381},[354,1051,1052],{"class":371},", order);\n",[354,1054,1055,1058],{"class":356,"line":504},[354,1056,1057],{"class":360},"  return",[354,1059,1060],{"class":371}," { messageId };\n",[354,1062,1063],{"class":356,"line":510},[354,1064,673],{"class":371},[309,1066,1068],{"id":1067},"local-development","Local development",[231,1070,1071,1072,1075,1076,1079,1080,1082,1083,1086,1087,1090],{},"Queues work in ",[239,1073,1074],{},"nitro dev"," — ",[239,1077,1078],{},"send()"," delivers messages straight to your ",[239,1081,582],{}," hook, so you can iterate without deploying. Pull your Vercel environment first with ",[239,1084,1085],{},"vercel link"," and ",[239,1088,1089],{},"vercel env pull"," so the SDK can authenticate.",[231,1092,1093,1094,1097],{},"If your hook throws, the message is retried locally. Retries honour ",[239,1095,1096],{},"retryAfterSeconds"," from each trigger when set.",[260,1099,1101],{"id":1100},"custom-build-output-configuration","Custom build output configuration",[231,1103,1104,1105,1110,1111,457,1114,1116],{},"You can provide additional ",[254,1106,1109],{"href":1107,"rel":1108},"https://vercel.com/docs/build-output-api/v3",[277],"build output configuration"," using ",[239,1112,1113],{},"vercel.config",[239,1115,460],{},". It will be merged with built-in auto-generated config.",[260,1118,1120],{"id":1119},"on-demand-incremental-static-regeneration-isr","On-Demand incremental static regeneration (ISR)",[231,1122,1123],{},"On-demand revalidation allows you to purge the cache for an ISR route whenever you want, foregoing the time interval required with background revalidation.",[231,1125,1126],{},"To revalidate a page on demand:",[268,1128,1129,1147,1251],{},[271,1130,1131,1132],{},"Create an Environment Variable which will store a revalidation secret",[268,1133,1134],{},[271,1135,1136,1137,1140,1141,1146],{},"You can use the command ",[239,1138,1139],{},"openssl rand -base64 32"," or ",[254,1142,1145],{"href":1143,"rel":1144},"https://generate-secret.vercel.app/32",[277],"Generate a Secret"," to generate a random value.",[271,1148,1149,1150],{},"Update your configuration:",[1151,1152,1153,1197],"code-group",{},[344,1154,1156],{"className":346,"code":1155,"filename":348,"language":349,"meta":350,"style":350},"export default defineNitroConfig({\n  vercel: {\n    config: {\n      bypassToken: process.env.VERCEL_BYPASS_TOKEN\n    }\n  }\n})\n",[239,1157,1158,1168,1172,1177,1185,1189,1193],{"__ignoreMap":350},[354,1159,1160,1162,1164,1166],{"class":356,"line":357},[354,1161,361],{"class":360},[354,1163,364],{"class":360},[354,1165,368],{"class":367},[354,1167,372],{"class":371},[354,1169,1170],{"class":356,"line":375},[354,1171,481],{"class":371},[354,1173,1174],{"class":356,"line":392},[354,1175,1176],{"class":371},"    config: {\n",[354,1178,1179,1182],{"class":356,"line":489},[354,1180,1181],{"class":371},"      bypassToken: process.env.",[354,1183,1184],{"class":539},"VERCEL_BYPASS_TOKEN\n",[354,1186,1187],{"class":356,"line":498},[354,1188,501],{"class":371},[354,1190,1191],{"class":356,"line":504},[354,1192,507],{"class":371},[354,1194,1195],{"class":356,"line":510},[354,1196,395],{"class":371},[344,1198,1200],{"className":346,"code":1199,"filename":399,"language":349,"meta":350,"style":350},"export default defineNuxtConfig({\n  nitro: {\n    vercel: {\n      config: {\n        bypassToken: process.env.VERCEL_BYPASS_TOKEN\n      }\n    }\n  }\n})\n",[239,1201,1202,1212,1217,1222,1227,1234,1239,1243,1247],{"__ignoreMap":350},[354,1203,1204,1206,1208,1210],{"class":356,"line":357},[354,1205,361],{"class":360},[354,1207,364],{"class":360},[354,1209,410],{"class":367},[354,1211,372],{"class":371},[354,1213,1214],{"class":356,"line":375},[354,1215,1216],{"class":371},"  nitro: {\n",[354,1218,1219],{"class":356,"line":392},[354,1220,1221],{"class":371},"    vercel: {\n",[354,1223,1224],{"class":356,"line":489},[354,1225,1226],{"class":371},"      config: {\n",[354,1228,1229,1232],{"class":356,"line":498},[354,1230,1231],{"class":371},"        bypassToken: process.env.",[354,1233,1184],{"class":539},[354,1235,1236],{"class":356,"line":504},[354,1237,1238],{"class":371},"      }\n",[354,1240,1241],{"class":356,"line":510},[354,1242,501],{"class":371},[354,1244,1245],{"class":356,"line":652},[354,1246,507],{"class":371},[354,1248,1249],{"class":356,"line":658},[354,1250,395],{"class":371},[271,1252,1253,1254,1257],{},"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: ",[239,1255,1256],{},"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.",[309,1259,1261],{"id":1260},"fine-grained-isr-config-via-route-rules","Fine-grained ISR config via route rules",[231,1263,1264],{},"By default, query paramas are ignored by cache.",[231,1266,1267,1268,1271],{},"You can pass an options object to ",[239,1269,1270],{},"isr"," route rule to configure caching behavior.",[268,1273,1274,1288,1294,1323,1340],{},[271,1275,1276,1279,1280,1283,1284,1287],{},[239,1277,1278],{},"expiration",": Expiration time (in seconds) before the cached asset will be re-generated by invoking the Serverless Function. Setting the value to ",[239,1281,1282],{},"false"," (or ",[239,1285,1286],{},"isr: true"," route rule) means it will never expire.",[271,1289,1290,1293],{},[239,1291,1292],{},"group",": Group number of the asset. Prerender assets with the same group number will all be re-validated at the same time.",[271,1295,1296,1299,1300],{},[239,1297,1298],{},"allowQuery",": List of query string parameter names that will be cached independently.\n",[268,1301,1302,1305,1312],{},[271,1303,1304],{},"If an empty array, query values are not considered for caching.",[271,1306,1307,1308,1311],{},"If ",[239,1309,1310],{},"undefined"," each unique query value is cached independently.",[271,1313,1314,1315,1318,1319,1322],{},"For wildcard ",[239,1316,1317],{},"/**"," route rules, ",[239,1320,1321],{},"url"," is always added",[271,1324,1325,1328,1329,1332,1333,1336,1337,1339],{},[239,1326,1327],{},"passQuery",": When ",[239,1330,1331],{},"true",", the query string will be present on the ",[239,1334,1335],{},"request"," argument passed to the invoked function. The ",[239,1338,1298],{}," filter still applies.",[271,1341,1342,1328,1345,1347,1348],{},[239,1343,1344],{},"exposeErrBody",[239,1346,1331],{},", expose the response body regardless of status code including error status codes. (default ",[239,1349,1282],{},[344,1351,1353],{"className":346,"code":1352,"language":349,"meta":350,"style":350},"export default defineNitroConfig({\n  routeRules: {\n    \"/products/**\": {\n      isr: {\n        allowQuery: [\"q\"],\n        passQuery: true,\n        exposeErrBody: true\n      },\n    },\n  },\n});\n",[239,1354,1355,1365,1370,1378,1383,1394,1403,1411,1416,1420,1424],{"__ignoreMap":350},[354,1356,1357,1359,1361,1363],{"class":356,"line":357},[354,1358,361],{"class":360},[354,1360,364],{"class":360},[354,1362,368],{"class":367},[354,1364,372],{"class":371},[354,1366,1367],{"class":356,"line":375},[354,1368,1369],{"class":371},"  routeRules: {\n",[354,1371,1372,1375],{"class":356,"line":392},[354,1373,1374],{"class":381},"    \"/products/**\"",[354,1376,1377],{"class":371},": {\n",[354,1379,1380],{"class":356,"line":489},[354,1381,1382],{"class":371},"      isr: {\n",[354,1384,1385,1388,1391],{"class":356,"line":498},[354,1386,1387],{"class":371},"        allowQuery: [",[354,1389,1390],{"class":381},"\"q\"",[354,1392,1393],{"class":371},"],\n",[354,1395,1396,1399,1401],{"class":356,"line":504},[354,1397,1398],{"class":371},"        passQuery: ",[354,1400,1331],{"class":539},[354,1402,549],{"class":371},[354,1404,1405,1408],{"class":356,"line":510},[354,1406,1407],{"class":371},"        exposeErrBody: ",[354,1409,1410],{"class":539},"true\n",[354,1412,1413],{"class":356,"line":652},[354,1414,1415],{"class":371},"      },\n",[354,1417,1418],{"class":356,"line":658},[354,1419,661],{"class":371},[354,1421,1422],{"class":356,"line":664},[354,1423,667],{"class":371},[354,1425,1426],{"class":356,"line":670},[354,1427,673],{"class":371},[260,1429,1431],{"id":1430},"vercel-edge-functions","Vercel edge functions",[231,1433,1434,237,1436,1439],{},[234,1435,236],{},[239,1437,1438],{},"vercel_edge"," (deprecated)",[231,1441,1442,1443,258],{},"We recommend migrating to the default Node.js runtime and enabling ",[254,1444,285],{"href":1445,"rel":1446},"https://vercel.com/docs/functions/fluid-compute",[277],[1448,1449,1450],"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 pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}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 .sQHwn, html code.shiki .sQHwn{--shiki-light:#E36209;--shiki-default:#FFAB70;--shiki-dark:#FFAB70}",{"title":350,"searchDepth":375,"depth":375,"links":1452},[1453,1456,1457,1458,1464,1465,1468],{"id":262,"depth":375,"text":263,"children":1454},[1455],{"id":311,"depth":392,"text":312},{"id":323,"depth":375,"text":292},{"id":441,"depth":375,"text":442},{"id":567,"depth":375,"text":568,"children":1459},[1460,1461,1462,1463],{"id":692,"depth":392,"text":693},{"id":819,"depth":392,"text":820},{"id":950,"depth":392,"text":951},{"id":1067,"depth":392,"text":1068},{"id":1100,"depth":375,"text":1101},{"id":1119,"depth":375,"text":1120,"children":1466},[1467],{"id":1260,"depth":392,"text":1261},{"id":1430,"depth":375,"text":1431},"Deploy Nitro apps to Vercel.","md",{},{},{"title":208,"description":1469},"K57im-SUH5zP4R549uo-x_IlaeVC4lPEloy0YJld5EE",[1476,1478],{"title":204,"path":205,"stem":206,"description":1477,"children":-1},"Deploy Nitro apps to StormKit.",{"title":212,"path":213,"stem":214,"description":1479,"children":-1},"Deploy Nitro apps to Zeabur.",1781200237525]