[{"data":1,"prerenderedAt":1939},["ShallowReactive",2],{"navigation_docs":3,"-docs-deploy-hosts":493,"-docs-deploy-hosts-surround":1934},[4,46,135,218,257,292,355,377,420],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":45},"Getting Started","i-lucide-rocket","\u002Fdocs\u002Fgetting-started","docs\u002F01.getting-started",[10,15,20,25,30,35,40],{"title":11,"path":12,"stem":13,"icon":14},"What is Heximon?","\u002Fdocs\u002Fgetting-started\u002Fintroduction","docs\u002F01.getting-started\u002F01.introduction","i-lucide-info",{"title":16,"path":17,"stem":18,"icon":19},"Installation","\u002Fdocs\u002Fgetting-started\u002Finstallation","docs\u002F01.getting-started\u002F02.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Quick Start","\u002Fdocs\u002Fgetting-started\u002Fquick-start","docs\u002F01.getting-started\u002F03.quick-start","i-lucide-zap",{"title":26,"path":27,"stem":28,"icon":29},"Core Concepts","\u002Fdocs\u002Fgetting-started\u002Fcore-concepts","docs\u002F01.getting-started\u002F04.core-concepts","i-lucide-shapes",{"title":31,"path":32,"stem":33,"icon":34},"Examples","\u002Fdocs\u002Fgetting-started\u002Fexamples","docs\u002F01.getting-started\u002F05.examples","i-lucide-library",{"title":36,"path":37,"stem":38,"icon":39},"Where Next?","\u002Fdocs\u002Fgetting-started\u002Fwhere-next","docs\u002F01.getting-started\u002F06.where-next","i-lucide-signpost",{"title":41,"path":42,"stem":43,"icon":44},"Troubleshooting","\u002Fdocs\u002Fgetting-started\u002Ftroubleshooting","docs\u002F01.getting-started\u002F07.troubleshooting","i-lucide-life-buoy",false,{"title":47,"icon":48,"path":49,"stem":50,"children":51,"page":45},"Essentials","i-lucide-boxes","\u002Fdocs\u002Fessentials","docs\u002F02.essentials",[52,56,61,66,71,76,81,86,91,96,101,105,110,115,120,125,130],{"title":53,"path":54,"stem":55,"icon":48},"Modules & DI","\u002Fdocs\u002Fessentials\u002Fmodules-and-di","docs\u002F02.essentials\u002F01.modules-and-di",{"title":57,"path":58,"stem":59,"icon":60},"Controllers","\u002Fdocs\u002Fessentials\u002Fcontrollers","docs\u002F02.essentials\u002F02.controllers","i-lucide-route",{"title":62,"path":63,"stem":64,"icon":65},"Validation & DTOs","\u002Fdocs\u002Fessentials\u002Fvalidation","docs\u002F02.essentials\u002F03.validation","i-lucide-shield-check",{"title":67,"path":68,"stem":69,"icon":70},"Contracts","\u002Fdocs\u002Fessentials\u002Fcontracts","docs\u002F02.essentials\u002F04.contracts","i-lucide-file-signature",{"title":72,"path":73,"stem":74,"icon":75},"REST Client","\u002Fdocs\u002Fessentials\u002Fclient","docs\u002F02.essentials\u002F05.client","i-lucide-plug",{"title":77,"path":78,"stem":79,"icon":80},"Database","\u002Fdocs\u002Fessentials\u002Fdatabase","docs\u002F02.essentials\u002F06.database","i-lucide-database",{"title":82,"path":83,"stem":84,"icon":85},"Drizzle ORM","\u002Fdocs\u002Fessentials\u002Fdrizzle","docs\u002F02.essentials\u002F07.drizzle","i-lucide-database-zap",{"title":87,"path":88,"stem":89,"icon":90},"Persistence & Transactions","\u002Fdocs\u002Fessentials\u002Fpersistence","docs\u002F02.essentials\u002F08.persistence","i-lucide-database-backup",{"title":92,"path":93,"stem":94,"icon":95},"Migrations","\u002Fdocs\u002Fessentials\u002Fmigrations","docs\u002F02.essentials\u002F09.migrations","i-lucide-git-branch",{"title":97,"path":98,"stem":99,"icon":100},"Authentication","\u002Fdocs\u002Fessentials\u002Fauthentication","docs\u002F02.essentials\u002F10.authentication","i-lucide-key-round",{"title":102,"path":103,"stem":104,"icon":65},"Permissions & scopes","\u002Fdocs\u002Fessentials\u002Fpermissions","docs\u002F02.essentials\u002F11.permissions",{"title":106,"path":107,"stem":108,"icon":109},"Error Handling","\u002Fdocs\u002Fessentials\u002Ferrors","docs\u002F02.essentials\u002F12.errors","i-lucide-triangle-alert",{"title":111,"path":112,"stem":113,"icon":114},"Testing a Heximon App","\u002Fdocs\u002Fessentials\u002Ftesting","docs\u002F02.essentials\u002F13.testing","i-lucide-flask-conical",{"title":116,"path":117,"stem":118,"icon":119},"Test app harness","\u002Fdocs\u002Fessentials\u002Fcreatetestapp","docs\u002F02.essentials\u002F14.createtestapp","i-lucide-test-tube",{"title":121,"path":122,"stem":123,"icon":124},"Logging & Observability","\u002Fdocs\u002Fessentials\u002Flogging","docs\u002F02.essentials\u002F17.logging","i-lucide-scroll-text",{"title":126,"path":127,"stem":128,"icon":129},"Context & Lifecycle","\u002Fdocs\u002Fessentials\u002Fcontext-and-lifecycle","docs\u002F02.essentials\u002F18.context-and-lifecycle","i-lucide-radio",{"title":131,"path":132,"stem":133,"icon":134},"Project Structure","\u002Fdocs\u002Fessentials\u002Fproject-structure","docs\u002F02.essentials\u002F19.project-structure","i-lucide-folder-tree",{"title":136,"icon":137,"path":138,"stem":139,"children":140,"page":45},"Capabilities","i-lucide-sparkles","\u002Fdocs\u002Fcapabilities","docs\u002F03.capabilities",[141,145,150,155,160,164,169,174,179,184,188,193,198,203,208,213],{"title":142,"path":143,"stem":144,"icon":137},"Overview","\u002Fdocs\u002Fcapabilities\u002Foverview","docs\u002F03.capabilities\u002F01.overview",{"title":146,"path":147,"stem":148,"icon":149},"Events","\u002Fdocs\u002Fcapabilities\u002Fevents","docs\u002F03.capabilities\u002F02.events","i-lucide-radio-tower",{"title":151,"path":152,"stem":153,"icon":154},"Queue","\u002Fdocs\u002Fcapabilities\u002Fbackground-jobs","docs\u002F03.capabilities\u002F03.background-jobs","i-lucide-list-ordered",{"title":156,"path":157,"stem":158,"icon":159},"Scheduled Work","\u002Fdocs\u002Fcapabilities\u002Fscheduled-jobs","docs\u002F03.capabilities\u002F04.scheduled-jobs","i-lucide-clock",{"title":161,"path":162,"stem":163,"icon":85},"Caching","\u002Fdocs\u002Fcapabilities\u002Fcaching","docs\u002F03.capabilities\u002F05.caching",{"title":165,"path":166,"stem":167,"icon":168},"Key\u002FValue Storage","\u002Fdocs\u002Fcapabilities\u002Fkey-value","docs\u002F03.capabilities\u002F06.key-value","i-lucide-hard-drive",{"title":170,"path":171,"stem":172,"icon":173},"Blob Storage","\u002Fdocs\u002Fcapabilities\u002Fblob","docs\u002F03.capabilities\u002F07.blob","i-lucide-folder-open",{"title":175,"path":176,"stem":177,"icon":178},"Health & Readiness","\u002Fdocs\u002Fcapabilities\u002Fhealth","docs\u002F03.capabilities\u002F08.health","i-lucide-heart-pulse",{"title":180,"path":181,"stem":182,"icon":183},"Notifications","\u002Fdocs\u002Fcapabilities\u002Fnotifications","docs\u002F03.capabilities\u002F09.notifications","i-lucide-mail",{"title":185,"path":186,"stem":187,"icon":65},"Idempotency","\u002Fdocs\u002Fcapabilities\u002Fidempotency","docs\u002F03.capabilities\u002F10.idempotency",{"title":189,"path":190,"stem":191,"icon":192},"Security Hardening","\u002Fdocs\u002Fcapabilities\u002Fsecurity","docs\u002F03.capabilities\u002F11.security","i-lucide-shield",{"title":194,"path":195,"stem":196,"icon":197},"Observability & Tracing","\u002Fdocs\u002Fcapabilities\u002Fobservability","docs\u002F03.capabilities\u002F12.observability","i-lucide-activity",{"title":199,"path":200,"stem":201,"icon":202},"OpenAPI","\u002Fdocs\u002Fcapabilities\u002Fopenapi","docs\u002F03.capabilities\u002F13.openapi","i-lucide-book-marked",{"title":204,"path":205,"stem":206,"icon":207},"MCP Server","\u002Fdocs\u002Fcapabilities\u002Fmcp","docs\u002F03.capabilities\u002F14.mcp","i-lucide-bot",{"title":209,"path":210,"stem":211,"icon":212},"Schema DTOs","\u002Fdocs\u002Fcapabilities\u002Fschema","docs\u002F03.capabilities\u002F15.schema","i-lucide-file-json",{"title":214,"path":215,"stem":216,"icon":217},"Branded IDs","\u002Fdocs\u002Fcapabilities\u002Fbranded-ids","docs\u002F03.capabilities\u002F16.branded-ids","i-lucide-tag",{"title":219,"icon":220,"path":221,"stem":222,"children":223,"page":45},"Architecture","i-lucide-building","\u002Fdocs\u002Farchitecture","docs\u002F04.architecture",[224,227,232,237,242,247,252],{"title":142,"path":225,"stem":226,"icon":220},"\u002Fdocs\u002Farchitecture\u002Foverview","docs\u002F04.architecture\u002F01.overview",{"title":228,"path":229,"stem":230,"icon":231},"Domain-Driven Design","\u002Fdocs\u002Farchitecture\u002Fddd","docs\u002F04.architecture\u002F02.ddd","i-lucide-hexagon",{"title":233,"path":234,"stem":235,"icon":236},"CQRS","\u002Fdocs\u002Farchitecture\u002Fcqrs","docs\u002F04.architecture\u002F03.cqrs","i-lucide-split",{"title":238,"path":239,"stem":240,"icon":241},"Repository Pattern","\u002Fdocs\u002Farchitecture\u002Frepository-pattern","docs\u002F04.architecture\u002F04.repository-pattern","i-lucide-archive",{"title":243,"path":244,"stem":245,"icon":246},"Integration Events","\u002Fdocs\u002Farchitecture\u002Fintegration-events","docs\u002F04.architecture\u002F05.integration-events","i-lucide-send-horizontal",{"title":248,"path":249,"stem":250,"icon":251},"Saga Orchestration","\u002Fdocs\u002Farchitecture\u002Fsagas","docs\u002F04.architecture\u002F06.sagas","i-lucide-hourglass",{"title":253,"path":254,"stem":255,"icon":256},"Durable Workflows","\u002Fdocs\u002Farchitecture\u002Fworkflows","docs\u002F04.architecture\u002F07.workflows","i-lucide-workflow",{"title":258,"icon":259,"path":260,"stem":261,"children":262,"page":45},"Realtime","i-lucide-cable","\u002Fdocs\u002Frealtime","docs\u002F05.realtime",[263,266,270,274,279,284,288],{"title":142,"path":264,"stem":265,"icon":259},"\u002Fdocs\u002Frealtime\u002Foverview","docs\u002F05.realtime\u002F01.overview",{"title":267,"path":268,"stem":269,"icon":129},"WebSockets","\u002Fdocs\u002Frealtime\u002Fwebsockets","docs\u002F05.realtime\u002F02.websockets",{"title":271,"path":272,"stem":273,"icon":70},"WebSocket Contracts","\u002Fdocs\u002Frealtime\u002Fwebsocket-contracts","docs\u002F05.realtime\u002F03.websocket-contracts",{"title":275,"path":276,"stem":277,"icon":278},"Server-Sent Events","\u002Fdocs\u002Frealtime\u002Fserver-sent-events","docs\u002F05.realtime\u002F04.server-sent-events","i-lucide-rss",{"title":280,"path":281,"stem":282,"icon":283},"Typed Clients","\u002Fdocs\u002Frealtime\u002Ftyped-clients","docs\u002F05.realtime\u002F05.typed-clients","i-lucide-plug-zap",{"title":285,"path":286,"stem":287,"icon":259},"AsyncAPI","\u002Fdocs\u002Frealtime\u002Fasyncapi","docs\u002F05.realtime\u002F06.asyncapi",{"title":289,"path":290,"stem":291,"icon":80},"Durable Objects","\u002Fdocs\u002Frealtime\u002Fdurable-objects","docs\u002F05.realtime\u002F07.durable-objects",{"title":293,"icon":294,"path":295,"stem":296,"children":297,"page":45},"Deploy","i-lucide-cloud-upload","\u002Fdocs\u002Fdeploy","docs\u002F06.deploy",[298,301,306,311,316,321,326,331,336,341,345,350],{"title":142,"path":299,"stem":300,"icon":6},"\u002Fdocs\u002Fdeploy\u002Foverview","docs\u002F06.deploy\u002F01.overview",{"title":302,"path":303,"stem":304,"icon":305},"Node","\u002Fdocs\u002Fdeploy\u002Fnode","docs\u002F06.deploy\u002F02.node","la:node-js",{"title":307,"path":308,"stem":309,"icon":310},"Cloudflare","\u002Fdocs\u002Fdeploy\u002Fcloudflare","docs\u002F06.deploy\u002F03.cloudflare","simple-icons:cloudflare",{"title":312,"path":313,"stem":314,"icon":315},"Vercel","\u002Fdocs\u002Fdeploy\u002Fvercel","docs\u002F06.deploy\u002F04.vercel","ri:vercel-fill",{"title":317,"path":318,"stem":319,"icon":320},"Netlify","\u002Fdocs\u002Fdeploy\u002Fnetlify","docs\u002F06.deploy\u002F05.netlify","i-simple-icons-netlify",{"title":322,"path":323,"stem":324,"icon":325},"AWS Lambda","\u002Fdocs\u002Fdeploy\u002Faws-lambda","docs\u002F06.deploy\u002F06.aws-lambda","hugeicons:aws-lambda",{"title":327,"path":328,"stem":329,"icon":330},"Deno Deploy","\u002Fdocs\u002Fdeploy\u002Fdeno-deploy","docs\u002F06.deploy\u002F07.deno-deploy","simple-icons:denodeploy",{"title":332,"path":333,"stem":334,"icon":335},"Nitro","\u002Fdocs\u002Fdeploy\u002Fnitro","docs\u002F06.deploy\u002F08.nitro","i-unjs-nitro",{"title":337,"path":338,"stem":339,"icon":340},"Nuxt","\u002Fdocs\u002Fdeploy\u002Fnuxt","docs\u002F06.deploy\u002F09.nuxt","i-devicon-nuxt",{"title":342,"path":343,"stem":344,"icon":236},"Mixed-runtime split","\u002Fdocs\u002Fdeploy\u002Fmixed-runtime-split","docs\u002F06.deploy\u002F10.mixed-runtime-split",{"title":346,"path":347,"stem":348,"icon":349},"Hosts","\u002Fdocs\u002Fdeploy\u002Fhosts","docs\u002F06.deploy\u002F11.hosts","i-lucide-map",{"title":351,"path":352,"stem":353,"icon":354},"Cross-service events","\u002Fdocs\u002Fdeploy\u002Fcross-service-events","docs\u002F06.deploy\u002F12.cross-service-events","i-lucide-network",{"title":356,"icon":357,"path":358,"stem":359,"children":360,"page":45},"CLI","i-lucide-terminal","\u002Fdocs\u002Fcli","docs\u002F07.cli",[361,365,369,373],{"title":362,"path":363,"stem":364,"icon":357},"The heximon CLI","\u002Fdocs\u002Fcli\u002Foverview","docs\u002F07.cli\u002F01.overview",{"title":366,"path":367,"stem":368,"icon":137},"Create a New App","\u002Fdocs\u002Fcli\u002Fcreate","docs\u002F07.cli\u002F02.create",{"title":370,"path":371,"stem":372,"icon":95},"Migrations from the CLI","\u002Fdocs\u002Fcli\u002Fmigrations","docs\u002F07.cli\u002F03.migrations",{"title":374,"path":375,"stem":376,"icon":6},"Deploying a Heximon app","\u002Fdocs\u002Fcli\u002Fdeploy","docs\u002F07.cli\u002F04.deploy",{"title":378,"icon":379,"path":380,"stem":381,"children":382,"page":45},"Under the Hood","i-lucide-wrench","\u002Fdocs\u002Funder-the-hood","docs\u002F08.under-the-hood",[383,388,393,397,402,407,411,415],{"title":384,"path":385,"stem":386,"icon":387},"How the Compiler Works","\u002Fdocs\u002Funder-the-hood\u002Fhow-the-compiler-works","docs\u002F08.under-the-hood\u002F01.how-the-compiler-works","i-lucide-cog",{"title":389,"path":390,"stem":391,"icon":392},"Compiler","\u002Fdocs\u002Funder-the-hood\u002Fextending-the-compiler","docs\u002F08.under-the-hood\u002F02.extending-the-compiler","i-lucide-cpu",{"title":394,"path":395,"stem":396,"icon":357},"Compiler Diagnostics","\u002Fdocs\u002Funder-the-hood\u002Fcompiler-diagnostics","docs\u002F08.under-the-hood\u002F03.compiler-diagnostics",{"title":398,"path":399,"stem":400,"icon":401},"Library Mode","\u002Fdocs\u002Funder-the-hood\u002Flibrary-mode","docs\u002F08.under-the-hood\u002F04.library-mode","i-lucide-package",{"title":403,"path":404,"stem":405,"icon":406},"Other bundlers","\u002Fdocs\u002Funder-the-hood\u002Falternate-bundlers","docs\u002F08.under-the-hood\u002F05.alternate-bundlers","i-lucide-blocks",{"title":408,"path":409,"stem":410,"icon":401},"Packages","\u002Fdocs\u002Funder-the-hood\u002Fpackages","docs\u002F08.under-the-hood\u002F06.packages",{"title":412,"path":413,"stem":414,"icon":207},"AI Skills","\u002Fdocs\u002Funder-the-hood\u002Fai-and-agents","docs\u002F08.under-the-hood\u002F07.ai-and-agents",{"title":416,"path":417,"stem":418,"icon":419},"Advanced DI","\u002Fdocs\u002Funder-the-hood\u002Fadvanced-di","docs\u002F08.under-the-hood\u002F08.advanced-di","i-lucide-git-fork",{"title":421,"icon":422,"path":423,"stem":424,"children":425,"page":45},"Recipes","i-lucide-book-open-check","\u002Fdocs\u002Frecipes","docs\u002F09.recipes",[426,431,436,440,444,448,452,456,460,465,469,474,479,484,488],{"title":427,"path":428,"stem":429,"icon":430},"Send an Email","\u002Fdocs\u002Frecipes\u002Fsend-an-email","docs\u002F09.recipes\u002F01.send-an-email","i-lucide-send",{"title":432,"path":433,"stem":434,"icon":435},"Upload a File","\u002Fdocs\u002Frecipes\u002Fupload-a-file","docs\u002F09.recipes\u002F02.upload-a-file","i-lucide-upload",{"title":437,"path":438,"stem":439,"icon":24},"Cache an Expensive Call","\u002Fdocs\u002Frecipes\u002Fcache-an-expensive-call","docs\u002F09.recipes\u002F03.cache-an-expensive-call",{"title":441,"path":442,"stem":443,"icon":154},"Paginate a List","\u002Fdocs\u002Frecipes\u002Fpaginate-a-list","docs\u002F09.recipes\u002F04.paginate-a-list",{"title":445,"path":446,"stem":447,"icon":65},"Protect Admin Routes","\u002Fdocs\u002Frecipes\u002Fprotect-admin-routes","docs\u002F09.recipes\u002F05.protect-admin-routes",{"title":449,"path":450,"stem":451,"icon":178},"Health Probes and a Nightly Job","\u002Fdocs\u002Frecipes\u002Fhealth-probes-and-a-nightly-job","docs\u002F09.recipes\u002F06.health-probes-and-a-nightly-job",{"title":453,"path":454,"stem":455,"icon":80},"Build a CRUD API","\u002Fdocs\u002Frecipes\u002Fcrud-api","docs\u002F09.recipes\u002F07.crud-api",{"title":457,"path":458,"stem":459,"icon":100},"Add Authentication","\u002Fdocs\u002Frecipes\u002Fadd-authentication","docs\u002F09.recipes\u002F08.add-authentication",{"title":461,"path":462,"stem":463,"icon":464},"Background Jobs","\u002Fdocs\u002Frecipes\u002Fbackground-jobs","docs\u002F09.recipes\u002F09.background-jobs","i-lucide-timer",{"title":466,"path":467,"stem":468,"icon":149},"Decouple Features with Events","\u002Fdocs\u002Frecipes\u002Fevent-driven-module","docs\u002F09.recipes\u002F10.event-driven-module",{"title":470,"path":471,"stem":472,"icon":473},"Build a DDD Aggregate","\u002Fdocs\u002Frecipes\u002Fddd-aggregate","docs\u002F09.recipes\u002F11.ddd-aggregate","i-lucide-box",{"title":475,"path":476,"stem":477,"icon":478},"Publish a Feature Package","\u002Fdocs\u002Frecipes\u002Ffeature-package","docs\u002F09.recipes\u002F12.feature-package","i-lucide-package-open",{"title":480,"path":481,"stem":482,"icon":483},"Reliable Integration Events","\u002Fdocs\u002Frecipes\u002Freliable-integration-events","docs\u002F09.recipes\u002F13.reliable-integration-events","i-lucide-inbox",{"title":485,"path":486,"stem":487,"icon":95},"Reactive Choreography","\u002Fdocs\u002Frecipes\u002Freactive-choreography","docs\u002F09.recipes\u002F14.reactive-choreography",{"title":489,"path":490,"stem":491,"icon":492},"Build a Production CRUD API","\u002Fdocs\u002Frecipes\u002Fproduction-crud-api","docs\u002F09.recipes\u002F15.production-crud-api","i-lucide-layers",{"id":494,"title":346,"body":495,"description":1927,"extension":1928,"links":1929,"meta":1930,"navigation":1931,"path":347,"seo":1932,"stem":348,"__hash__":1933},"docs\u002Fdocs\u002F06.deploy\u002F11.hosts.md",{"type":496,"value":497,"toc":1915},"minimark",[498,525,530,537,713,716,740,744,764,909,995,1005,1009,1017,1031,1055,1134,1138,1154,1186,1216,1285,1304,1308,1325,1345,1463,1541,1552,1556,1574,1587,1663,1741,1744,1748,1758,1780,1784,1789,1793,1807,1814,1821,1825,1911],[499,500,501,502,506,507,510,511,519,520,524],"p",{},"Your ",[503,504,505],"code",{},"Module",", ",[503,508,509],{},"Controller",", and provider classes are host-agnostic — the same source compiles and runs\nunchanged whether the Vite dev server, a standalone Node process, Nitro, or Nuxt serves it. What changes\nbetween hosts is only ",[512,513,514,515,518],"strong",{},"who owns the live ",[503,516,517],{},"fetch"," server and triggers the compile",". You write your app\nonce; you pick a host, and separately, a ",[521,522,523],"a",{"href":299},"deploy target"," for where that host actually runs.",[526,527,529],"h2",{"id":528},"pick-a-host","Pick a host",[499,531,532,533,536],{},"Each host is a Heximon package you add to a config file. It compiles your modules and mounts the generated\nroutes onto its own server — you never write a bootstrap. Every host reads the same ",[503,534,535],{},"heximon.config.ts","\nconfig file for compiler plugins, so switching hosts never touches your Heximon config.",[538,539,540,557],"table",{},[541,542,543],"thead",{},[544,545,546,551,554],"tr",{},[547,548,550],"th",{"align":549},"left","Host",[547,552,553],{"align":549},"Package",[547,555,556],{"align":549},"Role",[558,559,560,592,625,658,680,694],"tbody",{},[544,561,562,568,573],{},[563,564,565],"td",{"align":549},[512,566,567],{},"Dev + standalone build",[563,569,570],{"align":549},[503,571,572],{},"@heximon\u002Fbuild\u002Fvite",[563,574,575,576,579,580,583,584,587,588,591],{"align":549},"The ",[503,577,578],{},"heximon()"," plugin — runs the compiler in memory and serves the app on ",[503,581,582],{},"pnpm dev",", and on ",[503,585,586],{},"vp build"," emits a standalone ",[503,589,590],{},"dist\u002Fserver.js"," for Node\u002FBun\u002FDeno (no second config, no host-entry file).",[544,593,594,598,603],{},[563,595,596],{"align":549},[512,597,403],{},[563,599,600],{"align":549},[503,601,602],{},"@heximon\u002Fbuild",[563,604,605,506,608,506,611,506,614,506,617,620,621,624],{"align":549},[503,606,607],{},"\u002Frollup",[503,609,610],{},"\u002Frolldown",[503,612,613],{},"\u002Fesbuild",[503,615,616],{},"\u002Fwebpack",[503,618,619],{},"\u002Frspack"," are build tiers that compile your modules and emit a runnable ",[503,622,623],{},"{ app, fetch }"," bundle — for folding Heximon into a project already built by one of those bundlers.",[544,626,627,632,637],{},[563,628,629],{"align":549},[512,630,631],{},"Standalone (Node \u002F Bun \u002F Deno)",[563,633,634],{"align":549},[503,635,636],{},"@heximon\u002Fhttp\u002Fserve",[563,638,639,640,642,643,646,647,650,651,650,654,657],{"align":549},"The universal runner ",[503,641,586],{},"'s entry calls — boots the built ",[503,644,645],{},"{ fetch }"," bundle as a long-lived server, picking ",[503,648,649],{},"node:http"," \u002F ",[503,652,653],{},"Bun.serve",[503,655,656],{},"Deno.serve"," automatically. No Nitro.",[544,659,660,665,670],{},[563,661,662],{"align":549},[512,663,664],{},"Node \u002F Nitro \u002F edge",[563,666,667],{"align":549},[503,668,669],{},"@heximon\u002Fnitro",[563,671,672,675,676,679],{"align":549},[503,673,674],{},"heximonNitroModule"," compiles your modules and mounts the route table inside Nitro — Node, Cloudflare Workers, Deno, Bun, Lambda from one codebase, picked by Nitro's ",[503,677,678],{},"preset",".",[544,681,682,686,691],{},[563,683,684],{"align":549},[512,685,337],{},[563,687,688],{"align":549},[503,689,690],{},"@heximon\u002Fnuxt",[563,692,693],{"align":549},"Serves a Heximon API alongside your Vue pages on Nuxt's own Nitro server, with SSR cookie propagation.",[544,695,696,701,706],{},[563,697,698],{"align":549},[512,699,700],{},"Library (publish a module)",[563,702,703],{"align":549},[503,704,705],{},"@heximon\u002Flibrary",[563,707,708,709,712],{"align":549},"Compiles one Heximon module into a precompiled, installable package another app's ",[503,710,711],{},"imports"," array pulls in.",[499,714,715],{},"The same modules drive every host. A controller injects its dependencies from its constructor and declares\nroutes by parameter type regardless of which host lands it.",[499,717,718,719,506,722,506,725,728,729,732,733,506,735,737,738,679],{},"Durable Objects, WebSockets, and Server-Sent Events (",[503,720,721],{},"@heximon\u002Fdurable",[503,723,724],{},"@heximon\u002Fwebsocket",[503,726,727],{},"@heximon\u002Fsse",")\nare ",[512,730,731],{},"transports",", not hosts — stateful capabilities that ride whichever host above is active. See\n",[521,734,289],{"href":290},[521,736,267],{"href":268},", and\n",[521,739,275],{"href":276},[526,741,743],{"id":742},"develop-with-the-vite-plugin","Develop with the Vite plugin",[499,745,746,747,749,750,753,754,757,758,760,761,763],{},"In development the ",[503,748,578],{}," Vite plugin ",[512,751,752],{},"is"," the host. It runs the compiler over ",[503,755,756],{},"src\u002F"," on startup,\nholds the generated wiring as in-memory virtual modules, serves the app, and recompiles on every save —\nso ",[503,759,582],{}," is the only command you need while building. The plugin itself takes no arguments; your Heximon\nconfig — compiler plugins and deploy platform — lives in ",[503,762,535],{}," next to it.",[765,766,772],"pre",{"className":767,"code":768,"filename":769,"language":770,"meta":771,"style":771},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import heximon from \"@heximon\u002Fbuild\u002Fvite\";\nimport { defineConfig } from \"vite-plus\";\n\nexport default defineConfig({\n  plugins: [heximon()],\n  server: { port: 3000 },\n});\n","vite.config.ts","ts","",[503,773,774,803,829,836,854,876,898],{"__ignoreMap":771},[775,776,779,783,787,790,794,797,800],"span",{"class":777,"line":778},"line",1,[775,780,782],{"class":781},"s7zQu","import",[775,784,786],{"class":785},"sTEyZ"," heximon ",[775,788,789],{"class":781},"from",[775,791,793],{"class":792},"sMK4o"," \"",[775,795,572],{"class":796},"sfazB",[775,798,799],{"class":792},"\"",[775,801,802],{"class":792},";\n",[775,804,806,808,811,814,817,820,822,825,827],{"class":777,"line":805},2,[775,807,782],{"class":781},[775,809,810],{"class":792}," {",[775,812,813],{"class":785}," defineConfig",[775,815,816],{"class":792}," }",[775,818,819],{"class":781}," from",[775,821,793],{"class":792},[775,823,824],{"class":796},"vite-plus",[775,826,799],{"class":792},[775,828,802],{"class":792},[775,830,832],{"class":777,"line":831},3,[775,833,835],{"emptyLinePlaceholder":834},true,"\n",[775,837,839,842,845,848,851],{"class":777,"line":838},4,[775,840,841],{"class":781},"export",[775,843,844],{"class":781}," default",[775,846,813],{"class":847},"s2Zo4",[775,849,850],{"class":785},"(",[775,852,853],{"class":792},"{\n",[775,855,857,861,864,867,870,873],{"class":777,"line":856},5,[775,858,860],{"class":859},"swJcz","  plugins",[775,862,863],{"class":792},":",[775,865,866],{"class":785}," [",[775,868,869],{"class":847},"heximon",[775,871,872],{"class":785},"()]",[775,874,875],{"class":792},",\n",[775,877,879,882,884,886,889,891,895],{"class":777,"line":878},6,[775,880,881],{"class":859},"  server",[775,883,863],{"class":792},[775,885,810],{"class":792},[775,887,888],{"class":859}," port",[775,890,863],{"class":792},[775,892,894],{"class":893},"sbssI"," 3000",[775,896,897],{"class":792}," },\n",[775,899,901,904,907],{"class":777,"line":900},7,[775,902,903],{"class":792},"}",[775,905,906],{"class":785},")",[775,908,802],{"class":792},[765,910,912],{"className":767,"code":911,"filename":535,"language":770,"meta":771,"style":771},"import { defineHeximonConfig } from \"@heximon\u002Fbuild\";\nimport { HttpPlugin } from \"@heximon\u002Fhttp\u002Fcompiler\";\n\nexport default defineHeximonConfig({ plugins: [new HttpPlugin()] });\n",[503,913,914,935,957,961],{"__ignoreMap":771},[775,915,916,918,920,923,925,927,929,931,933],{"class":777,"line":778},[775,917,782],{"class":781},[775,919,810],{"class":792},[775,921,922],{"class":785}," defineHeximonConfig",[775,924,816],{"class":792},[775,926,819],{"class":781},[775,928,793],{"class":792},[775,930,602],{"class":796},[775,932,799],{"class":792},[775,934,802],{"class":792},[775,936,937,939,941,944,946,948,950,953,955],{"class":777,"line":805},[775,938,782],{"class":781},[775,940,810],{"class":792},[775,942,943],{"class":785}," HttpPlugin",[775,945,816],{"class":792},[775,947,819],{"class":781},[775,949,793],{"class":792},[775,951,952],{"class":796},"@heximon\u002Fhttp\u002Fcompiler",[775,954,799],{"class":792},[775,956,802],{"class":792},[775,958,959],{"class":777,"line":831},[775,960,835],{"emptyLinePlaceholder":834},[775,962,963,965,967,969,971,974,977,979,981,984,986,989,991,993],{"class":777,"line":838},[775,964,841],{"class":781},[775,966,844],{"class":781},[775,968,922],{"class":847},[775,970,850],{"class":785},[775,972,973],{"class":792},"{",[775,975,976],{"class":859}," plugins",[775,978,863],{"class":792},[775,980,866],{"class":785},[775,982,983],{"class":792},"new",[775,985,943],{"class":847},[775,987,988],{"class":785},"()] ",[775,990,903],{"class":792},[775,992,906],{"class":785},[775,994,802],{"class":792},[499,996,997,998,506,1001,1004],{},"You add one compiler plugin per Heximon feature you use — ",[503,999,1000],{},"new CqrsPlugin()",[503,1002,1003],{},"new DomainEventsPlugin()",",\nand so on. The plugin set is the only thing that grows as your app does; the host wiring stays the same.",[526,1006,1008],{"id":1007},"use-another-bundler-with-unplugin","Use another bundler with unplugin",[499,1010,1011,1012,1016],{},"Most apps develop on the Vite plugin and deploy with Nitro (below) — never hand-writing a bundler config. But\nif your project already builds with another bundler, ",[521,1013,1014],{"href":404},[503,1015,602],{}," carries the same\ncompile step to Rollup, Rolldown, esbuild, webpack, and rspack through a per-bundler entry.",[499,1018,1019,1020,1022,1023,1026,1027,1030],{},"The\n",[503,1021,572],{}," entry is the ",[512,1024,1025],{},"complete"," Vite plugin — the build-error page, the JSON preview,\nrecompile-on-change, auto-reload, and WebSocket-upgrade handling in dev — because it rides the shared\n",[503,1028,1029],{},"@heximon\u002Fdev"," core.",[499,1032,575,1033,506,1035,506,1037,506,1039,1041,1042,1044,1045,1047,1048,1051,1052,1054],{},[503,1034,607],{},[503,1036,610],{},[503,1038,613],{},[503,1040,616],{},", and ",[503,1043,619],{}," entries are build tiers:\nthey compile your ",[503,1046,756],{}," to ",[503,1049,1050],{},".heximon\u002F"," and let the bundler emit a runnable server bundle (diagnostics to the\nterminal — the live dev server is Vite-only). Every one of these factories takes no arguments — the same\n",[503,1053,535],{}," drives them all.",[765,1056,1058],{"className":767,"code":1057,"filename":769,"language":770,"meta":771,"style":771},"import heximon from \"@heximon\u002Fbuild\u002Fvite\";\nimport { defineConfig } from \"vite-plus\";\n\nexport default defineConfig({\n  plugins: [heximon()],\n});\n",[503,1059,1060,1076,1096,1100,1112,1126],{"__ignoreMap":771},[775,1061,1062,1064,1066,1068,1070,1072,1074],{"class":777,"line":778},[775,1063,782],{"class":781},[775,1065,786],{"class":785},[775,1067,789],{"class":781},[775,1069,793],{"class":792},[775,1071,572],{"class":796},[775,1073,799],{"class":792},[775,1075,802],{"class":792},[775,1077,1078,1080,1082,1084,1086,1088,1090,1092,1094],{"class":777,"line":805},[775,1079,782],{"class":781},[775,1081,810],{"class":792},[775,1083,813],{"class":785},[775,1085,816],{"class":792},[775,1087,819],{"class":781},[775,1089,793],{"class":792},[775,1091,824],{"class":796},[775,1093,799],{"class":792},[775,1095,802],{"class":792},[775,1097,1098],{"class":777,"line":831},[775,1099,835],{"emptyLinePlaceholder":834},[775,1101,1102,1104,1106,1108,1110],{"class":777,"line":838},[775,1103,841],{"class":781},[775,1105,844],{"class":781},[775,1107,813],{"class":847},[775,1109,850],{"class":785},[775,1111,853],{"class":792},[775,1113,1114,1116,1118,1120,1122,1124],{"class":777,"line":856},[775,1115,860],{"class":859},[775,1117,863],{"class":792},[775,1119,866],{"class":785},[775,1121,869],{"class":847},[775,1123,872],{"class":785},[775,1125,875],{"class":792},[775,1127,1128,1130,1132],{"class":777,"line":878},[775,1129,903],{"class":792},[775,1131,906],{"class":785},[775,1133,802],{"class":792},[526,1135,1137],{"id":1136},"run-standalone-on-node-bun-or-deno","Run standalone on Node, Bun, or Deno",[499,1139,1140,1141,1143,1144,1153],{},"When you want the built bundle to run as a plain long-lived server — no Nitro — ",[503,1142,586],{}," emits it from the\n",[512,1145,1146,1147,1149,1150],{},"same ",[503,1148,769],{}," that serves ",[503,1151,1152],{},"vp dev",", with no second bundler config and no host-entry file:",[765,1155,1160],{"className":1156,"code":1157,"filename":1158,"language":1159,"meta":771,"style":771},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","vp build                 # → dist\u002Fserver.js\nnode dist\u002Fserver.js      # or: bun dist\u002Fserver.js  \u002F  deno run -A dist\u002Fserver.js — same file, every runtime\n","terminal","bash",[503,1161,1162,1175],{"__ignoreMap":771},[775,1163,1164,1168,1171],{"class":777,"line":778},[775,1165,1167],{"class":1166},"sBMFI","vp",[775,1169,1170],{"class":796}," build",[775,1172,1174],{"class":1173},"sHwdD","                 # → dist\u002Fserver.js\n",[775,1176,1177,1180,1183],{"class":777,"line":805},[775,1178,1179],{"class":1166},"node",[775,1181,1182],{"class":796}," dist\u002Fserver.js",[775,1184,1185],{"class":1173},"      # or: bun dist\u002Fserver.js  \u002F  deno run -A dist\u002Fserver.js — same file, every runtime\n",[499,1187,1188,1189,1191,1192,1194,1195,1047,1197,1203,1204,650,1206,1208,1209,1211,1212,1215],{},"Under the hood, ",[503,1190,636],{}," is the universal runner: ",[503,1193,586],{},"'s synthesized entry hands the generated\n",[503,1196,517],{},[521,1198,1202],{"href":1199,"rel":1200},"https:\u002F\u002Fsrvx.h3.dev",[1201],"nofollow","srvx",", which picks the platform server (",[503,1205,649],{},[503,1207,653],{}," \u002F\n",[503,1210,656],{},") automatically. To control the listener (port\u002Fhostname) or wrap the app, write your own one-line\nhost entry and bundle it with a build tier above (or point Vite's ",[503,1213,1214],{},"build.rollupOptions.input"," at it):",[765,1217,1220],{"className":767,"code":1218,"filename":1219,"language":770,"meta":771,"style":771},"import { serve } from \"@heximon\u002Fhttp\u002Fserve\";\nimport { fetch } from \".\u002F.heximon\u002Fserver.js\";\n\nawait serve(fetch); \u002F\u002F port defaults to PORT, then 3000\n","serve.ts",[503,1221,1222,1243,1265,1269],{"__ignoreMap":771},[775,1223,1224,1226,1228,1231,1233,1235,1237,1239,1241],{"class":777,"line":778},[775,1225,782],{"class":781},[775,1227,810],{"class":792},[775,1229,1230],{"class":785}," serve",[775,1232,816],{"class":792},[775,1234,819],{"class":781},[775,1236,793],{"class":792},[775,1238,636],{"class":796},[775,1240,799],{"class":792},[775,1242,802],{"class":792},[775,1244,1245,1247,1249,1252,1254,1256,1258,1261,1263],{"class":777,"line":805},[775,1246,782],{"class":781},[775,1248,810],{"class":792},[775,1250,1251],{"class":785}," fetch",[775,1253,816],{"class":792},[775,1255,819],{"class":781},[775,1257,793],{"class":792},[775,1259,1260],{"class":796},".\u002F.heximon\u002Fserver.js",[775,1262,799],{"class":792},[775,1264,802],{"class":792},[775,1266,1267],{"class":777,"line":831},[775,1268,835],{"emptyLinePlaceholder":834},[775,1270,1271,1274,1276,1279,1282],{"class":777,"line":838},[775,1272,1273],{"class":781},"await",[775,1275,1230],{"class":847},[775,1277,1278],{"class":785},"(fetch)",[775,1280,1281],{"class":792},";",[775,1283,1284],{"class":1173}," \u002F\u002F port defaults to PORT, then 3000\n",[499,1286,1287,1288,1291,1292,1295,1296,1299,1300,1303],{},"Node, Bun, and Deno run the full framework path — HTTP, DI, the ambient ",[503,1289,1290],{},"Context"," (AsyncLocalStorage), and\nCQRS\u002Fevent dispatch — unchanged, and the generated entry drains in-flight requests on ",[503,1293,1294],{},"SIGTERM"," on each.\nCapabilities that need a specific platform (native addons like ",[503,1297,1298],{},"better-sqlite3",", the ",[503,1301,1302],{},"cloudflare:workers","\nDurable Object \u002F D1 APIs) stay on Node or the Cloudflare runtime.",[526,1305,1307],{"id":1306},"deploy-to-node-workers-and-the-edge-with-nitro","Deploy to Node, Workers, and the edge with Nitro",[499,1309,1310,1311,1313,1314,1316,1317,1320,1321,1324],{},"For production, ",[521,1312,332],{"href":333}," is a host that covers almost every runtime from one codebase — there is\nno separate \"plain Node\" story; Nitro ",[512,1315,752],{}," the Node host, and every other runtime is just a preset of the\nsame build: ",[503,1318,1319],{},"node-server"," for a long-running process, ",[503,1322,1323],{},"cloudflare_module"," for Workers, all from one codebase.",[499,1326,1327,1328,1331,1332,1334,1335,1337,1338,1340,1341,1344],{},"You list the bare module in ",[503,1329,1330],{},"nitro.config.ts"," — it accepts no inline Heximon config. Compiler plugins live in\nthe same ",[503,1333,535],{}," the Vite plugin reads. Nitro's build runs Heximon's compiler over your\nserver directory and mounts the routes; there's no compile script to call. Nitro's own ",[503,1336,678],{}," decides the\ndeploy platform — ",[503,1339,535],{},"'s ",[503,1342,1343],{},"plugins"," are the only thing you declare there for Nitro.",[765,1346,1348],{"className":767,"code":1347,"filename":1330,"language":770,"meta":771,"style":771},"import { heximonNitroModule } from \"@heximon\u002Fnitro\u002Fmodule\";\nimport { defineNitroConfig } from \"nitro\u002Fconfig\";\n\nexport default defineNitroConfig({\n  compatibilityDate: \"2025-07-04\",\n  serverDir: \"server\",\n  modules: [heximonNitroModule],\n});\n",[503,1349,1350,1372,1394,1398,1410,1426,1442,1454],{"__ignoreMap":771},[775,1351,1352,1354,1356,1359,1361,1363,1365,1368,1370],{"class":777,"line":778},[775,1353,782],{"class":781},[775,1355,810],{"class":792},[775,1357,1358],{"class":785}," heximonNitroModule",[775,1360,816],{"class":792},[775,1362,819],{"class":781},[775,1364,793],{"class":792},[775,1366,1367],{"class":796},"@heximon\u002Fnitro\u002Fmodule",[775,1369,799],{"class":792},[775,1371,802],{"class":792},[775,1373,1374,1376,1378,1381,1383,1385,1387,1390,1392],{"class":777,"line":805},[775,1375,782],{"class":781},[775,1377,810],{"class":792},[775,1379,1380],{"class":785}," defineNitroConfig",[775,1382,816],{"class":792},[775,1384,819],{"class":781},[775,1386,793],{"class":792},[775,1388,1389],{"class":796},"nitro\u002Fconfig",[775,1391,799],{"class":792},[775,1393,802],{"class":792},[775,1395,1396],{"class":777,"line":831},[775,1397,835],{"emptyLinePlaceholder":834},[775,1399,1400,1402,1404,1406,1408],{"class":777,"line":838},[775,1401,841],{"class":781},[775,1403,844],{"class":781},[775,1405,1380],{"class":847},[775,1407,850],{"class":785},[775,1409,853],{"class":792},[775,1411,1412,1415,1417,1419,1422,1424],{"class":777,"line":856},[775,1413,1414],{"class":859},"  compatibilityDate",[775,1416,863],{"class":792},[775,1418,793],{"class":792},[775,1420,1421],{"class":796},"2025-07-04",[775,1423,799],{"class":792},[775,1425,875],{"class":792},[775,1427,1428,1431,1433,1435,1438,1440],{"class":777,"line":878},[775,1429,1430],{"class":859},"  serverDir",[775,1432,863],{"class":792},[775,1434,793],{"class":792},[775,1436,1437],{"class":796},"server",[775,1439,799],{"class":792},[775,1441,875],{"class":792},[775,1443,1444,1447,1449,1452],{"class":777,"line":900},[775,1445,1446],{"class":859},"  modules",[775,1448,863],{"class":792},[775,1450,1451],{"class":785}," [heximonNitroModule]",[775,1453,875],{"class":792},[775,1455,1457,1459,1461],{"class":777,"line":1456},8,[775,1458,903],{"class":792},[775,1460,906],{"class":785},[775,1462,802],{"class":792},[765,1464,1465],{"className":767,"code":911,"filename":535,"language":770,"meta":771,"style":771},[503,1466,1467,1487,1507,1511],{"__ignoreMap":771},[775,1468,1469,1471,1473,1475,1477,1479,1481,1483,1485],{"class":777,"line":778},[775,1470,782],{"class":781},[775,1472,810],{"class":792},[775,1474,922],{"class":785},[775,1476,816],{"class":792},[775,1478,819],{"class":781},[775,1480,793],{"class":792},[775,1482,602],{"class":796},[775,1484,799],{"class":792},[775,1486,802],{"class":792},[775,1488,1489,1491,1493,1495,1497,1499,1501,1503,1505],{"class":777,"line":805},[775,1490,782],{"class":781},[775,1492,810],{"class":792},[775,1494,943],{"class":785},[775,1496,816],{"class":792},[775,1498,819],{"class":781},[775,1500,793],{"class":792},[775,1502,952],{"class":796},[775,1504,799],{"class":792},[775,1506,802],{"class":792},[775,1508,1509],{"class":777,"line":831},[775,1510,835],{"emptyLinePlaceholder":834},[775,1512,1513,1515,1517,1519,1521,1523,1525,1527,1529,1531,1533,1535,1537,1539],{"class":777,"line":838},[775,1514,841],{"class":781},[775,1516,844],{"class":781},[775,1518,922],{"class":847},[775,1520,850],{"class":785},[775,1522,973],{"class":792},[775,1524,976],{"class":859},[775,1526,863],{"class":792},[775,1528,866],{"class":785},[775,1530,983],{"class":792},[775,1532,943],{"class":847},[775,1534,988],{"class":785},[775,1536,903],{"class":792},[775,1538,906],{"class":785},[775,1540,802],{"class":792},[499,1542,1543,1544,1547,1548,1551],{},"Routes mount at their own contract paths — ",[503,1545,1546],{},"Controller\u003C\"\u002Fapi\">"," owns ",[503,1549,1550],{},"\u002Fapi",". The host adds no prefix, so\nper-route rules, caching, and headers from Nitro apply to each route individually.",[526,1553,1555],{"id":1554},"serve-a-heximon-api-inside-nuxt","Serve a Heximon API inside Nuxt",[499,1557,1558,1559,1562,1563,1566,1567,1570,1571,679],{},"When you want a Vue frontend and a Heximon API on the ",[512,1560,1561],{},"same"," server, ",[521,1564,1565],{"href":338},"Nuxt 5"," is the\nhost. Your Heximon modules live under Nuxt's ",[503,1568,1569],{},"server\u002F"," directory; your Vue pages live under ",[503,1572,1573],{},"srcDir",[499,1575,1576,1577,1580,1581,1583,1584,1586],{},"The\nmodule forwards to the Nitro host underneath and accepts no inline Heximon config — the integration is just\none string in ",[503,1578,1579],{},"modules",", with compiler plugins declared in the same ",[503,1582,535],{},". Nuxt's own\nNitro ",[503,1585,678],{}," decides the deploy platform.",[765,1588,1591],{"className":767,"code":1589,"filename":1590,"language":770,"meta":771,"style":771},"export default defineNuxtConfig({\n  compatibilityDate: \"2025-07-04\",\n  srcDir: \"app\",\n  modules: [\"@heximon\u002Fnuxt\"],\n});\n","nuxt.config.ts",[503,1592,1593,1606,1620,1636,1655],{"__ignoreMap":771},[775,1594,1595,1597,1599,1602,1604],{"class":777,"line":778},[775,1596,841],{"class":781},[775,1598,844],{"class":781},[775,1600,1601],{"class":847}," defineNuxtConfig",[775,1603,850],{"class":785},[775,1605,853],{"class":792},[775,1607,1608,1610,1612,1614,1616,1618],{"class":777,"line":805},[775,1609,1414],{"class":859},[775,1611,863],{"class":792},[775,1613,793],{"class":792},[775,1615,1421],{"class":796},[775,1617,799],{"class":792},[775,1619,875],{"class":792},[775,1621,1622,1625,1627,1629,1632,1634],{"class":777,"line":831},[775,1623,1624],{"class":859},"  srcDir",[775,1626,863],{"class":792},[775,1628,793],{"class":792},[775,1630,1631],{"class":796},"app",[775,1633,799],{"class":792},[775,1635,875],{"class":792},[775,1637,1638,1640,1642,1644,1646,1648,1650,1653],{"class":777,"line":838},[775,1639,1446],{"class":859},[775,1641,863],{"class":792},[775,1643,866],{"class":785},[775,1645,799],{"class":792},[775,1647,690],{"class":796},[775,1649,799],{"class":792},[775,1651,1652],{"class":785},"]",[775,1654,875],{"class":792},[775,1656,1657,1659,1661],{"class":777,"line":856},[775,1658,903],{"class":792},[775,1660,906],{"class":785},[775,1662,802],{"class":792},[765,1664,1665],{"className":767,"code":911,"filename":535,"language":770,"meta":771,"style":771},[503,1666,1667,1687,1707,1711],{"__ignoreMap":771},[775,1668,1669,1671,1673,1675,1677,1679,1681,1683,1685],{"class":777,"line":778},[775,1670,782],{"class":781},[775,1672,810],{"class":792},[775,1674,922],{"class":785},[775,1676,816],{"class":792},[775,1678,819],{"class":781},[775,1680,793],{"class":792},[775,1682,602],{"class":796},[775,1684,799],{"class":792},[775,1686,802],{"class":792},[775,1688,1689,1691,1693,1695,1697,1699,1701,1703,1705],{"class":777,"line":805},[775,1690,782],{"class":781},[775,1692,810],{"class":792},[775,1694,943],{"class":785},[775,1696,816],{"class":792},[775,1698,819],{"class":781},[775,1700,793],{"class":792},[775,1702,952],{"class":796},[775,1704,799],{"class":792},[775,1706,802],{"class":792},[775,1708,1709],{"class":777,"line":831},[775,1710,835],{"emptyLinePlaceholder":834},[775,1712,1713,1715,1717,1719,1721,1723,1725,1727,1729,1731,1733,1735,1737,1739],{"class":777,"line":838},[775,1714,841],{"class":781},[775,1716,844],{"class":781},[775,1718,922],{"class":847},[775,1720,850],{"class":785},[775,1722,973],{"class":792},[775,1724,976],{"class":859},[775,1726,863],{"class":792},[775,1728,866],{"class":785},[775,1730,983],{"class":792},[775,1732,943],{"class":847},[775,1734,988],{"class":785},[775,1736,903],{"class":792},[775,1738,906],{"class":785},[775,1740,802],{"class":792},[499,1742,1743],{},"Because the API and the frontend share one Nitro server, cookies set during SSR propagate to your Heximon\nroutes without a network hop — login on a page, and a server-rendered fetch already carries the session.",[526,1745,1747],{"id":1746},"publish-a-module-as-a-library","Publish a module as a library",[499,1749,1750,1751,1754,1755,1757],{},"When a feature is meant to be reused across apps or teams, ",[521,1752,1753],{"href":399},"library mode"," compiles one\nHeximon module into a precompiled npm package. The consuming app lists it in ",[503,1756,711],{},", exactly like a local\nmodule, and links against a typed factory plus a manifest — never your source.",[499,1759,1760,1761,1764,1765,1768,1769,1768,1772,1775,1776,1779],{},"See\n",[521,1762,1763],{"href":399},"Library mode"," for the ",[503,1766,1767],{},"requires","\u002F",[503,1770,1771],{},"providers",[503,1773,1774],{},"exports"," boundary and the ",[503,1777,1778],{},"peerDependencies","\nrule that keeps DI identity intact across the package boundary.",[526,1781,1783],{"id":1782},"split-one-deploy-across-two-runtimes","Split one deploy across two runtimes",[499,1785,1786,1787,679],{},"On a hybrid deploy target (Vercel Functions, Netlify Functions) a single app can place some controllers on a\nfast edge function and others on a node function where the database lives — one build, two bundles, routed by\nprefix. See ",[521,1788,342],{"href":343},[526,1790,1792],{"id":1791},"reach-the-edge-with-stateful-transports","Reach the edge with stateful transports",[499,1794,1795,1796,1798,1799,1801,1802,650,1804,1806],{},"HTTP is the default transport, but stateful workloads need more. ",[521,1797,57],{"href":58}," covers the\nHTTP dispatcher; ",[521,1800,289],{"href":290}," adds Cloudflare's stateful actors, and\n",[521,1803,267],{"href":268},[521,1805,275],{"href":276}," add live connections.",[499,1808,1809,1810,1813],{},"These aren't separate hosts — they're plugins that ride whichever host is active, so the same Nitro\ndeployment serves your HTTP routes and your ",[503,1811,1812],{},"ws:\u002F\u002F"," channels together.",[499,1815,1816,1817,1820],{},"Every host shares one property: the compiled output has no ",[503,1818,1819],{},"eval"," and no JIT. That's the point — it runs on\nedge runtimes where reflection-based frameworks can't, because the wiring was decided at build time, not\ndiscovered at boot.",[526,1822,1824],{"id":1823},"see-also","See also",[1826,1827,1828,1835,1841,1850,1862,1868,1874,1879,1889,1902],"ul",{},[1829,1830,1831,1834],"li",{},[521,1832,1833],{"href":404},"Compile on other bundlers"," — the unplugin factory for Rollup, Rolldown, and esbuild.",[1829,1836,1837,1840],{},[521,1838,1839],{"href":333},"Deploy on Nitro"," — a host across Node, Cloudflare Workers, Deno, Bun, and Lambda.",[1829,1842,1843,1846,1847,1849],{},[521,1844,1845],{"href":299},"Deploy overview"," — ",[503,1848,586],{}," and the deploy strategies per vendor.",[1829,1851,1852,1859,1860,679],{},[521,1853,1856],{"href":1854,"rel":1855},"https:\u002F\u002Fgithub.com\u002Fheximon\u002Fheximon\u002Ftree\u002Fmain\u002Fexamples\u002Fgap\u002Fstandalone-runtime",[1201],[512,1857,1858],{},"Standalone runtime","\n— one built bundle run as a server on Node, Bun, and Deno via ",[503,1861,636],{},[1829,1863,1864,1867],{},[521,1865,1866],{"href":338},"Integrate with Nuxt"," — a Heximon API and Vue pages on one Nitro server, with SSR cookies.",[1829,1869,1870,1873],{},[521,1871,1872],{"href":399},"Publish a module"," — ship a precompiled Heximon module as an installable package.",[1829,1875,1876,1878],{},[521,1877,57],{"href":58}," — the HTTP dispatcher every transport rides.",[1829,1880,1881,1888],{},[521,1882,1885],{"href":1883,"rel":1884},"https:\u002F\u002Fgithub.com\u002Fheximon\u002Fheximon\u002Ftree\u002Fmain\u002Fexamples\u002Fgap\u002Fnitro-presets",[1201],[512,1886,1887],{},"The nitro-presets gap example"," —\nthe same controller served under Nitro, proving the app source is host-agnostic.",[1829,1890,1891,1898,1899,1901],{},[521,1892,1895],{"href":1893,"rel":1894},"https:\u002F\u002Fgithub.com\u002Fheximon\u002Fheximon\u002Ftree\u002Fmain\u002Fexamples\u002Fgap\u002Fnuxt",[1201],[512,1896,1897],{},"Nuxt module"," — a\nHeximon API under ",[503,1900,1569],{}," alongside Nuxt pages, with a cookie set during SSR.",[1829,1903,1904,1910],{},[521,1905,1908],{"href":1906,"rel":1907},"https:\u002F\u002Fgithub.com\u002Fheximon\u002Fheximon\u002Ftree\u002Fmain\u002Fexamples\u002Fflagship",[1201],[512,1909,289],{},"\n— a stateful Cloudflare actor under compile-time DI.",[1912,1913,1914],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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":771,"searchDepth":805,"depth":805,"links":1916},[1917,1918,1919,1920,1921,1922,1923,1924,1925,1926],{"id":528,"depth":805,"text":529},{"id":742,"depth":805,"text":743},{"id":1007,"depth":805,"text":1008},{"id":1136,"depth":805,"text":1137},{"id":1306,"depth":805,"text":1307},{"id":1554,"depth":805,"text":1555},{"id":1746,"depth":805,"text":1747},{"id":1782,"depth":805,"text":1783},{"id":1791,"depth":805,"text":1792},{"id":1823,"depth":805,"text":1824},"Where a Heximon app's fetch server lives — the heximon() Vite dev server, standalone Node\u002FBun\u002FDeno, Nitro, Nuxt, unplugin for other bundlers, library mode, and the mixed-runtime split.","md",null,{},{"icon":349},{"title":346,"description":1927},"VrSqxc9hH5DRZnqJVSWV6OUBNrt7uH59yqj41FH_FEk",[1935,1937],{"title":342,"path":343,"stem":344,"description":1936,"icon":236,"children":-1},"Place one app's controllers across edge and node runtimes in a single deploy — the compiler partitions the DI graph by runtime, proves each edge tier is edge-safe before deploy, and emits separate functions routed by prefix. Vercel Functions and Netlify Functions.",{"title":351,"path":352,"stem":353,"description":1938,"icon":354,"children":-1},"Fan an integration event out to independently deployed services — the per-service-queue split, Redis Streams and SNS-to-SQS native broadcast, the Cloudflare DO-router escape hatch, and QStash push broadcast for freezing platforms — selected via crossService.transport.",1783300761903]