[{"data":1,"prerenderedAt":1474},["ShallowReactive",2],{"navigation_docs":3,"-docs-deploy-mixed-runtime-split":493,"-docs-deploy-mixed-runtime-split-surround":1469},[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":342,"body":495,"description":1462,"extension":1463,"links":1464,"meta":1465,"navigation":1466,"path":343,"seo":1467,"stem":344,"__hash__":1468},"docs\u002Fdocs\u002F06.deploy\u002F10.mixed-runtime-split.md",{"type":496,"value":497,"toc":1453},"minimark",[498,520,544,549,577,826,836,840,850,988,1002,1037,1045,1051,1094,1102,1233,1245,1249,1266,1320,1329,1333,1351,1354,1378,1382,1449],[499,500,501,502,506,507,510,511,514,515,519],"p",{},"A single Heximon app can deploy its controllers across ",[503,504,505],"strong",{},"two runtimes in one deployment",": a read-heavy endpoint\non a fast, global ",[503,508,509],{},"edge"," function and a write endpoint on a ",[503,512,513],{},"node"," function where the database lives. You mark\none controller ",[516,517,518],"code",{},"runtime: \"edge\"","; the compiler does the rest.",[499,521,522,523,526,527,530,531,535,536,539,540,543],{},"This is something a route-rules-on-a-shared-bundle model ",[503,524,525],{},"cannot"," do. Nitro's ",[516,528,529],{},"vercel.functionRules"," split\nper-route function ",[532,533,534],"em",{},"config"," (memory, regions) but symlink one shared bundle — every route has the same dependency\nclosure by construction, so the runtime can't differ. Heximon's compile-time DI graph lets each tier carry its\n",[503,537,538],{},"own"," closure, and — the real payoff — ",[503,541,542],{},"proves the edge tier's closure is edge-safe before you deploy",".",[545,546,548],"h2",{"id":547},"opt-in-on-the-controller","Opt in on the controller",[499,550,551,554,555,558,559,562,563,562,566,569,570,572,573,576],{},[516,552,553],{},"runtime"," is a field on the controller config — the same type argument that already carries ",[516,556,557],{},"prefix"," \u002F\n",[516,560,561],{},"middlewares"," \u002F ",[516,564,565],{},"errorFilters",[516,567,568],{},"scopes",". The default is ",[516,571,513],{},"; one field opts a controller, ",[503,574,575],{},"and its whole\ntransitive dependency closure",", onto the edge tier:",[578,579,585],"pre",{"className":580,"code":581,"filename":582,"language":583,"meta":584,"style":584},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import type { Controller, Get } from \"@heximon\u002Fhttp\";\nimport { IdService } from \"..\u002Fshared\u002Fid-service\";\n\nexport class FeedController implements Controller\u003C{ prefix: \"\u002Ffeed\"; runtime: \"edge\" }> {\n  public constructor(private readonly ids: IdService) {}\n\n  public async list(_action: Get\u003C\"\u002F\">): Promise\u003Creadonly FeedItem[]> {\n    \u002F\u002F … edge-safe, read-only work …\n  }\n}\n","feed.controller.ts","ts","",[516,586,587,632,655,662,718,750,755,807,814,820],{"__ignoreMap":584},[588,589,592,596,599,603,607,610,613,616,619,622,626,629],"span",{"class":590,"line":591},"line",1,[588,593,595],{"class":594},"s7zQu","import",[588,597,598],{"class":594}," type",[588,600,602],{"class":601},"sMK4o"," {",[588,604,606],{"class":605},"sTEyZ"," Controller",[588,608,609],{"class":601},",",[588,611,612],{"class":605}," Get",[588,614,615],{"class":601}," }",[588,617,618],{"class":594}," from",[588,620,621],{"class":601}," \"",[588,623,625],{"class":624},"sfazB","@heximon\u002Fhttp",[588,627,628],{"class":601},"\"",[588,630,631],{"class":601},";\n",[588,633,635,637,639,642,644,646,648,651,653],{"class":590,"line":634},2,[588,636,595],{"class":594},[588,638,602],{"class":601},[588,640,641],{"class":605}," IdService",[588,643,615],{"class":601},[588,645,618],{"class":594},[588,647,621],{"class":601},[588,649,650],{"class":624},"..\u002Fshared\u002Fid-service",[588,652,628],{"class":601},[588,654,631],{"class":601},[588,656,658],{"class":590,"line":657},3,[588,659,661],{"emptyLinePlaceholder":660},true,"\n",[588,663,665,668,672,676,679,681,684,688,691,693,696,698,701,704,706,708,710,712,715],{"class":590,"line":664},4,[588,666,667],{"class":594},"export",[588,669,671],{"class":670},"spNyl"," class",[588,673,675],{"class":674},"sBMFI"," FeedController",[588,677,678],{"class":670}," implements",[588,680,606],{"class":674},[588,682,683],{"class":601},"\u003C{",[588,685,687],{"class":686},"swJcz"," prefix",[588,689,690],{"class":601},":",[588,692,621],{"class":601},[588,694,695],{"class":624},"\u002Ffeed",[588,697,628],{"class":601},[588,699,700],{"class":601},";",[588,702,703],{"class":686}," runtime",[588,705,690],{"class":601},[588,707,621],{"class":601},[588,709,509],{"class":624},[588,711,628],{"class":601},[588,713,714],{"class":601}," }>",[588,716,717],{"class":601}," {\n",[588,719,721,724,727,730,733,736,740,742,744,747],{"class":590,"line":720},5,[588,722,723],{"class":670},"  public",[588,725,726],{"class":670}," constructor",[588,728,729],{"class":601},"(",[588,731,732],{"class":670},"private",[588,734,735],{"class":670}," readonly",[588,737,739],{"class":738},"sHdIc"," ids",[588,741,690],{"class":601},[588,743,641],{"class":674},[588,745,746],{"class":601},")",[588,748,749],{"class":601}," {}\n",[588,751,753],{"class":590,"line":752},6,[588,754,661],{"emptyLinePlaceholder":660},[588,756,758,760,763,766,768,771,773,775,778,780,783,785,788,791,793,796,799,802,805],{"class":590,"line":757},7,[588,759,723],{"class":670},[588,761,762],{"class":670}," async",[588,764,765],{"class":686}," list",[588,767,729],{"class":601},[588,769,770],{"class":738},"_action",[588,772,690],{"class":601},[588,774,612],{"class":674},[588,776,777],{"class":601},"\u003C",[588,779,628],{"class":601},[588,781,782],{"class":624},"\u002F",[588,784,628],{"class":601},[588,786,787],{"class":601},">):",[588,789,790],{"class":674}," Promise",[588,792,777],{"class":601},[588,794,795],{"class":670},"readonly",[588,797,798],{"class":674}," FeedItem",[588,800,801],{"class":605},"[]",[588,803,804],{"class":601},">",[588,806,717],{"class":601},[588,808,810],{"class":590,"line":809},8,[588,811,813],{"class":812},"sHwdD","    \u002F\u002F … edge-safe, read-only work …\n",[588,815,817],{"class":590,"line":816},9,[588,818,819],{"class":601},"  }\n",[588,821,823],{"class":590,"line":822},10,[588,824,825],{"class":601},"}\n",[499,827,828,829,831,832,835],{},"A controller with no ",[516,830,553],{}," (or ",[516,833,834],{},"runtime: \"node\"",") stays on the node tier — the existing behavior, unchanged.",[545,837,839],{"id":838},"a-hybrid-deploy-target","A hybrid deploy target",[499,841,842,843,846,847,690],{},"The split lights up only on a ",[503,844,845],{},"hybrid"," target — one that owns both a node and an edge tier in one deployment.\nSet it on ",[516,848,849],{},"heximon.platform",[578,851,854],{"className":580,"code":852,"filename":853,"language":583,"meta":584,"style":584},"import { defineHeximonConfig } from \"@heximon\u002Fbuild\";\nimport { HttpPlugin } from \"@heximon\u002Fhttp\u002Fcompiler\";\nimport { VercelFunctionsStrategy } from \"@heximon\u002Fvercel\";\n\nexport default defineHeximonConfig({\n  platform: new VercelFunctionsStrategy(),\n  plugins: [new HttpPlugin()],\n});\n","heximon.config.ts",[516,855,856,878,900,922,926,941,959,979],{"__ignoreMap":584},[588,857,858,860,862,865,867,869,871,874,876],{"class":590,"line":591},[588,859,595],{"class":594},[588,861,602],{"class":601},[588,863,864],{"class":605}," defineHeximonConfig",[588,866,615],{"class":601},[588,868,618],{"class":594},[588,870,621],{"class":601},[588,872,873],{"class":624},"@heximon\u002Fbuild",[588,875,628],{"class":601},[588,877,631],{"class":601},[588,879,880,882,884,887,889,891,893,896,898],{"class":590,"line":634},[588,881,595],{"class":594},[588,883,602],{"class":601},[588,885,886],{"class":605}," HttpPlugin",[588,888,615],{"class":601},[588,890,618],{"class":594},[588,892,621],{"class":601},[588,894,895],{"class":624},"@heximon\u002Fhttp\u002Fcompiler",[588,897,628],{"class":601},[588,899,631],{"class":601},[588,901,902,904,906,909,911,913,915,918,920],{"class":590,"line":657},[588,903,595],{"class":594},[588,905,602],{"class":601},[588,907,908],{"class":605}," VercelFunctionsStrategy",[588,910,615],{"class":601},[588,912,618],{"class":594},[588,914,621],{"class":601},[588,916,917],{"class":624},"@heximon\u002Fvercel",[588,919,628],{"class":601},[588,921,631],{"class":601},[588,923,924],{"class":590,"line":664},[588,925,661],{"emptyLinePlaceholder":660},[588,927,928,930,933,936,938],{"class":590,"line":720},[588,929,667],{"class":594},[588,931,932],{"class":594}," default",[588,934,864],{"class":935},"s2Zo4",[588,937,729],{"class":605},[588,939,940],{"class":601},"{\n",[588,942,943,946,948,951,953,956],{"class":590,"line":752},[588,944,945],{"class":686},"  platform",[588,947,690],{"class":601},[588,949,950],{"class":601}," new",[588,952,908],{"class":935},[588,954,955],{"class":605},"()",[588,957,958],{"class":601},",\n",[588,960,961,964,966,969,972,974,977],{"class":590,"line":757},[588,962,963],{"class":686},"  plugins",[588,965,690],{"class":601},[588,967,968],{"class":605}," [",[588,970,971],{"class":601},"new",[588,973,886],{"class":935},[588,975,976],{"class":605},"()]",[588,978,958],{"class":601},[588,980,981,984,986],{"class":590,"line":809},[588,982,983],{"class":601},"}",[588,985,746],{"class":605},[588,987,631],{"class":601},[499,989,990,993,994,997,998,1001],{},[516,991,992],{},"VercelFunctionsStrategy"," (Vercel Functions + Edge Functions) and ",[516,995,996],{},"NetlifyFunctionsStrategy"," (Netlify Functions +\nEdge Functions) are the hybrid targets. The placement is a ",[503,999,1000],{},"build"," check against the resolved deploy target:",[1003,1004,1005,1015,1028],"ul",{},[1006,1007,1008,1009,1011,1012,1014],"li",{},"a ",[503,1010,845],{}," target honors both ",[516,1013,553],{}," values;",[1006,1016,1017,1018,1021,1022,1024,1025,1027],{},"an ",[503,1019,1020],{},"edge-only"," target (Cloudflare, Deno, Vercel Edge, Netlify Edge) already runs the whole app on edge —\n",[516,1023,518],{}," is redundant and allowed, ",[516,1026,834],{}," is a build error (no node tier);",[1006,1029,1008,1030,1033,1034,1036],{},[503,1031,1032],{},"node-only"," target (a plain Node server, AWS Lambda) has no edge tier — ",[516,1035,518],{}," is a build error.",[545,1038,1040,1041,1044],{"id":1039},"what-vp-build-emits","What ",[516,1042,1043],{},"vp build"," emits",[499,1046,1047,1048,1050],{},"On ",[516,1049,1043],{}," against a hybrid target, the compiler:",[1052,1053,1054,1067,1084],"ol",{},[1006,1055,1056,1059,1060,1062,1063,1066],{},[503,1057,1058],{},"Partitions the DI graph by runtime"," — it groups controllers by their ",[516,1061,553],{}," and computes each group's\ntransitive provider closure (the providers each tier's controllers reach through their constructor signatures).\nA service injected by controllers on ",[503,1064,1065],{},"both"," tiers lands in both closures, instantiated per function (the two\nfunctions share no memory — a stateful shared service needs an external store).",[1006,1068,1069,1072,1073,1076,1077,1080,1081,543],{},[503,1070,1071],{},"Bundles each tier separately."," Two bundler passes are mandatory: the edge function is self-contained\n(everything inlined, edge resolve conditions), the node function keeps its dependencies external (resolved from\n",[516,1074,1075],{},"node_modules","). A shared dependency can't be both, so the tiers bundle independently — ",[516,1078,1079],{},"dist\u002F\u003Coutput>.js","\n(node) + a self-contained ",[516,1082,1083],{},"dist\u002Fedge.js",[1006,1085,1086,1089,1090,1093],{},[503,1087,1088],{},"Emits one deploy tree, routed by prefix."," For Vercel, a single ",[516,1091,1092],{},".vercel\u002Foutput\u002F"," tree with both functions:",[578,1095,1100],{"className":1096,"code":1098,"language":1099},[1097],"language-text","dist\u002F.vercel\u002Foutput\u002F\n  config.json                          # routes: \u002Ffeed → \u002Fedge, catch-all → \u002F__server\n  functions\u002F__server.func\u002Findex.js     # the node bundle\n  functions\u002Fedge.func\u002Findex.js         # the self-contained edge bundle (.vc-config: { runtime: \"edge\" })\n","text",[516,1101,1098],{"__ignoreMap":584},[578,1103,1108],{"className":1104,"code":1105,"filename":1106,"language":1107,"meta":584,"style":584},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\"routes\": [\n  { \"handle\": \"filesystem\" },\n  { \"src\": \"\u002Ffeed(\u002F.*)?\", \"dest\": \"\u002Fedge\" },\n  { \"src\": \"\u002F(.*)\", \"dest\": \"\u002F__server\" }\n]\n","config.json","json",[516,1109,1110,1125,1149,1189,1228],{"__ignoreMap":584},[588,1111,1112,1114,1117,1119,1122],{"class":590,"line":591},[588,1113,628],{"class":601},[588,1115,1116],{"class":624},"routes",[588,1118,628],{"class":601},[588,1120,1121],{"class":605},": ",[588,1123,1124],{"class":601},"[\n",[588,1126,1127,1130,1132,1135,1137,1139,1141,1144,1146],{"class":590,"line":634},[588,1128,1129],{"class":601},"  {",[588,1131,621],{"class":601},[588,1133,1134],{"class":670},"handle",[588,1136,628],{"class":601},[588,1138,690],{"class":601},[588,1140,621],{"class":601},[588,1142,1143],{"class":624},"filesystem",[588,1145,628],{"class":601},[588,1147,1148],{"class":601}," },\n",[588,1150,1151,1153,1155,1158,1160,1162,1164,1167,1169,1171,1173,1176,1178,1180,1182,1185,1187],{"class":590,"line":657},[588,1152,1129],{"class":601},[588,1154,621],{"class":601},[588,1156,1157],{"class":670},"src",[588,1159,628],{"class":601},[588,1161,690],{"class":601},[588,1163,621],{"class":601},[588,1165,1166],{"class":624},"\u002Ffeed(\u002F.*)?",[588,1168,628],{"class":601},[588,1170,609],{"class":601},[588,1172,621],{"class":601},[588,1174,1175],{"class":670},"dest",[588,1177,628],{"class":601},[588,1179,690],{"class":601},[588,1181,621],{"class":601},[588,1183,1184],{"class":624},"\u002Fedge",[588,1186,628],{"class":601},[588,1188,1148],{"class":601},[588,1190,1191,1193,1195,1197,1199,1201,1203,1206,1208,1210,1212,1214,1216,1218,1220,1223,1225],{"class":590,"line":664},[588,1192,1129],{"class":601},[588,1194,621],{"class":601},[588,1196,1157],{"class":670},[588,1198,628],{"class":601},[588,1200,690],{"class":601},[588,1202,621],{"class":601},[588,1204,1205],{"class":624},"\u002F(.*)",[588,1207,628],{"class":601},[588,1209,609],{"class":601},[588,1211,621],{"class":601},[588,1213,1175],{"class":670},[588,1215,628],{"class":601},[588,1217,690],{"class":601},[588,1219,621],{"class":601},[588,1221,1222],{"class":624},"\u002F__server",[588,1224,628],{"class":601},[588,1226,1227],{"class":601}," }\n",[588,1229,1230],{"class":590,"line":720},[588,1231,1232],{"class":601},"]\n",[499,1234,1235,1237,1238,1241,1242,543],{},[516,1236,695],{}," routes to the edge function; everything else falls through to the node catch-all. One\n",[516,1239,1240],{},"vercel deploy --prebuilt",". Netlify is the same idea with a different shape: the node Functions catch-all plus a\nprefix-routed Netlify Edge Function in ",[516,1243,1244],{},".netlify\u002Fedge-functions\u002F",[545,1246,1248],{"id":1247},"the-guarantee-provably-edge-safe-before-deploy","The guarantee: provably edge-safe before deploy",[499,1250,1251,1252,1261,1262,1265],{},"The edge tier bundles under an ",[1253,1254,1258],"a",{"href":1255,"rel":1256},"https:\u002F\u002Fgithub.com\u002Funjs\u002Funenv",[1257],"nofollow",[516,1259,1260],{},"unenv","-backed resolve policy (the unjs ",[516,1263,1264],{},"node:*","\ncompatibility layer wrangler uses). Two effects:",[1003,1267,1268,1294],{},[1006,1269,1270,1277,1278,1281,1282,1285,1286,1289,1290,1293],{},[503,1271,1272,1273,1276],{},"A polyfillable ",[516,1274,1275],{},"node:"," builtin works on edge."," ",[516,1279,1280],{},"node:crypto"," → ",[516,1283,1284],{},"globalThis.crypto",", ",[516,1287,1288],{},"node:buffer",", parts of\n",[516,1291,1292],{},"node:stream"," — the bundle inlines the polyfill so the import bundles and runs, instead of being left external\nand breaking at runtime. More controllers can legitimately go edge.",[1006,1295,1296,1277,1299,1285,1302,1305,1306,1309,1310,1319],{},[503,1297,1298],{},"A node-only builtin in an edge closure fails the build.",[516,1300,1301],{},"node:fs",[516,1303,1304],{},"node:net",", a socket-level driver — the\nedge runtime can't run it, so an edge-closure import of one is a ",[503,1307,1308],{},"hard build error"," that names the offending\nmodule and the edge tier, attributed to the importing file. ",[532,1311,1312,1313,1315,1316,1318],{},"\"the ",[516,1314,509],{}," tier imports ",[516,1317,1301],{},", which this\nedge runtime cannot run (no working polyfill)\""," is a compile diagnostic, not a 3am crash.",[499,1321,1322,1323,1325,1326,1328],{},"(Netlify Edge runs on Deno, whose broad native ",[516,1324,1275],{}," compatibility means its edge tier keeps the simpler\n",[516,1327,1275],{},"-external policy.)",[545,1330,1332],{"id":1331},"dev-test-and-the-constraints","Dev, test, and the constraints",[499,1334,1335,1336,1339,1340,1343,1344,1347,1348,1350],{},"There is no in-process edge emulator, so ",[516,1337,1338],{},"vp dev"," and ",[516,1341,1342],{},"createTestApp"," run the ",[503,1345,1346],{},"whole"," app on Node — the edge\npartition is a strict subset of what Node runs, so it is faithful. Author and test exactly as for any other app;\nthe split is a ",[516,1349,1043],{}," concern.",[499,1352,1353],{},"Two v1 constraints:",[1003,1355,1356,1362],{},[1006,1357,1358,1361],{},[503,1359,1360],{},"Edge controllers are authored inline",", not contract-mode — a contract-mode controller carries its prefix in\nthe contract value (which the compiler does not read), so it has no static prefix to route on.",[1006,1363,1364,1370,1371,1374,1375,1377],{},[503,1365,1366,1367],{},"Cross-runtime calls use ",[516,1368,1369],{},"ClientTransport.fetch(baseUrl)",", not the in-process ",[516,1372,1373],{},"InternalClient",". On a split,\nthe edge function's router carries only the edge tier's routes, so an in-process call to a node route can't\nreach it — the compiler rejects an edge closure that reaches the ",[516,1376,1373],{}," seam, and steers you to an\nexplicit fetch (a real HTTP request the platform routes to the other function).",[545,1379,1381],{"id":1380},"see-also","See also",[1003,1383,1384,1393,1414,1437],{},[1006,1385,1386,1389,1390,1392],{},[1253,1387,1388],{"href":299},"Deploy overview"," — ",[516,1391,1043],{}," and the deploy strategies this split builds on.",[1006,1394,1395,1397,1398,1401,1402,1285,1404,1285,1406,958,1408,1410,1411,1413],{},[1253,1396,57],{"href":58}," — the base ",[516,1399,1400],{},"Controller"," config (",[516,1403,557],{},[516,1405,561],{},[516,1407,565],{},[516,1409,568],{},") that ",[516,1412,553],{}," sits alongside.",[1006,1415,1416,1423,1424,1426,1427,1430,1431,1433,1434,1436],{},[1253,1417,1420],{"href":1418,"rel":1419},"https:\u002F\u002Fgithub.com\u002Fheximon\u002Fheximon\u002Ftree\u002Fmain\u002Fexamples\u002Fgap\u002Fedge-platforms\u002Fmixed-runtime-split",[1257],[503,1421,1422],{},"Mixed-runtime split (Vercel)","\n— the ",[516,1425,695],{}," (edge) + ",[516,1428,1429],{},"\u002Fposts"," (node) split end to end, with the ",[516,1432,1240],{}," output tree and a\ntest proving the polyfillable-",[516,1435,1280],{},"-works \u002F node-only-builtin-fails-the-build guarantee.",[1006,1438,1439,1446,1447,543],{},[1253,1440,1443],{"href":1441,"rel":1442},"https:\u002F\u002Fgithub.com\u002Fheximon\u002Fheximon\u002Ftree\u002Fmain\u002Fexamples\u002Fgap\u002Fedge-platforms\u002Fnetlify-mixed-runtime",[1257],[503,1444,1445],{},"Mixed-runtime split (Netlify)","\n— the same split on ",[516,1448,996],{},[1450,1451,1452],"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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .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 .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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}",{"title":584,"searchDepth":634,"depth":634,"links":1454},[1455,1456,1457,1459,1460,1461],{"id":547,"depth":634,"text":548},{"id":838,"depth":634,"text":839},{"id":1039,"depth":634,"text":1458},"What vp build emits",{"id":1247,"depth":634,"text":1248},{"id":1331,"depth":634,"text":1332},{"id":1380,"depth":634,"text":1381},"Place one app's controllers across edge and node runtimes in a single deploy — the compiler partitions the DI graph by runtime, proves each edge tier is edge-safe before deploy, and emits separate functions routed by prefix. Vercel Functions and Netlify Functions.","md",null,{},{"icon":236},{"title":342,"description":1462},"vBXeHMM8iL_Jyk5BsX5SPuvn3NAPkvO6d3YBRNsEs2E",[1470,1472],{"title":337,"path":338,"stem":339,"description":1471,"icon":340,"children":-1},"Run a Heximon API inside a Nuxt 5 app on one Nitro server, with SSR cookie forwarding, a typed Contract client with TanStack Vue Query bindings, heximon.config.ts, HttpPlugin, and a server\u002F controller.",{"title":346,"path":347,"stem":348,"description":1473,"icon":349,"children":-1},"Where a Heximon app's fetch server lives — the heximon() Vite dev server, standalone Node\u002FBun\u002FDeno, Nitro, Nuxt, unplugin for other bundlers, library mode, and the mixed-runtime split.",1783300761902]