[{"data":1,"prerenderedAt":1987},["ShallowReactive",2],{"navigation_docs":3,"-docs-under-the-hood-alternate-bundlers":493,"-docs-under-the-hood-alternate-bundlers-surround":1982},[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":403,"body":495,"description":1975,"extension":1976,"links":1977,"meta":1978,"navigation":1979,"path":404,"seo":1980,"stem":405,"__hash__":1981},"docs\u002Fdocs\u002F08.under-the-hood\u002F05.alternate-bundlers.md",{"type":496,"value":497,"toc":1965},"minimark",[498,527,546,549,562,567,590,617,632,640,644,725,753,757,770,909,995,1015,1019,1044,1393,1412,1428,1441,1445,1454,1474,1489,1506,1680,1691,1695,1698,1837,1847,1851,1884,1897,1901,1961],[499,500,501,502,506,507,510,511,522,523,526],"p",{},"Heximon's compile step is a build-time concern: walk the modules, build the DI graph, emit plain JS wiring\ninto ",[503,504,505],"code",{},".heximon\u002F",". That work isn't tied to any one bundler — so ",[503,508,509],{},"@heximon\u002Fbuild","\nexposes it as an ",[512,513,514,521],"strong",{},[515,516,520],"a",{"href":517,"rel":518},"https:\u002F\u002Funplugin.unjs.io\u002F",[519],"nofollow","unplugin"," factory"," with a per-bundler entry point. Your ",[503,524,525],{},"src\u002F","\nnever changes; you pick the bundler.",[499,528,529,530,533,534,537,538,541,542,545],{},"The ",[503,531,532],{},"@heximon\u002Fbuild\u002Fvite"," entry is the ",[512,535,536],{},"complete Vite plugin",": the build-error page, the JSON-preview page,\nrecompile-on-change, browser auto-reload, and dev WebSocket-upgrade handling — a ",[503,539,540],{},"ws:\u002F\u002F"," route connects under\n",[503,543,544],{},"pnpm dev",".",[499,547,548],{},"The Rollup, Rolldown, esbuild, webpack, and rspack entries are build tiers: they run the compiler and\nlet the bundler emit a runnable server bundle, with diagnostics to the terminal.",[499,550,529,551,554,555,557,558,561],{},[512,552,553],{},"live dev server is\nVite-only"," — webpack and rspack have no way to run the compiled app in-process, so they compile and build but\ndo not host the running app (use ",[503,556,532],{},", or the ",[515,559,560],{"href":333},"Nitro dev plugin",", for that).",[563,564,566],"h2",{"id":565},"which-path-should-you-use","Which path should you use?",[499,568,569,570,575,576,578,579,584,585,589],{},"Most Heximon apps never hand-write a bundler config. ",[512,571,572,573],{},"Develop with ",[503,574,532],{}," (",[503,577,544],{}," — the\nfull dev experience above) and ",[512,580,581,582],{},"deploy with ",[515,583,332],{"href":333},", which owns the production build and\ntargets Node, Workers, Deno, Bun, and Lambda from one codebase. Both are ",[586,587,588],"em",{},"owned-build"," hosts: you add one\nplugin\u002Fmodule and never touch resolve, externals, or loaders — the same way SvelteKit or Nuxt hide their bundler.",[499,591,592,593,575,596,599,600,599,603,599,606,599,609,612,613,616],{},"Reach for the ",[512,594,595],{},"per-bundler build entries",[503,597,598],{},"\u002Frollup",", ",[503,601,602],{},"\u002Frolldown",[503,604,605],{},"\u002Fesbuild",[503,607,608],{},"\u002Fwebpack",[503,610,611],{},"\u002Frspack",") when\nyou're folding Heximon into a project that ",[512,614,615],{},"already"," builds with one of those bundlers — a monorepo\nstandardized on webpack, say.",[499,618,619,620,623,624,627,628,631],{},"On that path you write that bundler's ordinary config (entry, output, externals,\nand its standard ",[503,621,622],{},".js","→",[503,625,626],{},".ts"," TypeScript handling — ",[503,629,630],{},"resolve.extensionAlias"," on webpack\u002Frspack, a resolve plugin\non esbuild\u002Frollup, nothing on Rolldown), exactly as any TypeScript-ESM project on that bundler already does.",[499,633,634,639],{},[515,635,638],{"href":636,"rel":637},"https:\u002F\u002Fgithub.com\u002Fheximon\u002Fheximon\u002Ftree\u002Fmain\u002Fexamples\u002Fgap\u002Falternate-bundlers",[519],"The gap's alternate-bundlers example"," shows a complete,\nrunnable config per bundler.",[563,641,643],{"id":642},"install","Install",[645,646,647,675,692,708],"code-group",{},[648,649,655],"pre",{"className":650,"code":651,"filename":652,"language":653,"meta":654,"style":654},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add -D @heximon\u002Fbuild\n","pnpm","bash","",[503,656,657],{"__ignoreMap":654},[658,659,662,665,669,672],"span",{"class":660,"line":661},"line",1,[658,663,652],{"class":664},"sBMFI",[658,666,668],{"class":667},"sfazB"," add",[658,670,671],{"class":667}," -D",[658,673,674],{"class":667}," @heximon\u002Fbuild\n",[648,676,679],{"className":650,"code":677,"filename":678,"language":653,"meta":654,"style":654},"npm install -D @heximon\u002Fbuild\n","npm",[503,680,681],{"__ignoreMap":654},[658,682,683,685,688,690],{"class":660,"line":661},[658,684,678],{"class":664},[658,686,687],{"class":667}," install",[658,689,671],{"class":667},[658,691,674],{"class":667},[648,693,696],{"className":650,"code":694,"filename":695,"language":653,"meta":654,"style":654},"yarn add -D @heximon\u002Fbuild\n","yarn",[503,697,698],{"__ignoreMap":654},[658,699,700,702,704,706],{"class":660,"line":661},[658,701,695],{"class":664},[658,703,668],{"class":667},[658,705,671],{"class":667},[658,707,674],{"class":667},[648,709,712],{"className":650,"code":710,"filename":711,"language":653,"meta":654,"style":654},"bun add -d @heximon\u002Fbuild\n","bun",[503,713,714],{"__ignoreMap":654},[658,715,716,718,720,723],{"class":660,"line":661},[658,717,711],{"class":664},[658,719,668],{"class":667},[658,721,722],{"class":667}," -d",[658,724,674],{"class":667},[499,726,727,599,730,599,733,736,737,740,741,744,745,748,749,752],{},[503,728,729],{},"vite",[503,731,732],{},"rollup",[503,734,735],{},"rolldown",", and ",[503,738,739],{},"esbuild"," are optional peer dependencies — install whichever bundler you\nactually use; the matching ",[503,742,743],{},"@heximon\u002Fbuild\u002F\u003Cbundler>"," entry pulls in nothing else. ",[503,746,747],{},"webpack"," and ",[503,750,751],{},"rspack"," work\nthe same way but are not declared as peers (their entries are typed structurally and import neither package) —\ninstall the bundler yourself.",[563,754,756],{"id":755},"develop-on-vite","Develop on Vite",[499,758,759,761,762,765,766,769],{},[503,760,532],{}," is a drop-in for the dev server. The plugin takes no arguments — Heximon config lives in\n",[503,763,764],{},"heximon.config.ts",", the same file ",[503,767,768],{},"createTestApp"," reads:",[648,771,776],{"className":772,"code":773,"filename":774,"language":775,"meta":654,"style":654},"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: 3002 },\n});\n","vite.config.ts","ts",[503,777,778,803,829,836,854,876,898],{"__ignoreMap":654},[658,779,780,784,788,791,795,797,800],{"class":660,"line":661},[658,781,783],{"class":782},"s7zQu","import",[658,785,787],{"class":786},"sTEyZ"," heximon ",[658,789,790],{"class":782},"from",[658,792,794],{"class":793},"sMK4o"," \"",[658,796,532],{"class":667},[658,798,799],{"class":793},"\"",[658,801,802],{"class":793},";\n",[658,804,806,808,811,814,817,820,822,825,827],{"class":660,"line":805},2,[658,807,783],{"class":782},[658,809,810],{"class":793}," {",[658,812,813],{"class":786}," defineConfig",[658,815,816],{"class":793}," }",[658,818,819],{"class":782}," from",[658,821,794],{"class":793},[658,823,824],{"class":667},"vite-plus",[658,826,799],{"class":793},[658,828,802],{"class":793},[658,830,832],{"class":660,"line":831},3,[658,833,835],{"emptyLinePlaceholder":834},true,"\n",[658,837,839,842,845,848,851],{"class":660,"line":838},4,[658,840,841],{"class":782},"export",[658,843,844],{"class":782}," default",[658,846,813],{"class":847},"s2Zo4",[658,849,850],{"class":786},"(",[658,852,853],{"class":793},"{\n",[658,855,857,861,864,867,870,873],{"class":660,"line":856},5,[658,858,860],{"class":859},"swJcz","  plugins",[658,862,863],{"class":793},":",[658,865,866],{"class":786}," [",[658,868,869],{"class":847},"heximon",[658,871,872],{"class":786},"()]",[658,874,875],{"class":793},",\n",[658,877,879,882,884,886,889,891,895],{"class":660,"line":878},6,[658,880,881],{"class":859},"  server",[658,883,863],{"class":793},[658,885,810],{"class":793},[658,887,888],{"class":859}," port",[658,890,863],{"class":793},[658,892,894],{"class":893},"sbssI"," 3002",[658,896,897],{"class":793}," },\n",[658,899,901,904,907],{"class":660,"line":900},7,[658,902,903],{"class":793},"}",[658,905,906],{"class":786},")",[658,908,802],{"class":793},[648,910,912],{"className":772,"code":911,"filename":764,"language":775,"meta":654,"style":654},"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":654},[658,915,916,918,920,923,925,927,929,931,933],{"class":660,"line":661},[658,917,783],{"class":782},[658,919,810],{"class":793},[658,921,922],{"class":786}," defineHeximonConfig",[658,924,816],{"class":793},[658,926,819],{"class":782},[658,928,794],{"class":793},[658,930,509],{"class":667},[658,932,799],{"class":793},[658,934,802],{"class":793},[658,936,937,939,941,944,946,948,950,953,955],{"class":660,"line":805},[658,938,783],{"class":782},[658,940,810],{"class":793},[658,942,943],{"class":786}," HttpPlugin",[658,945,816],{"class":793},[658,947,819],{"class":782},[658,949,794],{"class":793},[658,951,952],{"class":667},"@heximon\u002Fhttp\u002Fcompiler",[658,954,799],{"class":793},[658,956,802],{"class":793},[658,958,959],{"class":660,"line":831},[658,960,835],{"emptyLinePlaceholder":834},[658,962,963,965,967,969,971,974,977,979,981,984,986,989,991,993],{"class":660,"line":838},[658,964,841],{"class":782},[658,966,844],{"class":782},[658,968,922],{"class":847},[658,970,850],{"class":786},[658,972,973],{"class":793},"{",[658,975,976],{"class":859}," plugins",[658,978,863],{"class":793},[658,980,866],{"class":786},[658,982,983],{"class":793},"new",[658,985,943],{"class":847},[658,987,988],{"class":786},"()] ",[658,990,903],{"class":793},[658,992,906],{"class":786},[658,994,802],{"class":793},[499,996,997,998,1000,1001,1003,1004,1007,1008,1011,1012,1014],{},"On ",[503,999,544],{}," you get the full surface: a source edit recompiles ",[503,1002,525],{}," and reloads the browser; a broken\ncompile shows the diagnostic codeframe in the browser (and a real ",[503,1005,1006],{},"500"," to ",[503,1009,1010],{},"curl"," \u002F a JSON client) instead\nof a stale response; a browser navigation to a JSON route renders the syntax-highlighted preview page; and a\nWebSocket route upgrades its ",[503,1013,540],{}," connection automatically.",[563,1016,1018],{"id":1017},"build-on-rollup-rolldown-esbuild-webpack-or-rspack","Build on Rollup, Rolldown, esbuild, webpack, or rspack",[499,1020,1021,1022,1007,1024,1026,1027,1030,1031,1034,1035,1037,1038,1041,1042,863],{},"The build entries compile ",[503,1023,525],{},[503,1025,505],{}," on ",[503,1028,1029],{},"buildStart"," (reporting compile diagnostics to the\nterminal); the bundler then bundles the generated ",[503,1032,1033],{},"server.js"," entry — and the ",[503,1036,525],{}," it imports — into your\noutput. Framework packages (",[503,1039,1040],{},"@heximon\u002F*",") are left external for the runtime to resolve. Each factory takes no\narguments — compiler plugins are read from ",[503,1043,764],{},[648,1045,1048],{"className":772,"code":1046,"filename":1047,"language":775,"meta":654,"style":654},"import heximon from \"@heximon\u002Fbuild\u002Frolldown\";\nimport { fileURLToPath } from \"node:url\";\nimport { isAbsolute } from \"node:path\";\nimport { defineConfig } from \"rolldown\";\n\nexport default defineConfig({\n  input: fileURLToPath(new URL(\".heximon\u002Fserver.js\", import.meta.url)),\n  plugins: [heximon()],\n  resolve: {\n    extensionAlias: { \".js\": [\".ts\", \".js\"] },\n    conditionNames: [\"import\", \"default\"],\n  },\n  external: (id) => !id.startsWith(\".\") && !isAbsolute(id),\n  output: { dir: \"dist\", format: \"esm\" },\n});\n","rolldown.config.ts",[503,1049,1050,1067,1089,1111,1131,1135,1147,1190,1205,1216,1256,1286,1292,1346,1384],{"__ignoreMap":654},[658,1051,1052,1054,1056,1058,1060,1063,1065],{"class":660,"line":661},[658,1053,783],{"class":782},[658,1055,787],{"class":786},[658,1057,790],{"class":782},[658,1059,794],{"class":793},[658,1061,1062],{"class":667},"@heximon\u002Fbuild\u002Frolldown",[658,1064,799],{"class":793},[658,1066,802],{"class":793},[658,1068,1069,1071,1073,1076,1078,1080,1082,1085,1087],{"class":660,"line":805},[658,1070,783],{"class":782},[658,1072,810],{"class":793},[658,1074,1075],{"class":786}," fileURLToPath",[658,1077,816],{"class":793},[658,1079,819],{"class":782},[658,1081,794],{"class":793},[658,1083,1084],{"class":667},"node:url",[658,1086,799],{"class":793},[658,1088,802],{"class":793},[658,1090,1091,1093,1095,1098,1100,1102,1104,1107,1109],{"class":660,"line":831},[658,1092,783],{"class":782},[658,1094,810],{"class":793},[658,1096,1097],{"class":786}," isAbsolute",[658,1099,816],{"class":793},[658,1101,819],{"class":782},[658,1103,794],{"class":793},[658,1105,1106],{"class":667},"node:path",[658,1108,799],{"class":793},[658,1110,802],{"class":793},[658,1112,1113,1115,1117,1119,1121,1123,1125,1127,1129],{"class":660,"line":838},[658,1114,783],{"class":782},[658,1116,810],{"class":793},[658,1118,813],{"class":786},[658,1120,816],{"class":793},[658,1122,819],{"class":782},[658,1124,794],{"class":793},[658,1126,735],{"class":667},[658,1128,799],{"class":793},[658,1130,802],{"class":793},[658,1132,1133],{"class":660,"line":856},[658,1134,835],{"emptyLinePlaceholder":834},[658,1136,1137,1139,1141,1143,1145],{"class":660,"line":878},[658,1138,841],{"class":782},[658,1140,844],{"class":782},[658,1142,813],{"class":847},[658,1144,850],{"class":786},[658,1146,853],{"class":793},[658,1148,1149,1152,1154,1156,1158,1160,1163,1165,1167,1170,1172,1175,1178,1180,1183,1185,1188],{"class":660,"line":900},[658,1150,1151],{"class":859},"  input",[658,1153,863],{"class":793},[658,1155,1075],{"class":847},[658,1157,850],{"class":786},[658,1159,983],{"class":793},[658,1161,1162],{"class":847}," URL",[658,1164,850],{"class":786},[658,1166,799],{"class":793},[658,1168,1169],{"class":667},".heximon\u002Fserver.js",[658,1171,799],{"class":793},[658,1173,1174],{"class":793},",",[658,1176,1177],{"class":782}," import",[658,1179,545],{"class":793},[658,1181,1182],{"class":786},"meta",[658,1184,545],{"class":793},[658,1186,1187],{"class":786},"url))",[658,1189,875],{"class":793},[658,1191,1193,1195,1197,1199,1201,1203],{"class":660,"line":1192},8,[658,1194,860],{"class":859},[658,1196,863],{"class":793},[658,1198,866],{"class":786},[658,1200,869],{"class":847},[658,1202,872],{"class":786},[658,1204,875],{"class":793},[658,1206,1208,1211,1213],{"class":660,"line":1207},9,[658,1209,1210],{"class":859},"  resolve",[658,1212,863],{"class":793},[658,1214,1215],{"class":793}," {\n",[658,1217,1219,1222,1224,1226,1228,1230,1232,1234,1236,1238,1240,1242,1244,1246,1248,1250,1253],{"class":660,"line":1218},10,[658,1220,1221],{"class":859},"    extensionAlias",[658,1223,863],{"class":793},[658,1225,810],{"class":793},[658,1227,794],{"class":793},[658,1229,622],{"class":859},[658,1231,799],{"class":793},[658,1233,863],{"class":793},[658,1235,866],{"class":786},[658,1237,799],{"class":793},[658,1239,626],{"class":667},[658,1241,799],{"class":793},[658,1243,1174],{"class":793},[658,1245,794],{"class":793},[658,1247,622],{"class":667},[658,1249,799],{"class":793},[658,1251,1252],{"class":786},"] ",[658,1254,1255],{"class":793},"},\n",[658,1257,1259,1262,1264,1266,1268,1270,1272,1274,1276,1279,1281,1284],{"class":660,"line":1258},11,[658,1260,1261],{"class":859},"    conditionNames",[658,1263,863],{"class":793},[658,1265,866],{"class":786},[658,1267,799],{"class":793},[658,1269,783],{"class":667},[658,1271,799],{"class":793},[658,1273,1174],{"class":793},[658,1275,794],{"class":793},[658,1277,1278],{"class":667},"default",[658,1280,799],{"class":793},[658,1282,1283],{"class":786},"]",[658,1285,875],{"class":793},[658,1287,1289],{"class":660,"line":1288},12,[658,1290,1291],{"class":793},"  },\n",[658,1293,1295,1298,1300,1302,1306,1308,1312,1315,1317,1319,1322,1324,1326,1328,1330,1333,1336,1338,1341,1344],{"class":660,"line":1294},13,[658,1296,1297],{"class":847},"  external",[658,1299,863],{"class":793},[658,1301,575],{"class":793},[658,1303,1305],{"class":1304},"sHdIc","id",[658,1307,906],{"class":793},[658,1309,1311],{"class":1310},"spNyl"," =>",[658,1313,1314],{"class":793}," !",[658,1316,1305],{"class":786},[658,1318,545],{"class":793},[658,1320,1321],{"class":847},"startsWith",[658,1323,850],{"class":786},[658,1325,799],{"class":793},[658,1327,545],{"class":667},[658,1329,799],{"class":793},[658,1331,1332],{"class":786},") ",[658,1334,1335],{"class":793},"&&",[658,1337,1314],{"class":793},[658,1339,1340],{"class":847},"isAbsolute",[658,1342,1343],{"class":786},"(id)",[658,1345,875],{"class":793},[658,1347,1349,1352,1354,1356,1359,1361,1363,1366,1368,1370,1373,1375,1377,1380,1382],{"class":660,"line":1348},14,[658,1350,1351],{"class":859},"  output",[658,1353,863],{"class":793},[658,1355,810],{"class":793},[658,1357,1358],{"class":859}," dir",[658,1360,863],{"class":793},[658,1362,794],{"class":793},[658,1364,1365],{"class":667},"dist",[658,1367,799],{"class":793},[658,1369,1174],{"class":793},[658,1371,1372],{"class":859}," format",[658,1374,863],{"class":793},[658,1376,794],{"class":793},[658,1378,1379],{"class":667},"esm",[658,1381,799],{"class":793},[658,1383,897],{"class":793},[658,1385,1387,1389,1391],{"class":660,"line":1386},15,[658,1388,903],{"class":793},[658,1390,906],{"class":786},[658,1392,802],{"class":793},[499,1394,1395,1396,1399,1400,1403,1404,1407,1408,1411],{},"The generated entry re-exports the web ",[503,1397,1398],{},"fetch"," handler and the disposable ",[503,1401,1402],{},"app",", so the bundle is a runnable\nserver (",[503,1405,1406],{},"dist\u002Fserver.js"," exporting ",[503,1409,1410],{},"{ app, fetch }",").",[499,1413,1414,1415,599,1418,599,1421,1424,1425,545],{},"The Rollup, esbuild, webpack, and rspack configs follow the\nsame shape via ",[503,1416,1417],{},"@heximon\u002Fbuild\u002Frollup",[503,1419,1420],{},"@heximon\u002Fbuild\u002Fesbuild",[503,1422,1423],{},"@heximon\u002Fbuild\u002Fwebpack",", and\n",[503,1426,1427],{},"@heximon\u002Fbuild\u002Frspack",[499,1429,1430,1431,1433,1434,1437,1438,1440],{},"Rolldown and esbuild transpile the app's ",[503,1432,626],{}," sources out of the box; Rollup, webpack,\nand rspack need a TypeScript loader of your choosing (e.g. webpack\u002Frspack's ",[503,1435,1436],{},"builtin:swc-loader",") so the bundler\ncan read the ",[503,1439,525],{}," the generated wiring imports.",[563,1442,1444],{"id":1443},"package-as-a-library","Package as a library",[499,1446,1447,1448,1453],{},"The same cross-bundler reach applies to ",[515,1449,1450],{"href":399},[512,1451,1452],{},"library mode"," — packaging a Heximon\nmodule so another app can consume it.",[499,1455,1456,1459,1460,1462,1463,1466,1467,1470,1471,545],{},[503,1457,1458],{},"@heximon\u002Flibrary"," is the bundler-agnostic library emit (separate from\n",[503,1461,509],{},"): it compiles in library mode, writes the typed ",[503,1464,1465],{},"create\u003CModule>.ts"," factory + a\n",[503,1468,1469],{},"src\u002F.heximon\u002Flibrary\u002Findex.ts"," barrel, and emits ",[503,1472,1473],{},"dist\u002Fheximon.manifest.json",[499,1475,1476,1477,599,1480,599,1483,875,1486,545],{},"It is exposed per bundler as a\ndefault-export factory — ",[503,1478,1479],{},"@heximon\u002Flibrary\u002Fvite",[503,1481,1482],{},"@heximon\u002Flibrary\u002Frollup",[503,1484,1485],{},"@heximon\u002Flibrary\u002Frolldown",[503,1487,1488],{},"@heximon\u002Flibrary\u002Fesbuild",[499,1490,1491,1492,1495,1496,1499,1500,1502,1503,1505],{},"Under ",[503,1493,1494],{},"vp pack"," (Rolldown\u002Ftsdown) the factory ships on the package's dedicated\n",[503,1497,1498],{},".\u002Fheximon"," subpath, fully wired by the plugin. On the other bundlers you add the generated barrel\n(",[503,1501,1469],{},") as a second entry and the ",[503,1504,1498],{}," export-map entry yourself — the emit\ndetects the committed entry and shapes the manifest to match:",[648,1507,1509],{"className":772,"code":1508,"language":775,"meta":654,"style":654},"\u002F\u002F build.mjs (packaging a module with esbuild)\nimport heximonLibrary from \"@heximon\u002Flibrary\u002Fesbuild\";\nimport { build } from \"esbuild\";\n\nawait build({\n  entryPoints: [\"src\u002Findex.ts\"],\n  bundle: true,\n  format: \"esm\",\n  outdir: \"dist\",\n  external: [\"@heximon\u002F*\"], \u002F\u002F the framework stays a single cross-boundary copy\n  plugins: [heximonLibrary()], \u002F\u002F compiler plugins are read from heximon.config.ts\n});\n",[503,1510,1511,1517,1534,1555,1559,1570,1590,1603,1618,1633,1654,1672],{"__ignoreMap":654},[658,1512,1513],{"class":660,"line":661},[658,1514,1516],{"class":1515},"sHwdD","\u002F\u002F build.mjs (packaging a module with esbuild)\n",[658,1518,1519,1521,1524,1526,1528,1530,1532],{"class":660,"line":805},[658,1520,783],{"class":782},[658,1522,1523],{"class":786}," heximonLibrary ",[658,1525,790],{"class":782},[658,1527,794],{"class":793},[658,1529,1488],{"class":667},[658,1531,799],{"class":793},[658,1533,802],{"class":793},[658,1535,1536,1538,1540,1543,1545,1547,1549,1551,1553],{"class":660,"line":831},[658,1537,783],{"class":782},[658,1539,810],{"class":793},[658,1541,1542],{"class":786}," build",[658,1544,816],{"class":793},[658,1546,819],{"class":782},[658,1548,794],{"class":793},[658,1550,739],{"class":667},[658,1552,799],{"class":793},[658,1554,802],{"class":793},[658,1556,1557],{"class":660,"line":838},[658,1558,835],{"emptyLinePlaceholder":834},[658,1560,1561,1564,1566,1568],{"class":660,"line":856},[658,1562,1563],{"class":782},"await",[658,1565,1542],{"class":847},[658,1567,850],{"class":786},[658,1569,853],{"class":793},[658,1571,1572,1575,1577,1579,1581,1584,1586,1588],{"class":660,"line":878},[658,1573,1574],{"class":859},"  entryPoints",[658,1576,863],{"class":793},[658,1578,866],{"class":786},[658,1580,799],{"class":793},[658,1582,1583],{"class":667},"src\u002Findex.ts",[658,1585,799],{"class":793},[658,1587,1283],{"class":786},[658,1589,875],{"class":793},[658,1591,1592,1595,1597,1601],{"class":660,"line":900},[658,1593,1594],{"class":859},"  bundle",[658,1596,863],{"class":793},[658,1598,1600],{"class":1599},"sfNiH"," true",[658,1602,875],{"class":793},[658,1604,1605,1608,1610,1612,1614,1616],{"class":660,"line":1192},[658,1606,1607],{"class":859},"  format",[658,1609,863],{"class":793},[658,1611,794],{"class":793},[658,1613,1379],{"class":667},[658,1615,799],{"class":793},[658,1617,875],{"class":793},[658,1619,1620,1623,1625,1627,1629,1631],{"class":660,"line":1207},[658,1621,1622],{"class":859},"  outdir",[658,1624,863],{"class":793},[658,1626,794],{"class":793},[658,1628,1365],{"class":667},[658,1630,799],{"class":793},[658,1632,875],{"class":793},[658,1634,1635,1637,1639,1641,1643,1645,1647,1649,1651],{"class":660,"line":1218},[658,1636,1297],{"class":859},[658,1638,863],{"class":793},[658,1640,866],{"class":786},[658,1642,799],{"class":793},[658,1644,1040],{"class":667},[658,1646,799],{"class":793},[658,1648,1283],{"class":786},[658,1650,1174],{"class":793},[658,1652,1653],{"class":1515}," \u002F\u002F the framework stays a single cross-boundary copy\n",[658,1655,1656,1658,1660,1662,1665,1667,1669],{"class":660,"line":1258},[658,1657,860],{"class":859},[658,1659,863],{"class":793},[658,1661,866],{"class":786},[658,1663,1664],{"class":847},"heximonLibrary",[658,1666,872],{"class":786},[658,1668,1174],{"class":793},[658,1670,1671],{"class":1515}," \u002F\u002F compiler plugins are read from heximon.config.ts\n",[658,1673,1674,1676,1678],{"class":660,"line":1288},[658,1675,903],{"class":793},[658,1677,906],{"class":786},[658,1679,802],{"class":793},[499,1681,1682,1683,1686,1687,1690],{},"Whichever bundler you package with, the published factory and manifest are identical. See the\n",[515,1684,1685],{"href":399},"library mode guide"," for the boundary module, the ",[503,1688,1689],{},"peerDependencies"," rule, and how\na host consumes the package.",[563,1692,1694],{"id":1693},"capability-matrix","Capability matrix",[499,1696,1697],{},"The dev experience needs a dev server, which only Vite exposes through unplugin. Every entry compiles and\nserves the generated wiring; the tiers differ in what the bundler offers on top.",[1699,1700,1701,1727],"table",{},[1702,1703,1704],"thead",{},[1705,1706,1707,1712,1715,1718,1724],"tr",{},[1708,1709,1711],"th",{"align":1710},"left","Entry",[1708,1713,1714],{"align":1710},"Compile + wiring",[1708,1716,1717],{"align":1710},"Recompile on change",[1708,1719,1720,1721,1723],{"align":1710},"Dev server (error page · JSON preview · auto-reload · ",[503,1722,540],{}," upgrade)",[1708,1725,1726],{"align":1710},"Tier",[1728,1729,1730,1751,1771,1787,1804,1821],"tbody",{},[1705,1731,1732,1737,1740,1743,1746],{},[1733,1734,1735],"td",{"align":1710},[503,1736,532],{},[1733,1738,1739],{"align":1710},"✅ in-memory",[1733,1741,1742],{"align":1710},"✅",[1733,1744,1745],{"align":1710},"✅ full (incl. WebSocket-in-dev)",[1733,1747,1748],{"align":1710},[512,1749,1750],{},"Full dev",[1705,1752,1753,1757,1760,1763,1766],{},[1733,1754,1755],{"align":1710},[503,1756,1417],{},[1733,1758,1759],{"align":1710},"✅ to disk",[1733,1761,1762],{"align":1710},"✅ (watch)",[1733,1764,1765],{"align":1710},"❌ terminal diagnostics",[1733,1767,1768],{"align":1710},[512,1769,1770],{},"Build",[1705,1772,1773,1777,1779,1781,1783],{},[1733,1774,1775],{"align":1710},[503,1776,1062],{},[1733,1778,1759],{"align":1710},[1733,1780,1762],{"align":1710},[1733,1782,1765],{"align":1710},[1733,1784,1785],{"align":1710},[512,1786,1770],{},[1705,1788,1789,1793,1795,1798,1800],{},[1733,1790,1791],{"align":1710},[503,1792,1420],{},[1733,1794,1759],{"align":1710},[1733,1796,1797],{"align":1710},"❌ (no watch hook)",[1733,1799,1765],{"align":1710},[1733,1801,1802],{"align":1710},[512,1803,1770],{},[1705,1805,1806,1810,1812,1815,1817],{},[1733,1807,1808],{"align":1710},[503,1809,1423],{},[1733,1811,1759],{"align":1710},[1733,1813,1814],{"align":1710},"✅ (per rebuild)",[1733,1816,1765],{"align":1710},[1733,1818,1819],{"align":1710},[512,1820,1770],{},[1705,1822,1823,1827,1829,1831,1833],{},[1733,1824,1825],{"align":1710},[503,1826,1427],{},[1733,1828,1759],{"align":1710},[1733,1830,1814],{"align":1710},[1733,1832,1765],{"align":1710},[1733,1834,1835],{"align":1710},[512,1836,1770],{},[499,1838,1839,1840,1843,1844,1846],{},"Only Vite exposes a dev server through unplugin, and only Vite can run the compiled app in-process — so webpack\nand rspack are ",[512,1841,1842],{},"build targets only"," (compile + diagnostics + a runnable bundle), with no live dev server. Use\nrspack ≥ 1.5.0 (older versions write placeholder virtual-module files that collide with the ",[503,1845,505],{}," write).",[563,1848,1850],{"id":1849},"how-it-shares-the-dev-experience","How it shares the dev experience",[499,1852,1853,1855,1856,1861,1862,1865,1866,1869,1870,875,1873,599,1876,1879,1880,1883],{},[503,1854,509],{}," is a thin adapter over the same engine the Vite and Nitro hosts use. The\nbuild-time-only ",[515,1857,1858],{"href":409},[503,1859,1860],{},"@heximon\u002Fdev"," package owns the compile \u002F serve-last-good \u002F recompile core\n(",[503,1863,1864],{},"DevServerCore",") behind a small ",[503,1867,1868],{},"DevHost"," adapter, plus the shared Vite host kit (",[503,1871,1872],{},"ViteDevClient",[503,1874,1875],{},"ViteDevHost",[503,1877,1878],{},"attachViteDevServer",") at its ",[503,1881,1882],{},".\u002Fvite"," subpath.",[499,1885,529,1886,1888,1889,1892,1893,1896],{},[503,1887,532],{}," entry binds that kit to\nVite's dev server, so the build-error page, JSON preview, and auto-reload are the ",[512,1890,1891],{},"same code"," the Nitro host\nruns — not a reimplementation. The ",[503,1894,1895],{},"\u002Fvite"," entry adds the WebSocket upgrade handler on top.",[563,1898,1900],{"id":1899},"see-also","See also",[1902,1903,1904,1911,1919,1929],"ul",{},[1905,1906,1907,1910],"li",{},[515,1908,1909],{"href":347},"Hosts overview"," — every host that serves the compiled app, and how to pick one.",[1905,1912,1913,1915,1916,1918],{},[515,1914,16],{"href":17}," — set up the ",[503,1917,532],{}," dev server this page builds on.",[1905,1920,1921,1923,1924,748,1926,1928],{},[515,1922,408],{"href":409}," — ",[503,1925,509],{},[503,1927,1860],{}," in the package stack.",[1905,1930,1931,1937,1938,1940,1941,1944,1945,1944,1948,1944,1951,1944,1954,1957,1958,1411],{},[515,1932,1934],{"href":636,"rel":1933},[519],[512,1935,1936],{},"Cross-bundler build"," — the same app served by ",[503,1939,544],{}," (Vite) and built to a runnable bundle by all five build entries\n(",[503,1942,1943],{},"build:rolldown"," \u002F ",[503,1946,1947],{},"build:esbuild",[503,1949,1950],{},"build:rollup",[503,1952,1953],{},"build:webpack",[503,1955,1956],{},"build:rspack",", or ",[503,1959,1960],{},"build:all",[1962,1963,1964],"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 .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 .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 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}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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":654,"searchDepth":805,"depth":805,"links":1966},[1967,1968,1969,1970,1971,1972,1973,1974],{"id":565,"depth":805,"text":566},{"id":642,"depth":805,"text":643},{"id":755,"depth":805,"text":756},{"id":1017,"depth":805,"text":1018},{"id":1443,"depth":805,"text":1444},{"id":1693,"depth":805,"text":1694},{"id":1849,"depth":805,"text":1850},{"id":1899,"depth":805,"text":1900},"Compile a Heximon app and serve its generated wiring across bundlers with @heximon\u002Fbuild — the full dev experience on Vite (including WebSocket-in-dev), and Rollup \u002F Rolldown \u002F esbuild \u002F webpack \u002F rspack build tiers that emit a runnable server bundle from one unchanged src\u002F.","md",null,{},{"icon":406},{"title":403,"description":1975},"kxTLMr4nN8nm5VdDCDZyISS2ubR-jAD13x1SVn7rLdw",[1983,1985],{"title":398,"path":399,"stem":400,"description":1984,"icon":401,"children":-1},"Ship a Heximon module as a precompiled npm package — heximonLibrary(), the typed create\u003CModule> factory, heximon.manifest.json, requires\u002Fexports boundary tokens, and peerDependencies.",{"title":408,"path":409,"stem":410,"description":1986,"icon":401,"children":-1},"All 44 @heximon\u002F* packages by tier — foundation, kernel, architecture, data, api, capabilities, platforms, tooling — with the npm-name-to-directory mapping.",1783300761903]