[{"data":1,"prerenderedAt":1879},["ShallowReactive",2],{"navigation_docs":3,"-docs-deploy-deno-deploy":493,"-docs-deploy-deno-deploy-surround":1874},[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":327,"body":495,"description":1867,"extension":1868,"links":1869,"meta":1870,"navigation":1871,"path":328,"seo":1872,"stem":329,"__hash__":1873},"docs\u002Fdocs\u002F06.deploy\u002F07.deno-deploy.md",{"type":496,"value":497,"toc":1854},"minimark",[498,511,516,686,700,708,752,771,778,1207,1226,1230,1247,1435,1564,1590,1597,1601,1604,1687,1700,1707,1711,1732,1736,1747,1751,1776,1811,1815,1850],[499,500,501,502,506,507,510],"p",{},"Deno Deploy is the simplest artifact of any Heximon platform: one self-contained script, no config file, no\ndeploy tree — just ",[503,504,505],"code",{},"dist\u002Fdeno-worker.js"," and a ",[503,508,509],{},"deployctl deploy"," call.",[512,513,515],"h2",{"id":514},"configure-the-strategy","Configure the strategy",[517,518,524],"pre",{"className":519,"code":520,"filename":521,"language":522,"meta":523,"style":523},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineHeximonConfig } from \"@heximon\u002Fbuild\";\nimport { DenoDeployStrategy } from \"@heximon\u002Fdeno\";\nimport { HttpPlugin } from \"@heximon\u002Fhttp\u002Fcompiler\";\n\nexport default defineHeximonConfig({\n  platform: new DenoDeployStrategy(),\n  plugins: [new HttpPlugin()],\n});\n","heximon.config.ts","ts","",[503,525,526,562,585,608,615,633,654,675],{"__ignoreMap":523},[527,528,531,535,539,543,546,549,552,556,559],"span",{"class":529,"line":530},"line",1,[527,532,534],{"class":533},"s7zQu","import",[527,536,538],{"class":537},"sMK4o"," {",[527,540,542],{"class":541},"sTEyZ"," defineHeximonConfig",[527,544,545],{"class":537}," }",[527,547,548],{"class":533}," from",[527,550,551],{"class":537}," \"",[527,553,555],{"class":554},"sfazB","@heximon\u002Fbuild",[527,557,558],{"class":537},"\"",[527,560,561],{"class":537},";\n",[527,563,565,567,569,572,574,576,578,581,583],{"class":529,"line":564},2,[527,566,534],{"class":533},[527,568,538],{"class":537},[527,570,571],{"class":541}," DenoDeployStrategy",[527,573,545],{"class":537},[527,575,548],{"class":533},[527,577,551],{"class":537},[527,579,580],{"class":554},"@heximon\u002Fdeno",[527,582,558],{"class":537},[527,584,561],{"class":537},[527,586,588,590,592,595,597,599,601,604,606],{"class":529,"line":587},3,[527,589,534],{"class":533},[527,591,538],{"class":537},[527,593,594],{"class":541}," HttpPlugin",[527,596,545],{"class":537},[527,598,548],{"class":533},[527,600,551],{"class":537},[527,602,603],{"class":554},"@heximon\u002Fhttp\u002Fcompiler",[527,605,558],{"class":537},[527,607,561],{"class":537},[527,609,611],{"class":529,"line":610},4,[527,612,614],{"emptyLinePlaceholder":613},true,"\n",[527,616,618,621,624,627,630],{"class":529,"line":617},5,[527,619,620],{"class":533},"export",[527,622,623],{"class":533}," default",[527,625,542],{"class":626},"s2Zo4",[527,628,629],{"class":541},"(",[527,631,632],{"class":537},"{\n",[527,634,636,640,643,646,648,651],{"class":529,"line":635},6,[527,637,639],{"class":638},"swJcz","  platform",[527,641,642],{"class":537},":",[527,644,645],{"class":537}," new",[527,647,571],{"class":626},[527,649,650],{"class":541},"()",[527,652,653],{"class":537},",\n",[527,655,657,660,662,665,668,670,673],{"class":529,"line":656},7,[527,658,659],{"class":638},"  plugins",[527,661,642],{"class":537},[527,663,664],{"class":541}," [",[527,666,667],{"class":537},"new",[527,669,594],{"class":626},[527,671,672],{"class":541},"()]",[527,674,653],{"class":537},[527,676,678,681,684],{"class":529,"line":677},8,[527,679,680],{"class":537},"}",[527,682,683],{"class":541},")",[527,685,561],{"class":537},[499,687,688,691,692,695,696,699],{},[503,689,690],{},"DenoDeployStrategy"," is an ",[503,693,694],{},"edge","-class strategy, platform name ",[503,697,698],{},"\"deno\"",".",[512,701,703,704,707],{"id":702},"what-vp-build-emits","What ",[503,705,706],{},"vp build"," emits",[517,709,714],{"className":710,"code":711,"filename":712,"language":713,"meta":523,"style":523},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","vp build                                              # → dist\u002Fdeno-worker.js\ndeployctl deploy --project=\u003Cyour-project> dist\u002Fdeno-worker.js\n","terminal","bash",[503,715,716,729],{"__ignoreMap":523},[527,717,718,722,725],{"class":529,"line":530},[527,719,721],{"class":720},"sBMFI","vp",[527,723,724],{"class":554}," build",[527,726,728],{"class":727},"sHwdD","                                              # → dist\u002Fdeno-worker.js\n",[527,730,731,734,737,740,743,746,749],{"class":529,"line":564},[527,732,733],{"class":720},"deployctl",[527,735,736],{"class":554}," deploy",[527,738,739],{"class":554}," --project=",[527,741,742],{"class":537},"\u003C",[527,744,745],{"class":554},"your-project",[527,747,748],{"class":537},">",[527,750,751],{"class":554}," dist\u002Fdeno-worker.js\n",[499,753,754,755,758,759,762,763,766,767,770],{},"The strategy resolves ",[503,756,757],{},"{ noExternal: true }"," — every dependency (",[503,760,761],{},"@heximon\u002F*",", npm deps, your app source) is\nbundled into the one file, because Deno Deploy doesn't load ",[503,764,765],{},"node_modules",". Only ",[503,768,769],{},"node:*","-prefixed builtins\nstay external, resolved against Deno's own Node-compat layer.",[512,772,774,775],{"id":773},"the-generated-deno-entryjs","The generated ",[503,776,777],{},"deno-entry.js",[517,779,784],{"className":780,"code":781,"filename":782,"language":783,"meta":523,"style":523},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createServer, H3FetchClient } from \"@heximon\u002Fhttp\";\nimport { routes } from \".\u002Frouter.js\";\nimport { Platform } from \"@heximon\u002Fruntime\";\nimport { createApp } from \".\u002Fapps\u002Fmain.wiring.js\";\n\nlet serverPromise;\n\nasync function boot() {\n  Platform.capture(Deno.env.toObject());\n  let server;\n  const internalClient = new H3FetchClient((input, init) =>\n    server.fetch(new Request(new URL(input, \"http:\u002F\u002Flocalhost\"), init)));\n  const app = await createApp({ InternalClient: internalClient });\n  server = createServer(routes, app);\n  return server;\n}\n\nexport default {\n  async fetch(request) {\n    serverPromise ??= boot();\n    const server = await serverPromise;\n    return server.fetch(request);\n  },\n};\n","deno-entry.js (generated, simplified)","js",[503,785,786,814,836,858,880,884,895,899,915,946,957,991,1040,1073,1096,1106,1112,1117,1126,1144,1159,1175,1195,1201],{"__ignoreMap":523},[527,787,788,790,792,795,798,801,803,805,807,810,812],{"class":529,"line":530},[527,789,534],{"class":533},[527,791,538],{"class":537},[527,793,794],{"class":541}," createServer",[527,796,797],{"class":537},",",[527,799,800],{"class":541}," H3FetchClient",[527,802,545],{"class":537},[527,804,548],{"class":533},[527,806,551],{"class":537},[527,808,809],{"class":554},"@heximon\u002Fhttp",[527,811,558],{"class":537},[527,813,561],{"class":537},[527,815,816,818,820,823,825,827,829,832,834],{"class":529,"line":564},[527,817,534],{"class":533},[527,819,538],{"class":537},[527,821,822],{"class":541}," routes",[527,824,545],{"class":537},[527,826,548],{"class":533},[527,828,551],{"class":537},[527,830,831],{"class":554},".\u002Frouter.js",[527,833,558],{"class":537},[527,835,561],{"class":537},[527,837,838,840,842,845,847,849,851,854,856],{"class":529,"line":587},[527,839,534],{"class":533},[527,841,538],{"class":537},[527,843,844],{"class":541}," Platform",[527,846,545],{"class":537},[527,848,548],{"class":533},[527,850,551],{"class":537},[527,852,853],{"class":554},"@heximon\u002Fruntime",[527,855,558],{"class":537},[527,857,561],{"class":537},[527,859,860,862,864,867,869,871,873,876,878],{"class":529,"line":610},[527,861,534],{"class":533},[527,863,538],{"class":537},[527,865,866],{"class":541}," createApp",[527,868,545],{"class":537},[527,870,548],{"class":533},[527,872,551],{"class":537},[527,874,875],{"class":554},".\u002Fapps\u002Fmain.wiring.js",[527,877,558],{"class":537},[527,879,561],{"class":537},[527,881,882],{"class":529,"line":617},[527,883,614],{"emptyLinePlaceholder":613},[527,885,886,890,893],{"class":529,"line":635},[527,887,889],{"class":888},"spNyl","let",[527,891,892],{"class":541}," serverPromise",[527,894,561],{"class":537},[527,896,897],{"class":529,"line":656},[527,898,614],{"emptyLinePlaceholder":613},[527,900,901,904,907,910,912],{"class":529,"line":677},[527,902,903],{"class":888},"async",[527,905,906],{"class":888}," function",[527,908,909],{"class":626}," boot",[527,911,650],{"class":537},[527,913,914],{"class":537}," {\n",[527,916,918,921,923,926,928,931,933,936,938,941,944],{"class":529,"line":917},9,[527,919,920],{"class":541},"  Platform",[527,922,699],{"class":537},[527,924,925],{"class":626},"capture",[527,927,629],{"class":638},[527,929,930],{"class":541},"Deno",[527,932,699],{"class":537},[527,934,935],{"class":541},"env",[527,937,699],{"class":537},[527,939,940],{"class":626},"toObject",[527,942,943],{"class":638},"())",[527,945,561],{"class":537},[527,947,949,952,955],{"class":529,"line":948},10,[527,950,951],{"class":888},"  let",[527,953,954],{"class":541}," server",[527,956,561],{"class":537},[527,958,960,963,966,969,971,973,975,977,981,983,986,988],{"class":529,"line":959},11,[527,961,962],{"class":888},"  const",[527,964,965],{"class":541}," internalClient",[527,967,968],{"class":537}," =",[527,970,645],{"class":537},[527,972,800],{"class":626},[527,974,629],{"class":638},[527,976,629],{"class":537},[527,978,980],{"class":979},"sHdIc","input",[527,982,797],{"class":537},[527,984,985],{"class":979}," init",[527,987,683],{"class":537},[527,989,990],{"class":888}," =>\n",[527,992,994,997,999,1002,1004,1006,1009,1011,1013,1016,1018,1020,1022,1024,1027,1029,1031,1033,1035,1038],{"class":529,"line":993},12,[527,995,996],{"class":541},"    server",[527,998,699],{"class":537},[527,1000,1001],{"class":626},"fetch",[527,1003,629],{"class":638},[527,1005,667],{"class":537},[527,1007,1008],{"class":626}," Request",[527,1010,629],{"class":638},[527,1012,667],{"class":537},[527,1014,1015],{"class":626}," URL",[527,1017,629],{"class":638},[527,1019,980],{"class":541},[527,1021,797],{"class":537},[527,1023,551],{"class":537},[527,1025,1026],{"class":554},"http:\u002F\u002Flocalhost",[527,1028,558],{"class":537},[527,1030,683],{"class":638},[527,1032,797],{"class":537},[527,1034,985],{"class":541},[527,1036,1037],{"class":638},")))",[527,1039,561],{"class":537},[527,1041,1043,1045,1048,1050,1053,1055,1057,1060,1063,1065,1067,1069,1071],{"class":529,"line":1042},13,[527,1044,962],{"class":888},[527,1046,1047],{"class":541}," app",[527,1049,968],{"class":537},[527,1051,1052],{"class":533}," await",[527,1054,866],{"class":626},[527,1056,629],{"class":638},[527,1058,1059],{"class":537},"{",[527,1061,1062],{"class":638}," InternalClient",[527,1064,642],{"class":537},[527,1066,965],{"class":541},[527,1068,545],{"class":537},[527,1070,683],{"class":638},[527,1072,561],{"class":537},[527,1074,1076,1079,1081,1083,1085,1088,1090,1092,1094],{"class":529,"line":1075},14,[527,1077,1078],{"class":541},"  server",[527,1080,968],{"class":537},[527,1082,794],{"class":626},[527,1084,629],{"class":638},[527,1086,1087],{"class":541},"routes",[527,1089,797],{"class":537},[527,1091,1047],{"class":541},[527,1093,683],{"class":638},[527,1095,561],{"class":537},[527,1097,1099,1102,1104],{"class":529,"line":1098},15,[527,1100,1101],{"class":533},"  return",[527,1103,954],{"class":541},[527,1105,561],{"class":537},[527,1107,1109],{"class":529,"line":1108},16,[527,1110,1111],{"class":537},"}\n",[527,1113,1115],{"class":529,"line":1114},17,[527,1116,614],{"emptyLinePlaceholder":613},[527,1118,1120,1122,1124],{"class":529,"line":1119},18,[527,1121,620],{"class":533},[527,1123,623],{"class":533},[527,1125,914],{"class":537},[527,1127,1129,1132,1135,1137,1140,1142],{"class":529,"line":1128},19,[527,1130,1131],{"class":888},"  async",[527,1133,1134],{"class":638}," fetch",[527,1136,629],{"class":537},[527,1138,1139],{"class":979},"request",[527,1141,683],{"class":537},[527,1143,914],{"class":537},[527,1145,1147,1150,1153,1155,1157],{"class":529,"line":1146},20,[527,1148,1149],{"class":541},"    serverPromise",[527,1151,1152],{"class":537}," ??=",[527,1154,909],{"class":626},[527,1156,650],{"class":638},[527,1158,561],{"class":537},[527,1160,1162,1165,1167,1169,1171,1173],{"class":529,"line":1161},21,[527,1163,1164],{"class":888},"    const",[527,1166,954],{"class":541},[527,1168,968],{"class":537},[527,1170,1052],{"class":533},[527,1172,892],{"class":541},[527,1174,561],{"class":537},[527,1176,1178,1181,1183,1185,1187,1189,1191,1193],{"class":529,"line":1177},22,[527,1179,1180],{"class":533},"    return",[527,1182,954],{"class":541},[527,1184,699],{"class":537},[527,1186,1001],{"class":626},[527,1188,629],{"class":638},[527,1190,1139],{"class":541},[527,1192,683],{"class":638},[527,1194,561],{"class":537},[527,1196,1198],{"class":529,"line":1197},23,[527,1199,1200],{"class":537},"  },\n",[527,1202,1204],{"class":529,"line":1203},24,[527,1205,1206],{"class":537},"};\n",[499,1208,1209,1210,1212,1213,1216,1217,1221,1222,1225],{},"Two details worth noting: there's no ",[503,1211,935],{}," argument threaded per request the way Cloudflare Workers gets one —\nDeno env is ambient via ",[503,1214,1215],{},"Deno.env",", captured once at isolate boot — and the entry does ",[1218,1219,1220],"strong",{},"not"," export a\n",[503,1223,1224],{},"scheduled"," key. Crons register a different way entirely (next section).",[512,1227,1229],{"id":1228},"scheduled-work","Scheduled work",[499,1231,1232,1233,1236,1237,1240,1241,1244,1245,642],{},"List ",[503,1234,1235],{},"SchedulePlugin"," and ",[503,1238,1239],{},"DenoWorkerPlugin"," reads the discovered cron expressions, baking one top-level\n",[503,1242,1243],{},"Deno.cron(name, expr, cb)"," registration per handler directly into ",[503,1246,777],{},[517,1248,1250],{"className":519,"code":1249,"language":522,"meta":523,"style":523},"import type { ScheduledHandler } from \"@heximon\u002Fschedule\";\nimport { SessionRepository } from \".\u002Fsession-repository\";\n\nexport class NightlyCleanup implements ScheduledHandler\u003C\"0 3 * * *\", { name: \"Nightly cleanup\" }> {\n  public constructor(private readonly sessions: SessionRepository) {}\n\n  public handle(scheduledAt: Date): void {\n    this.sessions.purgeExpired(scheduledAt);\n  }\n}\n",[503,1251,1252,1277,1299,1303,1348,1376,1380,1405,1426,1431],{"__ignoreMap":523},[527,1253,1254,1256,1259,1261,1264,1266,1268,1270,1273,1275],{"class":529,"line":530},[527,1255,534],{"class":533},[527,1257,1258],{"class":533}," type",[527,1260,538],{"class":537},[527,1262,1263],{"class":541}," ScheduledHandler",[527,1265,545],{"class":537},[527,1267,548],{"class":533},[527,1269,551],{"class":537},[527,1271,1272],{"class":554},"@heximon\u002Fschedule",[527,1274,558],{"class":537},[527,1276,561],{"class":537},[527,1278,1279,1281,1283,1286,1288,1290,1292,1295,1297],{"class":529,"line":564},[527,1280,534],{"class":533},[527,1282,538],{"class":537},[527,1284,1285],{"class":541}," SessionRepository",[527,1287,545],{"class":537},[527,1289,548],{"class":533},[527,1291,551],{"class":537},[527,1293,1294],{"class":554},".\u002Fsession-repository",[527,1296,558],{"class":537},[527,1298,561],{"class":537},[527,1300,1301],{"class":529,"line":587},[527,1302,614],{"emptyLinePlaceholder":613},[527,1304,1305,1307,1310,1313,1316,1318,1320,1322,1325,1327,1329,1331,1334,1336,1338,1341,1343,1346],{"class":529,"line":610},[527,1306,620],{"class":533},[527,1308,1309],{"class":888}," class",[527,1311,1312],{"class":720}," NightlyCleanup",[527,1314,1315],{"class":888}," implements",[527,1317,1263],{"class":720},[527,1319,742],{"class":537},[527,1321,558],{"class":537},[527,1323,1324],{"class":554},"0 3 * * *",[527,1326,558],{"class":537},[527,1328,797],{"class":537},[527,1330,538],{"class":537},[527,1332,1333],{"class":638}," name",[527,1335,642],{"class":537},[527,1337,551],{"class":537},[527,1339,1340],{"class":554},"Nightly cleanup",[527,1342,558],{"class":537},[527,1344,1345],{"class":537}," }>",[527,1347,914],{"class":537},[527,1349,1350,1353,1356,1358,1361,1364,1367,1369,1371,1373],{"class":529,"line":617},[527,1351,1352],{"class":888},"  public",[527,1354,1355],{"class":888}," constructor",[527,1357,629],{"class":537},[527,1359,1360],{"class":888},"private",[527,1362,1363],{"class":888}," readonly",[527,1365,1366],{"class":979}," sessions",[527,1368,642],{"class":537},[527,1370,1285],{"class":720},[527,1372,683],{"class":537},[527,1374,1375],{"class":537}," {}\n",[527,1377,1378],{"class":529,"line":635},[527,1379,614],{"emptyLinePlaceholder":613},[527,1381,1382,1384,1387,1389,1392,1394,1397,1400,1403],{"class":529,"line":656},[527,1383,1352],{"class":888},[527,1385,1386],{"class":638}," handle",[527,1388,629],{"class":537},[527,1390,1391],{"class":979},"scheduledAt",[527,1393,642],{"class":537},[527,1395,1396],{"class":720}," Date",[527,1398,1399],{"class":537},"):",[527,1401,1402],{"class":720}," void",[527,1404,914],{"class":537},[527,1406,1407,1410,1413,1415,1418,1420,1422,1424],{"class":529,"line":677},[527,1408,1409],{"class":537},"    this.",[527,1411,1412],{"class":541},"sessions",[527,1414,699],{"class":537},[527,1416,1417],{"class":626},"purgeExpired",[527,1419,629],{"class":638},[527,1421,1391],{"class":541},[527,1423,683],{"class":638},[527,1425,561],{"class":537},[527,1427,1428],{"class":529,"line":917},[527,1429,1430],{"class":537},"  }\n",[527,1432,1433],{"class":529,"line":948},[527,1434,1111],{"class":537},[517,1436,1439],{"className":780,"code":1437,"filename":1438,"language":783,"meta":523,"style":523},"import { scheduled as heximonScheduled } from \".\u002Fschedule-cron.js\";\n\nDeno.cron(\"Nightly cleanup\", \"0 3 * * *\", async () => {\n  await heximonScheduled({ cron: \"0 3 * * *\", scheduledTime: Date.now() });\n});\n","deno-entry.js fragment (generated)",[503,1440,1441,1469,1473,1511,1556],{"__ignoreMap":523},[527,1442,1443,1445,1447,1450,1453,1456,1458,1460,1462,1465,1467],{"class":529,"line":530},[527,1444,534],{"class":533},[527,1446,538],{"class":537},[527,1448,1449],{"class":541}," scheduled",[527,1451,1452],{"class":533}," as",[527,1454,1455],{"class":541}," heximonScheduled",[527,1457,545],{"class":537},[527,1459,548],{"class":533},[527,1461,551],{"class":537},[527,1463,1464],{"class":554},".\u002Fschedule-cron.js",[527,1466,558],{"class":537},[527,1468,561],{"class":537},[527,1470,1471],{"class":529,"line":564},[527,1472,614],{"emptyLinePlaceholder":613},[527,1474,1475,1477,1479,1482,1484,1486,1488,1490,1492,1494,1496,1498,1500,1503,1506,1509],{"class":529,"line":587},[527,1476,930],{"class":541},[527,1478,699],{"class":537},[527,1480,1481],{"class":626},"cron",[527,1483,629],{"class":541},[527,1485,558],{"class":537},[527,1487,1340],{"class":554},[527,1489,558],{"class":537},[527,1491,797],{"class":537},[527,1493,551],{"class":537},[527,1495,1324],{"class":554},[527,1497,558],{"class":537},[527,1499,797],{"class":537},[527,1501,1502],{"class":888}," async",[527,1504,1505],{"class":537}," ()",[527,1507,1508],{"class":888}," =>",[527,1510,914],{"class":537},[527,1512,1513,1516,1518,1520,1522,1525,1527,1529,1531,1533,1535,1538,1540,1542,1544,1547,1550,1552,1554],{"class":529,"line":610},[527,1514,1515],{"class":533},"  await",[527,1517,1455],{"class":626},[527,1519,629],{"class":638},[527,1521,1059],{"class":537},[527,1523,1524],{"class":638}," cron",[527,1526,642],{"class":537},[527,1528,551],{"class":537},[527,1530,1324],{"class":554},[527,1532,558],{"class":537},[527,1534,797],{"class":537},[527,1536,1537],{"class":638}," scheduledTime",[527,1539,642],{"class":537},[527,1541,1396],{"class":541},[527,1543,699],{"class":537},[527,1545,1546],{"class":626},"now",[527,1548,1549],{"class":638},"() ",[527,1551,680],{"class":537},[527,1553,683],{"class":638},[527,1555,561],{"class":537},[527,1557,1558,1560,1562],{"class":529,"line":617},[527,1559,680],{"class":537},[527,1561,683],{"class":541},[527,1563,561],{"class":537},[499,1565,1566,1567,1570,1571,1574,1575,1578,1579,1581,1582,1585,1586,1589],{},"The ",[503,1568,1569],{},"DenoScheduleDriver"," adds no clock of its own — the platform fires the ",[503,1572,1573],{},"Deno.cron"," callback, which forwards\ninto the generated consumer and dispatches inside a fresh ",[503,1576,1577],{},"Context.run"," frame. ",[503,1580,1391],{}," is ",[503,1583,1584],{},"Date.now()","\nhere, since Deno's cron callback receives no native scheduled-time argument the way Cloudflare's\n",[503,1587,1588],{},"controller.scheduledTime"," does.",[499,1591,1592,1593,1596],{},"Deno awaits the async callback before the invocation exits, so deferred work\ninside the handler completes with no explicit ",[503,1594,1595],{},"waitUntil"," needed.",[512,1598,1600],{"id":1599},"platform-limits","Platform limits",[499,1602,1603],{},"Deno Deploy is a V8-isolate edge runtime with none of Cloudflare's stateful primitives:",[1605,1606,1607,1621],"table",{},[1608,1609,1610],"thead",{},[1611,1612,1613,1618],"tr",{},[1614,1615,1617],"th",{"align":1616},"left","Feature",[1614,1619,1620],{"align":1616},"Supported",[1622,1623,1624,1633,1646,1657,1667,1677],"tbody",{},[1611,1625,1626,1630],{},[1627,1628,1629],"td",{"align":1616},"HTTP controllers",[1627,1631,1632],{"align":1616},"Yes",[1611,1634,1635,1640],{},[1627,1636,1637,1638,683],{"align":1616},"Scheduled cron (",[503,1639,1272],{},[1627,1641,1642,1643],{"align":1616},"Yes — via ",[503,1644,1645],{},"Deno.cron()",[1611,1647,1648,1654],{},[1627,1649,1650,1651,683],{"align":1616},"Queues (",[503,1652,1653],{},"@heximon\u002Fqueue",[1627,1655,1656],{"align":1616},"No",[1611,1658,1659,1665],{},[1627,1660,1661,1662,683],{"align":1616},"Durable Objects (",[503,1663,1664],{},"@heximon\u002Fdurable",[1627,1666,1656],{"align":1616},[1611,1668,1669,1675],{},[1627,1670,1671,1672,683],{"align":1616},"Workflows (",[503,1673,1674],{},"@heximon\u002Fworkflow",[1627,1676,1656],{"align":1616},[1611,1678,1679,1685],{},[1627,1680,1681,1682,683],{"align":1616},"Durable WebSocket (",[503,1683,1684],{},"@heximon\u002Fwebsocket",[1627,1686,1656],{"align":1616},[499,1688,1689,1690,1692,1693,1696,1697,1699],{},"Compiling a Durable Object or workflow against ",[503,1691,690],{}," emits a ",[503,1694,1695],{},"PlatformEdgeUnsupported","\ndiagnostic naming ",[503,1698,698],{}," and the offending class — the build fails before any code is emitted.",[499,1701,1702,1703,1706],{},"A queue\nhandler gets its own diagnostic, ",[503,1704,1705],{},"PlatformFeatureUnsupported",", for the same reason: the in-memory drain is\nephemeral on an edge isolate and the polling consumers are Node-only, so produce to an external queue from\nthe edge and consume it on a Node or Lambda worker instead.",[512,1708,1710],{"id":1709},"nitro-path","Nitro path",[499,1712,1713,1714,1717,1718,1721,1722,1724,1725,1728,1729,1731],{},"On ",[503,1715,1716],{},"@heximon\u002Fnitro"," with a ",[503,1719,1720],{},"deno-deploy"," preset, the Nitro module selects ",[503,1723,690],{}," automatically —\nno ",[503,1726,1727],{},"heximon.platform"," entry needed on that path. The same ",[503,1730,1239],{}," assembles the entry either way.",[512,1733,1735],{"id":1734},"dev","Dev",[499,1737,1738,1739,1742,1743,1746],{},"Deno Deploy has no Miniflare equivalent, so ",[503,1740,1741],{},"vp dev"," runs your app as a standard Node HTTP server — the\nstrategy's built-in ",[503,1744,1745],{},"NodeStrategy"," dev default — with the full build-error page, JSON preview,\nrecompile-on-change, and auto-reload preserved.",[512,1748,1750],{"id":1749},"ship-it","Ship it",[517,1752,1754],{"className":710,"code":1753,"language":713,"meta":523,"style":523},"deployctl deploy --project=\u003Cyour-project> dist\u002Fdeno-worker.js   # add --prod for the production domain\n",[503,1755,1756],{"__ignoreMap":523},[527,1757,1758,1760,1762,1764,1766,1768,1770,1773],{"class":529,"line":530},[527,1759,733],{"class":720},[527,1761,736],{"class":554},[527,1763,739],{"class":554},[527,1765,742],{"class":537},[527,1767,745],{"class":554},[527,1769,748],{"class":537},[527,1771,1772],{"class":554}," dist\u002Fdeno-worker.js",[527,1774,1775],{"class":727},"   # add --prod for the production domain\n",[499,1777,1778,1780,1781,1784,1785,1791,1792,1795,1796,1799,1800,1803,1804,1806,1807,1810],{},[503,1779,690],{}," implements the ",[503,1782,1783],{},"@heximon\u002Fdeploy"," capability, so ",[1786,1787,1788],"a",{"href":375},[503,1789,1790],{},"heximon deploy"," runs that\nsame command for you (the project name resolves from ",[503,1793,1794],{},"DENO_DEPLOY_PROJECT"," when set, and a ",[503,1797,1798],{},"\"production\"","\nenvironment adds ",[503,1801,1802],{},"--prod","). Project teardown is dashboard\u002FAPI-only — ",[503,1805,733],{}," has no delete command, so\nthere's no ",[503,1808,1809],{},"heximon deploy --destroy"," for Deno.",[512,1812,1814],{"id":1813},"see-also","See also",[1816,1817,1818,1829,1839],"ul",{},[1819,1820,1821,1824,1825,1828],"li",{},[1786,1822,1823],{"href":157},"Schedule"," — ",[503,1826,1827],{},"ScheduledHandler",", cron discovery, and the driver abstraction.",[1819,1830,1831,1834,1835,1838],{},[1786,1832,1833],{"href":299},"Deploy overview"," — the ",[503,1836,1837],{},"supportedFeatures"," gate shared across every platform.",[1819,1840,1841,1845,1846,1849],{},[1786,1842,1843],{"href":375},[503,1844,1790],{}," — the CLI's Deno-specific preflight and ",[503,1847,1848],{},"--project"," resolution.",[1851,1852,1853],"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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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":523,"searchDepth":564,"depth":564,"links":1855},[1856,1857,1859,1861,1862,1863,1864,1865,1866],{"id":514,"depth":564,"text":515},{"id":702,"depth":564,"text":1858},"What vp build emits",{"id":773,"depth":564,"text":1860},"The generated deno-entry.js",{"id":1228,"depth":564,"text":1229},{"id":1599,"depth":564,"text":1600},{"id":1709,"depth":564,"text":1710},{"id":1734,"depth":564,"text":1735},{"id":1749,"depth":564,"text":1750},{"id":1813,"depth":564,"text":1814},"DenoDeployStrategy, dist\u002Fdeno-worker.js, Deno.cron registrations, deployctl deploy, platform limits.","md",null,{},{"icon":330},{"title":327,"description":1867},"_IYE0YhpYjwPZFcAy02k8m6bLotLC4yZiUoaLuIdevg",[1875,1877],{"title":322,"path":323,"stem":324,"description":1876,"icon":325,"children":-1},"LambdaStrategy, lambda-entry.js, API Gateway HTTP API v2 event adapter, LambdaSqsQueueConsumer, per-invocation OTel flush.",{"title":332,"path":333,"stem":334,"description":1878,"icon":335,"children":-1},"Run a Heximon app inside Nitro v3 with heximonNitroModule, heximonNitroVitePlugin for the dev loop, heximon.config.ts, NitroFetchClient, and one server directory that deploys to Node, Cloudflare Workers, Deno, Bun, and AWS Lambda.",1783300759753]