[{"data":1,"prerenderedAt":444},["ShallowReactive",2],{"navigation":3,"\u002Fdocs\u002Fgetting-started":176,"\u002Fdocs\u002Fgetting-started-surround":441},[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":10,"body":178,"description":435,"extension":436,"meta":437,"navigation":438,"path":6,"seo":439,"status":11,"stem":7,"__hash__":440},"docs\u002F1.docs\u002F1.getting-started\u002F1.index.md",{"type":179,"value":180,"toc":428},"minimark",[181,185,190,251,254,416,420],[182,183,184],"p",{},"MiiaJS is a lightweight HTTP framework for TypeScript, inspired by Angular\u002FNestJS architectural ideas, Koa's onion-model middleware, and Hono's multi-runtime philosophy. Built from scratch on modern standards.",[186,187,189],"h2",{"id":188},"why-miiajs","Why MiiaJS?",[191,192,193,206,219,225,231,241],"ul",{},[194,195,196,200,201,205],"li",{},[197,198,199],"strong",{},"TC39 Native Decorators"," - no ",[202,203,204],"code",{},"reflect-metadata",", no experimental TypeScript flags",[194,207,208,211,212,215,216,218],{},[197,209,210],{},"Web Standards"," - built on the ",[202,213,214],{},"Request","\u002F",[202,217,29],{}," API, no proprietary abstractions",[194,220,221,224],{},[197,222,223],{},"Multi-Runtime"," - runs on Bun, Deno, Node.js, Cloudflare Workers, AWS Lambda",[194,226,227,230],{},[197,228,229],{},"Koa-style Middleware"," - clean onion model replaces interceptors, pipes, and filters",[194,232,233,236,237,240],{},[197,234,235],{},"Flat DI"," - per-app container with ",[202,238,239],{},"inject()"," function, no global singletons",[194,242,243,246,247,250],{},[197,244,245],{},"ESM-only"," - ES2025 target, ",[202,248,249],{},"nodenext"," module resolution",[186,252,87],{"id":253},"packages",[255,256,257,270],"table",{},[258,259,260],"thead",{},[261,262,263,267],"tr",{},[264,265,266],"th",{},"Package",[264,268,269],{},"Description",[271,272,273,284,294,304,314,324,334,344,354,364,374,384,394,404],"tbody",{},[261,274,275,281],{},[276,277,278],"td",{},[202,279,280],{},"@miiajs\u002Fcore",[276,282,283],{},"DI, decorators, router, middleware, exceptions",[261,285,286,291],{},[276,287,288],{},[202,289,290],{},"@miiajs\u002Fconfig",[276,292,293],{},"ConfigModule, ConfigService, validated env",[261,295,296,301],{},[276,297,298],{},[202,299,300],{},"@miiajs\u002Fserve-static",[276,302,303],{},"Static file serving with Range, ETag, charset, SPA fallback",[261,305,306,311],{},[276,307,308],{},[202,309,310],{},"@miiajs\u002Fcli",[276,312,313],{},"Dev server, build, start, type checking, project scaffolding",[261,315,316,321],{},[276,317,318],{},[202,319,320],{},"@miiajs\u002Fnode-server",[276,322,323],{},"Node.js HTTP server adapter",[261,325,326,331],{},[276,327,328],{},[202,329,330],{},"@miiajs\u002Fuws-server",[276,332,333],{},"uWebSockets.js HTTP server adapter",[261,335,336,341],{},[276,337,338],{},[202,339,340],{},"@miiajs\u002Fauth",[276,342,343],{},"Strategy primitives, AuthGuard, token extractors",[261,345,346,351],{},[276,347,348],{},[202,349,350],{},"@miiajs\u002Fjwt",[276,352,353],{},"Injectable JWT sign\u002Fverify service (jose wrapper)",[261,355,356,361],{},[276,357,358],{},[202,359,360],{},"@miiajs\u002Fdrizzle",[276,362,363],{},"Drizzle ORM integration (Postgres\u002FMySQL\u002FSQLite)",[261,365,366,371],{},[276,367,368],{},[202,369,370],{},"@miiajs\u002Fpapr",[276,372,373],{},"MongoDB integration via Papr",[261,375,376,381],{},[276,377,378],{},[202,379,380],{},"@miiajs\u002Fmongoose",[276,382,383],{},"MongoDB integration via Mongoose",[261,385,386,391],{},[276,387,388],{},[202,389,390],{},"@miiajs\u002Fswagger",[276,392,393],{},"OpenAPI 3.1 spec generation, Swagger UI",[261,395,396,401],{},[276,397,398],{},[202,399,400],{},"@miiajs\u002Fmessaging",[276,402,403],{},"Decorator-driven event bus with retry, DLQ, pluggable transports",[261,405,406,411],{},[276,407,408],{},[202,409,410],{},"@miiajs\u002Fmessaging-redis",[276,412,413,414],{},"Redis Streams transport for ",[202,415,400],{},[186,417,419],{"id":418},"whats-next","What's next",[182,421,422,423,427],{},"See the ",[424,425,426],"a",{"href":160},"roadmap"," for what's coming - hardening current packages, file upload, rate limiting, WebSocket support, OpenTelemetry, more transports, and beyond.",{"title":429,"searchDepth":430,"depth":430,"links":431},"",2,[432,433,434],{"id":188,"depth":430,"text":189},{"id":253,"depth":430,"text":87},{"id":418,"depth":430,"text":419},"MiiaJS is a lightweight, decorator-driven HTTP framework for TypeScript.","md",{},true,{"title":10,"description":435},"FyyLAnlAOwdelQNTEajSTls-8u0btViDndnBDCPMuvg",[11,442],{"title":13,"path":14,"stem":15,"description":443,"children":-1},"Install MiiaJS and a server adapter for your runtime.",1778575269583]