[{"data":1,"prerenderedAt":1028},["ShallowReactive",2],{"navigation":3,"-guide-utils":225,"-guide-utils-surround":1024},[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":12,"body":227,"description":1018,"extension":1019,"meta":1020,"navigation":1021,"path":13,"seo":1022,"stem":14,"__hash__":1023},"content/1.guide/1.utils.md",{"type":228,"value":229,"toc":1008,"icon":15},"minimark",[230,235,252,256,273,277,285,295,310,373,380,450,454,457,599,610,626,630,637,644,653,676,680,695,709,716,810,817,1004],[231,232,234],"h2",{"id":233},"auto-imports","Auto imports",[236,237,238,239,243,244,251],"p",{},"When reading the rest of the docs, you might notice that there are no ",[240,241,242],"code",{},"imports"," in examples for using utilities.\nIt is because Nitro uses ",[245,246,250],"a",{"href":247,"rel":248},"https://github.com/unjs/unimport",[249],"nofollow","unimport"," to auto import utilities when used with full tree-shaking support so you don't have to!",[231,253,255],{"id":254},"h3-utils","H3 utils",[236,257,258,259,264,265,268,269,272],{},"Nitro enables all ",[245,260,263],{"href":261,"rel":262},"https://v1.h3.dev/utils",[249],"h3 utils"," as auto imports so you can use ",[240,266,267],{},"defineEventHandler",", ",[240,270,271],{},"readBody",", etc. without manually importing them.",[274,275],"read-more",{"to":261,"title":276},"H3 Docs",[278,279,281,284],"h3",{"id":280},"utils-directory",[240,282,283],{},"utils"," directory",[236,286,287,288,291,292,294],{},"You can add your application specific utils inside ",[240,289,290],{},"server/utils/"," directory and they will be auto-imported when used.\nEvery export in the ",[240,293,283],{}," directory and its subdirectories will become available globally in your application.",[236,296,297,301,302,305,306,309],{},[298,299,300],"strong",{},"Example:"," Create a ",[240,303,304],{},"server/utils/sum.ts"," file where a function ",[240,307,308],{},"useSum"," is exported:",[311,312,317],"pre",{"className":313,"code":314,"filename":304,"language":315,"meta":316,"style":316},"language-ts shiki shiki-themes github-light github-dark github-dark","export function useSum(a: number, b: number) { return a + b }\n","ts","",[240,318,319],{"__ignoreMap":316},[320,321,324,328,331,335,339,342,345,349,351,354,356,358,361,364,367,370],"span",{"class":322,"line":323},"line",1,[320,325,327],{"class":326},"so5gQ","export",[320,329,330],{"class":326}," function",[320,332,334],{"class":333},"shcOC"," useSum",[320,336,338],{"class":337},"slsVL","(",[320,340,245],{"class":341},"sQHwn",[320,343,344],{"class":326},":",[320,346,348],{"class":347},"suiK_"," number",[320,350,268],{"class":337},[320,352,353],{"class":341},"b",[320,355,344],{"class":326},[320,357,348],{"class":347},[320,359,360],{"class":337},") { ",[320,362,363],{"class":326},"return",[320,365,366],{"class":337}," a ",[320,368,369],{"class":326},"+",[320,371,372],{"class":337}," b }\n",[236,374,375,376,379],{},"Use it in your ",[240,377,378],{},"server/routes/index.ts"," file without importing it:",[311,381,383],{"className":313,"code":382,"filename":378,"language":315,"meta":316,"style":316},"export default defineEventHandler(() => {\n  const sum = useSum(1, 2) // auto-imported\n  return { sum }\n})\n",[240,384,385,404,435,444],{"__ignoreMap":316},[320,386,387,389,392,395,398,401],{"class":322,"line":323},[320,388,327],{"class":326},[320,390,391],{"class":326}," default",[320,393,394],{"class":333}," defineEventHandler",[320,396,397],{"class":337},"(() ",[320,399,400],{"class":326},"=>",[320,402,403],{"class":337}," {\n",[320,405,407,410,413,416,418,420,423,425,428,431],{"class":322,"line":406},2,[320,408,409],{"class":326},"  const",[320,411,412],{"class":347}," sum",[320,414,415],{"class":326}," =",[320,417,334],{"class":333},[320,419,338],{"class":337},[320,421,422],{"class":347},"1",[320,424,268],{"class":337},[320,426,427],{"class":347},"2",[320,429,430],{"class":337},") ",[320,432,434],{"class":433},"sCsY4","// auto-imported\n",[320,436,438,441],{"class":322,"line":437},3,[320,439,440],{"class":326},"  return",[320,442,443],{"class":337}," { sum }\n",[320,445,447],{"class":322,"line":446},4,[320,448,449],{"class":337},"})\n",[231,451,453],{"id":452},"nitro-utils","Nitro utils",[236,455,456],{},"Nitro also exposes several built-in utils:",[458,459,460,479,496,506,517,533,546,560,570,580,589],"ul",{},[461,462,463,471,472],"li",{},[240,464,465,468],{"className":313,"language":315,"style":316},[320,466,467],{"class":333},"defineCachedFunction",[320,469,470],{"class":337},"(fn, options)"," / ",[240,473,474,477],{"className":313,"language":315,"style":316},[320,475,476],{"class":333},"cachedFunction",[320,478,470],{"class":337},[461,480,481,471,489],{},[240,482,483,486],{"className":313,"language":315,"style":316},[320,484,485],{"class":333},"defineCachedEventHandler",[320,487,488],{"class":337},"(handler, options)",[240,490,491,494],{"className":313,"language":315,"style":316},[320,492,493],{"class":333},"cachedEventHandler",[320,495,488],{"class":337},[461,497,498],{},[240,499,500,503],{"className":313,"language":315,"style":316},[320,501,502],{"class":333},"defineRenderHandler",[320,504,505],{"class":337},"(handler)",[461,507,508,516],{},[240,509,510,513],{"className":313,"language":315,"style":316},[320,511,512],{"class":333},"defineRouteMeta",[320,514,515],{"class":337},"(options)"," (experimental)",[461,518,519],{},[240,520,521,524,527,530],{"className":313,"language":315,"style":316},[320,522,523],{"class":333},"useRuntimeConfig",[320,525,526],{"class":337},"(event",[320,528,529],{"class":326},"?",[320,531,532],{"class":337},")",[461,534,535],{},[240,536,537,540,542,544],{"className":313,"language":315,"style":316},[320,538,539],{"class":333},"useAppConfig",[320,541,526],{"class":337},[320,543,529],{"class":326},[320,545,532],{"class":337},[461,547,548],{},[240,549,550,553,556,558],{"className":313,"language":315,"style":316},[320,551,552],{"class":333},"useStorage",[320,554,555],{"class":337},"(base",[320,557,529],{"class":326},[320,559,532],{"class":337},[461,561,562],{},[240,563,564,567],{"className":313,"language":315,"style":316},[320,565,566],{"class":333},"useNitroApp",[320,568,569],{"class":337},"()",[461,571,572],{},[240,573,574,577],{"className":313,"language":315,"style":316},[320,575,576],{"class":333},"defineNitroPlugin",[320,578,579],{"class":337},"(plugin)",[461,581,582],{},[240,583,584,587],{"className":313,"language":315,"style":316},[320,585,586],{"class":333},"nitroPlugin",[320,588,579],{"class":337},[461,590,591],{},[240,592,593,596],{"className":313,"language":315,"style":316},[320,594,595],{"class":333},"getRouteRules",[320,597,598],{"class":337},"(event)",[274,600,602],{"to":601},"https://github.com/nitrojs/nitro/blob/v2/src/core/config/resolvers/imports.ts#L58",[236,603,604,605,609],{},"Check ",[245,606,608],{"href":601,"rel":607},[249],"the source code"," for list of available Nitro auto imports.",[274,611,612],{"to":68},[236,613,614,615,618,619,622,623,625],{},"The types are auto-generated for global auto-imports when running the ",[240,616,617],{},"prepare"," or ",[240,620,621],{},"dev"," command. See ",[245,624,67],{"href":68}," guide, for IDE support.",[231,627,629],{"id":628},"manual-imports","Manual imports",[236,631,632,633,636],{},"For some edge cases (IDE support and libraries in ",[240,634,635],{},"node_modules",") it is impossible to rely on auto imports.",[236,638,639,640,643],{},"You can explicitly import them from virtual ",[240,641,642],{},"#imports"," file.",[645,646,647],"tip",{},[236,648,649,650,652],{},"\nManually importing from ",[240,651,642],{}," still has benefits of tree-shaking.",[311,654,659],{"className":655,"code":656,"filename":657,"language":658,"meta":316,"style":316},"language-js shiki shiki-themes github-light github-dark github-dark","import { useStorage } from '#imports'\n","server/plugins/test.ts","js",[240,660,661],{"__ignoreMap":316},[320,662,663,666,669,672],{"class":322,"line":323},[320,664,665],{"class":326},"import",[320,667,668],{"class":337}," { useStorage } ",[320,670,671],{"class":326},"from",[320,673,675],{"class":674},"sfrk1"," '#imports'\n",[231,677,679],{"id":678},"async-context-experimental","Async Context (Experimental)",[236,681,682,683,688,689,694],{},"Nitro (2.6+) enables a new server development experience in order to split application logic into smaller \"composable\" utilities that are fully decoupled from each other and can directly access a shared context (request event) without needing it to be passed along. This pattern is inspired from ",[245,684,687],{"href":685,"rel":686},"https://vuejs.org/guide/extras/composition-api-faq.html#why-composition-api",[249],"Vue Composition API"," and powered by ",[245,690,693],{"href":691,"rel":692},"https://github.com/unjs/unctx",[249],"unctx",".",[696,697,698],"note",{},[236,699,700,701,708],{},"This feature is currently supported for Node.js and Bun runtimes and also coming soon to other presets that support ",[245,702,705],{"href":703,"rel":704},"https://nodejs.org/api/async_context.html#class-asynclocalstorage",[249],[240,706,707],{},"AsyncLocalStorage"," interface.",[236,710,711,712,715],{},"In order to enable async context feature, you have to enable ",[240,713,714],{},"asyncContext"," flag:",[717,718,719,761],"code-group",{},[311,720,723],{"className":313,"code":721,"filename":722,"language":315,"meta":316,"style":316},"export default defineNitroConfig({\n  experimental: {\n    asyncContext: true\n  }\n});\n","nitro.config.ts",[240,724,725,737,742,750,755],{"__ignoreMap":316},[320,726,727,729,731,734],{"class":322,"line":323},[320,728,327],{"class":326},[320,730,391],{"class":326},[320,732,733],{"class":333}," defineNitroConfig",[320,735,736],{"class":337},"({\n",[320,738,739],{"class":322,"line":406},[320,740,741],{"class":337},"  experimental: {\n",[320,743,744,747],{"class":322,"line":437},[320,745,746],{"class":337},"    asyncContext: ",[320,748,749],{"class":347},"true\n",[320,751,752],{"class":322,"line":446},[320,753,754],{"class":337},"  }\n",[320,756,758],{"class":322,"line":757},5,[320,759,760],{"class":337},"});\n",[311,762,765],{"className":313,"code":763,"filename":764,"language":315,"meta":316,"style":316},"export default defineNuxtConfig({\n  nitro: {\n    experimental: {\n      asyncContext: true\n    }\n  }\n})\n","nuxt.config.ts",[240,766,767,778,783,788,795,800,805],{"__ignoreMap":316},[320,768,769,771,773,776],{"class":322,"line":323},[320,770,327],{"class":326},[320,772,391],{"class":326},[320,774,775],{"class":333}," defineNuxtConfig",[320,777,736],{"class":337},[320,779,780],{"class":322,"line":406},[320,781,782],{"class":337},"  nitro: {\n",[320,784,785],{"class":322,"line":437},[320,786,787],{"class":337},"    experimental: {\n",[320,789,790,793],{"class":322,"line":446},[320,791,792],{"class":337},"      asyncContext: ",[320,794,749],{"class":347},[320,796,797],{"class":322,"line":757},[320,798,799],{"class":337},"    }\n",[320,801,803],{"class":322,"line":802},6,[320,804,754],{"class":337},[320,806,808],{"class":322,"line":807},7,[320,809,449],{"class":337},[236,811,812,813,816],{},"After enabling this flag, you can use ",[240,814,815],{},"useEvent()"," (auto imported) in any utility or composable to access the request event without manually passing it along:",[717,818,819,916],{},[311,820,823],{"className":313,"code":821,"filename":822,"language":315,"meta":316,"style":316},"// server/routes/index.ts\nexport default defineEventHandler(async () => {\n  const user = await useAuth()\n})\n\n// server/utils/auth.ts\nexport function useAuth() {\n  return useSession(useEvent())\n}\n","with async context",[240,824,825,830,850,868,872,878,883,894,910],{"__ignoreMap":316},[320,826,827],{"class":322,"line":323},[320,828,829],{"class":433},"// server/routes/index.ts\n",[320,831,832,834,836,838,840,843,846,848],{"class":322,"line":406},[320,833,327],{"class":326},[320,835,391],{"class":326},[320,837,394],{"class":333},[320,839,338],{"class":337},[320,841,842],{"class":326},"async",[320,844,845],{"class":337}," () ",[320,847,400],{"class":326},[320,849,403],{"class":337},[320,851,852,854,857,859,862,865],{"class":322,"line":437},[320,853,409],{"class":326},[320,855,856],{"class":347}," user",[320,858,415],{"class":326},[320,860,861],{"class":326}," await",[320,863,864],{"class":333}," useAuth",[320,866,867],{"class":337},"()\n",[320,869,870],{"class":322,"line":446},[320,871,449],{"class":337},[320,873,874],{"class":322,"line":757},[320,875,877],{"emptyLinePlaceholder":876},true,"\n",[320,879,880],{"class":322,"line":802},[320,881,882],{"class":433},"// server/utils/auth.ts\n",[320,884,885,887,889,891],{"class":322,"line":807},[320,886,327],{"class":326},[320,888,330],{"class":326},[320,890,864],{"class":333},[320,892,893],{"class":337},"() {\n",[320,895,897,899,902,904,907],{"class":322,"line":896},8,[320,898,440],{"class":326},[320,900,901],{"class":333}," useSession",[320,903,338],{"class":337},[320,905,906],{"class":333},"useEvent",[320,908,909],{"class":337},"())\n",[320,911,913],{"class":322,"line":912},9,[320,914,915],{"class":337},"}\n",[311,917,920],{"className":313,"code":918,"filename":919,"language":315,"meta":316,"style":316},"// server/routes/index.ts\nexport default defineEventHandler(async (event) => {\n  const user = await useAuth(event)\n})\n\n// server/utils/auth.ts\nexport function useAuth(event) {\n  return useSession(event)\n}\n","without async context",[240,921,922,926,950,965,969,973,977,992,1000],{"__ignoreMap":316},[320,923,924],{"class":322,"line":323},[320,925,829],{"class":433},[320,927,928,930,932,934,936,938,941,944,946,948],{"class":322,"line":406},[320,929,327],{"class":326},[320,931,391],{"class":326},[320,933,394],{"class":333},[320,935,338],{"class":337},[320,937,842],{"class":326},[320,939,940],{"class":337}," (",[320,942,943],{"class":341},"event",[320,945,430],{"class":337},[320,947,400],{"class":326},[320,949,403],{"class":337},[320,951,952,954,956,958,960,962],{"class":322,"line":437},[320,953,409],{"class":326},[320,955,856],{"class":347},[320,957,415],{"class":326},[320,959,861],{"class":326},[320,961,864],{"class":333},[320,963,964],{"class":337},"(event)\n",[320,966,967],{"class":322,"line":446},[320,968,449],{"class":337},[320,970,971],{"class":322,"line":757},[320,972,877],{"emptyLinePlaceholder":876},[320,974,975],{"class":322,"line":802},[320,976,882],{"class":433},[320,978,979,981,983,985,987,989],{"class":322,"line":807},[320,980,327],{"class":326},[320,982,330],{"class":326},[320,984,864],{"class":333},[320,986,338],{"class":337},[320,988,943],{"class":341},[320,990,991],{"class":337},") {\n",[320,993,994,996,998],{"class":322,"line":896},[320,995,440],{"class":326},[320,997,901],{"class":333},[320,999,964],{"class":337},[320,1001,1002],{"class":322,"line":912},[320,1003,915],{"class":337},[1005,1006,1007],"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 .sQHwn, html code.shiki .sQHwn{--shiki-light:#E36209;--shiki-default:#FFAB70;--shiki-dark:#FFAB70}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 .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sfrk1, html code.shiki .sfrk1{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF}",{"title":316,"searchDepth":406,"depth":406,"links":1009},[1010,1011,1015,1016,1017],{"id":233,"depth":406,"text":234},{"id":254,"depth":406,"text":255,"children":1012},[1013],{"id":280,"depth":437,"text":1014},"utils directory",{"id":452,"depth":406,"text":453},{"id":628,"depth":406,"text":629},{"id":678,"depth":406,"text":679},"Enjoy auto-imported server utils and extend with your own utils.","md",{"icon":15},{"icon":15},{"title":12,"description":1018},"CirE67lZWH1GKEh5lBN-kNOP_a88LsAQqA3z53amd1c",[1025,1026],{"title":5,"path":6,"stem":7,"description":316,"icon":10,"children":-1},{"title":17,"path":18,"stem":19,"description":1027,"icon":20,"children":-1},"Nitro tasks allow on-off operations in runtime.",1775117854965]