[{"data":1,"prerenderedAt":838},["ShallowReactive",2],{"navigation":3,"docs-path-index":208,"-docs-modules-nitro-file-based-routes":272,"-docs-modules-nitro-file-based-routes-surround":833},[4],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":52},"Docs","i-lucide-book-marked","\u002Fdocs","docs",[10,26,53,169,190],{"title":11,"path":12,"stem":13,"children":14,"icon":25},"Getting Started","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started\u002F1.index",[15,17,21],{"title":16,"path":12,"stem":13},"Introduction",{"title":18,"path":19,"stem":20},"Installation","\u002Fdocs\u002Fgetting-started\u002Finstallation","docs\u002F1.getting-started\u002F2.installation",{"title":22,"path":23,"stem":24},"Examples","\u002Fdocs\u002Fgetting-started\u002Fexamples","docs\u002F1.getting-started\u002F3.examples","i-lucide-rocket",{"title":27,"icon":28,"path":29,"stem":30,"children":31,"page":52},"Core features","i-lucide-square-function","\u002Fdocs\u002Fcore-features","docs\u002F2.core-features",[32,36,40,44,48],{"title":33,"path":34,"stem":35},"Configuration","\u002Fdocs\u002Fcore-features\u002Fconfiguration","docs\u002F2.core-features\u002F0.configuration",{"title":37,"path":38,"stem":39},"Dependency Injection","\u002Fdocs\u002Fcore-features\u002Fcontainer","docs\u002F2.core-features\u002F1.container",{"title":41,"path":42,"stem":43},"Controllers","\u002Fdocs\u002Fcore-features\u002Fcontrollers","docs\u002F2.core-features\u002F2.controllers",{"title":45,"path":46,"stem":47},"Middlewares","\u002Fdocs\u002Fcore-features\u002Fmiddlewares","docs\u002F2.core-features\u002F3.middlewares",{"title":49,"path":50,"stem":51},"Validation","\u002Fdocs\u002Fcore-features\u002Fvalidation","docs\u002F2.core-features\u002F4.validation",false,{"title":54,"icon":55,"defaultOpen":56,"path":57,"stem":58,"children":59,"page":52},"Modules","i-lucide-boxes",true,"\u002Fdocs\u002Fmodules","docs\u002F3.modules",[60,77,93,101,116,127,142,161],{"title":61,"icon":52,"defaultOpen":52,"path":62,"stem":63,"children":64,"page":52},"Auth","\u002Fdocs\u002Fmodules\u002Fauth","docs\u002F3.modules\u002F1.auth",[65,69,73],{"title":66,"path":67,"stem":68},"Overview","\u002Fdocs\u002Fmodules\u002Fauth\u002Foverview","docs\u002F3.modules\u002F1.auth\u002F0.overview",{"title":70,"path":71,"stem":72},"Decorators","\u002Fdocs\u002Fmodules\u002Fauth\u002Fdecorators","docs\u002F3.modules\u002F1.auth\u002F1.decorators",{"title":74,"path":75,"stem":76},"API Reference","\u002Fdocs\u002Fmodules\u002Fauth\u002Fapi","docs\u002F3.modules\u002F1.auth\u002F2.api",{"title":78,"icon":52,"defaultOpen":52,"path":79,"stem":80,"children":81,"page":52},"Logger","\u002Fdocs\u002Fmodules\u002Flogger","docs\u002F3.modules\u002F2.logger",[82,85,89],{"title":66,"path":83,"stem":84},"\u002Fdocs\u002Fmodules\u002Flogger\u002Foverview","docs\u002F3.modules\u002F2.logger\u002F0.overview",{"title":86,"path":87,"stem":88},"Drains & Adapters","\u002Fdocs\u002Fmodules\u002Flogger\u002Fdrivers","docs\u002F3.modules\u002F2.logger\u002F1.drivers",{"title":90,"path":91,"stem":92},"API","\u002Fdocs\u002Fmodules\u002Flogger\u002Fapi","docs\u002F3.modules\u002F2.logger\u002F2.api",{"title":94,"icon":52,"defaultOpen":52,"path":95,"stem":96,"children":97,"page":52},"Serverless","\u002Fdocs\u002Fmodules\u002Fserverless","docs\u002F3.modules\u002F3.serverless",[98],{"title":66,"path":99,"stem":100},"\u002Fdocs\u002Fmodules\u002Fserverless\u002Foverview","docs\u002F3.modules\u002F3.serverless\u002F0.overview",{"title":102,"icon":52,"defaultOpen":52,"path":103,"stem":104,"children":105,"page":52},"Storage","\u002Fdocs\u002Fmodules\u002Fstorage","docs\u002F3.modules\u002F4.storage",[106,109,113],{"title":66,"path":107,"stem":108},"\u002Fdocs\u002Fmodules\u002Fstorage\u002Foverview","docs\u002F3.modules\u002F4.storage\u002F0.overview",{"title":110,"path":111,"stem":112},"Drivers","\u002Fdocs\u002Fmodules\u002Fstorage\u002Fdrivers","docs\u002F3.modules\u002F4.storage\u002F1.drivers",{"title":90,"path":114,"stem":115},"\u002Fdocs\u002Fmodules\u002Fstorage\u002Fapi","docs\u002F3.modules\u002F4.storage\u002F2.api",{"title":117,"icon":52,"defaultOpen":52,"path":118,"stem":119,"children":120,"page":52},"Web Sockets","\u002Fdocs\u002Fmodules\u002Fweb-sockets","docs\u002F3.modules\u002F5.web-sockets",[121,124],{"title":66,"path":122,"stem":123},"\u002Fdocs\u002Fmodules\u002Fweb-sockets\u002Foverview","docs\u002F3.modules\u002F5.web-sockets\u002F0.overview",{"title":90,"path":125,"stem":126},"\u002Fdocs\u002Fmodules\u002Fweb-sockets\u002Fapi","docs\u002F3.modules\u002F5.web-sockets\u002F1.api",{"title":128,"icon":52,"defaultOpen":52,"path":129,"stem":130,"children":131,"page":52},"Schema","\u002Fdocs\u002Fmodules\u002Fschema","docs\u002F3.modules\u002F6.schema",[132,135,138],{"title":66,"path":133,"stem":134},"\u002Fdocs\u002Fmodules\u002Fschema\u002Foverview","docs\u002F3.modules\u002F6.schema\u002F0.overview",{"title":70,"path":136,"stem":137},"\u002Fdocs\u002Fmodules\u002Fschema\u002Fdecorators","docs\u002F3.modules\u002F6.schema\u002F1.decorators",{"title":139,"path":140,"stem":141},"Scalar","\u002Fdocs\u002Fmodules\u002Fschema\u002Fscalar","docs\u002F3.modules\u002F6.schema\u002F2.scalar",{"title":143,"icon":52,"defaultOpen":52,"path":144,"stem":145,"children":146,"page":52},"Nitro","\u002Fdocs\u002Fmodules\u002Fnitro","docs\u002F3.modules\u002F7.nitro",[147,150,153,157],{"title":66,"path":148,"stem":149},"\u002Fdocs\u002Fmodules\u002Fnitro\u002Foverview","docs\u002F3.modules\u002F7.nitro\u002F0.overview",{"title":102,"path":151,"stem":152},"\u002Fdocs\u002Fmodules\u002Fnitro\u002Fstorage","docs\u002F3.modules\u002F7.nitro\u002F1.storage",{"title":154,"path":155,"stem":156},"File-Based Routes","\u002Fdocs\u002Fmodules\u002Fnitro\u002Ffile-based-routes","docs\u002F3.modules\u002F7.nitro\u002F2.file-based-routes",{"title":158,"path":159,"stem":160},"Middleware","\u002Fdocs\u002Fmodules\u002Fnitro\u002Fmiddleware","docs\u002F3.modules\u002F7.nitro\u002F3.middleware",{"title":162,"icon":52,"defaultOpen":52,"path":163,"stem":164,"children":165,"page":52},"Vite","\u002Fdocs\u002Fmodules\u002Fvite","docs\u002F3.modules\u002F8.vite",[166],{"title":66,"path":167,"stem":168},"\u002Fdocs\u002Fmodules\u002Fvite\u002Foverview","docs\u002F3.modules\u002F8.vite\u002F0.overview",{"title":170,"icon":171,"path":172,"stem":173,"children":174,"page":52},"Deployment","i-lucide-cloud-upload","\u002Fdocs\u002Fdeployment","docs\u002F4.deployment",[175,178,182,186],{"title":66,"path":176,"stem":177},"\u002Fdocs\u002Fdeployment\u002Foverview","docs\u002F4.deployment\u002F0.overview",{"title":179,"path":180,"stem":181},"Vercel","\u002Fdocs\u002Fdeployment\u002Fvercel","docs\u002F4.deployment\u002F1.vercel",{"title":183,"path":184,"stem":185},"AWS Lambda","\u002Fdocs\u002Fdeployment\u002Faws-lambda","docs\u002F4.deployment\u002F2.aws-lambda",{"title":187,"path":188,"stem":189},"Azure Functions","\u002Fdocs\u002Fdeployment\u002Fazure-functions","docs\u002F4.deployment\u002F3.azure-functions",{"title":191,"icon":192,"path":193,"stem":194,"children":195,"page":52},"Advanced","i-lucide-brain","\u002Fdocs\u002Fadvanced","docs\u002F99.advanced",[196,200,204],{"title":197,"path":198,"stem":199},"Custom Decorator","\u002Fdocs\u002Fadvanced\u002Fcustom-decorator","docs\u002F99.advanced\u002F1.custom-decorator",{"title":201,"path":202,"stem":203},"Plugins","\u002Fdocs\u002Fadvanced\u002Fcustom-plugin","docs\u002F99.advanced\u002F2.custom-plugin",{"title":205,"path":206,"stem":207},"Custom CLI Command","\u002Fdocs\u002Fadvanced\u002Fcustom-cli-command","docs\u002F99.advanced\u002F3.custom-cli-command",[209,211,213,214,215,216,218,219,220,221,222,223,225,227,228,229,230,232,233,234,235,237,238,240,241,242,243,245,246,247,249,250,251,252,254,255,256,257,258,260,261,263,264,265,266,267,269,270,271],{"path":210},"\u002Fdocs\u002F.navigation",{"path":212},"\u002Fdocs\u002Fgetting-started\u002F.navigation",{"path":12},{"path":19},{"path":23},{"path":217},"\u002Fdocs\u002Fcore-features\u002F.navigation",{"path":34},{"path":38},{"path":42},{"path":46},{"path":50},{"path":224},"\u002Fdocs\u002Fmodules\u002F.navigation",{"path":226},"\u002Fdocs\u002Fmodules\u002Fauth\u002F.navigation",{"path":67},{"path":71},{"path":75},{"path":231},"\u002Fdocs\u002Fmodules\u002Flogger\u002F.navigation",{"path":83},{"path":87},{"path":91},{"path":236},"\u002Fdocs\u002Fmodules\u002Fserverless\u002F.navigation",{"path":99},{"path":239},"\u002Fdocs\u002Fmodules\u002Fstorage\u002F.navigation",{"path":107},{"path":111},{"path":114},{"path":244},"\u002Fdocs\u002Fmodules\u002Fweb-sockets\u002F.navigation",{"path":122},{"path":125},{"path":248},"\u002Fdocs\u002Fmodules\u002Fschema\u002F.navigation",{"path":133},{"path":136},{"path":140},{"path":253},"\u002Fdocs\u002Fmodules\u002Fnitro\u002F.navigation",{"path":148},{"path":151},{"path":155},{"path":159},{"path":259},"\u002Fdocs\u002Fmodules\u002Fvite\u002F.navigation",{"path":167},{"path":262},"\u002Fdocs\u002Fdeployment\u002F.navigation",{"path":176},{"path":180},{"path":184},{"path":188},{"path":268},"\u002Fdocs\u002Fadvanced\u002F.navigation",{"path":198},{"path":202},{"path":206},{"id":273,"title":154,"body":274,"description":827,"extension":828,"links":829,"meta":830,"navigation":56,"path":155,"seo":831,"stem":156,"__hash__":832},"docs\u002Fdocs\u002F3.modules\u002F7.nitro\u002F2.file-based-routes.md",{"type":275,"value":276,"toc":821},"minimark",[277,281,286,297,561,565,572,789,793,805,809,817],[278,279,280],"p",{},"Vercube controllers and Nitro file-based routes coexist without any extra configuration. You can use both patterns in the same project and they will work independently.",[282,283,285],"h2",{"id":284},"nitro-file-based-routes","Nitro File-Based Routes",[278,287,288,289,296],{},"Standard Nitro route files work exactly as documented in the ",[290,291,295],"a",{"href":292,"rel":293},"https:\u002F\u002Fnitro.build\u002Fdocs\u002Frouting",[294],"nofollow","Nitro docs",". They are handled by Nitro's own routing layer and are completely unaware of Vercube:",[298,299,300,414],"code-group",{},[301,302,308],"pre",{"className":303,"code":304,"filename":305,"language":306,"meta":307,"style":307},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineEventHandler } from 'nitro\u002Fh3';\n\nexport default defineEventHandler(() => {\n  return { status: 'ok' };\n});\n","src\u002Froutes\u002Fhealth.get.ts","ts","",[309,310,311,347,353,378,403],"code",{"__ignoreMap":307},[312,313,316,320,324,328,331,334,337,341,344],"span",{"class":314,"line":315},"line",1,[312,317,319],{"class":318},"s7zQu","import",[312,321,323],{"class":322},"sMK4o"," {",[312,325,327],{"class":326},"sTEyZ"," defineEventHandler",[312,329,330],{"class":322}," }",[312,332,333],{"class":318}," from",[312,335,336],{"class":322}," '",[312,338,340],{"class":339},"sfazB","nitro\u002Fh3",[312,342,343],{"class":322},"'",[312,345,346],{"class":322},";\n",[312,348,350],{"class":314,"line":349},2,[312,351,352],{"emptyLinePlaceholder":56},"\n",[312,354,356,359,362,365,368,371,375],{"class":314,"line":355},3,[312,357,358],{"class":318},"export",[312,360,361],{"class":318}," default",[312,363,327],{"class":364},"s2Zo4",[312,366,367],{"class":326},"(",[312,369,370],{"class":322},"()",[312,372,374],{"class":373},"spNyl"," =>",[312,376,377],{"class":322}," {\n",[312,379,381,384,386,390,393,395,398,400],{"class":314,"line":380},4,[312,382,383],{"class":318},"  return",[312,385,323],{"class":322},[312,387,389],{"class":388},"swJcz"," status",[312,391,392],{"class":322},":",[312,394,336],{"class":322},[312,396,397],{"class":339},"ok",[312,399,343],{"class":322},[312,401,402],{"class":322}," };\n",[312,404,406,409,412],{"class":314,"line":405},5,[312,407,408],{"class":322},"}",[312,410,411],{"class":326},")",[312,413,346],{"class":322},[301,415,418],{"className":303,"code":416,"filename":417,"language":306,"meta":307,"style":307},"import { defineEventHandler, getRouterParam, readBody } from 'nitro\u002Fh3';\n\nexport default defineEventHandler(async (event) => {\n  const id = getRouterParam(event, 'id');\n  const body = await readBody(event);\n  return { id, ...body };\n});\n","src\u002Froutes\u002Fitems\u002F[id].post.ts",[309,419,420,451,455,481,511,533,552],{"__ignoreMap":307},[312,421,422,424,426,428,431,434,436,439,441,443,445,447,449],{"class":314,"line":315},[312,423,319],{"class":318},[312,425,323],{"class":322},[312,427,327],{"class":326},[312,429,430],{"class":322},",",[312,432,433],{"class":326}," getRouterParam",[312,435,430],{"class":322},[312,437,438],{"class":326}," readBody",[312,440,330],{"class":322},[312,442,333],{"class":318},[312,444,336],{"class":322},[312,446,340],{"class":339},[312,448,343],{"class":322},[312,450,346],{"class":322},[312,452,453],{"class":314,"line":349},[312,454,352],{"emptyLinePlaceholder":56},[312,456,457,459,461,463,465,468,471,475,477,479],{"class":314,"line":355},[312,458,358],{"class":318},[312,460,361],{"class":318},[312,462,327],{"class":364},[312,464,367],{"class":326},[312,466,467],{"class":373},"async",[312,469,470],{"class":322}," (",[312,472,474],{"class":473},"sHdIc","event",[312,476,411],{"class":322},[312,478,374],{"class":373},[312,480,377],{"class":322},[312,482,483,486,489,492,494,496,498,500,502,505,507,509],{"class":314,"line":380},[312,484,485],{"class":373},"  const",[312,487,488],{"class":326}," id",[312,490,491],{"class":322}," =",[312,493,433],{"class":364},[312,495,367],{"class":388},[312,497,474],{"class":326},[312,499,430],{"class":322},[312,501,336],{"class":322},[312,503,504],{"class":339},"id",[312,506,343],{"class":322},[312,508,411],{"class":388},[312,510,346],{"class":322},[312,512,513,515,518,520,523,525,527,529,531],{"class":314,"line":405},[312,514,485],{"class":373},[312,516,517],{"class":326}," body",[312,519,491],{"class":322},[312,521,522],{"class":318}," await",[312,524,438],{"class":364},[312,526,367],{"class":388},[312,528,474],{"class":326},[312,530,411],{"class":388},[312,532,346],{"class":322},[312,534,536,538,540,542,544,547,550],{"class":314,"line":535},6,[312,537,383],{"class":318},[312,539,323],{"class":322},[312,541,488],{"class":326},[312,543,430],{"class":322},[312,545,546],{"class":322}," ...",[312,548,549],{"class":326},"body",[312,551,402],{"class":322},[312,553,555,557,559],{"class":314,"line":554},7,[312,556,408],{"class":322},[312,558,411],{"class":326},[312,560,346],{"class":322},[282,562,564],{"id":563},"vercube-controllers","Vercube Controllers",[278,566,567,568,571],{},"Controllers registered via the ",[309,569,570],{},"vercubeNitro"," plugin take a different path - they are handled by the Vercube app and go through Vercube's request pipeline:",[301,573,576],{"className":303,"code":574,"filename":575,"language":306,"meta":307,"style":307},"import { Controller, Get, Post, Param } from '@vercube\u002Fcore';\n\n@Controller('\u002Fapi\u002Fitems')\nexport class ItemController {\n\n  @Get('\u002F:id')\n  get(@Param('id') id: string) {\n    return { id };\n  }\n\n  @Post('\u002F')\n  create() {\n    return { created: true };\n  }\n}\n","src\u002Froutes\u002FItemController.ts",[309,577,578,615,619,639,652,656,675,708,720,726,731,750,760,778,783],{"__ignoreMap":307},[312,579,580,582,584,587,589,592,594,597,599,602,604,606,608,611,613],{"class":314,"line":315},[312,581,319],{"class":318},[312,583,323],{"class":322},[312,585,586],{"class":326}," Controller",[312,588,430],{"class":322},[312,590,591],{"class":326}," Get",[312,593,430],{"class":322},[312,595,596],{"class":326}," Post",[312,598,430],{"class":322},[312,600,601],{"class":326}," Param",[312,603,330],{"class":322},[312,605,333],{"class":318},[312,607,336],{"class":322},[312,609,610],{"class":339},"@vercube\u002Fcore",[312,612,343],{"class":322},[312,614,346],{"class":322},[312,616,617],{"class":314,"line":349},[312,618,352],{"emptyLinePlaceholder":56},[312,620,621,624,627,629,631,634,636],{"class":314,"line":355},[312,622,623],{"class":322},"@",[312,625,626],{"class":364},"Controller",[312,628,367],{"class":326},[312,630,343],{"class":322},[312,632,633],{"class":339},"\u002Fapi\u002Fitems",[312,635,343],{"class":322},[312,637,638],{"class":326},")\n",[312,640,641,643,646,650],{"class":314,"line":380},[312,642,358],{"class":318},[312,644,645],{"class":373}," class",[312,647,649],{"class":648},"sBMFI"," ItemController",[312,651,377],{"class":322},[312,653,654],{"class":314,"line":405},[312,655,352],{"emptyLinePlaceholder":56},[312,657,658,661,664,666,668,671,673],{"class":314,"line":535},[312,659,660],{"class":322},"  @",[312,662,663],{"class":364},"Get",[312,665,367],{"class":326},[312,667,343],{"class":322},[312,669,670],{"class":339},"\u002F:id",[312,672,343],{"class":322},[312,674,638],{"class":326},[312,676,677,680,683,686,688,690,692,694,697,699,701,704,706],{"class":314,"line":554},[312,678,679],{"class":388},"  get",[312,681,682],{"class":322},"(@",[312,684,685],{"class":364},"Param",[312,687,367],{"class":326},[312,689,343],{"class":322},[312,691,504],{"class":339},[312,693,343],{"class":322},[312,695,696],{"class":326},") ",[312,698,504],{"class":473},[312,700,392],{"class":322},[312,702,703],{"class":648}," string",[312,705,411],{"class":322},[312,707,377],{"class":322},[312,709,711,714,716,718],{"class":314,"line":710},8,[312,712,713],{"class":318},"    return",[312,715,323],{"class":322},[312,717,488],{"class":326},[312,719,402],{"class":322},[312,721,723],{"class":314,"line":722},9,[312,724,725],{"class":322},"  }\n",[312,727,729],{"class":314,"line":728},10,[312,730,352],{"emptyLinePlaceholder":56},[312,732,734,736,739,741,743,746,748],{"class":314,"line":733},11,[312,735,660],{"class":322},[312,737,738],{"class":364},"Post",[312,740,367],{"class":326},[312,742,343],{"class":322},[312,744,745],{"class":339},"\u002F",[312,747,343],{"class":322},[312,749,638],{"class":326},[312,751,753,756,758],{"class":314,"line":752},12,[312,754,755],{"class":388},"  create",[312,757,370],{"class":322},[312,759,377],{"class":322},[312,761,763,765,767,770,772,776],{"class":314,"line":762},13,[312,764,713],{"class":318},[312,766,323],{"class":322},[312,768,769],{"class":388}," created",[312,771,392],{"class":322},[312,773,775],{"class":774},"sfNiH"," true",[312,777,402],{"class":322},[312,779,781],{"class":314,"line":780},14,[312,782,725],{"class":322},[312,784,786],{"class":314,"line":785},15,[312,787,788],{"class":322},"}\n",[282,790,792],{"id":791},"route-priority","Route Priority",[278,794,795,796,800,801,804],{},"When both a Nitro file route and a Vercube controller are registered for the same path, ",[797,798,799],"strong",{},"Nitro file routes take precedence",". To avoid conflicts, use distinct path prefixes - for example, serve Vercube controllers under ",[309,802,803],{},"\u002Fapi\u002F"," and keep Nitro file routes elsewhere.",[282,806,808],{"id":807},"recommended-project-layout","Recommended Project Layout",[301,810,815],{"className":811,"code":813,"language":814},[812],"language-text","src\u002F\n├── middleware\u002F\n│   └── AuthMiddleware.ts       # Vercube middleware (excluded from Nitro)\n├── routes\u002F\n│   ├── healthz.get.ts          # Nitro file route\n│   ├── items\u002F\n│   │   └── [id].post.ts        # Nitro file route\n│   └── ItemController.ts       # Vercube controller\n└── services\u002F\n    └── ItemService.ts          # Vercube injectable service\n","text",[309,816,813],{"__ignoreMap":307},[818,819,820],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":307,"searchDepth":315,"depth":349,"links":822},[823,824,825,826],{"id":284,"depth":349,"text":285},{"id":563,"depth":349,"text":564},{"id":791,"depth":349,"text":792},{"id":807,"depth":349,"text":808},"Mixing Nitro file-based routes with Vercube controllers","md",null,{},{"title":154,"description":827},"OGa0D2-ExGxafM95jR4qh3_7ChSILDZhM95X3oKuSwU",[834,836],{"title":102,"path":151,"stem":152,"description":835,"children":-1},"Using Vercube StorageManager backed by Nitro's built-in storage",{"title":158,"path":159,"stem":160,"description":837,"children":-1},"Using Vercube BaseMiddleware inside a Nitro application",1782807892899]