[{"data":1,"prerenderedAt":2279},["ShallowReactive",2],{"navigation_docs":3,"-docs-under-the-hood-compiler-diagnostics":493,"-docs-under-the-hood-compiler-diagnostics-surround":2274},[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":394,"body":495,"description":2267,"extension":2268,"links":2269,"meta":2270,"navigation":2271,"path":395,"seo":2272,"stem":396,"__hash__":2273},"docs\u002Fdocs\u002F08.under-the-hood\u002F03.compiler-diagnostics.md",{"type":496,"value":497,"toc":2247},"minimark",[498,502,507,510,530,533,588,595,599,615,626,643,647,653,672,683,694,697,704,708,711,734,737,755,759,766,776,783,802,815,819,842,857,861,871,917,932,936,956,966,979,989,999,1006,1103,1109,1113,1138,1162,1169,1194,1205,1215,1218,1226,1244,1248,1280,1384,1413,1419,1438,1442,1470,1561,1584,1590,1603,1607,1614,1631,1805,1834,1838,1841,1866,1877,1881,1892,2005,2010,2025,2031,2035,2048,2187,2209,2213,2243],[499,500,501],"p",{},"When the compiler can't wire your app — a constructor asks for a token nothing provides, a config key is\nmisspelled — it doesn't fail with a vague one-liner. It points at the exact line, underlines the offending\ntoken, and tells you how to fix it. Reading that output is the fastest way to fix a build, so it's worth knowing\nits anatomy.",[503,504,506],"h2",{"id":505},"the-anatomy-of-an-error","The anatomy of an error",[499,508,509],{},"Inject a token no module provides and the build stops with this:",[511,512,516],"code-preview",{"className":513},[514,515],"group","collapsed",[517,518,520],"template",{"v-slot:code":519},"",[521,522,527],"pre",{"className":523,"code":525,"language":526,"meta":519},[524],"language-text","error [resolve\u002Fno-provider]  UsersService (in UsersModule): no provider for 'UsersRepository'\n  ╭─[src\u002Fusers\u002Fusers.service.ts:3:39]\n  │\n1 │ import { UsersRepository } from \".\u002Fusers.repository\";\n2 │ export class UsersService {\n3 │   constructor(private readonly users: UsersRepository) {}\n  │                                       ───────────────\n4 │ }\n  │\n  ╰─ help: add a provider for it (or a class that extends\u002Fimplements it).\n","text",[528,529,525],"code",{"__ignoreMap":519},[499,531,532],{},"Four parts, each doing one job:",[534,535,536,552,569,578],"ul",{},[537,538,539,543,544,547,548,551],"li",{},[540,541,542],"strong",{},"The header"," — ",[528,545,546],{},"error [resolve\u002Fno-provider]  \u003Cmessage>",". The severity comes first, then the stable\n",[528,549,550],{},"[area\u002Fslug]"," code, then the problem stated in one line — no remedy crammed in.",[537,553,554,557,558,561,562,543,565,568],{},[540,555,556],{},"The codeframe"," — opened by ",[528,559,560],{},"╭─[file:line:col]",", it shows the offending line in context and underlines the\nexact span. Here it points past the parameter name to the ",[540,563,564],{},"type",[528,566,567],{},"UsersRepository"," is the token that can't\nbe satisfied, so that's what's underlined.",[537,570,571,543,574,577],{},[540,572,573],{},"The help trailer",[528,575,576],{},"╰─ help: …"," closes the frame with the remedy. The fix lives here, separate from the\nproblem, so you can read what's wrong and what to do as two distinct thoughts.",[537,579,580,583,584,587],{},[540,581,582],{},"The summary"," — a closing ",[528,585,586],{},"Found N errors, M warnings in K files."," line after all diagnostics.",[499,589,590,591,594],{},"The location in the header is a real ",[528,592,593],{},"file:line:column","; in a terminal that supports it, it's a clickable link\nstraight to the offending line.",[503,596,598],{"id":597},"several-spans-at-once","Several spans at once",[499,600,601,602,605,606,609,610,614],{},"A diagnostic isn't limited to one underline. A ",[540,603,604],{},"syntax error"," renders in the same frame as a wiring error, and\nwhen the compiler can point at more than one place, it does — an unclosed brace underlines both where a ",[528,607,608],{},"}"," was\nexpected ",[611,612,613],"em",{},"and"," where the block was opened:",[511,616,618],{"className":617},[514,515],[517,619,620],{"v-slot:code":519},[521,621,624],{"className":622,"code":623,"language":526,"meta":519},[524],"error [parse\u002Ferror]  Expected `}` but found `EOF`\n  ╭─[src\u002Fusers\u002Fusers.module.ts:4:1]\n  │\n1 │ export class UsersModule {\n  │                          ─\n  │                          Opened here\n2 │   configure() {\n3 │ }\n4 │ \n  │ ─\n  │ `}` expected\n  │\n  ╰─\n",[528,625,623],{"__ignoreMap":519},[499,627,628,629,632,633,635,636,638,639,642],{},"The ",[540,630,631],{},"primary"," span — here, where the ",[528,634,608],{}," was expected — is drawn in the severity color and anchors the\n",[528,637,593],{}," header; secondary spans (",[528,640,641],{},"Opened here",") are drawn in blue. A span that runs across several\nlines, such as an unterminated string or template literal, underlines every line it covers.",[503,644,646],{"id":645},"in-the-dev-server","In the dev server",[499,648,649,652],{},[528,650,651],{},"pnpm dev"," shows the same codeframe in the terminal the moment a compile fails.",[499,654,655,656,659,660,663,664,667,668,671],{},"Because Heximon is a ",[540,657,658],{},"backend","\nframework, the failure also surfaces ",[540,661,662],{},"on the request itself",": while the latest compile is broken, the dev\nserver answers every request with the build error instead of quietly serving the last build that compiled — so a\n",[528,665,666],{},"curl",", a REST client, or a separate frontend hitting your API sees the failure, not a confident ",[528,669,670],{},"200"," from code\nthat no longer matches your source.",[499,673,674,675,678,679,682],{},"The response is content-negotiated from the request's ",[528,676,677],{},"Accept",": a browser\nnavigation gets a colored, terminal-look HTML page (the same codeframe rendered to CSS-themed markup), a JSON\nclient gets ",[528,680,681],{},"application\u002Fproblem+json",", and a terminal client gets the plain codeframe.",[499,684,685,686,689,690,693],{},"That HTML page is the ",[540,687,688],{},"single error surface",", and it stays live on its own: it loads Vite's HMR client, so it\n",[540,691,692],{},"reloads itself"," the moment the next compile is clean — you fix the source, the page swaps to your working app\nwith no manual refresh.",[499,695,696],{},"Every subsequent compile error — the second, the third, even one with the same message in\na new place — re-renders the page in the same styling rather than leaving it stale, and it hides Vite's generic\noverlay so you never see two error panels stacked on top of each other.",[499,698,699,700,703],{},"Your running app is ",[540,701,702],{},"not torn down"," by a failed recompile: the process and the resources it holds (open\nconnections, timers) stay alive — only incoming requests are answered with the error, so you never lose app state\nto a typo mid-edit. Fix the source and the next clean compile swaps in the new wiring and reloads.",[503,705,707],{"id":706},"a-json-preview-when-the-build-is-clean","A JSON preview when the build is clean",[499,709,710],{},"The error page has a clean-build counterpart. Because Heximon is a backend, opening an API route in a browser\nnormally dumps a wall of raw JSON.",[499,712,713,714,717,718,721,722,725,726,729,730,733],{},"When the build is clean and a ",[540,715,716],{},"browser navigation"," lands on a JSON response\n(",[528,719,720],{},"application\u002Fjson"," or any ",[528,723,724],{},"+json","), the dev server instead returns a ",[540,727,728],{},"JSON preview"," page: the body\npretty-printed and syntax-highlighted in the same palette as the error page, with a shallow footer reporting the\nrequest line, the status (a colored dot — green 2xx, red 4xx\u002F5xx), the content type, the route and compile\ndurations, the package name, and the ",[528,731,732],{},"⏣ Heximon"," brand.",[499,735,736],{},"It loads the same hot-reload client, so editing your\nsource reloads it (re-running the request), and a compile that breaks flips it straight to the build-error page —\nthen back to the preview once you fix it.",[499,738,739,740,743,744,747,748,750,751,754],{},"The preview is purely a browser convenience: it is keyed on ",[528,741,742],{},"Accept: text\u002Fhtml",", so a ",[528,745,746],{},"fetch",", a REST client, or a\n",[528,749,666],{}," still receives the ",[540,752,753],{},"raw"," API response — its exact headers, status, and streaming body — untouched. You\nsee a readable page; your code sees the real bytes.",[503,756,758],{"id":757},"in-ci-and-editors","In CI and editors",[499,760,761,762,765],{},"Output to a non-interactive stream — a CI job, a piped log — drops the box drawing for one plain line per\ndiagnostic, in a ",[528,763,764],{},"file:line:column: severity [code]: message"," shape an editor or CI problem-matcher can parse:",[511,767,768],{},[517,769,770],{"v-slot:code":519},[521,771,774],{"className":772,"code":773,"language":526,"meta":519},[524],"src\u002Fusers\u002Fusers.service.ts:3:39: error [resolve\u002Fno-provider]: UsersService (in UsersModule): no provider for 'UsersRepository' — add a provider for it (or a class that extends\u002Fimplements it).\nFound 1 error in 1 file.\n",[528,775,773],{"__ignoreMap":519},[499,777,778,779,782],{},"The remedy that the terminal shows as a ",[528,780,781],{},"help:"," trailer is appended after an em-dash here, so the single line\ncarries the whole message.",[499,784,785,786,789,790,793,794,797,798,801],{},"Error verdicts also reach the editor ",[540,787,788],{},"between"," builds: each compile writes\n",[528,791,792],{},"src\u002F.heximon\u002Fgraph\u002Fverdicts.gen.d.ts",", whose augmentations re-report every error at the offending module's\nown ",[528,795,796],{},"class"," declaration (or, for a dirty precompiled module, at the ",[528,799,800],{},"imports"," entry that pulls it in).",[499,803,804,805,808,809,814],{},"The\nfirst compile adds the generated-directory include entry to your ",[528,806,807],{},"tsconfig.json"," for you. See\n",[810,811,813],"a",{"href":812},"\u002Fdocs\u002Fessentials\u002Fmodules-and-di#compiled-verdicts-come-back-into-the-editor","the modules page"," for how this reaches your editor.",[503,816,818],{"id":817},"the-diagnostic-code","The diagnostic code",[499,820,821,822,825,826,829,830,833,834,837,838,841],{},"Every diagnostic carries a stable ",[528,823,824],{},"area\u002Fslug"," code — ",[528,827,828],{},"resolve\u002Fno-provider",", ",[528,831,832],{},"config\u002Funknown-key",",\n",[528,835,836],{},"graph\u002Fmodule-import-cycle",". It names the ",[611,839,840],{},"kind"," of problem independently of the exact wording, so you can search\nfor it, recognize a recurring class of mistake, or match on it in tooling without depending on a message that may\nbe reworded.",[499,843,844,845,848,849,852,853,856],{},"The area tells you which part of the build raised it (",[528,846,847],{},"resolve"," is dependency resolution, ",[528,850,851],{},"graph","\nthe module\u002Fimport graph, ",[528,854,855],{},"config"," a module-config key, and so on).",[503,858,860],{"id":859},"a-precise-no-provider-remedy","A precise no-provider remedy",[499,862,863,864,866,867,870],{},"When a token has no provider, the ",[528,865,781],{}," trailer is tailored to ",[611,868,869],{},"how"," the token is reachable, so the fix is\nexact rather than generic:",[534,872,873,890,899,908],{},[537,874,875,878,879,882,883,885,886,889],{},[540,876,877],{},"An imported module already has it, unexported."," If your module imports ",[528,880,881],{},"SharedModule"," and a class there\nsatisfies the token but ",[528,884,881],{}," doesn't export it, the remedy names that module:\n",[528,887,888],{},"a satisfier for 'Logger' exists in the imported module 'SharedModule' but isn't bound here; export 'Logger' from 'SharedModule'",".",[537,891,892,895,896,889],{},[540,893,894],{},"A module owns it but doesn't export it."," If a module provides the token but neither exports it nor is\nimported here, the remedy is to export it from its owner first:\n",[528,897,898],{},"'Logger' is provided by 'SharedModule' but 'SharedModule' does not export it; add 'Logger' to 'SharedModule''s exports and import 'SharedModule'",[537,900,901,904,905,889],{},[540,902,903],{},"A module exports it."," The plain seam — ",[528,906,907],{},"import 'SharedModule'",[537,909,910,913,914],{},[540,911,912],{},"No module has it."," ",[528,915,916],{},"add a provider for it (or a class that extends\u002Fimplements it).",[499,918,919,920,923,924,927,928,931],{},"These remedies assume the token itself is ",[611,921,922],{},"importable"," — a name your code actually imports. When the\nconstructor names a token that ",[540,925,926],{},"isn't"," importable (not imported into the file, or a same-file class that isn't\nexported), there is no provider that could ever satisfy that phantom identity, so the build reports the\n",[528,929,930],{},"discovery\u002Funresolved-reference"," error below instead — naming the missing import, not a missing provider.",[503,933,935],{"id":934},"an-unresolved-concept-reference","An unresolved concept reference",[499,937,938,939,833,942,829,945,948,949,952,953,955],{},"Every discovered concept binds a name from your source — ",[528,940,941],{},"EventHandler\u003COrderCreated>",[528,943,944],{},"CommandHandler\u003CCreateOrder>",[528,946,947],{},"implements Controller\u003CTaskApi>",". The compiler reads that name\nstatically (it never type-checks). When the name ",[540,950,951],{},"isn't imported"," — a removed, renamed, or commented-out\nimport — the build fails with one shared error, ",[528,954,930],{},", a codeframe underlining the\nname:",[511,957,958],{},[517,959,960],{"v-slot:code":519},[521,961,964],{"className":962,"code":963,"language":526,"meta":519},[524],"error [discovery\u002Funresolved-reference]  OrderCreatedHandler: the event 'OrderCreated' does not resolve to an\nimportable value — 'OrderCreated' is not imported into this file. Its wiring would bind to `undefined` at boot.\n  ╰─ help: import the event into this file, e.g. `import { OrderCreated } from \".\u002F…\";`.\n",[528,965,963],{"__ignoreMap":519},[499,967,968,969,829,972,829,975,978],{},"The wording is identical across concepts (the noun — ",[528,970,971],{},"event",[528,973,974],{},"command",[528,976,977],{},"contract"," — is the only thing that\nchanges), so a missing import is always a build error that names the concept and the fix.",[499,980,981,982,985,986,889],{},"This matters most for\nthe ",[540,983,984],{},"identity-keyed"," concepts (events, commands, queries, domain events): without it, an unimported binding\nisn't a crash — the handler is built but its dispatch key silently never matches, so it just ",[611,987,988],{},"never fires",[499,990,991,994,995,998],{},[528,992,993],{},"pnpm check"," catches the same mistake earlier as a ",[528,996,997],{},"Cannot find name"," type error; this is the dev server's\nbackstop, since its oxc compiler does not type-check.",[499,1000,1001,1002,1005],{},"The same error covers ",[540,1003,1004],{},"every"," place a build reads a class name by value, not just a concept's own type\nargument:",[534,1007,1008,1061,1086],{},[537,1009,1010,1016,1017,1020,1021,1024,1025,1028,1029,1032,1033,1036,1037,1040,1041,1044,1045,1048,1049,1052,1053,1056,1057,1060],{},[540,1011,1012,1013],{},"A class a concept ",[611,1014,1015],{},"references"," — a controller's ",[528,1018,1019],{},"middlewares"," \u002F ",[528,1022,1023],{},"errorFilters",", an ",[528,1026,1027],{},"ErrorFilter\u003CE>","'s\ncaught error type, an inline route schema (",[528,1030,1031],{},"Post\u003C\"\u002F\", { body: CreateUser }>","), a streaming handler's\n",[528,1034,1035],{},"{ durable: Room }"," host or ",[528,1038,1039],{},"{ events: FeedEvents }"," map. These each have their ",[611,1042,1043],{},"own"," downstream check (\"is\nnot a discovered Middleware\", \"must extend DurableObject\", …), but an ",[540,1046,1047],{},"unimported"," name is reported as the\nunresolved reference ",[540,1050,1051],{},"first"," — so you see ",[528,1054,1055],{},"the middleware 'ApiAuth' does not resolve … is not imported","\nrather than the misleading \"must extend or implement ",[528,1058,1059],{},"Middleware","\", which would send you to fix the base\nclass instead of the import.",[537,1062,1063,543,1066,829,1068,829,1071,1074,1075,1078,1079,829,1082,1085],{},[540,1064,1065],{},"A class listed in module config",[528,1067,800],{},[528,1069,1070],{},"exports",[528,1072,1073],{},"providers"," (bare or ",[528,1076,1077],{},"{ provide, useClass }","),\nand every plugin-namespace entry (",[528,1080,1081],{},"http: { controllers: [UsersController] }",[528,1083,1084],{},"events: { handlers: […] }",").\nAn unimported entry there is the highest-impact mistake: an imported module would crash at boot, and a\nnamespace entry would simply never be discovered (no route, no dispatch). The codeframe names the owning\nmodule and underlines the offending entry.",[537,1087,1088,543,1091,1094,1095,1098,1099,1102],{},[540,1089,1090],{},"A constructor's DI token",[528,1092,1093],{},"constructor(private users: UsersRepository)",". A token a class injects must be\nimported (class identity is the only token). When it isn't, no provider can satisfy that phantom identity, so\nthe build reports ",[528,1096,1097],{},"Svc: the dependency 'UsersRepository' does not resolve … is not imported"," rather than the\ngeneric ",[528,1100,1101],{},"no provider for 'UsersRepository'"," — which would otherwise send you to add a provider for a token you\nsimply forgot to import.",[499,1104,1105,1106,1108],{},"So whether the missing import is a concept's type argument, a class another concept references, an entry in a\nmodule's config, or a constructor's injected token, the dev server fails the build with the same\n",[528,1107,930],{}," codeframe that names what didn't resolve and how to fix it.",[503,1110,1112],{"id":1111},"a-concept-base-that-isnt-the-frameworks","A concept base that isn't the framework's",[499,1114,1115,1116,1119,1120,1123,1124,1127,1128,1131,1132,1134,1135,889],{},"There's one more name a build reads by value: the ",[540,1117,1118],{},"base class"," a concept binds. A controller ",[611,1121,1122],{},"is"," a\ncontroller because it ",[528,1125,1126],{},"extends"," or ",[528,1129,1130],{},"implements Controller\u003C…>","; a handler because it ",[528,1133,1126],{}," or\n",[528,1136,1137],{},"implements EventHandler\u003C…>",[499,1139,1140,1141,1143,1144,1147,1148,1151,1152,833,1155,1151,1158,1161],{},"The compiler recognises the concept by walking both the ",[528,1142,1126],{}," chain and any\n",[528,1145,1146],{},"implements"," clause at every hop to the framework base it declares (",[528,1149,1150],{},"Controller"," from ",[528,1153,1154],{},"@heximon\u002Fhttp",[528,1156,1157],{},"EventHandler",[528,1159,1160],{},"@heximon\u002Fevents",", …). When neither reaches one of them, the class is listed but never\nwired — no route, no dispatch entry.",[499,1163,1164,1165,1168],{},"Most of the time that's a genuine \"this isn't a concept\" — handled by the ",[528,1166,1167],{},"config\u002Forphan-concept"," and\ninert-provider warnings below.",[499,1170,1171,1172,1175,1176,1179,1180,1182,1183,1185,1186,1189,1190,1193],{},"But when the heritage clause literally ",[540,1173,1174],{},"names"," the framework base (",[528,1177,1178],{},"extends Controller\u003C\"\u002Fusers\">",") yet that ",[528,1181,1150],{}," doesn't resolve to ",[528,1184,1154],{}," — because it's ",[540,1187,1188],{},"not imported",",\nor imported from the ",[540,1191,1192],{},"wrong package"," — the author clearly meant the framework concept.",[499,1195,1196,1197,1200,1201,1204],{},"That's a missing or\nwrong import, not a deliberate non-concept, so the build ",[540,1198,1199],{},"fails"," with ",[528,1202,1203],{},"config\u002Fmisresolved-concept-base",":",[511,1206,1207],{},[517,1208,1209],{"v-slot:code":519},[521,1210,1213],{"className":1211,"code":1212,"language":526,"meta":519},[524],"error [config\u002Fmisresolved-concept-base]  UsersController (listed under http.controllers) declares Controller\nin its heritage, but that name does not resolve to \"@heximon\u002Fhttp\" (the Controller concept base) — it is not\nimported in this file. It will be constructed as a provider but never wired as a Controller.\n  ╰─ help: import { Controller } from \"@heximon\u002Fhttp\".\n",[528,1214,1212],{"__ignoreMap":519},[499,1216,1217],{},"Without it the controller compiles cleanly and is even built as a provider — but its routes silently never\nregister, with a green build.",[499,1219,1220,994,1222,1225],{},[528,1221,993],{},[528,1223,1224],{},"Cannot find name 'Controller'","\ntype error; this is the dev server's backstop, since its oxc compiler does not type-check.",[499,1227,1228,1229,829,1231,833,1234,829,1237,829,1240,1243],{},"The check is shared\nacross every discovery namespace, so the identical error guards an unimported ",[528,1230,1157],{},[528,1232,1233],{},"CommandHandler",[528,1235,1236],{},"QueryHandler",[528,1238,1239],{},"QueueEventHandler",[528,1241,1242],{},"HealthIndicator",", and the rest.",[503,1245,1247],{"id":1246},"a-streaming-config-member-that-isnt-a-bare-class-reference","A streaming config member that isn't a bare class reference",[499,1249,1250,1251,1020,1254,1257,1258,1261,1262,1264,1265,1268,1269,1272,1273,1275,1276,1279],{},"A ",[528,1252,1253],{},"WebSocketHandler",[528,1255,1256],{},"ServerSentEventsHandler"," carries its wiring in the heritage clause's type argument — the\nhibernation\u002Fstream host (",[528,1259,1260],{},"durable","), the auth-at-connect chain (",[528,1263,1019],{},"), the SSE broadcast map\n(",[528,1266,1267],{},"events","), and the WebSocket inbound-frame schema (",[528,1270,1271],{},"body","). Each of those names a ",[540,1274,796],{},", and class identity\nis the only DI token, so each must be written as a ",[540,1277,1278],{},"bare class reference"," the compiler can resolve to an\nimport:",[521,1281,1285],{"className":1282,"code":1283,"language":1284,"meta":519,"style":519},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export class ChatSocket implements WebSocketHandler\u003C{\n  path: \"\u002Fws\u002Fchat\";\n  durable: ChatRoom;            \u002F\u002F ✅ a bare class reference\n  middlewares: [AuthMiddleware];\n}> {}\n","ts",[528,1286,1287,1315,1337,1355,1375],{"__ignoreMap":519},[1288,1289,1292,1296,1300,1304,1307,1311],"span",{"class":1290,"line":1291},"line",1,[1288,1293,1295],{"class":1294},"s7zQu","export",[1288,1297,1299],{"class":1298},"spNyl"," class",[1288,1301,1303],{"class":1302},"sBMFI"," ChatSocket",[1288,1305,1306],{"class":1298}," implements",[1288,1308,1310],{"class":1309},"s2Zo4"," WebSocketHandler",[1288,1312,1314],{"class":1313},"sMK4o","\u003C{\n",[1288,1316,1318,1322,1324,1327,1331,1334],{"class":1290,"line":1317},2,[1288,1319,1321],{"class":1320},"swJcz","  path",[1288,1323,1204],{"class":1313},[1288,1325,1326],{"class":1313}," \"",[1288,1328,1330],{"class":1329},"sfazB","\u002Fws\u002Fchat",[1288,1332,1333],{"class":1313},"\"",[1288,1335,1336],{"class":1313},";\n",[1288,1338,1340,1343,1345,1348,1351],{"class":1290,"line":1339},3,[1288,1341,1342],{"class":1320},"  durable",[1288,1344,1204],{"class":1313},[1288,1346,1347],{"class":1302}," ChatRoom",[1288,1349,1350],{"class":1313},";",[1288,1352,1354],{"class":1353},"sHwdD","            \u002F\u002F ✅ a bare class reference\n",[1288,1356,1358,1361,1363,1367,1370,1373],{"class":1290,"line":1357},4,[1288,1359,1360],{"class":1320},"  middlewares",[1288,1362,1204],{"class":1313},[1288,1364,1366],{"class":1365},"sTEyZ"," [",[1288,1368,1369],{"class":1302},"AuthMiddleware",[1288,1371,1372],{"class":1365},"]",[1288,1374,1336],{"class":1313},[1288,1376,1378,1381],{"class":1290,"line":1377},5,[1288,1379,1380],{"class":1313},"}>",[1288,1382,1383],{"class":1313}," {}\n",[499,1385,1386,1387,1390,1391,829,1394,1397,1398,1401,1402,1404,1405,1408,1409,1412],{},"A member that is ",[611,1388,1389],{},"present"," but written in a shape that can never resolve — a namespace-qualified name\n(",[528,1392,1393],{},"durable: rooms.ChatRoom",[528,1395,1396],{},"body: schemas.ChatMessage","), an inline object type (",[528,1399,1400],{},"events: { … }","), or a\nnon-tuple ",[528,1403,1019],{}," (a type alias instead of a ",[528,1406,1407],{},"[A, B]"," literal) — is a ",[528,1410,1411],{},"streaming\u002Freference-unreadable","\nbuild error rather than a silent drop:",[521,1414,1417],{"className":1415,"code":1416,"language":526,"meta":519},[524],"error [streaming\u002Freference-unreadable]  WebSocketHandler 'ChatSocket': the `durable` host is not a bare class\nreference; name the class directly (class identity is the only DI token, so a namespace member, inline type, or\nnon-tuple list cannot resolve).\n",[528,1418,1416],{"__ignoreMap":519},[499,1420,1421,1422,1425,1426,1429,1430,1433,1434,1437],{},"Without it the handler would compile cleanly while the host, middleware (so ",[540,1423,1424],{},"auth-at-connect silently\nvanishes","), events map, or frame schema dropped. The check is shared across both streaming transports. A\ntransparent ",[528,1427,1428],{},"readonly"," \u002F parenthesized wrapper is ",[611,1431,1432],{},"not"," an error — ",[528,1435,1436],{},"middlewares: readonly [AuthMiddleware]"," is\npeeled and reads identically to the bare tuple.",[503,1439,1441],{"id":1440},"an-inline-route-schema-slot-that-isnt-a-bare-class-reference","An inline route schema slot that isn't a bare class reference",[499,1443,1444,1445,1447,1448,1447,1451,1447,1454,1457,1458,1461,1462,1465,1466,1469],{},"An inline route schema slot — ",[528,1446,1271],{},"\u002F",[528,1449,1450],{},"query",[528,1452,1453],{},"params",[528,1455,1456],{},"responses[status]"," on ",[528,1459,1460],{},"Post\u003C\"\u002F\", { body: … }>"," (or\nthe equivalent ",[528,1463,1464],{},"typeof"," form) — binds a schema ",[540,1467,1468],{},"by value",", so it too must resolve to a single importable\nclass:",[521,1471,1473],{"className":1282,"code":1472,"language":1284,"meta":519,"style":519},"export class ProductsController implements Controller\u003C\"\u002Fproducts\"> {\n  async create(action: Post\u003C\"\u002F\", { body: CreateProduct }>) {}   \u002F\u002F ✅ a bare class reference\n}\n",[528,1474,1475,1505,1556],{"__ignoreMap":519},[1288,1476,1477,1479,1481,1484,1486,1489,1492,1494,1497,1499,1502],{"class":1290,"line":1291},[1288,1478,1295],{"class":1294},[1288,1480,1299],{"class":1298},[1288,1482,1483],{"class":1302}," ProductsController",[1288,1485,1306],{"class":1298},[1288,1487,1488],{"class":1302}," Controller",[1288,1490,1491],{"class":1313},"\u003C",[1288,1493,1333],{"class":1313},[1288,1495,1496],{"class":1329},"\u002Fproducts",[1288,1498,1333],{"class":1313},[1288,1500,1501],{"class":1313},">",[1288,1503,1504],{"class":1313}," {\n",[1288,1506,1507,1510,1513,1516,1520,1522,1525,1527,1529,1531,1533,1536,1539,1542,1544,1547,1550,1553],{"class":1290,"line":1317},[1288,1508,1509],{"class":1298},"  async",[1288,1511,1512],{"class":1320}," create",[1288,1514,1515],{"class":1313},"(",[1288,1517,1519],{"class":1518},"sHdIc","action",[1288,1521,1204],{"class":1313},[1288,1523,1524],{"class":1302}," Post",[1288,1526,1491],{"class":1313},[1288,1528,1333],{"class":1313},[1288,1530,1447],{"class":1329},[1288,1532,1333],{"class":1313},[1288,1534,1535],{"class":1313},",",[1288,1537,1538],{"class":1313}," {",[1288,1540,1541],{"class":1320}," body",[1288,1543,1204],{"class":1313},[1288,1545,1546],{"class":1302}," CreateProduct",[1288,1548,1549],{"class":1313}," }>)",[1288,1551,1552],{"class":1313}," {}",[1288,1554,1555],{"class":1353},"   \u002F\u002F ✅ a bare class reference\n",[1288,1557,1558],{"class":1290,"line":1339},[1288,1559,1560],{"class":1313},"}\n",[499,1562,1563,1564,1567,1568,1571,1572,1575,1576,1579,1580,1583],{},"A slot written in a shape that can never collapse to one class — a ",[540,1565,1566],{},"generic instantiation","\n(",[528,1569,1570],{},"body: Paginated\u003CProduct>",") or a ",[540,1573,1574],{},"namespace-qualified name"," (",[528,1577,1578],{},"body: Schemas.CreateProduct",") — is\n",[528,1581,1582],{},"http\u002Fschema-reference-unreadable"," rather than a silent drop:",[521,1585,1588],{"className":1586,"code":1587,"language":526,"meta":519},[524],"error [http\u002Fschema-reference-unreadable]  ProductsController: the 'body' schema slot references\n`Paginated\u003C...>`, which the compiler cannot resolve to a single importable value — a route schema slot\nmust name a bare schema class the compiler can import for runtime validation, not a generic instantiation\nor a namespace-qualified name.\n  ╰─ help: name the schema class directly, e.g. `body: CreateProduct` — or `typeof CreateProduct` for the\nschema class value.\n",[528,1589,1587],{"__ignoreMap":519},[499,1591,1592,1593,829,1595,829,1597,1599,1600,1602],{},"Without it the controller would compile cleanly while the slot silently bound nothing, crashing on the\nfirst request that reaches it. The check runs on every schema slot in a route — ",[528,1594,1271],{},[528,1596,1450],{},[528,1598,1453],{},",\nand each ",[528,1601,1456],{}," entry alike.",[503,1604,1606],{"id":1605},"every-config-read-either-reads-faithfully-or-fails-loud","Every config read either reads faithfully or fails loud",[499,1608,1609,1610,1613],{},"The pattern above — ",[611,1611,1612],{},"a config value the compiler can't read statically must not be silently dropped"," — runs\nthrough every reader.",[499,1615,1616,1617,1575,1620,1622,1623,1626,1627,1630],{},"Two complementary moves enforce it: a ",[540,1618,1619],{},"transparent wrapper",[528,1621,1428],{},", parenthesized\n",[528,1624,1625],{},"(…)",") is peeled and read faithfully, and a ",[540,1628,1629],{},"genuinely unreadable"," form (a union, a keyword, a type alias, a\nconditional, a spread) is a build error or warning naming the exact spot — never a silent default. The same\nmental model covers these readers:",[534,1632,1633,1665,1710,1746,1770],{},[537,1634,1635,1575,1638,1641,1642,1645,1646,1649,1650,1653,1654,1657,1658,1200,1661,1664],{},[540,1636,1637],{},"Handler retry options",[528,1639,1640],{},"CommandHandler\u003CCmd, { retry: { attempts } }>",", queue + integration handlers). A\nnegative (",[528,1643,1644],{},"attempts: -5",") or parenthesized (",[528,1647,1648],{},"(5)",") number reads faithfully; a non-literal field (a union\n",[528,1651,1652],{},"3 | 5",", the keyword ",[528,1655,1656],{},"number",", a type alias) ",[540,1659,1660],{},"warns",[528,1662,1663],{},"retry\u002Fnon-literal-field"," and falls back to the\nruntime default (rather than silently doing so).",[537,1666,1667,1575,1670,1020,1672,1674,1675,1678,1679,1682,1683,1686,1687,1690,1691,1694,1695,1697,1698,1200,1700,1703,1704],{},[540,1668,1669],{},"Module config lists",[528,1671,800],{},[528,1673,1073],{}," \u002F a namespace sub-key). An element that isn't a bare class\nidentifier, a ",[528,1676,1677],{},"new Module(config)",", or a ",[528,1680,1681],{},"{ provide, use… }"," object — a conditional ",[528,1684,1685],{},"cond ? A : B",", a spread\n",[528,1688,1689],{},"...mods",", a call — is ",[528,1692,1693],{},"config\u002Flist-element-unanalyzable"," (it would silently drop a class from the graph). A\ntoken declared twice in one ",[528,1696,1073],{}," array ",[540,1699,1660],{},[528,1701,1702],{},"config\u002Fduplicate-provide-token"," (last-wins):",[521,1705,1708],{"className":1706,"code":1707,"language":526,"meta":519},[524],"warning [config\u002Fduplicate-provide-token]  AppModule: provider token 'Database' is declared more than once in\n'providers' (first 'PostgresDatabase', then 'SqliteDatabase') — each token must have exactly one binding;\nremove the duplicate or merge into one entry.\n",[528,1709,1707],{"__ignoreMap":519},[537,1711,1712,1718,1719,1722,1723,1726,1727,1730,1731,1734,1735,1730,1738,1741,1742,1745],{},[540,1713,1714,1717],{},[528,1715,1716],{},"DurableObject\u003C{ storage, binding, hibernate }>"," config."," A present-but-unreadable member (a ",[528,1720,1721],{},"storage","\nunion, a template-literal \u002F empty ",[528,1724,1725],{},"binding",", a non-literal ",[528,1728,1729],{},"hibernate",") is ",[528,1732,1733],{},"durable\u002Fconfig-member-unreadable",";\na key outside the three (a typo like ",[528,1736,1737],{},"hibernat",[528,1739,1740],{},"durable\u002Fconfig-unknown-key",". ",[528,1743,1744],{},"hibernate: (true)"," is\npeeled and read.",[537,1747,1748,913,1754,1757,1758,1761,1762,1765,1766,1769],{},[540,1749,1750,1751,889],{},"CQRS ",[528,1752,1753],{},"{ override }",[528,1755,1756],{},"override: (true)"," is read; a non-literal ",[528,1759,1760],{},"override"," (a union, a type alias) is\n",[528,1763,1764],{},"cqrs\u002Foverride-unreadable"," — surfaced ",[611,1767,1768],{},"instead"," of the confusing duplicate-handler error it used to cause.",[537,1771,1772,1775,1776,1779,1780,1783,1784,1787,1788,1791,1792,1200,1794,1797,1798,1801,1802,889],{},[540,1773,1774],{},"Event keys."," A tuple mixing string keys and class references (",[528,1777,1778],{},"EventHandler\u003C[\"a\", OrderCreated]>",") is\n",[528,1781,1782],{},"events\u002Fmixed-tuple"," (the string key would be dropped); an empty ",[528,1785,1786],{},"\"\""," key is ",[528,1789,1790],{},"events\u002Fempty-string-key","; a\nrepeated tuple key ",[540,1793,1660],{},[528,1795,1796],{},"events\u002Fduplicate-tuple-key"," and is deduplicated. An\n",[528,1799,1800],{},"IntegrationEventHandler"," with an empty\u002Fblank type is ",[528,1803,1804],{},"integration\u002Fempty-channel",[499,1806,1250,1807,1810,1811,1020,1814,1817,1818,1821,1822,1825,1826,1829,1830,1833],{},[528,1808,1809],{},"Route"," builder's ",[528,1812,1813],{},".cache({ … })",[528,1815,1816],{},".cors({ … })"," directives are read at runtime (by ",[528,1819,1820],{},"@heximon\u002Fopenapi"," \u002F\n",[528,1823,1824],{},"@heximon\u002Fmcp","), so a misspelled key there throws at ",[540,1827,1828],{},"route-build time"," (app startup) — ",[528,1831,1832],{},"Route.cache() received unknown option key(s): \"stalMaxAge\""," — rather than being silently ignored on the wire.",[503,1835,1837],{"id":1836},"a-declared-capability-with-no-plugin-fails-the-build","A declared capability with no plugin fails the build",[499,1839,1840],{},"One config mistake is promoted above the warning tier because nothing else would ever surface it: a populated\nfirst-party namespace whose compiler plugin is not active.",[499,1842,1843,1844,1847,1848,1851,1852,1855,1856,1861,1862,1865],{},"Write ",[528,1845,1846],{},"cqrs: { commandHandlers: [PlaceOrder] }","\nwith no ",[528,1849,1850],{},"CqrsPlugin"," in ",[528,1853,1854],{},"heximon.config.ts"," and the build stops with\n",[540,1857,1858],{},[528,1859,1860],{},"config\u002Fnamespace-plugin-missing"," — the hint names the exact fix\n(",[528,1863,1864],{},"add `new CqrsPlugin()` (from \"@heximon\u002Fcqrs\u002Fcompiler\") to the plugins list in heximon.config.ts, or remove the 'cqrs' key",").",[499,1867,1868,1869,1872,1873,1876],{},"Without this error the listed classes would silently never be discovered or wired — the\n\"my handler never fires\" mystery. A mere sub-key typo under an ",[611,1870,1871],{},"active"," plugin stays the\n",[528,1874,1875],{},"config\u002Funclaimed-concept-key"," warning below.",[503,1878,1880],{"id":1879},"warnings-worth-heeding","Warnings worth heeding",[499,1882,1883,1884,1887,1888,1891],{},"Some checks ",[540,1885,1886],{},"warn"," rather than fail the build — the compile still succeeds, but the warning flags a structural\nsmell that almost always means a mistake. All three are advisory by default; opt any into a hard error with\n",[528,1889,1890],{},"strictDiagnostics"," (see below).",[534,1893,1894,1920,1943,1963],{},[537,1895,1896,1900,1901,829,1903,1905,1906,1909,1910,1913,1914,1916,1917,1919],{},[540,1897,1898],{},[528,1899,1167],{}," — a concrete class extends or implements a registered concept base (a\n",[528,1902,1150],{},[528,1904,1157],{},", command\u002Fquery handler, queue handler, …) but is listed in ",[540,1907,1908],{},"no"," module config.\nIt is parsed but never discovered, so nothing wires it — no route, no dispatch-table entry. Almost always a\nforgotten registration; the hint is a paste-ready fix naming the exact sub-key, e.g.\n",[528,1911,1912],{},"add `events: { handlers: [OrderHandler] }` to the owning module's config",". (Referenced-not-listed concepts\nlike ",[528,1915,1059],{}," — named in a controller's ",[528,1918,1019],{}," annotation — are exempt; an abstract intermediate\nbase is too.)",[537,1921,1922,1927,1928,1931,1932,1934,1935,1938,1939,1942],{},[540,1923,1924],{},[528,1925,1926],{},"config\u002Fduplicate-provider-ownership"," — the same class appears in ",[540,1929,1930],{},"two"," modules' ",[528,1933,1073],{}," within one\napp's import graph. A provider belongs to exactly one owning module; otherwise which module constructs it (and\nwhich ",[528,1936,1937],{},"app.get"," returns) is order-dependent. Keep it in one module and import that module from the others.\n(Listing a shared provider in two ",[611,1940,1941],{},"different apps'"," modules is fine — each app composes its own instance.)",[537,1944,1945,1950,1951,1954,1955,1958,1959,1962],{},[540,1946,1947],{},[528,1948,1949],{},"config\u002Fcross-module-internal-import"," — a file owned by one module imports, as a runtime ",[540,1952,1953],{},"value",", a class\nanother module owns but does ",[540,1956,1957],{},"not export"," — reaching across a module boundary into another module's\ninternals. The fix is one of: make it an ",[528,1960,1961],{},"import type"," if the reference is type-level (type-only imports are\nexempt — they erase at build time), export the class from its owning module, or move a genuinely shared symbol\nto a neutral shared location (see below).",[537,1964,1965,1970,1971,1973,1974,1977,1978,1981,1982,1985,1986,1989,1990,1993,1994,1997,1998,2000,2001,889],{},[540,1966,1967],{},[528,1968,1969],{},"boundary\u002Fmanifest-drift"," — a precompiled, manifest-bearing package you list in ",[528,1972,800],{}," ships a\n",[528,1975,1976],{},"heximon.manifest.json"," declaring a ",[528,1979,1980],{},"core"," token (its module class, the ",[528,1983,1984],{},"create\u003CModule>"," factory, or an\nexported token) that the package's published ",[528,1987,1988],{},".d.ts"," no longer exports — a ",[540,1991,1992],{},"stale manifest"," that would\notherwise compile cleanly then fail at runtime with a bare ",[528,1995,1996],{},"no provider",". Rebuild\u002Frepublish the package, or\nalign your installed version with its manifest. Reported only when the package's ",[528,1999,1988],{}," was read and the\nname is definitively absent — a package shipping no types is skipped (no evidence). See\n",[810,2002,2004],{"href":2003},"\u002Fdocs\u002Funder-the-hood\u002Flibrary-mode#the-build-flags-a-stale-manifest","library mode",[2006,2007,2009],"h3",{"id":2008},"the-shared-events-convention","The shared-events convention",[499,2011,2012,2013,2016,2017,2020,2021,2024],{},"A domain event one module ",[540,2014,2015],{},"raises"," and another ",[540,2018,2019],{},"reacts to"," is genuinely shared — neither module owns it\nexclusively. Put it in a neutral ",[528,2022,2023],{},"shared\u002F"," location that no feature module lists in its config, and have both\nmodules import it from there.",[499,2026,2027,2028,2030],{},"Because the shared file belongs to no module, importing it crosses no boundary, so\n",[528,2029,1949],{}," never fires. This keeps a feature module from reaching into another's\ninternals while still letting a cross-module event flow through the domain-event tier.",[2006,2032,2034],{"id":2033},"escalating-a-warning-to-an-error","Escalating a warning to an error",[499,2036,2037,2038,2040,2041,2044,2045,2047],{},"To enforce a boundary in CI, list its code in ",[528,2039,1890],{}," — in the ",[528,2042,2043],{},"heximon()"," plugin options or\n",[528,2046,1854],{}," — and the build fails on it:",[521,2049,2051],{"className":1282,"code":2050,"language":1284,"meta":519,"style":519},"\u002F\u002F heximon.config.ts\nimport { DiagnosticCode, defineHeximonConfig } from \"@heximon\u002Fbuild\";\nimport { HttpPlugin } from \"@heximon\u002Fhttp\u002Fcompiler\";\n\nexport default defineHeximonConfig({\n  plugins: [new HttpPlugin()],\n  strictDiagnostics: [DiagnosticCode.CrossModuleInternalImport, DiagnosticCode.OrphanConcept],\n});\n",[528,2052,2053,2058,2088,2110,2116,2130,2150,2177],{"__ignoreMap":519},[1288,2054,2055],{"class":1290,"line":1291},[1288,2056,2057],{"class":1353},"\u002F\u002F heximon.config.ts\n",[1288,2059,2060,2063,2065,2068,2070,2073,2076,2079,2081,2084,2086],{"class":1290,"line":1317},[1288,2061,2062],{"class":1294},"import",[1288,2064,1538],{"class":1313},[1288,2066,2067],{"class":1365}," DiagnosticCode",[1288,2069,1535],{"class":1313},[1288,2071,2072],{"class":1365}," defineHeximonConfig",[1288,2074,2075],{"class":1313}," }",[1288,2077,2078],{"class":1294}," from",[1288,2080,1326],{"class":1313},[1288,2082,2083],{"class":1329},"@heximon\u002Fbuild",[1288,2085,1333],{"class":1313},[1288,2087,1336],{"class":1313},[1288,2089,2090,2092,2094,2097,2099,2101,2103,2106,2108],{"class":1290,"line":1339},[1288,2091,2062],{"class":1294},[1288,2093,1538],{"class":1313},[1288,2095,2096],{"class":1365}," HttpPlugin",[1288,2098,2075],{"class":1313},[1288,2100,2078],{"class":1294},[1288,2102,1326],{"class":1313},[1288,2104,2105],{"class":1329},"@heximon\u002Fhttp\u002Fcompiler",[1288,2107,1333],{"class":1313},[1288,2109,1336],{"class":1313},[1288,2111,2112],{"class":1290,"line":1357},[1288,2113,2115],{"emptyLinePlaceholder":2114},true,"\n",[1288,2117,2118,2120,2123,2125,2127],{"class":1290,"line":1377},[1288,2119,1295],{"class":1294},[1288,2121,2122],{"class":1294}," default",[1288,2124,2072],{"class":1309},[1288,2126,1515],{"class":1365},[1288,2128,2129],{"class":1313},"{\n",[1288,2131,2133,2136,2138,2140,2143,2145,2148],{"class":1290,"line":2132},6,[1288,2134,2135],{"class":1320},"  plugins",[1288,2137,1204],{"class":1313},[1288,2139,1366],{"class":1365},[1288,2141,2142],{"class":1313},"new",[1288,2144,2096],{"class":1309},[1288,2146,2147],{"class":1365},"()]",[1288,2149,833],{"class":1313},[1288,2151,2153,2156,2158,2161,2163,2166,2168,2170,2172,2175],{"class":1290,"line":2152},7,[1288,2154,2155],{"class":1320},"  strictDiagnostics",[1288,2157,1204],{"class":1313},[1288,2159,2160],{"class":1365}," [DiagnosticCode",[1288,2162,889],{"class":1313},[1288,2164,2165],{"class":1365},"CrossModuleInternalImport",[1288,2167,1535],{"class":1313},[1288,2169,2067],{"class":1365},[1288,2171,889],{"class":1313},[1288,2173,2174],{"class":1365},"OrphanConcept]",[1288,2176,833],{"class":1313},[1288,2178,2180,2182,2185],{"class":1290,"line":2179},8,[1288,2181,608],{"class":1313},[1288,2183,2184],{"class":1365},")",[1288,2186,1336],{"class":1313},[499,2188,2189,2190,2193,2194,2197,2198,2201,2202,2205,2206,2208],{},"The silence-direction mirror is ",[528,2191,2192],{},"suppressDiagnostics",": list a code there to demote it ",[540,2195,2196],{},"below"," a warning, for\na codebase that does the flagged thing deliberately. Both fields live in the same three places — the inline\n",[528,2199,2200],{},"heximon({ … })"," argument, the ",[528,2203,2204],{},"heximon"," Vite config key, and ",[528,2207,1854],{}," — which carry the\nidentical option set (a higher layer overrides a lower one per field).",[503,2210,2212],{"id":2211},"see-also","See also",[534,2214,2215,2220,2233,2238],{},[537,2216,2217,2219],{},[810,2218,121],{"href":122}," — the runtime counterpart: what your app writes once it's\nrunning.",[537,2221,2222,2225,2226,1447,2228,1447,2230,2232],{},[810,2223,2224],{"href":54},"Providers & DI"," — why a token has no provider, and the ",[528,2227,1073],{},[528,2229,800],{},[528,2231,1070],{}," that fix it.",[537,2234,2235,2237],{},[810,2236,389],{"href":390}," — writing a plugin that emits its own span-anchored, help-bearing diagnostics.",[537,2239,2240,2242],{},[810,2241,41],{"href":42}," — the most common build errors and their fixes, by symptom.",[2244,2245,2246],"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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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 .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}",{"title":519,"searchDepth":1317,"depth":1317,"links":2248},[2249,2250,2251,2252,2253,2254,2255,2256,2257,2258,2259,2260,2261,2262,2266],{"id":505,"depth":1317,"text":506},{"id":597,"depth":1317,"text":598},{"id":645,"depth":1317,"text":646},{"id":706,"depth":1317,"text":707},{"id":757,"depth":1317,"text":758},{"id":817,"depth":1317,"text":818},{"id":859,"depth":1317,"text":860},{"id":934,"depth":1317,"text":935},{"id":1111,"depth":1317,"text":1112},{"id":1246,"depth":1317,"text":1247},{"id":1440,"depth":1317,"text":1441},{"id":1605,"depth":1317,"text":1606},{"id":1836,"depth":1317,"text":1837},{"id":1879,"depth":1317,"text":1880,"children":2263},[2264,2265],{"id":2008,"depth":1339,"text":2009},{"id":2033,"depth":1339,"text":2034},{"id":2211,"depth":1317,"text":2212},"How a Heximon build error reads — the severity header, the area\u002Fslug code, the source codeframe, the help trailer, the dev-server overlay, and the compact CI form.","md",null,{},{"icon":357},{"title":394,"description":2267},"UD8qwUDXwzohi8oV5iItR1Rq8wSRopRY_Q0wAFqpu0k",[2275,2277],{"title":389,"path":390,"stem":391,"description":2276,"icon":392,"children":-1},"CompilerPlugin, discoveryKeys, DiscoveryKey, MatchedClass, analyze, contributeGraph, validate, codegen, PluginResults, ResultChannel, ClassIdentity, NameReserver, Manifest, ManifestAssembler.",{"title":398,"path":399,"stem":400,"description":2278,"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.",1783300761903]