[{"data":1,"prerenderedAt":2677},["ShallowReactive",2],{"navigation":3,"\u002Fdocs\u002Fpackages\u002Fcli":176,"\u002Fdocs\u002Fpackages\u002Fcli-surround":2672},[4,21,86,158],{"title":5,"path":6,"stem":7,"children":8,"status":11,"icon":20},"Getting Started","\u002Fdocs\u002Fgetting-started","1.docs\u002F1.getting-started\u002F1.index",[9,12,16],{"title":10,"path":6,"stem":7,"status":11},"Introduction",null,{"title":13,"path":14,"stem":15,"status":11},"Installation","\u002Fdocs\u002Fgetting-started\u002Finstallation","1.docs\u002F1.getting-started\u002F2.installation",{"title":17,"path":18,"stem":19,"status":11},"Quick Start","\u002Fdocs\u002Fgetting-started\u002Fquick-start","1.docs\u002F1.getting-started\u002F3.quick-start",false,{"title":22,"path":23,"stem":24,"children":25,"status":11,"icon":20},"Core Concepts","\u002Fdocs\u002Fcore-concepts","1.docs\u002F2.core-concepts\u002F1.index",[26,28,32,36,46,50,54,58,62,66,70,74,78,82],{"title":27,"path":23,"stem":24,"status":11},"Overview",{"title":29,"path":30,"stem":31,"status":11},"Response","\u002Fdocs\u002Fcore-concepts\u002Fresponse","1.docs\u002F2.core-concepts\u002F10.response",{"title":33,"path":34,"stem":35,"status":11},"Testing","\u002Fdocs\u002Fcore-concepts\u002Ftesting","1.docs\u002F2.core-concepts\u002F12.testing",{"title":37,"path":38,"stem":39,"children":40,"status":11,"icon":20,"defaultOpen":20},"Decorators","\u002Fdocs\u002Fcore-concepts\u002Fdecorators","1.docs\u002F2.core-concepts\u002F13.decorators\u002F1.index",[41,42],{"title":27,"path":38,"stem":39,"status":11},{"title":43,"path":44,"stem":45,"status":11},"Custom","\u002Fdocs\u002Fcore-concepts\u002Fdecorators\u002Fcustom","1.docs\u002F2.core-concepts\u002F13.decorators\u002F2.custom",{"title":47,"path":48,"stem":49,"status":11},"Discovery Service","\u002Fdocs\u002Fcore-concepts\u002Fdiscovery","1.docs\u002F2.core-concepts\u002F14.discovery",{"title":51,"path":52,"stem":53,"status":11},"Application Lifecycle","\u002Fdocs\u002Fcore-concepts\u002Fapp-lifecycle","1.docs\u002F2.core-concepts\u002F15.app-lifecycle",{"title":55,"path":56,"stem":57,"status":11},"Controllers","\u002Fdocs\u002Fcore-concepts\u002Fcontrollers","1.docs\u002F2.core-concepts\u002F2.controllers",{"title":59,"path":60,"stem":61,"status":11},"Routing","\u002Fdocs\u002Fcore-concepts\u002Frouting","1.docs\u002F2.core-concepts\u002F3.routing",{"title":63,"path":64,"stem":65,"status":11},"Providers","\u002Fdocs\u002Fcore-concepts\u002Fproviders","1.docs\u002F2.core-concepts\u002F4.providers",{"title":67,"path":68,"stem":69,"status":11},"Modules","\u002Fdocs\u002Fcore-concepts\u002Fmodules","1.docs\u002F2.core-concepts\u002F5.modules",{"title":71,"path":72,"stem":73,"status":11},"Configuration","\u002Fdocs\u002Fcore-concepts\u002Fconfiguration","1.docs\u002F2.core-concepts\u002F6.configuration",{"title":75,"path":76,"stem":77,"status":11},"Middleware","\u002Fdocs\u002Fcore-concepts\u002Fmiddleware","1.docs\u002F2.core-concepts\u002F7.middleware",{"title":79,"path":80,"stem":81,"status":11},"Guards","\u002Fdocs\u002Fcore-concepts\u002Fguards","1.docs\u002F2.core-concepts\u002F8.guards",{"title":83,"path":84,"stem":85,"status":11},"Exceptions","\u002Fdocs\u002Fcore-concepts\u002Fexceptions","1.docs\u002F2.core-concepts\u002F9.exceptions",{"title":87,"path":88,"stem":89,"children":90,"status":11,"icon":20},"Packages","\u002Fdocs\u002Fpackages","1.docs\u002F3.packages\u002F1.index",[91,92,97,108,112,130,134,138,142,146,150,154],{"title":27,"path":88,"stem":89,"status":11},{"title":93,"path":94,"stem":95,"status":96},"CLI","\u002Fdocs\u002Fpackages\u002Fcli","1.docs\u002F3.packages\u002F10.cli","experimental",{"title":98,"path":99,"stem":100,"children":101,"status":11,"icon":20,"defaultOpen":20},"Events","\u002Fdocs\u002Fpackages\u002Fmessaging","1.docs\u002F3.packages\u002F11.messaging\u002F1.index",[102,104],{"title":27,"path":99,"stem":100,"status":103},"beta",{"title":105,"path":106,"stem":107,"status":96},"Redis","\u002Fdocs\u002Fpackages\u002Fmessaging\u002Fredis","1.docs\u002F3.packages\u002F11.messaging\u002F2.redis",{"title":109,"path":110,"stem":111,"status":103},"Serve Static","\u002Fdocs\u002Fpackages\u002Fserve-static","1.docs\u002F3.packages\u002F12.serve-static",{"title":113,"path":114,"stem":115,"children":116,"status":11,"icon":20,"defaultOpen":20},"Auth","\u002Fdocs\u002Fpackages\u002Fauth","1.docs\u002F3.packages\u002F2.auth\u002F1.index",[117,118,122,126],{"title":27,"path":114,"stem":115,"status":103},{"title":119,"path":120,"stem":121,"status":103},"JWT Provider","\u002Fdocs\u002Fpackages\u002Fauth\u002Fjwt","1.docs\u002F3.packages\u002F2.auth\u002F2.jwt",{"title":123,"path":124,"stem":125,"status":103},"Local Provider","\u002Fdocs\u002Fpackages\u002Fauth\u002Flocal","1.docs\u002F3.packages\u002F2.auth\u002F3.local",{"title":127,"path":128,"stem":129,"status":96},"OAuth2 Provider","\u002Fdocs\u002Fpackages\u002Fauth\u002Foauth2","1.docs\u002F3.packages\u002F2.auth\u002F4.oauth2",{"title":131,"path":132,"stem":133,"status":103},"JWT","\u002Fdocs\u002Fpackages\u002Fjwt","1.docs\u002F3.packages\u002F3.jwt",{"title":135,"path":136,"stem":137,"status":103},"Drizzle","\u002Fdocs\u002Fpackages\u002Fdrizzle","1.docs\u002F3.packages\u002F4.drizzle",{"title":139,"path":140,"stem":141,"status":103},"Papr","\u002Fdocs\u002Fpackages\u002Fpapr","1.docs\u002F3.packages\u002F5.papr",{"title":143,"path":144,"stem":145,"status":103},"Mongoose","\u002Fdocs\u002Fpackages\u002Fmongoose","1.docs\u002F3.packages\u002F6.mongoose",{"title":147,"path":148,"stem":149,"status":103},"Swagger","\u002Fdocs\u002Fpackages\u002Fswagger","1.docs\u002F3.packages\u002F7.swagger",{"title":151,"path":152,"stem":153,"status":103},"Node Server","\u002Fdocs\u002Fpackages\u002Fnode-server","1.docs\u002F3.packages\u002F8.node-server",{"title":155,"path":156,"stem":157,"status":103},"uWS Server","\u002Fdocs\u002Fpackages\u002Fuws-server","1.docs\u002F3.packages\u002F9.uws-server",{"title":159,"path":160,"stem":161,"children":162,"status":11,"icon":20},"Roadmap","\u002Fdocs\u002Froadmap","1.docs\u002F4.roadmap\u002F1.index",[163,164,168,172],{"title":27,"path":160,"stem":161,"status":11},{"title":165,"path":166,"stem":167,"status":11},"Short term (0-3 months)","\u002Fdocs\u002Froadmap\u002Fshort-term","1.docs\u002F4.roadmap\u002F2.short-term",{"title":169,"path":170,"stem":171,"status":11},"Mid term (3-9 months)","\u002Fdocs\u002Froadmap\u002Fmid-term","1.docs\u002F4.roadmap\u002F3.mid-term",{"title":173,"path":174,"stem":175,"status":11},"Long term (9-12+ months)","\u002Fdocs\u002Froadmap\u002Flong-term","1.docs\u002F4.roadmap\u002F4.long-term",{"id":177,"title":93,"body":178,"description":2667,"extension":2668,"meta":2669,"navigation":1818,"path":94,"seo":2670,"status":96,"stem":95,"__hash__":2671},"docs\u002F1.docs\u002F3.packages\u002F10.cli.md",{"type":179,"value":180,"toc":2649},"minimark",[181,189,193,273,277,284,287,333,336,357,368,447,453,456,480,518,550,556,559,600,642,675,747,753,756,768,774,780,787,853,858,1002,1006,1009,1026,1034,1037,1054,1060,1082,1085,1105,1111,1114,1133,1137,1195,1199,1220,1223,1227,1237,1241,1244,1271,1282,1286,1289,1305,1311,1317,1320,1368,1371,1402,1405,1583,1589,1598,1602,1605,1611,1618,2122,2125,2166,2187,2191,2194,2243,2255,2260,2275,2285,2289,2292,2402,2405,2409,2412,2475,2478,2509,2513,2516,2531,2534,2577,2581,2639,2645],[182,183,184,188],"p",{},[185,186,187],"code",{},"@miiajs\u002Fcli"," provides commands for developing, building, and running MiiaJS applications across Bun, Deno, and Node.js. It also includes code generation and an interactive project scaffolding wizard.",[190,191,13],"h2",{"id":192},"installation",[194,195,196,224,241,257],"code-group",{},[197,198,204],"pre",{"className":199,"code":200,"filename":201,"language":202,"meta":203,"style":203},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","bun add -D @miiajs\u002Fcli\n","bun","bash","",[185,205,206],{"__ignoreMap":203},[207,208,211,214,218,221],"span",{"class":209,"line":210},"line",1,[207,212,201],{"class":213},"sBMFI",[207,215,217],{"class":216},"sfazB"," add",[207,219,220],{"class":216}," -D",[207,222,223],{"class":216}," @miiajs\u002Fcli\n",[197,225,228],{"className":199,"code":226,"filename":227,"language":202,"meta":203,"style":203},"npm install -D @miiajs\u002Fcli\n","npm",[185,229,230],{"__ignoreMap":203},[207,231,232,234,237,239],{"class":209,"line":210},[207,233,227],{"class":213},[207,235,236],{"class":216}," install",[207,238,220],{"class":216},[207,240,223],{"class":216},[197,242,245],{"className":199,"code":243,"filename":244,"language":202,"meta":203,"style":203},"pnpm add -D @miiajs\u002Fcli\n","pnpm",[185,246,247],{"__ignoreMap":203},[207,248,249,251,253,255],{"class":209,"line":210},[207,250,244],{"class":213},[207,252,217],{"class":216},[207,254,220],{"class":216},[207,256,223],{"class":216},[197,258,261],{"className":199,"code":259,"filename":260,"language":202,"meta":203,"style":203},"yarn add -D @miiajs\u002Fcli\n","yarn",[185,262,263],{"__ignoreMap":203},[207,264,265,267,269,271],{"class":209,"line":210},[207,266,260],{"class":213},[207,268,217],{"class":216},[207,270,220],{"class":216},[207,272,223],{"class":216},[190,274,276],{"id":275},"commands","Commands",[278,279,281],"h3",{"id":280},"miia-dev",[185,282,283],{},"miia dev",[182,285,286],{},"Start the development server with hot reload and type checking:",[197,288,290],{"className":199,"code":289,"language":202,"meta":203,"style":203},"miia dev\nmiia dev --runtime bun\nmiia dev --entry src\u002Fserver.ts --env-file .env.local\n",[185,291,292,300,314],{"__ignoreMap":203},[207,293,294,297],{"class":209,"line":210},[207,295,296],{"class":213},"miia",[207,298,299],{"class":216}," dev\n",[207,301,303,305,308,311],{"class":209,"line":302},2,[207,304,296],{"class":213},[207,306,307],{"class":216}," dev",[207,309,310],{"class":216}," --runtime",[207,312,313],{"class":216}," bun\n",[207,315,317,319,321,324,327,330],{"class":209,"line":316},3,[207,318,296],{"class":213},[207,320,307],{"class":216},[207,322,323],{"class":216}," --entry",[207,325,326],{"class":216}," src\u002Fserver.ts",[207,328,329],{"class":216}," --env-file",[207,331,332],{"class":216}," .env.local\n",[182,334,335],{},"Runs two parallel processes:",[337,338,339,351],"ol",{},[340,341,342,346,347,350],"li",{},[343,344,345],"strong",{},"TypeScript compiler"," in watch mode (",[185,348,349],{},"tsc --noEmit --watch",")",[340,352,353,356],{},[343,354,355],{},"Development server"," with file watching",[182,358,359,360,363,364,367],{},"If the server process crashes (uncaught throw, ",[185,361,362],{},"process.exit(1)",", bad import), the CLI automatically restarts it with a 500 ms debounce while keeping type-checking alive. A crash-loop guard gives up after 5 crashes within 10 seconds to avoid burning CPU on a genuinely broken file. A ",[185,365,366],{},"tsc"," crash, by contrast, always triggers a full shutdown - type-checking is part of the dev contract.",[369,370,371,387],"table",{},[372,373,374],"thead",{},[375,376,377,381,384],"tr",{},[378,379,380],"th",{},"Flag",[378,382,383],{},"Default",[378,385,386],{},"Description",[388,389,390,416,431],"tbody",{},[375,391,392,402,405],{},[393,394,395,398,399],"td",{},[185,396,397],{},"--runtime",", ",[185,400,401],{},"-r",[393,403,404],{},"auto-detected",[393,406,407,408,398,410,398,413],{},"Runtime: ",[185,409,201],{},[185,411,412],{},"deno",[185,414,415],{},"node",[375,417,418,423,428],{},[393,419,420],{},[185,421,422],{},"--entry",[393,424,425],{},[185,426,427],{},"src\u002Fmain.ts",[393,429,430],{},"Entry point file",[375,432,433,438,444],{},[393,434,435],{},[185,436,437],{},"--env-file",[393,439,440,443],{},[185,441,442],{},".env"," (if exists)",[393,445,446],{},"Environment file path",[278,448,450],{"id":449},"miia-build",[185,451,452],{},"miia build",[182,454,455],{},"Build the project for production:",[197,457,459],{"className":199,"code":458,"language":202,"meta":203,"style":203},"miia build\nmiia build --runtime node\n",[185,460,461,468],{"__ignoreMap":203},[207,462,463,465],{"class":209,"line":210},[207,464,296],{"class":213},[207,466,467],{"class":216}," build\n",[207,469,470,472,475,477],{"class":209,"line":302},[207,471,296],{"class":213},[207,473,474],{"class":216}," build",[207,476,310],{"class":216},[207,478,479],{"class":216}," node\n",[369,481,482,492],{},[372,483,484],{},[375,485,486,489],{},[378,487,488],{},"Runtime",[378,490,491],{},"Behavior",[388,493,494,505],{},[375,495,496,499],{},[393,497,498],{},"Bun \u002F Deno",[393,500,501,504],{},[185,502,503],{},"tsc --noEmit"," (type-check only)",[375,506,507,510],{},[393,508,509],{},"Node.js",[393,511,512,514,515,350],{},[185,513,366],{}," (full compilation to ",[185,516,517],{},"dist\u002F",[369,519,520,530],{},[372,521,522],{},[375,523,524,526,528],{},[378,525,380],{},[378,527,383],{},[378,529,386],{},[388,531,532],{},[375,533,534,540,542],{},[393,535,536,398,538],{},[185,537,397],{},[185,539,401],{},[393,541,404],{},[393,543,407,544,398,546,398,548],{},[185,545,201],{},[185,547,412],{},[185,549,415],{},[278,551,553],{"id":552},"miia-start",[185,554,555],{},"miia start",[182,557,558],{},"Start the production server:",[197,560,562],{"className":199,"code":561,"language":202,"meta":203,"style":203},"miia start\nmiia start --runtime node --dist dist\u002Fapp.js\nmiia start --env-file .env.production\n",[185,563,564,571,589],{"__ignoreMap":203},[207,565,566,568],{"class":209,"line":210},[207,567,296],{"class":213},[207,569,570],{"class":216}," start\n",[207,572,573,575,578,580,583,586],{"class":209,"line":302},[207,574,296],{"class":213},[207,576,577],{"class":216}," start",[207,579,310],{"class":216},[207,581,582],{"class":216}," node",[207,584,585],{"class":216}," --dist",[207,587,588],{"class":216}," dist\u002Fapp.js\n",[207,590,591,593,595,597],{"class":209,"line":316},[207,592,296],{"class":213},[207,594,577],{"class":216},[207,596,329],{"class":216},[207,598,599],{"class":216}," .env.production\n",[369,601,602,611],{},[372,603,604],{},[375,605,606,608],{},[378,607,488],{},[378,609,610],{},"Command",[388,612,613,623,633],{},[375,614,615,618],{},[393,616,617],{},"Bun",[393,619,620],{},[185,621,622],{},"bun src\u002Fmain.ts",[375,624,625,628],{},[393,626,627],{},"Deno",[393,629,630],{},[185,631,632],{},"deno run --allow-all src\u002Fmain.ts",[375,634,635,637],{},[393,636,509],{},[393,638,639],{},[185,640,641],{},"node dist\u002Fmain.js",[182,643,644,645,648,649,398,652,655,656,659,660,663,664,667,668,670,671,674],{},"Sets ",[185,646,647],{},"NODE_ENV=production"," for Bun and Node.js. Unlike ",[185,650,651],{},"dev",[185,653,654],{},"build",", and ",[185,657,658],{},"check",", the ",[185,661,662],{},"start"," command does ",[343,665,666],{},"not"," require ",[185,669,366],{}," on ",[185,672,673],{},"PATH"," - production containers can ship without TypeScript installed.",[369,676,677,687],{},[372,678,679],{},[375,680,681,683,685],{},[378,682,380],{},[378,684,383],{},[378,686,386],{},[388,688,689,707,720,735],{},[375,690,691,697,699],{},[393,692,693,398,695],{},[185,694,397],{},[185,696,401],{},[393,698,404],{},[393,700,407,701,398,703,398,705],{},[185,702,201],{},[185,704,412],{},[185,706,415],{},[375,708,709,713,717],{},[393,710,711],{},[185,712,422],{},[393,714,715],{},[185,716,427],{},[393,718,719],{},"Source entry point",[375,721,722,727,732],{},[393,723,724],{},[185,725,726],{},"--dist",[393,728,729],{},[185,730,731],{},"dist\u002Fmain.js",[393,733,734],{},"Compiled entry (Node.js only)",[375,736,737,741,745],{},[393,738,739],{},[185,740,437],{},[393,742,743,443],{},[185,744,442],{},[393,746,446],{},[278,748,750],{"id":749},"miia-check",[185,751,752],{},"miia check",[182,754,755],{},"Type-check the project:",[197,757,759],{"className":199,"code":758,"language":202,"meta":203,"style":203},"miia check\n",[185,760,761],{"__ignoreMap":203},[207,762,763,765],{"class":209,"line":210},[207,764,296],{"class":213},[207,766,767],{"class":216}," check\n",[182,769,770,771,773],{},"Runs ",[185,772,503],{},". No flags.",[278,775,777],{"id":776},"miia-generate",[185,778,779],{},"miia generate",[182,781,782,783,786],{},"Generate individual artifacts inside an existing project. Alias: ",[185,784,785],{},"miia g",".",[197,788,790],{"className":199,"code":789,"language":202,"meta":203,"style":203},"miia generate \u003Cschematic> \u003Cname> [flags]\nmiia g \u003Calias> \u003Cname> [flags]\n",[185,791,792,826],{"__ignoreMap":203},[207,793,794,796,799,803,806,810,813,815,818,821,823],{"class":209,"line":210},[207,795,296],{"class":213},[207,797,798],{"class":216}," generate",[207,800,802],{"class":801},"sMK4o"," \u003C",[207,804,805],{"class":216},"schemati",[207,807,809],{"class":808},"sTEyZ","c",[207,811,812],{"class":801},">",[207,814,802],{"class":801},[207,816,817],{"class":216},"nam",[207,819,820],{"class":808},"e",[207,822,812],{"class":801},[207,824,825],{"class":808}," [flags]\n",[207,827,828,830,833,835,838,841,843,845,847,849,851],{"class":209,"line":302},[207,829,296],{"class":213},[207,831,832],{"class":216}," g",[207,834,802],{"class":801},[207,836,837],{"class":216},"alia",[207,839,840],{"class":808},"s",[207,842,812],{"class":801},[207,844,802],{"class":801},[207,846,817],{"class":216},[207,848,820],{"class":808},[207,850,812],{"class":801},[207,852,825],{"class":808},[854,855,857],"h4",{"id":856},"schematics","Schematics",[369,859,860,876],{},[372,861,862],{},[375,863,864,867,870,873],{},[378,865,866],{},"Schematic",[378,868,869],{},"Alias",[378,871,872],{},"Generates",[378,874,875],{},"Auto-registers in",[388,877,878,902,923,944,963,981],{},[375,879,880,885,890,896],{},[393,881,882],{},[185,883,884],{},"module",[393,886,887],{},[185,888,889],{},"m",[393,891,892,895],{},[185,893,894],{},"@Module"," class",[393,897,898,899],{},"parent module ",[185,900,901],{},"imports",[375,903,904,909,913,918],{},[393,905,906],{},[185,907,908],{},"controller",[393,910,911],{},[185,912,809],{},[393,914,915,895],{},[185,916,917],{},"@Controller",[393,919,898,920],{},[185,921,922],{},"controllers",[375,924,925,930,934,939],{},[393,926,927],{},[185,928,929],{},"service",[393,931,932],{},[185,933,840],{},[393,935,936,895],{},[185,937,938],{},"@Injectable",[393,940,898,941],{},[185,942,943],{},"providers",[375,945,946,951,956,959],{},[393,947,948],{},[185,949,950],{},"resource",[393,952,953],{},[185,954,955],{},"r",[393,957,958],{},"module + controller + service (CRUD)",[393,960,898,961],{},[185,962,901],{},[375,964,965,970,973,978],{},[393,966,967],{},[185,968,969],{},"middleware",[393,971,972],{},"—",[393,974,975,977],{},[185,976,75],{}," function",[393,979,980],{},"— (manual registration)",[375,982,983,988,990,998],{},[393,984,985],{},[185,986,987],{},"guard",[393,989,972],{},[393,991,992,994,995,895],{},[185,993,938],{}," ",[185,996,997],{},"CanActivate",[393,999,898,1000],{},[185,1001,943],{},[854,1003,1005],{"id":1004},"examples","Examples",[182,1007,1008],{},"Generate a controller with auto-registration:",[197,1010,1012],{"className":199,"code":1011,"language":202,"meta":203,"style":203},"miia g c user\n",[185,1013,1014],{"__ignoreMap":203},[207,1015,1016,1018,1020,1023],{"class":209,"line":210},[207,1017,296],{"class":213},[207,1019,832],{"class":216},[207,1021,1022],{"class":216}," c",[207,1024,1025],{"class":216}," user\n",[197,1027,1032],{"className":1028,"code":1030,"language":1031},[1029],"language-text","CREATE src\u002Fuser\u002Fuser.controller.ts\nUPDATE src\u002Fapp\u002Fapp.module.ts\n  + import { UserController } from '..\u002Fuser\u002Fuser.controller.js'\n  + controllers: [..., UserController]\n","text",[185,1033,1030],{"__ignoreMap":203},[182,1035,1036],{},"Generate a full CRUD resource:",[197,1038,1040],{"className":199,"code":1039,"language":202,"meta":203,"style":203},"miia g r product\n",[185,1041,1042],{"__ignoreMap":203},[207,1043,1044,1046,1048,1051],{"class":209,"line":210},[207,1045,296],{"class":213},[207,1047,832],{"class":216},[207,1049,1050],{"class":216}," r",[207,1052,1053],{"class":216}," product\n",[197,1055,1058],{"className":1056,"code":1057,"language":1031},[1029],"CREATE src\u002Fproduct\u002Fproduct.module.ts\nCREATE src\u002Fproduct\u002Fproduct.controller.ts\nCREATE src\u002Fproduct\u002Fproduct.service.ts\nUPDATE src\u002Fapp\u002Fapp.module.ts\n  + import { ProductModule } from '..\u002Fproduct\u002Fproduct.module.js'\n  + imports: [..., ProductModule]\n",[185,1059,1057],{"__ignoreMap":203},[182,1061,1062,1063,398,1066,398,1069,398,1072,398,1075,1078,1079,1081],{},"The resource schematic generates a module with pre-wired controller and service. The controller includes ",[185,1064,1065],{},"POST",[185,1067,1068],{},"GET",[185,1070,1071],{},"GET :id",[185,1073,1074],{},"PATCH :id",[185,1076,1077],{},"DELETE :id"," endpoints. The module is registered in the parent module's ",[185,1080,901],{}," array.",[182,1083,1084],{},"Generate a flat service (no subdirectory):",[197,1086,1088],{"className":199,"code":1087,"language":202,"meta":203,"style":203},"miia g s auth --flat\n",[185,1089,1090],{"__ignoreMap":203},[207,1091,1092,1094,1096,1099,1102],{"class":209,"line":210},[207,1093,296],{"class":213},[207,1095,832],{"class":216},[207,1097,1098],{"class":216}," s",[207,1100,1101],{"class":216}," auth",[207,1103,1104],{"class":216}," --flat\n",[197,1106,1109],{"className":1107,"code":1108,"language":1031},[1029],"CREATE src\u002Fauth.service.ts\n",[185,1110,1108],{"__ignoreMap":203},[182,1112,1113],{},"Preview without writing files:",[197,1115,1117],{"className":199,"code":1116,"language":202,"meta":203,"style":203},"miia g c user --dry-run\n",[185,1118,1119],{"__ignoreMap":203},[207,1120,1121,1123,1125,1127,1130],{"class":209,"line":210},[207,1122,296],{"class":213},[207,1124,832],{"class":216},[207,1126,1022],{"class":216},[207,1128,1129],{"class":216}," user",[207,1131,1132],{"class":216}," --dry-run\n",[854,1134,1136],{"id":1135},"flags","Flags",[369,1138,1139,1149],{},[372,1140,1141],{},[375,1142,1143,1145,1147],{},[378,1144,380],{},[378,1146,383],{},[378,1148,386],{},[388,1150,1151,1166,1181],{},[375,1152,1153,1158,1160],{},[393,1154,1155],{},[185,1156,1157],{},"--path",[393,1159,972],{},[393,1161,1162,1163],{},"Subdirectory under ",[185,1164,1165],{},"src\u002F",[375,1167,1168,1173,1178],{},[393,1169,1170],{},[185,1171,1172],{},"--flat",[393,1174,1175],{},[185,1176,1177],{},"false",[393,1179,1180],{},"Skip creating a subdirectory",[375,1182,1183,1188,1192],{},[393,1184,1185],{},[185,1186,1187],{},"--dry-run",[393,1189,1190],{},[185,1191,1177],{},[393,1193,1194],{},"Preview without writing files",[854,1196,1198],{"id":1197},"parent-module-discovery","Parent module discovery",[182,1200,1201,1202,1204,1205,1208,1209,1212,1213,1216,1217,1219],{},"The CLI walks up from the generated file's directory toward ",[185,1203,1165],{},", looking for the nearest ",[185,1206,1207],{},"*.module.ts",". If none is found via walk-up, it checks ",[185,1210,1211],{},"src\u002Fapp\u002Fapp.module.ts"," as a fallback. Both ",[185,1214,1215],{},"src\u002Fapp.module.ts"," and ",[185,1218,1211],{}," layouts are supported.",[182,1221,1222],{},"If no parent module is found, the file is still created - you just get a warning to register it manually.",[854,1224,1226],{"id":1225},"file-collisions","File collisions",[182,1228,1229,1230,1233,1234,1236],{},"Generation is ",[343,1231,1232],{},"all-or-nothing",": before writing anything the CLI checks that none of the target files exist. If any file already exists, the whole operation is aborted with exit code 1 and no files are touched. This applies both to single-artifact schematics and to ",[185,1235,950],{}," (module + controller + service) - you won't end up with a half-generated directory.",[854,1238,1240],{"id":1239},"automatic-formatting","Automatic formatting",[182,1242,1243],{},"After writing new files the CLI detects a local formatter in the project root and runs it on the generated output:",[1245,1246,1247,1260],"ul",{},[340,1248,1249,1252,1253,1256,1257],{},[185,1250,1251],{},"biome.json"," \u002F ",[185,1254,1255],{},"biome.jsonc"," → ",[185,1258,1259],{},".\u002Fnode_modules\u002F.bin\u002Fbiome format --write ...",[340,1261,1262,1252,1265,1256,1268],{},[185,1263,1264],{},".prettierrc*",[185,1266,1267],{},"prettier.config.js",[185,1269,1270],{},".\u002Fnode_modules\u002F.bin\u002Fprettier --write ...",[182,1272,1273,1274,1277,1278,1281],{},"Only local binaries in ",[185,1275,1276],{},"node_modules\u002F.bin"," are used - nothing is fetched via ",[185,1279,1280],{},"npx",". If the config exists but the binary is not installed, formatting is silently skipped. If no formatter config is present, the files are left in magicast's default style and you can format them with your own tooling afterwards.",[854,1283,1285],{"id":1284},"name-with-path-segments","Name with path segments",[182,1287,1288],{},"Names can include slashes to create nested directories:",[197,1290,1292],{"className":199,"code":1291,"language":202,"meta":203,"style":203},"miia g c auth\u002Fuser\n",[185,1293,1294],{"__ignoreMap":203},[207,1295,1296,1298,1300,1302],{"class":209,"line":210},[207,1297,296],{"class":213},[207,1299,832],{"class":216},[207,1301,1022],{"class":216},[207,1303,1304],{"class":216}," auth\u002Fuser\n",[197,1306,1309],{"className":1307,"code":1308,"language":1031},[1029],"CREATE src\u002Fauth\u002Fuser\u002Fuser.controller.ts\n",[185,1310,1308],{"__ignoreMap":203},[278,1312,1314],{"id":1313},"miia-new",[185,1315,1316],{},"miia new",[182,1318,1319],{},"Create a new MiiaJS project with an interactive wizard:",[197,1321,1323],{"className":199,"code":1322,"language":202,"meta":203,"style":203},"miia new my-app\nmiia new              # prompts for name\nmiia new my-app --dry-run\nmiia new my-app --skip-install\n",[185,1324,1325,1335,1345,1356],{"__ignoreMap":203},[207,1326,1327,1329,1332],{"class":209,"line":210},[207,1328,296],{"class":213},[207,1330,1331],{"class":216}," new",[207,1333,1334],{"class":216}," my-app\n",[207,1336,1337,1339,1341],{"class":209,"line":302},[207,1338,296],{"class":213},[207,1340,1331],{"class":216},[207,1342,1344],{"class":1343},"sHwdD","              # prompts for name\n",[207,1346,1347,1349,1351,1354],{"class":209,"line":316},[207,1348,296],{"class":213},[207,1350,1331],{"class":216},[207,1352,1353],{"class":216}," my-app",[207,1355,1132],{"class":216},[207,1357,1359,1361,1363,1365],{"class":209,"line":1358},4,[207,1360,296],{"class":213},[207,1362,1331],{"class":216},[207,1364,1353],{"class":216},[207,1366,1367],{"class":216}," --skip-install\n",[182,1369,1370],{},"The wizard walks you through:",[337,1372,1373,1379,1384,1390,1396],{},[340,1374,1375,1378],{},[343,1376,1377],{},"Project name"," (if not provided as argument)",[340,1380,1381,1383],{},[343,1382,488],{}," — Bun (recommended), Deno, or Node.js",[340,1385,1386,1389],{},[343,1387,1388],{},"Package manager"," — pnpm (default), npm, or yarn (skipped for Bun)",[340,1391,1392,1395],{},[343,1393,1394],{},"Features"," — multi-select from Config, JWT Auth, Swagger, CORS, Serve Static",[340,1397,1398,1401],{},[343,1399,1400],{},"Database"," — single-select: Drizzle (PostgreSQL\u002FMySQL\u002FSQLite), Papr, Mongoose, or None",[854,1403,1394],{"id":1404},"features",[369,1406,1407,1417],{},[372,1408,1409],{},[375,1410,1411,1414],{},[378,1412,1413],{},"Feature",[378,1415,1416],{},"What it adds",[388,1418,1419,1435,1452,1467,1484,1499,1518,1534,1550,1568],{},[375,1420,1421,1426],{},[393,1422,1423],{},[343,1424,1425],{},"Config",[393,1427,1428,1431,1432,350],{},[185,1429,1430],{},"@miiajs\u002Fconfig"," + Zod env schema (",[185,1433,1434],{},"src\u002Fenv.schema.ts",[375,1436,1437,1442],{},[393,1438,1439],{},[343,1440,1441],{},"JWT Auth",[393,1443,1444,1447,1448,1451],{},[185,1445,1446],{},"@miiajs\u002Fauth"," + ",[185,1449,1450],{},"@miiajs\u002Fjwt"," + JWT\u002FLocal strategies + auth controller",[375,1453,1454,1458],{},[393,1455,1456],{},[343,1457,147],{},[393,1459,1460,1463,1464],{},[185,1461,1462],{},"@miiajs\u002Fswagger"," + Swagger UI at ",[185,1465,1466],{},"\u002Fdocs",[375,1468,1469,1474],{},[393,1470,1471],{},[343,1472,1473],{},"CORS",[393,1475,1476,1477,1480,1481],{},"Built-in ",[185,1478,1479],{},"cors()"," middleware in ",[185,1482,1483],{},"main.ts",[375,1485,1486,1490],{},[393,1487,1488],{},[343,1489,109],{},[393,1491,1492,1447,1495,1498],{},[185,1493,1494],{},"@miiajs\u002Fserve-static",[185,1496,1497],{},"public\u002F"," directory",[375,1500,1501,1506],{},[393,1502,1503],{},[343,1504,1505],{},"Drizzle + PostgreSQL",[393,1507,1508,1447,1511,1447,1514,1517],{},[185,1509,1510],{},"@miiajs\u002Fdrizzle",[185,1512,1513],{},"drizzle-orm",[185,1515,1516],{},"postgres"," driver",[375,1519,1520,1525],{},[393,1521,1522],{},[343,1523,1524],{},"Drizzle + MySQL",[393,1526,1527,1447,1529,1447,1531,1517],{},[185,1528,1510],{},[185,1530,1513],{},[185,1532,1533],{},"mysql2",[375,1535,1536,1541],{},[393,1537,1538],{},[343,1539,1540],{},"Drizzle + SQLite",[393,1542,1543,1447,1545,1447,1547,1517],{},[185,1544,1510],{},[185,1546,1513],{},[185,1548,1549],{},"better-sqlite3",[375,1551,1552,1557],{},[393,1553,1554],{},[343,1555,1556],{},"Papr + MongoDB",[393,1558,1559,1447,1562,1447,1565,1517],{},[185,1560,1561],{},"@miiajs\u002Fpapr",[185,1563,1564],{},"papr",[185,1566,1567],{},"mongodb",[375,1569,1570,1575],{},[393,1571,1572],{},[343,1573,1574],{},"Mongoose + MongoDB",[393,1576,1577,1447,1580],{},[185,1578,1579],{},"@miiajs\u002Fmongoose",[185,1581,1582],{},"mongoose",[182,1584,1585,1586,1588],{},"Features that need configuration (JWT Auth, all databases) automatically select ",[343,1587,1425],{}," if you haven't already.",[182,1590,1591,1592,1594,1595,1597],{},"A ",[185,1593,442],{}," file is only written when a selected feature declares environment variables (JWT Auth, all database features). For feature-less projects the CLI skips ",[185,1596,442],{}," entirely.",[854,1599,1601],{"id":1600},"generated-structure","Generated structure",[182,1603,1604],{},"With Config + JWT Auth + Drizzle PostgreSQL + CORS selected:",[197,1606,1609],{"className":1607,"code":1608,"language":1031},[1029],"my-app\u002F\n├── package.json\n├── tsconfig.json\n├── .gitignore\n├── .env\n└── src\u002F\n    ├── main.ts\n    ├── env.schema.ts\n    ├── types\u002F\n    │   └── core.d.ts\n    ├── app\u002F\n    │   ├── app.module.ts\n    │   ├── app.controller.ts\n    │   └── app.service.ts\n    └── auth\u002F\n        ├── auth.module.ts\n        ├── auth.service.ts\n        ├── auth.controller.ts\n        └── strategies\u002F\n            ├── jwt.strategy.ts\n            └── local.strategy.ts\n",[185,1610,1608],{"__ignoreMap":203},[182,1612,1613,1614,1617],{},"The generated ",[185,1615,1616],{},"app.module.ts"," comes pre-wired with all selected features:",[197,1619,1623],{"className":1620,"code":1621,"language":1622,"meta":203,"style":203},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { Module } from '@miiajs\u002Fcore'\nimport { ConfigModule } from '@miiajs\u002Fconfig'\nimport { envSchema } from '..\u002Fenv.schema.js'\nimport { JwtModule } from '@miiajs\u002Fjwt'\nimport { AuthModule } from '..\u002Fauth\u002Fauth.module.js'\nimport { DrizzleModule } from '@miiajs\u002Fdrizzle'\nimport { ConfigService } from '@miiajs\u002Fconfig'\nimport { AppController } from '.\u002Fapp.controller.js'\nimport { AppService } from '.\u002Fapp.service.js'\n\n@Module({\n  imports: [\n    ConfigModule.configure({ schema: envSchema }),\n    JwtModule.configure((resolve) => ({\n      secret: resolve(ConfigService).getOrThrow('JWT_SECRET'),\n      expiresIn: '1h',\n    })),\n    AuthModule,\n    DrizzleModule.configure((resolve) => ({\n      dialect: 'postgres',\n      connection: { url: resolve(ConfigService).getOrThrow('DATABASE_URL') },\n    })),\n  ],\n  controllers: [AppController],\n  providers: [AppService],\n})\nexport class AppModule {}\n","ts",[185,1624,1625,1652,1671,1691,1710,1731,1751,1771,1792,1813,1820,1836,1849,1881,1910,1943,1960,1971,1979,2003,2019,2057,2066,2074,2087,2100,2108],{"__ignoreMap":203},[207,1626,1627,1631,1634,1637,1640,1643,1646,1649],{"class":209,"line":210},[207,1628,1630],{"class":1629},"s7zQu","import",[207,1632,1633],{"class":801}," {",[207,1635,1636],{"class":808}," Module",[207,1638,1639],{"class":801}," }",[207,1641,1642],{"class":1629}," from",[207,1644,1645],{"class":801}," '",[207,1647,1648],{"class":216},"@miiajs\u002Fcore",[207,1650,1651],{"class":801},"'\n",[207,1653,1654,1656,1658,1661,1663,1665,1667,1669],{"class":209,"line":302},[207,1655,1630],{"class":1629},[207,1657,1633],{"class":801},[207,1659,1660],{"class":808}," ConfigModule",[207,1662,1639],{"class":801},[207,1664,1642],{"class":1629},[207,1666,1645],{"class":801},[207,1668,1430],{"class":216},[207,1670,1651],{"class":801},[207,1672,1673,1675,1677,1680,1682,1684,1686,1689],{"class":209,"line":316},[207,1674,1630],{"class":1629},[207,1676,1633],{"class":801},[207,1678,1679],{"class":808}," envSchema",[207,1681,1639],{"class":801},[207,1683,1642],{"class":1629},[207,1685,1645],{"class":801},[207,1687,1688],{"class":216},"..\u002Fenv.schema.js",[207,1690,1651],{"class":801},[207,1692,1693,1695,1697,1700,1702,1704,1706,1708],{"class":209,"line":1358},[207,1694,1630],{"class":1629},[207,1696,1633],{"class":801},[207,1698,1699],{"class":808}," JwtModule",[207,1701,1639],{"class":801},[207,1703,1642],{"class":1629},[207,1705,1645],{"class":801},[207,1707,1450],{"class":216},[207,1709,1651],{"class":801},[207,1711,1713,1715,1717,1720,1722,1724,1726,1729],{"class":209,"line":1712},5,[207,1714,1630],{"class":1629},[207,1716,1633],{"class":801},[207,1718,1719],{"class":808}," AuthModule",[207,1721,1639],{"class":801},[207,1723,1642],{"class":1629},[207,1725,1645],{"class":801},[207,1727,1728],{"class":216},"..\u002Fauth\u002Fauth.module.js",[207,1730,1651],{"class":801},[207,1732,1734,1736,1738,1741,1743,1745,1747,1749],{"class":209,"line":1733},6,[207,1735,1630],{"class":1629},[207,1737,1633],{"class":801},[207,1739,1740],{"class":808}," DrizzleModule",[207,1742,1639],{"class":801},[207,1744,1642],{"class":1629},[207,1746,1645],{"class":801},[207,1748,1510],{"class":216},[207,1750,1651],{"class":801},[207,1752,1754,1756,1758,1761,1763,1765,1767,1769],{"class":209,"line":1753},7,[207,1755,1630],{"class":1629},[207,1757,1633],{"class":801},[207,1759,1760],{"class":808}," ConfigService",[207,1762,1639],{"class":801},[207,1764,1642],{"class":1629},[207,1766,1645],{"class":801},[207,1768,1430],{"class":216},[207,1770,1651],{"class":801},[207,1772,1774,1776,1778,1781,1783,1785,1787,1790],{"class":209,"line":1773},8,[207,1775,1630],{"class":1629},[207,1777,1633],{"class":801},[207,1779,1780],{"class":808}," AppController",[207,1782,1639],{"class":801},[207,1784,1642],{"class":1629},[207,1786,1645],{"class":801},[207,1788,1789],{"class":216},".\u002Fapp.controller.js",[207,1791,1651],{"class":801},[207,1793,1795,1797,1799,1802,1804,1806,1808,1811],{"class":209,"line":1794},9,[207,1796,1630],{"class":1629},[207,1798,1633],{"class":801},[207,1800,1801],{"class":808}," AppService",[207,1803,1639],{"class":801},[207,1805,1642],{"class":1629},[207,1807,1645],{"class":801},[207,1809,1810],{"class":216},".\u002Fapp.service.js",[207,1812,1651],{"class":801},[207,1814,1816],{"class":209,"line":1815},10,[207,1817,1819],{"emptyLinePlaceholder":1818},true,"\n",[207,1821,1823,1826,1830,1833],{"class":209,"line":1822},11,[207,1824,1825],{"class":801},"@",[207,1827,1829],{"class":1828},"s2Zo4","Module",[207,1831,1832],{"class":808},"(",[207,1834,1835],{"class":801},"{\n",[207,1837,1839,1843,1846],{"class":209,"line":1838},12,[207,1840,1842],{"class":1841},"swJcz","  imports",[207,1844,1845],{"class":801},":",[207,1847,1848],{"class":808}," [\n",[207,1850,1852,1855,1857,1860,1862,1865,1868,1870,1873,1876,1878],{"class":209,"line":1851},13,[207,1853,1854],{"class":808},"    ConfigModule",[207,1856,786],{"class":801},[207,1858,1859],{"class":1828},"configure",[207,1861,1832],{"class":808},[207,1863,1864],{"class":801},"{",[207,1866,1867],{"class":1841}," schema",[207,1869,1845],{"class":801},[207,1871,1872],{"class":808}," envSchema ",[207,1874,1875],{"class":801},"}",[207,1877,350],{"class":808},[207,1879,1880],{"class":801},",\n",[207,1882,1884,1887,1889,1891,1893,1895,1899,1901,1905,1908],{"class":209,"line":1883},14,[207,1885,1886],{"class":808},"    JwtModule",[207,1888,786],{"class":801},[207,1890,1859],{"class":1828},[207,1892,1832],{"class":808},[207,1894,1832],{"class":801},[207,1896,1898],{"class":1897},"sHdIc","resolve",[207,1900,350],{"class":801},[207,1902,1904],{"class":1903},"spNyl"," =>",[207,1906,1907],{"class":808}," (",[207,1909,1835],{"class":801},[207,1911,1913,1916,1918,1921,1924,1926,1929,1931,1934,1937,1939,1941],{"class":209,"line":1912},15,[207,1914,1915],{"class":1841},"      secret",[207,1917,1845],{"class":801},[207,1919,1920],{"class":1828}," resolve",[207,1922,1923],{"class":808},"(ConfigService)",[207,1925,786],{"class":801},[207,1927,1928],{"class":1828},"getOrThrow",[207,1930,1832],{"class":808},[207,1932,1933],{"class":801},"'",[207,1935,1936],{"class":216},"JWT_SECRET",[207,1938,1933],{"class":801},[207,1940,350],{"class":808},[207,1942,1880],{"class":801},[207,1944,1946,1949,1951,1953,1956,1958],{"class":209,"line":1945},16,[207,1947,1948],{"class":1841},"      expiresIn",[207,1950,1845],{"class":801},[207,1952,1645],{"class":801},[207,1954,1955],{"class":216},"1h",[207,1957,1933],{"class":801},[207,1959,1880],{"class":801},[207,1961,1963,1966,1969],{"class":209,"line":1962},17,[207,1964,1965],{"class":801},"    }",[207,1967,1968],{"class":808},"))",[207,1970,1880],{"class":801},[207,1972,1974,1977],{"class":209,"line":1973},18,[207,1975,1976],{"class":808},"    AuthModule",[207,1978,1880],{"class":801},[207,1980,1982,1985,1987,1989,1991,1993,1995,1997,1999,2001],{"class":209,"line":1981},19,[207,1983,1984],{"class":808},"    DrizzleModule",[207,1986,786],{"class":801},[207,1988,1859],{"class":1828},[207,1990,1832],{"class":808},[207,1992,1832],{"class":801},[207,1994,1898],{"class":1897},[207,1996,350],{"class":801},[207,1998,1904],{"class":1903},[207,2000,1907],{"class":808},[207,2002,1835],{"class":801},[207,2004,2006,2009,2011,2013,2015,2017],{"class":209,"line":2005},20,[207,2007,2008],{"class":1841},"      dialect",[207,2010,1845],{"class":801},[207,2012,1645],{"class":801},[207,2014,1516],{"class":216},[207,2016,1933],{"class":801},[207,2018,1880],{"class":801},[207,2020,2022,2025,2027,2029,2032,2034,2036,2038,2040,2042,2044,2046,2049,2051,2054],{"class":209,"line":2021},21,[207,2023,2024],{"class":1841},"      connection",[207,2026,1845],{"class":801},[207,2028,1633],{"class":801},[207,2030,2031],{"class":1841}," url",[207,2033,1845],{"class":801},[207,2035,1920],{"class":1828},[207,2037,1923],{"class":808},[207,2039,786],{"class":801},[207,2041,1928],{"class":1828},[207,2043,1832],{"class":808},[207,2045,1933],{"class":801},[207,2047,2048],{"class":216},"DATABASE_URL",[207,2050,1933],{"class":801},[207,2052,2053],{"class":808},") ",[207,2055,2056],{"class":801},"},\n",[207,2058,2060,2062,2064],{"class":209,"line":2059},22,[207,2061,1965],{"class":801},[207,2063,1968],{"class":808},[207,2065,1880],{"class":801},[207,2067,2069,2072],{"class":209,"line":2068},23,[207,2070,2071],{"class":808},"  ]",[207,2073,1880],{"class":801},[207,2075,2077,2080,2082,2085],{"class":209,"line":2076},24,[207,2078,2079],{"class":1841},"  controllers",[207,2081,1845],{"class":801},[207,2083,2084],{"class":808}," [AppController]",[207,2086,1880],{"class":801},[207,2088,2090,2093,2095,2098],{"class":209,"line":2089},25,[207,2091,2092],{"class":1841},"  providers",[207,2094,1845],{"class":801},[207,2096,2097],{"class":808}," [AppService]",[207,2099,1880],{"class":801},[207,2101,2103,2105],{"class":209,"line":2102},26,[207,2104,1875],{"class":801},[207,2106,2107],{"class":808},")\n",[207,2109,2111,2114,2116,2119],{"class":209,"line":2110},27,[207,2112,2113],{"class":1629},"export",[207,2115,895],{"class":1903},[207,2117,2118],{"class":213}," AppModule",[207,2120,2121],{"class":801}," {}\n",[854,2123,1136],{"id":2124},"flags-1",[369,2126,2127,2137],{},[372,2128,2129],{},[375,2130,2131,2133,2135],{},[378,2132,380],{},[378,2134,383],{},[378,2136,386],{},[388,2138,2139,2152],{},[375,2140,2141,2145,2149],{},[393,2142,2143],{},[185,2144,1187],{},[393,2146,2147],{},[185,2148,1177],{},[393,2150,2151],{},"List files and deps without writing anything",[375,2153,2154,2159,2163],{},[393,2155,2156],{},[185,2157,2158],{},"--skip-install",[393,2160,2161],{},[185,2162,1177],{},[393,2164,2165],{},"Create files but skip dependency installation",[182,2167,2168,2169,2171,2172,2175,2176,398,2179,2182,2183,2186],{},"The ",[185,2170,1187],{}," preview lists runtime dependencies alongside devDependencies (marked with ",[185,2173,2174],{},"(dev)",") so build-time packages like ",[185,2177,2178],{},"drizzle-kit",[185,2180,2181],{},"@types\u002Fbetter-sqlite3",", or ",[185,2184,2185],{},"tsx"," are visible before you commit.",[190,2188,2190],{"id":2189},"runtime-detection","Runtime detection",[182,2192,2193],{},"The CLI automatically detects your runtime by checking lockfiles:",[369,2195,2196,2205],{},[372,2197,2198],{},[375,2199,2200,2203],{},[378,2201,2202],{},"Lockfile",[378,2204,488],{},[388,2206,2207,2219,2228],{},[375,2208,2209,2217],{},[393,2210,2211,1252,2214],{},[185,2212,2213],{},"bun.lock",[185,2215,2216],{},"bun.lockb",[393,2218,617],{},[375,2220,2221,2226],{},[393,2222,2223],{},[185,2224,2225],{},"deno.lock",[393,2227,627],{},[375,2229,2230,2241],{},[393,2231,2232,1252,2235,1252,2238],{},[185,2233,2234],{},"package-lock.json",[185,2236,2237],{},"yarn.lock",[185,2239,2240],{},"pnpm-lock.yaml",[393,2242,509],{},[182,2244,2245,2246,2248,2249,2251,2252,2254],{},"If no lockfile is found, it checks for ",[185,2247,201],{}," or ",[185,2250,412],{}," in ",[185,2253,673],{},". Falls back to Node.js.",[182,2256,2257,2258,1845],{},"Override with ",[185,2259,397],{},[197,2261,2263],{"className":199,"code":2262,"language":202,"meta":203,"style":203},"miia dev --runtime bun\n",[185,2264,2265],{"__ignoreMap":203},[207,2266,2267,2269,2271,2273],{"class":209,"line":210},[207,2268,296],{"class":213},[207,2270,307],{"class":216},[207,2272,310],{"class":216},[207,2274,313],{"class":216},[182,2276,2277,2278,398,2280,655,2282,2284],{},"Only ",[185,2279,201],{},[185,2281,412],{},[185,2283,415],{}," are accepted. Any other value fails fast with a clear error listing the valid options.",[190,2286,2288],{"id":2287},"packagejson-scripts","Package.json scripts",[182,2290,2291],{},"The generated project includes these scripts:",[197,2293,2297],{"className":2294,"code":2295,"language":2296,"meta":203,"style":203},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"scripts\": {\n    \"dev\": \"miia dev\",\n    \"build\": \"miia build\",\n    \"start\": \"miia start\",\n    \"check\": \"miia check\"\n  }\n}\n","json",[185,2298,2299,2303,2319,2339,2357,2375,2392,2397],{"__ignoreMap":203},[207,2300,2301],{"class":209,"line":210},[207,2302,1835],{"class":801},[207,2304,2305,2308,2311,2314,2316],{"class":209,"line":302},[207,2306,2307],{"class":801},"  \"",[207,2309,2310],{"class":1903},"scripts",[207,2312,2313],{"class":801},"\"",[207,2315,1845],{"class":801},[207,2317,2318],{"class":801}," {\n",[207,2320,2321,2324,2326,2328,2330,2333,2335,2337],{"class":209,"line":316},[207,2322,2323],{"class":801},"    \"",[207,2325,651],{"class":213},[207,2327,2313],{"class":801},[207,2329,1845],{"class":801},[207,2331,2332],{"class":801}," \"",[207,2334,283],{"class":216},[207,2336,2313],{"class":801},[207,2338,1880],{"class":801},[207,2340,2341,2343,2345,2347,2349,2351,2353,2355],{"class":209,"line":1358},[207,2342,2323],{"class":801},[207,2344,654],{"class":213},[207,2346,2313],{"class":801},[207,2348,1845],{"class":801},[207,2350,2332],{"class":801},[207,2352,452],{"class":216},[207,2354,2313],{"class":801},[207,2356,1880],{"class":801},[207,2358,2359,2361,2363,2365,2367,2369,2371,2373],{"class":209,"line":1712},[207,2360,2323],{"class":801},[207,2362,662],{"class":213},[207,2364,2313],{"class":801},[207,2366,1845],{"class":801},[207,2368,2332],{"class":801},[207,2370,555],{"class":216},[207,2372,2313],{"class":801},[207,2374,1880],{"class":801},[207,2376,2377,2379,2381,2383,2385,2387,2389],{"class":209,"line":1733},[207,2378,2323],{"class":801},[207,2380,658],{"class":213},[207,2382,2313],{"class":801},[207,2384,1845],{"class":801},[207,2386,2332],{"class":801},[207,2388,752],{"class":216},[207,2390,2391],{"class":801},"\"\n",[207,2393,2394],{"class":209,"line":1753},[207,2395,2396],{"class":801},"  }\n",[207,2398,2399],{"class":209,"line":1773},[207,2400,2401],{"class":801},"}\n",[190,2403,33],{"id":2404},"testing",[278,2406,2408],{"id":2407},"generate-command","Generate command",[182,2410,2411],{},"Create a test project and verify generation works:",[197,2413,2415],{"className":199,"code":2414,"language":202,"meta":203,"style":203},"miia new test-app        # select Bun, Config, no DB\ncd test-app\nmiia g r user --dry-run  # preview CRUD resource\nmiia g r user            # create user module + controller + service\nmiia dev                 # verify app starts with the new route\n",[185,2416,2417,2429,2437,2453,2466],{"__ignoreMap":203},[207,2418,2419,2421,2423,2426],{"class":209,"line":210},[207,2420,296],{"class":213},[207,2422,1331],{"class":216},[207,2424,2425],{"class":216}," test-app",[207,2427,2428],{"class":1343},"        # select Bun, Config, no DB\n",[207,2430,2431,2434],{"class":209,"line":302},[207,2432,2433],{"class":1828},"cd",[207,2435,2436],{"class":216}," test-app\n",[207,2438,2439,2441,2443,2445,2447,2450],{"class":209,"line":316},[207,2440,296],{"class":213},[207,2442,832],{"class":216},[207,2444,1050],{"class":216},[207,2446,1129],{"class":216},[207,2448,2449],{"class":216}," --dry-run",[207,2451,2452],{"class":1343},"  # preview CRUD resource\n",[207,2454,2455,2457,2459,2461,2463],{"class":209,"line":1358},[207,2456,296],{"class":213},[207,2458,832],{"class":216},[207,2460,1050],{"class":216},[207,2462,1129],{"class":216},[207,2464,2465],{"class":1343},"            # create user module + controller + service\n",[207,2467,2468,2470,2472],{"class":209,"line":1712},[207,2469,296],{"class":213},[207,2471,307],{"class":216},[207,2473,2474],{"class":1343},"                 # verify app starts with the new route\n",[182,2476,2477],{},"Verify the output:",[197,2479,2481],{"className":199,"code":2480,"language":202,"meta":203,"style":203},"curl http:\u002F\u002Flocalhost:3000\u002Fuser           # GET - returns []\ncurl -X POST http:\u002F\u002Flocalhost:3000\u002Fuser   # POST - returns creation stub\n",[185,2482,2483,2494],{"__ignoreMap":203},[207,2484,2485,2488,2491],{"class":209,"line":210},[207,2486,2487],{"class":213},"curl",[207,2489,2490],{"class":216}," http:\u002F\u002Flocalhost:3000\u002Fuser",[207,2492,2493],{"class":1343},"           # GET - returns []\n",[207,2495,2496,2498,2501,2504,2506],{"class":209,"line":302},[207,2497,2487],{"class":213},[207,2499,2500],{"class":216}," -X",[207,2502,2503],{"class":216}," POST",[207,2505,2490],{"class":216},[207,2507,2508],{"class":1343},"   # POST - returns creation stub\n",[278,2510,2512],{"id":2511},"scaffold-command","Scaffold command",[182,2514,2515],{},"Preview what would be generated:",[197,2517,2519],{"className":199,"code":2518,"language":202,"meta":203,"style":203},"miia new my-app --dry-run\n",[185,2520,2521],{"__ignoreMap":203},[207,2522,2523,2525,2527,2529],{"class":209,"line":210},[207,2524,296],{"class":213},[207,2526,1331],{"class":216},[207,2528,1353],{"class":216},[207,2530,1132],{"class":216},[182,2532,2533],{},"Test with all features:",[197,2535,2537],{"className":199,"code":2536,"language":202,"meta":203,"style":203},"miia new full-app       # select all features + a database\ncd full-app\nmiia check              # should report 0 type errors\nmiia dev                # should start without runtime errors\n",[185,2538,2539,2551,2558,2568],{"__ignoreMap":203},[207,2540,2541,2543,2545,2548],{"class":209,"line":210},[207,2542,296],{"class":213},[207,2544,1331],{"class":216},[207,2546,2547],{"class":216}," full-app",[207,2549,2550],{"class":1343},"       # select all features + a database\n",[207,2552,2553,2555],{"class":209,"line":302},[207,2554,2433],{"class":1828},[207,2556,2557],{"class":216}," full-app\n",[207,2559,2560,2562,2565],{"class":209,"line":316},[207,2561,296],{"class":213},[207,2563,2564],{"class":216}," check",[207,2566,2567],{"class":1343},"              # should report 0 type errors\n",[207,2569,2570,2572,2574],{"class":209,"line":1358},[207,2571,296],{"class":213},[207,2573,307],{"class":216},[207,2575,2576],{"class":1343},"                # should start without runtime errors\n",[190,2578,2580],{"id":2579},"prerequisites","Prerequisites",[369,2582,2583,2593],{},[372,2584,2585],{},[375,2586,2587,2590],{},[378,2588,2589],{},"Tool",[378,2591,2592],{},"Required by",[388,2594,2595,2615,2627],{},[375,2596,2597,2604],{},[393,2598,2599,1907,2602,350],{},[185,2600,2601],{},"typescript",[185,2603,366],{},[393,2605,2606,398,2608,398,2610,2612,2613,350],{},[185,2607,651],{},[185,2609,654],{},[185,2611,658],{}," (not ",[185,2614,662],{},[375,2616,2617,2621],{},[393,2618,2619],{},[185,2620,2185],{},[393,2622,2623,2624,2626],{},"Node.js ",[185,2625,651],{}," command",[375,2628,2629,2636],{},[393,2630,2631,2632,1252,2634,350],{},"Runtime (",[185,2633,201],{},[185,2635,412],{},[393,2637,2638],{},"When using that runtime",[182,2640,2641,2642,2644],{},"Production deployments only need the target runtime and your compiled\u002Fsource entry file - ",[185,2643,366],{}," can be omitted from the final image.",[2646,2647,2648],"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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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}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 .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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":203,"searchDepth":302,"depth":302,"links":2650},[2651,2652,2660,2661,2662,2666],{"id":192,"depth":302,"text":13},{"id":275,"depth":302,"text":276,"children":2653},[2654,2655,2656,2657,2658,2659],{"id":280,"depth":316,"text":283},{"id":449,"depth":316,"text":452},{"id":552,"depth":316,"text":555},{"id":749,"depth":316,"text":752},{"id":776,"depth":316,"text":779},{"id":1313,"depth":316,"text":1316},{"id":2189,"depth":302,"text":2190},{"id":2287,"depth":302,"text":2288},{"id":2404,"depth":302,"text":33,"children":2663},[2664,2665],{"id":2407,"depth":316,"text":2408},{"id":2511,"depth":316,"text":2512},{"id":2579,"depth":302,"text":2580},"Dev server, build, code generation, project scaffolding, and more.","md",{},{"title":93,"description":2667},"ZbjY9sr5ziEkGrhu3ezl7-4HZiy-z-noriJhqwb10ig",[2673,2675],{"title":27,"path":88,"stem":89,"description":2674,"children":-1},"Official MiiaJS packages for auth, databases, API docs, server adapters, and CLI.",{"title":27,"path":99,"stem":100,"description":2676,"children":-1},"Decorator-driven event bus with exponential backoff retry, auto-DLQ, and pluggable transports.",1778575273438]