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