[{"data":1,"prerenderedAt":1977},["ShallowReactive",2],{"navigation":3,"docs-path-index":208,"-docs-modules-nitro-overview":272,"-docs-modules-nitro-overview-surround":1972},[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":66,"body":274,"description":1966,"extension":1967,"links":1968,"meta":1969,"navigation":56,"path":148,"seo":1970,"stem":149,"__hash__":1971},"docs\u002Fdocs\u002F3.modules\u002F7.nitro\u002F0.overview.md",{"type":275,"value":276,"toc":1952},"minimark",[277,290,305,309,376,381,406,414,489,493,1316,1320,1323,1352,1355,1359,1443,1468,1479,1573,1577,1580,1586,1597,1712,1848,1855,1861,1934,1948],[278,279,282],"callout",{"icon":280,"type":281},"i-lucide-triangle-alert","warning",[283,284,285,289],"p",{},[286,287,288],"strong",{},"Experimental."," The Nitro integration is in an early experimental stage. APIs may change without notice between releases. Use in production at your own risk.",[283,291,292,293,297,298,304],{},"The ",[294,295,296],"code",{},"@vercube\u002Fnitro"," package lets you run Vercube controllers inside a ",[299,300,143],"a",{"href":301,"rel":302},"https:\u002F\u002Fnitro.build",[303],"nofollow"," application. You get Vercube's decorator-based routing and full dependency injection while keeping everything that makes Nitro powerful: multi-platform deployment, built-in storage, and file-based routing.",[306,307,18],"h2",{"id":308},"installation",[310,311,312,341,359],"code-group",{},[313,314,320],"pre",{"className":315,"code":316,"filename":317,"language":318,"meta":319,"style":319},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","$ pnpm add @vercube\u002Fnitro\n","pnpm","bash","",[294,321,322],{"__ignoreMap":319},[323,324,327,331,335,338],"span",{"class":325,"line":326},"line",1,[323,328,330],{"class":329},"sBMFI","$",[323,332,334],{"class":333},"sfazB"," pnpm",[323,336,337],{"class":333}," add",[323,339,340],{"class":333}," @vercube\u002Fnitro\n",[313,342,345],{"className":315,"code":343,"filename":344,"language":318,"meta":319,"style":319},"$ npm install @vercube\u002Fnitro\n","npm",[294,346,347],{"__ignoreMap":319},[323,348,349,351,354,357],{"class":325,"line":326},[323,350,330],{"class":329},[323,352,353],{"class":333}," npm",[323,355,356],{"class":333}," install",[323,358,340],{"class":333},[313,360,363],{"className":315,"code":361,"filename":362,"language":318,"meta":319,"style":319},"$ bun add @vercube\u002Fnitro\n","bun",[294,364,365],{"__ignoreMap":319},[323,366,367,369,372,374],{"class":325,"line":326},[323,368,330],{"class":329},[323,370,371],{"class":333}," bun",[323,373,337],{"class":333},[323,375,340],{"class":333},[377,378,380],"h3",{"id":379},"requirements","Requirements",[382,383,384,391,400],"ul",{},[385,386,387,390],"li",{},[286,388,389],{},"Nitro 3"," (currently in beta) is required",[385,392,393,396,397],{},[294,394,395],{},"experimentalDecorators: true"," must be set in your ",[294,398,399],{},"tsconfig.json",[385,401,292,402,405],{},[294,403,404],{},"rolldown"," bundler must be used (Nitro validates this at build time)",[278,407,408],{"icon":280,"type":281},[283,409,410,413],{},[286,411,412],{},"Nitro 3 beta."," This integration targets Nitro 3, which is itself currently in beta. Both the Nitro API and this package may introduce breaking changes before their stable releases.",[313,415,419],{"className":416,"code":417,"filename":399,"language":418,"meta":319,"style":319},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"compilerOptions\": {\n    \"experimentalDecorators\": true,\n    \"emitDecoratorMetadata\": true\n  }\n}\n","json",[294,420,421,427,446,462,477,483],{"__ignoreMap":319},[323,422,423],{"class":325,"line":326},[323,424,426],{"class":425},"sMK4o","{\n",[323,428,430,433,437,440,443],{"class":325,"line":429},2,[323,431,432],{"class":425},"  \"",[323,434,436],{"class":435},"spNyl","compilerOptions",[323,438,439],{"class":425},"\"",[323,441,442],{"class":425},":",[323,444,445],{"class":425}," {\n",[323,447,449,452,455,457,459],{"class":325,"line":448},3,[323,450,451],{"class":425},"    \"",[323,453,454],{"class":329},"experimentalDecorators",[323,456,439],{"class":425},[323,458,442],{"class":425},[323,460,461],{"class":425}," true,\n",[323,463,465,467,470,472,474],{"class":325,"line":464},4,[323,466,451],{"class":425},[323,468,469],{"class":329},"emitDecoratorMetadata",[323,471,439],{"class":425},[323,473,442],{"class":425},[323,475,476],{"class":425}," true\n",[323,478,480],{"class":325,"line":479},5,[323,481,482],{"class":425},"  }\n",[323,484,486],{"class":325,"line":485},6,[323,487,488],{"class":425},"}\n",[306,490,492],{"id":491},"quick-start","Quick Start",[494,495,496,500,510,690,694,701,1067,1071,1090,1296,1300],"steps",{},[377,497,499],{"id":498},"configure-nitro","Configure Nitro",[283,501,502,503,506,507,442],{},"Add the ",[294,504,505],{},"vercubeNitro"," module to your ",[294,508,509],{},"nitro.config.ts",[313,511,515],{"className":512,"code":513,"filename":509,"language":514,"meta":319,"style":319},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { vercubeNitro } from '@vercube\u002Fnitro';\nimport { defineConfig } from 'nitro';\n\nexport default defineConfig({\n  modules: [\n    vercubeNitro({\n      scanDirs: ['routes', 'services'],\n    }),\n  ],\n  serverDir: '.\u002Fsrc',\n});\n","ts",[294,516,517,547,569,574,590,601,610,644,655,663,680],{"__ignoreMap":319},[323,518,519,523,526,530,533,536,539,541,544],{"class":325,"line":326},[323,520,522],{"class":521},"s7zQu","import",[323,524,525],{"class":425}," {",[323,527,529],{"class":528},"sTEyZ"," vercubeNitro",[323,531,532],{"class":425}," }",[323,534,535],{"class":521}," from",[323,537,538],{"class":425}," '",[323,540,296],{"class":333},[323,542,543],{"class":425},"'",[323,545,546],{"class":425},";\n",[323,548,549,551,553,556,558,560,562,565,567],{"class":325,"line":429},[323,550,522],{"class":521},[323,552,525],{"class":425},[323,554,555],{"class":528}," defineConfig",[323,557,532],{"class":425},[323,559,535],{"class":521},[323,561,538],{"class":425},[323,563,564],{"class":333},"nitro",[323,566,543],{"class":425},[323,568,546],{"class":425},[323,570,571],{"class":325,"line":448},[323,572,573],{"emptyLinePlaceholder":56},"\n",[323,575,576,579,582,585,588],{"class":325,"line":464},[323,577,578],{"class":521},"export",[323,580,581],{"class":521}," default",[323,583,555],{"class":584},"s2Zo4",[323,586,587],{"class":528},"(",[323,589,426],{"class":425},[323,591,592,596,598],{"class":325,"line":479},[323,593,595],{"class":594},"swJcz","  modules",[323,597,442],{"class":425},[323,599,600],{"class":528}," [\n",[323,602,603,606,608],{"class":325,"line":485},[323,604,605],{"class":584},"    vercubeNitro",[323,607,587],{"class":528},[323,609,426],{"class":425},[323,611,613,616,618,621,623,626,628,631,633,636,638,641],{"class":325,"line":612},7,[323,614,615],{"class":594},"      scanDirs",[323,617,442],{"class":425},[323,619,620],{"class":528}," [",[323,622,543],{"class":425},[323,624,625],{"class":333},"routes",[323,627,543],{"class":425},[323,629,630],{"class":425},",",[323,632,538],{"class":425},[323,634,635],{"class":333},"services",[323,637,543],{"class":425},[323,639,640],{"class":528},"]",[323,642,643],{"class":425},",\n",[323,645,647,650,653],{"class":325,"line":646},8,[323,648,649],{"class":425},"    }",[323,651,652],{"class":528},")",[323,654,643],{"class":425},[323,656,658,661],{"class":325,"line":657},9,[323,659,660],{"class":528},"  ]",[323,662,643],{"class":425},[323,664,666,669,671,673,676,678],{"class":325,"line":665},10,[323,667,668],{"class":594},"  serverDir",[323,670,442],{"class":425},[323,672,538],{"class":425},[323,674,675],{"class":333},".\u002Fsrc",[323,677,543],{"class":425},[323,679,643],{"class":425},[323,681,683,686,688],{"class":325,"line":682},11,[323,684,685],{"class":425},"}",[323,687,652],{"class":528},[323,689,546],{"class":425},[377,691,693],{"id":692},"create-a-controller","Create a Controller",[283,695,696,697,700],{},"Place a ",[294,698,699],{},"@Controller"," class anywhere inside your scanned directories:",[313,702,705],{"className":512,"code":703,"filename":704,"language":514,"meta":319,"style":319},"import { Controller, Get, Post, Param } from '@vercube\u002Fcore';\nimport { Inject } from '@vercube\u002Fdi';\nimport { UserService } from '..\u002Fservices\u002FUserService';\n\n@Controller('\u002Fapi\u002Fusers')\nexport class UserController {\n\n  @Inject(UserService)\n  private userService: UserService;\n\n  @Get('\u002F')\n  async list() {\n    return this.userService.findAll();\n  }\n\n  @Get('\u002F:id')\n  async get(@Param('id') id: string) {\n    return this.userService.findById(id);\n  }\n\n  @Post('\u002F')\n  async create() {\n    return this.userService.create();\n  }\n}\n","src\u002Froutes\u002FUserController.ts",[294,706,707,744,766,788,792,812,824,828,839,853,857,875,889,911,916,921,939,977,999,1004,1009,1027,1039,1057,1062],{"__ignoreMap":319},[323,708,709,711,713,716,718,721,723,726,728,731,733,735,737,740,742],{"class":325,"line":326},[323,710,522],{"class":521},[323,712,525],{"class":425},[323,714,715],{"class":528}," Controller",[323,717,630],{"class":425},[323,719,720],{"class":528}," Get",[323,722,630],{"class":425},[323,724,725],{"class":528}," Post",[323,727,630],{"class":425},[323,729,730],{"class":528}," Param",[323,732,532],{"class":425},[323,734,535],{"class":521},[323,736,538],{"class":425},[323,738,739],{"class":333},"@vercube\u002Fcore",[323,741,543],{"class":425},[323,743,546],{"class":425},[323,745,746,748,750,753,755,757,759,762,764],{"class":325,"line":429},[323,747,522],{"class":521},[323,749,525],{"class":425},[323,751,752],{"class":528}," Inject",[323,754,532],{"class":425},[323,756,535],{"class":521},[323,758,538],{"class":425},[323,760,761],{"class":333},"@vercube\u002Fdi",[323,763,543],{"class":425},[323,765,546],{"class":425},[323,767,768,770,772,775,777,779,781,784,786],{"class":325,"line":448},[323,769,522],{"class":521},[323,771,525],{"class":425},[323,773,774],{"class":528}," UserService",[323,776,532],{"class":425},[323,778,535],{"class":521},[323,780,538],{"class":425},[323,782,783],{"class":333},"..\u002Fservices\u002FUserService",[323,785,543],{"class":425},[323,787,546],{"class":425},[323,789,790],{"class":325,"line":464},[323,791,573],{"emptyLinePlaceholder":56},[323,793,794,797,800,802,804,807,809],{"class":325,"line":479},[323,795,796],{"class":425},"@",[323,798,799],{"class":584},"Controller",[323,801,587],{"class":528},[323,803,543],{"class":425},[323,805,806],{"class":333},"\u002Fapi\u002Fusers",[323,808,543],{"class":425},[323,810,811],{"class":528},")\n",[323,813,814,816,819,822],{"class":325,"line":485},[323,815,578],{"class":521},[323,817,818],{"class":435}," class",[323,820,821],{"class":329}," UserController",[323,823,445],{"class":425},[323,825,826],{"class":325,"line":612},[323,827,573],{"emptyLinePlaceholder":56},[323,829,830,833,836],{"class":325,"line":646},[323,831,832],{"class":425},"  @",[323,834,835],{"class":584},"Inject",[323,837,838],{"class":528},"(UserService)\n",[323,840,841,844,847,849,851],{"class":325,"line":657},[323,842,843],{"class":435},"  private",[323,845,846],{"class":594}," userService",[323,848,442],{"class":425},[323,850,774],{"class":329},[323,852,546],{"class":425},[323,854,855],{"class":325,"line":665},[323,856,573],{"emptyLinePlaceholder":56},[323,858,859,861,864,866,868,871,873],{"class":325,"line":682},[323,860,832],{"class":425},[323,862,863],{"class":584},"Get",[323,865,587],{"class":528},[323,867,543],{"class":425},[323,869,870],{"class":333},"\u002F",[323,872,543],{"class":425},[323,874,811],{"class":528},[323,876,878,881,884,887],{"class":325,"line":877},12,[323,879,880],{"class":435},"  async",[323,882,883],{"class":594}," list",[323,885,886],{"class":425},"()",[323,888,445],{"class":425},[323,890,892,895,898,901,904,907,909],{"class":325,"line":891},13,[323,893,894],{"class":521},"    return",[323,896,897],{"class":425}," this.",[323,899,900],{"class":528},"userService",[323,902,903],{"class":425},".",[323,905,906],{"class":584},"findAll",[323,908,886],{"class":594},[323,910,546],{"class":425},[323,912,914],{"class":325,"line":913},14,[323,915,482],{"class":425},[323,917,919],{"class":325,"line":918},15,[323,920,573],{"emptyLinePlaceholder":56},[323,922,924,926,928,930,932,935,937],{"class":325,"line":923},16,[323,925,832],{"class":425},[323,927,863],{"class":584},[323,929,587],{"class":528},[323,931,543],{"class":425},[323,933,934],{"class":333},"\u002F:id",[323,936,543],{"class":425},[323,938,811],{"class":528},[323,940,942,944,947,950,953,955,957,960,962,965,968,970,973,975],{"class":325,"line":941},17,[323,943,880],{"class":435},[323,945,946],{"class":594}," get",[323,948,949],{"class":425},"(@",[323,951,952],{"class":584},"Param",[323,954,587],{"class":528},[323,956,543],{"class":425},[323,958,959],{"class":333},"id",[323,961,543],{"class":425},[323,963,964],{"class":528},") ",[323,966,959],{"class":967},"sHdIc",[323,969,442],{"class":425},[323,971,972],{"class":329}," string",[323,974,652],{"class":425},[323,976,445],{"class":425},[323,978,980,982,984,986,988,991,993,995,997],{"class":325,"line":979},18,[323,981,894],{"class":521},[323,983,897],{"class":425},[323,985,900],{"class":528},[323,987,903],{"class":425},[323,989,990],{"class":584},"findById",[323,992,587],{"class":594},[323,994,959],{"class":528},[323,996,652],{"class":594},[323,998,546],{"class":425},[323,1000,1002],{"class":325,"line":1001},19,[323,1003,482],{"class":425},[323,1005,1007],{"class":325,"line":1006},20,[323,1008,573],{"emptyLinePlaceholder":56},[323,1010,1012,1014,1017,1019,1021,1023,1025],{"class":325,"line":1011},21,[323,1013,832],{"class":425},[323,1015,1016],{"class":584},"Post",[323,1018,587],{"class":528},[323,1020,543],{"class":425},[323,1022,870],{"class":333},[323,1024,543],{"class":425},[323,1026,811],{"class":528},[323,1028,1030,1032,1035,1037],{"class":325,"line":1029},22,[323,1031,880],{"class":435},[323,1033,1034],{"class":594}," create",[323,1036,886],{"class":425},[323,1038,445],{"class":425},[323,1040,1042,1044,1046,1048,1050,1053,1055],{"class":325,"line":1041},23,[323,1043,894],{"class":521},[323,1045,897],{"class":425},[323,1047,900],{"class":528},[323,1049,903],{"class":425},[323,1051,1052],{"class":584},"create",[323,1054,886],{"class":594},[323,1056,546],{"class":425},[323,1058,1060],{"class":325,"line":1059},24,[323,1061,482],{"class":425},[323,1063,1065],{"class":325,"line":1064},25,[323,1066,488],{"class":425},[377,1068,1070],{"id":1069},"create-a-service","Create a Service",[278,1072,1073],{"icon":280,"type":281},[283,1074,1075,1078,1079,1082,1083,1086,1087,1089],{},[286,1076,1077],{},"Nitro only."," In a standard Vercube application you do ",[286,1080,1081],{},"not"," need ",[294,1084,1085],{},"@Injectable()"," - the DI container discovers and binds classes automatically. In the Nitro integration, ",[294,1088,1085],{}," is required on every service you want auto-registered. The plugin uses it as an explicit opt-in signal so that only the classes you actually need get bound to the container, saving memory and avoiding unnecessary bindings at startup.",[313,1091,1094],{"className":512,"code":1092,"filename":1093,"language":514,"meta":319,"style":319},"import { Injectable } from '@vercube\u002Fdi';\n\n@Injectable()\nexport class UserService {\n  findAll() {\n    return [{ id: '1', name: 'Alice' }];\n  }\n\n  findById(id: string) {\n    return { id, name: 'Alice' };\n  }\n\n  create() {\n    return { id: '2', name: 'Bob' };\n  }\n}\n","src\u002Fservices\u002FUserService.ts",[294,1095,1096,1117,1121,1131,1141,1150,1191,1195,1199,1216,1239,1243,1247,1256,1288,1292],{"__ignoreMap":319},[323,1097,1098,1100,1102,1105,1107,1109,1111,1113,1115],{"class":325,"line":326},[323,1099,522],{"class":521},[323,1101,525],{"class":425},[323,1103,1104],{"class":528}," Injectable",[323,1106,532],{"class":425},[323,1108,535],{"class":521},[323,1110,538],{"class":425},[323,1112,761],{"class":333},[323,1114,543],{"class":425},[323,1116,546],{"class":425},[323,1118,1119],{"class":325,"line":429},[323,1120,573],{"emptyLinePlaceholder":56},[323,1122,1123,1125,1128],{"class":325,"line":448},[323,1124,796],{"class":425},[323,1126,1127],{"class":584},"Injectable",[323,1129,1130],{"class":528},"()\n",[323,1132,1133,1135,1137,1139],{"class":325,"line":464},[323,1134,578],{"class":521},[323,1136,818],{"class":435},[323,1138,774],{"class":329},[323,1140,445],{"class":425},[323,1142,1143,1146,1148],{"class":325,"line":479},[323,1144,1145],{"class":594},"  findAll",[323,1147,886],{"class":425},[323,1149,445],{"class":425},[323,1151,1152,1154,1156,1159,1162,1164,1166,1169,1171,1173,1176,1178,1180,1183,1185,1187,1189],{"class":325,"line":485},[323,1153,894],{"class":521},[323,1155,620],{"class":594},[323,1157,1158],{"class":425},"{",[323,1160,1161],{"class":594}," id",[323,1163,442],{"class":425},[323,1165,538],{"class":425},[323,1167,1168],{"class":333},"1",[323,1170,543],{"class":425},[323,1172,630],{"class":425},[323,1174,1175],{"class":594}," name",[323,1177,442],{"class":425},[323,1179,538],{"class":425},[323,1181,1182],{"class":333},"Alice",[323,1184,543],{"class":425},[323,1186,532],{"class":425},[323,1188,640],{"class":594},[323,1190,546],{"class":425},[323,1192,1193],{"class":325,"line":612},[323,1194,482],{"class":425},[323,1196,1197],{"class":325,"line":646},[323,1198,573],{"emptyLinePlaceholder":56},[323,1200,1201,1204,1206,1208,1210,1212,1214],{"class":325,"line":657},[323,1202,1203],{"class":594},"  findById",[323,1205,587],{"class":425},[323,1207,959],{"class":967},[323,1209,442],{"class":425},[323,1211,972],{"class":329},[323,1213,652],{"class":425},[323,1215,445],{"class":425},[323,1217,1218,1220,1222,1224,1226,1228,1230,1232,1234,1236],{"class":325,"line":665},[323,1219,894],{"class":521},[323,1221,525],{"class":425},[323,1223,1161],{"class":528},[323,1225,630],{"class":425},[323,1227,1175],{"class":594},[323,1229,442],{"class":425},[323,1231,538],{"class":425},[323,1233,1182],{"class":333},[323,1235,543],{"class":425},[323,1237,1238],{"class":425}," };\n",[323,1240,1241],{"class":325,"line":682},[323,1242,482],{"class":425},[323,1244,1245],{"class":325,"line":877},[323,1246,573],{"emptyLinePlaceholder":56},[323,1248,1249,1252,1254],{"class":325,"line":891},[323,1250,1251],{"class":594},"  create",[323,1253,886],{"class":425},[323,1255,445],{"class":425},[323,1257,1258,1260,1262,1264,1266,1268,1271,1273,1275,1277,1279,1281,1284,1286],{"class":325,"line":913},[323,1259,894],{"class":521},[323,1261,525],{"class":425},[323,1263,1161],{"class":594},[323,1265,442],{"class":425},[323,1267,538],{"class":425},[323,1269,1270],{"class":333},"2",[323,1272,543],{"class":425},[323,1274,630],{"class":425},[323,1276,1175],{"class":594},[323,1278,442],{"class":425},[323,1280,538],{"class":425},[323,1282,1283],{"class":333},"Bob",[323,1285,543],{"class":425},[323,1287,1238],{"class":425},[323,1289,1290],{"class":325,"line":918},[323,1291,482],{"class":425},[323,1293,1294],{"class":325,"line":923},[323,1295,488],{"class":425},[377,1297,1299],{"id":1298},"run","Run",[313,1301,1303],{"className":315,"code":1302,"language":318,"meta":319,"style":319},"npx nitro dev\n",[294,1304,1305],{"__ignoreMap":319},[323,1306,1307,1310,1313],{"class":325,"line":326},[323,1308,1309],{"class":329},"npx",[323,1311,1312],{"class":333}," nitro",[323,1314,1315],{"class":333}," dev\n",[306,1317,1319],{"id":1318},"how-it-works","How It Works",[283,1321,1322],{},"The module scans your source directories at build time using AST parsing and generates a Nitro virtual plugin module that:",[1324,1325,1326,1332,1342,1349],"ol",{},[385,1327,1328,1329],{},"Creates a Vercube application via ",[294,1330,1331],{},"createNitroApp()",[385,1333,1334,1335,1337,1338,1341],{},"Binds all discovered ",[294,1336,699],{}," and ",[294,1339,1340],{},"@Injectable"," classes to the DI container",[385,1343,1344,1345,1348],{},"Excludes ",[294,1346,1347],{},"BaseMiddleware"," subclasses from Nitro's native middleware handling",[385,1350,1351],{},"Registers a global route handler that delegates every request to the Vercube app",[283,1353,1354],{},"Nitro's own file-based routes continue to work normally alongside Vercube controllers.",[306,1356,1358],{"id":1357},"module-options","Module Options",[1360,1361,1362,1381],"table",{},[1363,1364,1365],"thead",{},[1366,1367,1368,1372,1375,1378],"tr",{},[1369,1370,1371],"th",{},"Option",[1369,1373,1374],{},"Type",[1369,1376,1377],{},"Default",[1369,1379,1380],{},"Description",[1382,1383,1384,1411],"tbody",{},[1366,1385,1386,1392,1397,1402],{},[1387,1388,1389],"td",{},[294,1390,1391],{},"scanDirs",[1387,1393,1394],{},[294,1395,1396],{},"string[]",[1387,1398,1399],{},[294,1400,1401],{},"['api', 'routes', 'services', 'repositories']",[1387,1403,1404,1405,1407,1408,903],{},"Directories to scan for ",[294,1406,1340],{}," services. Merged with any value you provide via ",[294,1409,1410],{},"defu",[1366,1412,1413,1418,1423,1428],{},[1387,1414,1415],{},[294,1416,1417],{},"setupFile",[1387,1419,1420],{},[294,1421,1422],{},"string",[1387,1424,1425],{},[294,1426,1427],{},"undefined",[1387,1429,1430,1431,1434,1435,1438,1439,1442],{},"Path to a file that exports a default function ",[294,1432,1433],{},"(app: App) => void | Promise\u003Cvoid>",". Called after all auto-discovered bindings are registered but ",[286,1436,1437],{},"before"," ",[294,1440,1441],{},"flushQueue()",". Use it to bind tokens that auto-discovery cannot handle.",[283,1444,1445,1447,1448,1450,1451,1454,1455,1458,1459,1454,1462,1465,1466,903],{},[286,1446,41],{}," (",[294,1449,699],{},") are always scanned from ",[294,1452,1453],{},"apiDir"," (default: ",[294,1456,1457],{},"api\u002F",") and ",[294,1460,1461],{},"routesDir",[294,1463,1464],{},"routes\u002F",") - these come from Nitro's own config and are not affected by ",[294,1467,1391],{},[283,1469,1470,1447,1473,1475,1476,1478],{},[286,1471,1472],{},"Services",[294,1474,1340],{},") are scanned exclusively from ",[294,1477,1391],{},". The default covers the most common layout. Add extra directories if your project places services elsewhere:",[313,1480,1482],{"className":512,"code":1481,"filename":509,"language":514,"meta":319,"style":319},"\u002F\u002F Default - scans api\u002F, routes\u002F, services\u002F, repositories\u002F\nvercubeNitro()\n\n\u002F\u002F Extended - add a custom directory on top of the defaults\nvercubeNitro({\n  scanDirs: ['api', 'routes', 'services', 'repositories', 'handlers'],\n})\n",[294,1483,1484,1490,1496,1500,1505,1513,1567],{"__ignoreMap":319},[323,1485,1486],{"class":325,"line":326},[323,1487,1489],{"class":1488},"sHwdD","\u002F\u002F Default - scans api\u002F, routes\u002F, services\u002F, repositories\u002F\n",[323,1491,1492,1494],{"class":325,"line":429},[323,1493,505],{"class":584},[323,1495,1130],{"class":528},[323,1497,1498],{"class":325,"line":448},[323,1499,573],{"emptyLinePlaceholder":56},[323,1501,1502],{"class":325,"line":464},[323,1503,1504],{"class":1488},"\u002F\u002F Extended - add a custom directory on top of the defaults\n",[323,1506,1507,1509,1511],{"class":325,"line":479},[323,1508,505],{"class":584},[323,1510,587],{"class":528},[323,1512,426],{"class":425},[323,1514,1515,1518,1520,1522,1524,1527,1529,1531,1533,1535,1537,1539,1541,1543,1545,1547,1549,1552,1554,1556,1558,1561,1563,1565],{"class":325,"line":485},[323,1516,1517],{"class":594},"  scanDirs",[323,1519,442],{"class":425},[323,1521,620],{"class":528},[323,1523,543],{"class":425},[323,1525,1526],{"class":333},"api",[323,1528,543],{"class":425},[323,1530,630],{"class":425},[323,1532,538],{"class":425},[323,1534,625],{"class":333},[323,1536,543],{"class":425},[323,1538,630],{"class":425},[323,1540,538],{"class":425},[323,1542,635],{"class":333},[323,1544,543],{"class":425},[323,1546,630],{"class":425},[323,1548,538],{"class":425},[323,1550,1551],{"class":333},"repositories",[323,1553,543],{"class":425},[323,1555,630],{"class":425},[323,1557,538],{"class":425},[323,1559,1560],{"class":333},"handlers",[323,1562,543],{"class":425},[323,1564,640],{"class":528},[323,1566,643],{"class":425},[323,1568,1569,1571],{"class":325,"line":612},[323,1570,685],{"class":425},[323,1572,811],{"class":528},[306,1574,1576],{"id":1575},"customizing-the-container","Customizing the Container",[283,1578,1579],{},"There are two ways to add custom bindings or perform setup that auto-discovery cannot handle.",[377,1581,1583,1585],{"id":1582},"setupfile-recommended",[294,1584,1417],{}," (recommended)",[283,1587,1588,1589,1591,1592,1438,1594,1596],{},"Pass a ",[294,1590,1417],{}," path pointing to a module that exports a default function. The module is bundled by Rolldown alongside the rest of your app and the function is called after all auto-discovered controllers and services are registered but ",[286,1593,1437],{},[294,1595,1441],{}," - so you can override or extend bindings freely.",[313,1598,1600],{"className":512,"code":1599,"filename":509,"language":514,"meta":319,"style":319},"import { vercubeNitro } from '@vercube\u002Fnitro';\nimport { defineConfig } from 'nitro';\n\nexport default defineConfig({\n  modules: [\n    vercubeNitro({\n      setupFile: '.\u002Fsrc\u002Fcontainer.ts',\n    }),\n  ],\n});\n",[294,1601,1602,1622,1642,1646,1658,1666,1674,1690,1698,1704],{"__ignoreMap":319},[323,1603,1604,1606,1608,1610,1612,1614,1616,1618,1620],{"class":325,"line":326},[323,1605,522],{"class":521},[323,1607,525],{"class":425},[323,1609,529],{"class":528},[323,1611,532],{"class":425},[323,1613,535],{"class":521},[323,1615,538],{"class":425},[323,1617,296],{"class":333},[323,1619,543],{"class":425},[323,1621,546],{"class":425},[323,1623,1624,1626,1628,1630,1632,1634,1636,1638,1640],{"class":325,"line":429},[323,1625,522],{"class":521},[323,1627,525],{"class":425},[323,1629,555],{"class":528},[323,1631,532],{"class":425},[323,1633,535],{"class":521},[323,1635,538],{"class":425},[323,1637,564],{"class":333},[323,1639,543],{"class":425},[323,1641,546],{"class":425},[323,1643,1644],{"class":325,"line":448},[323,1645,573],{"emptyLinePlaceholder":56},[323,1647,1648,1650,1652,1654,1656],{"class":325,"line":464},[323,1649,578],{"class":521},[323,1651,581],{"class":521},[323,1653,555],{"class":584},[323,1655,587],{"class":528},[323,1657,426],{"class":425},[323,1659,1660,1662,1664],{"class":325,"line":479},[323,1661,595],{"class":594},[323,1663,442],{"class":425},[323,1665,600],{"class":528},[323,1667,1668,1670,1672],{"class":325,"line":485},[323,1669,605],{"class":584},[323,1671,587],{"class":528},[323,1673,426],{"class":425},[323,1675,1676,1679,1681,1683,1686,1688],{"class":325,"line":612},[323,1677,1678],{"class":594},"      setupFile",[323,1680,442],{"class":425},[323,1682,538],{"class":425},[323,1684,1685],{"class":333},".\u002Fsrc\u002Fcontainer.ts",[323,1687,543],{"class":425},[323,1689,643],{"class":425},[323,1691,1692,1694,1696],{"class":325,"line":646},[323,1693,649],{"class":425},[323,1695,652],{"class":528},[323,1697,643],{"class":425},[323,1699,1700,1702],{"class":325,"line":657},[323,1701,660],{"class":528},[323,1703,643],{"class":425},[323,1705,1706,1708,1710],{"class":325,"line":665},[323,1707,685],{"class":425},[323,1709,652],{"class":528},[323,1711,546],{"class":425},[313,1713,1716],{"className":512,"code":1714,"filename":1715,"language":514,"meta":319,"style":319},"import type { App } from '@vercube\u002Fcore';\nimport { DatabaseToken } from '.\u002Ftokens';\nimport { PostgresDatabase } from '.\u002Finfra\u002FPostgresDatabase';\n\nexport default async (app: App) => {\n  app.container.bind(DatabaseToken, PostgresDatabase);\n};\n","src\u002Fcontainer.ts",[294,1717,1718,1742,1764,1786,1790,1815,1843],{"__ignoreMap":319},[323,1719,1720,1722,1725,1727,1730,1732,1734,1736,1738,1740],{"class":325,"line":326},[323,1721,522],{"class":521},[323,1723,1724],{"class":521}," type",[323,1726,525],{"class":425},[323,1728,1729],{"class":528}," App",[323,1731,532],{"class":425},[323,1733,535],{"class":521},[323,1735,538],{"class":425},[323,1737,739],{"class":333},[323,1739,543],{"class":425},[323,1741,546],{"class":425},[323,1743,1744,1746,1748,1751,1753,1755,1757,1760,1762],{"class":325,"line":429},[323,1745,522],{"class":521},[323,1747,525],{"class":425},[323,1749,1750],{"class":528}," DatabaseToken",[323,1752,532],{"class":425},[323,1754,535],{"class":521},[323,1756,538],{"class":425},[323,1758,1759],{"class":333},".\u002Ftokens",[323,1761,543],{"class":425},[323,1763,546],{"class":425},[323,1765,1766,1768,1770,1773,1775,1777,1779,1782,1784],{"class":325,"line":448},[323,1767,522],{"class":521},[323,1769,525],{"class":425},[323,1771,1772],{"class":528}," PostgresDatabase",[323,1774,532],{"class":425},[323,1776,535],{"class":521},[323,1778,538],{"class":425},[323,1780,1781],{"class":333},".\u002Finfra\u002FPostgresDatabase",[323,1783,543],{"class":425},[323,1785,546],{"class":425},[323,1787,1788],{"class":325,"line":464},[323,1789,573],{"emptyLinePlaceholder":56},[323,1791,1792,1794,1796,1799,1801,1804,1806,1808,1810,1813],{"class":325,"line":479},[323,1793,578],{"class":521},[323,1795,581],{"class":521},[323,1797,1798],{"class":435}," async",[323,1800,1447],{"class":425},[323,1802,1803],{"class":967},"app",[323,1805,442],{"class":425},[323,1807,1729],{"class":329},[323,1809,652],{"class":425},[323,1811,1812],{"class":435}," =>",[323,1814,445],{"class":425},[323,1816,1817,1820,1822,1825,1827,1830,1832,1835,1837,1839,1841],{"class":325,"line":485},[323,1818,1819],{"class":528},"  app",[323,1821,903],{"class":425},[323,1823,1824],{"class":528},"container",[323,1826,903],{"class":425},[323,1828,1829],{"class":584},"bind",[323,1831,587],{"class":594},[323,1833,1834],{"class":528},"DatabaseToken",[323,1836,630],{"class":425},[323,1838,1772],{"class":528},[323,1840,652],{"class":594},[323,1842,546],{"class":425},[323,1844,1845],{"class":325,"line":612},[323,1846,1847],{"class":425},"};\n",[377,1849,1851,1854],{"id":1850},"usevercubeapp-runtime-access",[294,1852,1853],{},"useVercubeApp()"," (runtime access)",[283,1856,1857,1858,1860],{},"If you need access to the app instance after startup - for example inside a Nitro plugin or a request handler - use the ",[294,1859,1853],{}," helper:",[313,1862,1864],{"className":512,"code":1863,"language":514,"meta":319,"style":319},"import { useVercubeApp } from '@vercube\u002Fnitro';\n\nconst { container } = useVercubeApp();\n\ncontainer.bind($MyService, MyService);\n",[294,1865,1866,1887,1891,1912,1916],{"__ignoreMap":319},[323,1867,1868,1870,1872,1875,1877,1879,1881,1883,1885],{"class":325,"line":326},[323,1869,522],{"class":521},[323,1871,525],{"class":425},[323,1873,1874],{"class":528}," useVercubeApp",[323,1876,532],{"class":425},[323,1878,535],{"class":521},[323,1880,538],{"class":425},[323,1882,296],{"class":333},[323,1884,543],{"class":425},[323,1886,546],{"class":425},[323,1888,1889],{"class":325,"line":429},[323,1890,573],{"emptyLinePlaceholder":56},[323,1892,1893,1896,1898,1901,1903,1906,1908,1910],{"class":325,"line":448},[323,1894,1895],{"class":435},"const",[323,1897,525],{"class":425},[323,1899,1900],{"class":528}," container ",[323,1902,685],{"class":425},[323,1904,1905],{"class":425}," =",[323,1907,1874],{"class":584},[323,1909,886],{"class":528},[323,1911,546],{"class":425},[323,1913,1914],{"class":325,"line":464},[323,1915,573],{"emptyLinePlaceholder":56},[323,1917,1918,1920,1922,1924,1927,1929,1932],{"class":325,"line":479},[323,1919,1824],{"class":528},[323,1921,903],{"class":425},[323,1923,1829],{"class":584},[323,1925,1926],{"class":528},"($MyService",[323,1928,630],{"class":425},[323,1930,1931],{"class":528}," MyService)",[323,1933,546],{"class":425},[278,1935,1936],{"icon":280,"type":281},[283,1937,1938,1939,1941,1942,1944,1945,1947],{},"Only call ",[294,1940,1853],{}," after the Nitro app has fully initialized (e.g. inside a Nitro plugin or a request handler). Calling it too early will return ",[294,1943,1427],{},". For container setup, prefer ",[294,1946,1417],{}," instead.",[1949,1950,1951],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":319,"searchDepth":326,"depth":429,"links":1953},[1954,1957,1958,1959,1960],{"id":308,"depth":429,"text":18,"children":1955},[1956],{"id":379,"depth":448,"text":380},{"id":491,"depth":429,"text":492},{"id":1318,"depth":429,"text":1319},{"id":1357,"depth":429,"text":1358},{"id":1575,"depth":429,"text":1576,"children":1961},[1962,1964],{"id":1582,"depth":448,"text":1963},"setupFile (recommended)",{"id":1850,"depth":448,"text":1965},"useVercubeApp() (runtime access)","Use Vercube controllers and DI inside a Nitro application - experimental","md",null,{},{"title":66,"description":1966},"tp_posL3F1NgQTaHQ9wZihe9iqBrkwbfeQB6ywPogFk",[1973,1975],{"title":139,"path":140,"stem":141,"description":1974,"children":-1},"Interactive API documentation with Scalar API Reference",{"title":102,"path":151,"stem":152,"description":1976,"children":-1},"Using Vercube StorageManager backed by Nitro's built-in storage",1782807890484]