[{"data":1,"prerenderedAt":1596},["ShallowReactive",2],{"navigation_docs":3,"-docs-deploy-vercel":493,"-docs-deploy-vercel-surround":1591},[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":312,"body":495,"description":1584,"extension":1585,"links":1586,"meta":1587,"navigation":1588,"path":313,"seo":1589,"stem":314,"__hash__":1590},"docs\u002Fdocs\u002F06.deploy\u002F04.vercel.md",{"type":496,"value":497,"toc":1575},"minimark",[498,511,682,708,713,723,731,762,765,788,816,820,838,904,1026,1033,1037,1064,1225,1245,1249,1268,1291,1298,1434,1457,1460,1478,1482,1505,1508,1512,1571],[499,500,501,502,506,507,510],"p",{},"Deploying to Vercel gets you ",[503,504,505],"strong",{},"Functions"," by default — a real Node.js runtime, cron, queues, and durable\nworkflows — with ",[503,508,509],{},"Edge Functions"," available as an opt-in tier for latency-sensitive routes. One line picks\nthe strategy:",[512,513,519],"pre",{"className":514,"code":515,"filename":516,"language":517,"meta":518,"style":518},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineHeximonConfig } from \"@heximon\u002Fbuild\";\nimport { VercelFunctionsStrategy } from \"@heximon\u002Fvercel\";\nimport { HttpPlugin } from \"@heximon\u002Fhttp\u002Fcompiler\";\n\nexport default defineHeximonConfig({\n  platform: new VercelFunctionsStrategy(),\n  plugins: [new HttpPlugin()],\n});\n","heximon.config.ts","ts","",[520,521,522,558,581,604,611,629,650,671],"code",{"__ignoreMap":518},[523,524,527,531,535,539,542,545,548,552,555],"span",{"class":525,"line":526},"line",1,[523,528,530],{"class":529},"s7zQu","import",[523,532,534],{"class":533},"sMK4o"," {",[523,536,538],{"class":537},"sTEyZ"," defineHeximonConfig",[523,540,541],{"class":533}," }",[523,543,544],{"class":529}," from",[523,546,547],{"class":533}," \"",[523,549,551],{"class":550},"sfazB","@heximon\u002Fbuild",[523,553,554],{"class":533},"\"",[523,556,557],{"class":533},";\n",[523,559,561,563,565,568,570,572,574,577,579],{"class":525,"line":560},2,[523,562,530],{"class":529},[523,564,534],{"class":533},[523,566,567],{"class":537}," VercelFunctionsStrategy",[523,569,541],{"class":533},[523,571,544],{"class":529},[523,573,547],{"class":533},[523,575,576],{"class":550},"@heximon\u002Fvercel",[523,578,554],{"class":533},[523,580,557],{"class":533},[523,582,584,586,588,591,593,595,597,600,602],{"class":525,"line":583},3,[523,585,530],{"class":529},[523,587,534],{"class":533},[523,589,590],{"class":537}," HttpPlugin",[523,592,541],{"class":533},[523,594,544],{"class":529},[523,596,547],{"class":533},[523,598,599],{"class":550},"@heximon\u002Fhttp\u002Fcompiler",[523,601,554],{"class":533},[523,603,557],{"class":533},[523,605,607],{"class":525,"line":606},4,[523,608,610],{"emptyLinePlaceholder":609},true,"\n",[523,612,614,617,620,623,626],{"class":525,"line":613},5,[523,615,616],{"class":529},"export",[523,618,619],{"class":529}," default",[523,621,538],{"class":622},"s2Zo4",[523,624,625],{"class":537},"(",[523,627,628],{"class":533},"{\n",[523,630,632,636,639,642,644,647],{"class":525,"line":631},6,[523,633,635],{"class":634},"swJcz","  platform",[523,637,638],{"class":533},":",[523,640,641],{"class":533}," new",[523,643,567],{"class":622},[523,645,646],{"class":537},"()",[523,648,649],{"class":533},",\n",[523,651,653,656,658,661,664,666,669],{"class":525,"line":652},7,[523,654,655],{"class":634},"  plugins",[523,657,638],{"class":533},[523,659,660],{"class":537}," [",[523,662,663],{"class":533},"new",[523,665,590],{"class":622},[523,667,668],{"class":537},"()]",[523,670,649],{"class":533},[523,672,674,677,680],{"class":525,"line":673},8,[523,675,676],{"class":533},"}",[523,678,679],{"class":537},")",[523,681,557],{"class":533},[499,683,684,687,688,691,692,695,696,699,700,703,704,707],{},[520,685,686],{},"VercelFunctionsStrategy"," is a ",[520,689,690],{},"node","-class strategy, platform name ",[520,693,694],{},"\"vercel\"",". ",[520,697,698],{},"VercelEdgeStrategy"," is the\n",[520,701,702],{},"edge","-class alternative for a V8 isolate tier — swap it in for a controller-level split (edge reads next to a\nnode tier that owns the database) rather than the whole platform; see\n",[705,706,342],"a",{"href":343},".",[709,710,712],"h2",{"id":711},"build-and-deploy","Build and deploy",[499,714,715,718,719,722],{},[520,716,717],{},"vp build"," writes a complete Vercel ",[503,720,721],{},"Build Output API v3"," tree at the project root — no Nitro in between:",[512,724,729],{"className":725,"code":727,"language":728},[726],"language-text",".vercel\u002Foutput\u002F\n  config.json                              # { version: 3, routes, crons[] }\n  functions\u002F__server.func\u002F\n    index.js                               # self-contained bundle (deps bundled, no node_modules)\n    .vc-config.json                        # nodejs22.x + handler + launcherType\n  static\u002F\n","text",[520,730,727],{"__ignoreMap":518},[499,732,733,734,737,738,741,742,745,746,749,750,753,754,757,758,761],{},"By default the function is ",[503,735,736],{},"self-contained"," (",[520,739,740],{},"bundleDependencies",", on by default): every JS dependency is\nbundled into ",[520,743,744],{},"index.js",", so there's no ",[520,747,748],{},"node_modules"," symlink to resolve — a ",[520,751,752],{},"vercel deploy --prebuilt"," ",[520,755,756],{},".func","\ncan't follow one anyway. Opt out with ",[520,759,760],{},"new VercelFunctionsStrategy({ bundleDependencies: false })"," to keep the\nstandard externalized Node SSR shape instead.",[499,763,764],{},"Ship it with either command:",[512,766,770],{"className":767,"code":768,"language":769,"meta":518,"style":518},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","vercel deploy --prebuilt          # add --prod for production\n","bash",[520,771,772],{"__ignoreMap":518},[523,773,774,778,781,784],{"class":525,"line":526},[523,775,777],{"class":776},"sBMFI","vercel",[523,779,780],{"class":550}," deploy",[523,782,783],{"class":550}," --prebuilt",[523,785,787],{"class":786},"sHwdD","          # add --prod for production\n",[499,789,790,791,794,795,800,801,804,805,808,809,812,813,815],{},"Both host strategies implement the ",[520,792,793],{},"@heximon\u002Fdeploy"," capability, so ",[705,796,797],{"href":375},[520,798,799],{},"heximon deploy"," runs the\nsame command for you — plus a ",[520,802,803],{},"vercel whoami"," preflight, a first-deploy linkage gate (halting with the\none-time ",[520,806,807],{},"vercel link"," command on a fresh project), and a fail-closed ",[520,810,811],{},"CRON_SECRET"," gate that halts the deploy\nbefore upload if your app declares any cron route but no ",[520,814,811],{}," is set.",[709,817,819],{"id":818},"cron","Cron",[499,821,822,823,826,827,830,831,834,835,638],{},"List ",[520,824,825],{},"SchedulePlugin"," and the plugin selects ",[520,828,829],{},"VercelScheduleDriver"," — a clockless driver the platform triggers\nover HTTP. Each discovered cron gets its own ",[520,832,833],{},"config.json"," entry, guarded by ",[520,836,837],{},"Authorization: Bearer \u003CCRON_SECRET>",[512,839,843],{"className":840,"code":841,"language":842,"meta":518,"style":518},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{ \"crons\": [{ \"path\": \"\u002F_vercel\u002Fcron\u002F0\", \"schedule\": \"0 3 * * *\" }] }\n","json",[520,844,845],{"__ignoreMap":518},[523,846,847,850,852,856,858,860,863,865,868,870,872,874,877,879,882,884,887,889,891,893,896,898,901],{"class":525,"line":526},[523,848,849],{"class":533},"{",[523,851,547],{"class":533},[523,853,855],{"class":854},"spNyl","crons",[523,857,554],{"class":533},[523,859,638],{"class":533},[523,861,862],{"class":533}," [{",[523,864,547],{"class":533},[523,866,867],{"class":776},"path",[523,869,554],{"class":533},[523,871,638],{"class":533},[523,873,547],{"class":533},[523,875,876],{"class":550},"\u002F_vercel\u002Fcron\u002F0",[523,878,554],{"class":533},[523,880,881],{"class":533},",",[523,883,547],{"class":533},[523,885,886],{"class":776},"schedule",[523,888,554],{"class":533},[523,890,638],{"class":533},[523,892,547],{"class":533},[523,894,895],{"class":550},"0 3 * * *",[523,897,554],{"class":533},[523,899,900],{"class":533}," }]",[523,902,903],{"class":533}," }\n",[512,905,907],{"className":514,"code":906,"language":517,"meta":518,"style":518},"import type { ScheduledHandler } from \"@heximon\u002Fschedule\";\n\nexport class NightlyCleanup implements ScheduledHandler\u003C\"0 3 * * *\", { name: \"Nightly cleanup\" }> {\n  public handle(scheduledAt: Date): void {\n    \u002F\u002F …\n  }\n}\n",[520,908,909,934,938,984,1011,1016,1021],{"__ignoreMap":518},[523,910,911,913,916,918,921,923,925,927,930,932],{"class":525,"line":526},[523,912,530],{"class":529},[523,914,915],{"class":529}," type",[523,917,534],{"class":533},[523,919,920],{"class":537}," ScheduledHandler",[523,922,541],{"class":533},[523,924,544],{"class":529},[523,926,547],{"class":533},[523,928,929],{"class":550},"@heximon\u002Fschedule",[523,931,554],{"class":533},[523,933,557],{"class":533},[523,935,936],{"class":525,"line":560},[523,937,610],{"emptyLinePlaceholder":609},[523,939,940,942,945,948,951,953,956,958,960,962,964,966,969,971,973,976,978,981],{"class":525,"line":583},[523,941,616],{"class":529},[523,943,944],{"class":854}," class",[523,946,947],{"class":776}," NightlyCleanup",[523,949,950],{"class":854}," implements",[523,952,920],{"class":776},[523,954,955],{"class":533},"\u003C",[523,957,554],{"class":533},[523,959,895],{"class":550},[523,961,554],{"class":533},[523,963,881],{"class":533},[523,965,534],{"class":533},[523,967,968],{"class":634}," name",[523,970,638],{"class":533},[523,972,547],{"class":533},[523,974,975],{"class":550},"Nightly cleanup",[523,977,554],{"class":533},[523,979,980],{"class":533}," }>",[523,982,983],{"class":533}," {\n",[523,985,986,989,992,994,998,1000,1003,1006,1009],{"class":525,"line":606},[523,987,988],{"class":854},"  public",[523,990,991],{"class":634}," handle",[523,993,625],{"class":533},[523,995,997],{"class":996},"sHdIc","scheduledAt",[523,999,638],{"class":533},[523,1001,1002],{"class":776}," Date",[523,1004,1005],{"class":533},"):",[523,1007,1008],{"class":776}," void",[523,1010,983],{"class":533},[523,1012,1013],{"class":525,"line":613},[523,1014,1015],{"class":786},"    \u002F\u002F …\n",[523,1017,1018],{"class":525,"line":631},[523,1019,1020],{"class":533},"  }\n",[523,1022,1023],{"class":525,"line":652},[523,1024,1025],{"class":533},"}\n",[499,1027,1028,1029,1032],{},"Cron works on ",[503,1030,1031],{},"both"," Functions and Edge — the route is plain HTTP either way.",[709,1034,1036],{"id":1035},"queues","Queues",[499,1038,822,1039,1042,1043,1046,1047,1050,1051,1053,1054,1057,1058,1060,1061,1063],{},[520,1040,1041],{},"QueuePlugin"," and bind ",[520,1044,1045],{},"VercelQueue"," (from ",[520,1048,1049],{},"@heximon\u002Fqueue\u002Fvercel",") as your ",[520,1052,151],{}," provider. The queue\nplugin selects ",[520,1055,1056],{},"VercelQueueConsumer"," as the push-drain consumer and emits it as a separate, isolated function\n(a Build Output API ",[520,1059,756],{}," can't import across a ",[520,1062,756],{}," boundary, so the consumer ships its own copy of the\nserver bundle):",[512,1065,1067],{"className":514,"code":1066,"language":517,"meta":518,"style":518},"import { Module } from \"@heximon\u002Fruntime\";\nimport { Queue } from \"@heximon\u002Fqueue\";\nimport { VercelQueue } from \"@heximon\u002Fqueue\u002Fvercel\";\n\nexport class AppModule extends Module({\n  providers: [{ provide: Queue, useValue: new VercelQueue() }],\n  queue: { handlers: [OrdersHandler] },\n}) {}\n",[520,1068,1069,1091,1113,1134,1138,1156,1195,1215],{"__ignoreMap":518},[523,1070,1071,1073,1075,1078,1080,1082,1084,1087,1089],{"class":525,"line":526},[523,1072,530],{"class":529},[523,1074,534],{"class":533},[523,1076,1077],{"class":537}," Module",[523,1079,541],{"class":533},[523,1081,544],{"class":529},[523,1083,547],{"class":533},[523,1085,1086],{"class":550},"@heximon\u002Fruntime",[523,1088,554],{"class":533},[523,1090,557],{"class":533},[523,1092,1093,1095,1097,1100,1102,1104,1106,1109,1111],{"class":525,"line":560},[523,1094,530],{"class":529},[523,1096,534],{"class":533},[523,1098,1099],{"class":537}," Queue",[523,1101,541],{"class":533},[523,1103,544],{"class":529},[523,1105,547],{"class":533},[523,1107,1108],{"class":550},"@heximon\u002Fqueue",[523,1110,554],{"class":533},[523,1112,557],{"class":533},[523,1114,1115,1117,1119,1122,1124,1126,1128,1130,1132],{"class":525,"line":583},[523,1116,530],{"class":529},[523,1118,534],{"class":533},[523,1120,1121],{"class":537}," VercelQueue",[523,1123,541],{"class":533},[523,1125,544],{"class":529},[523,1127,547],{"class":533},[523,1129,1049],{"class":550},[523,1131,554],{"class":533},[523,1133,557],{"class":533},[523,1135,1136],{"class":525,"line":606},[523,1137,610],{"emptyLinePlaceholder":609},[523,1139,1140,1142,1144,1147,1150,1152,1154],{"class":525,"line":613},[523,1141,616],{"class":529},[523,1143,944],{"class":854},[523,1145,1146],{"class":776}," AppModule",[523,1148,1149],{"class":854}," extends",[523,1151,1077],{"class":622},[523,1153,625],{"class":537},[523,1155,628],{"class":533},[523,1157,1158,1161,1163,1165,1167,1170,1172,1174,1176,1179,1181,1183,1185,1188,1190,1193],{"class":525,"line":631},[523,1159,1160],{"class":634},"  providers",[523,1162,638],{"class":533},[523,1164,660],{"class":537},[523,1166,849],{"class":533},[523,1168,1169],{"class":634}," provide",[523,1171,638],{"class":533},[523,1173,1099],{"class":537},[523,1175,881],{"class":533},[523,1177,1178],{"class":634}," useValue",[523,1180,638],{"class":533},[523,1182,641],{"class":533},[523,1184,1121],{"class":622},[523,1186,1187],{"class":537},"() ",[523,1189,676],{"class":533},[523,1191,1192],{"class":537},"]",[523,1194,649],{"class":533},[523,1196,1197,1200,1202,1204,1207,1209,1212],{"class":525,"line":652},[523,1198,1199],{"class":634},"  queue",[523,1201,638],{"class":533},[523,1203,534],{"class":533},[523,1205,1206],{"class":634}," handlers",[523,1208,638],{"class":533},[523,1210,1211],{"class":537}," [OrdersHandler] ",[523,1213,1214],{"class":533},"},\n",[523,1216,1217,1219,1222],{"class":525,"line":673},[523,1218,676],{"class":533},[523,1220,1221],{"class":537},") ",[523,1223,1224],{"class":533},"{}\n",[499,1226,1227,1228,1231,1232,1234,1235,1238,1239,1242,1243,707],{},"Vercel Queues (V3) topic names allow only ",[520,1229,1230],{},"[A-Za-z0-9_-]"," — no dots — and ",[520,1233,717],{}," fails with a clear message\nif an emitted channel name violates that. ",[520,1236,1237],{},"VercelEdgeStrategy.supportedFeatures.queue"," stays ",[520,1240,1241],{},"false"," — edge\nisolates have no durable queue support. Vercel Queue delivers back to the same deployment only; for fan-out to\nother services see ",[705,1244,351],{"href":352},[709,1246,1248],{"id":1247},"durable-workflows-and-saga-timers","Durable workflows and saga timers",[499,1250,1251,1252,1255,1256,1259,1260,1263,1264,1267],{},"Vercel Functions freeze between invocations — there's no long-lived process to run a poller on — so a\n",[705,1253,1254],{"href":254},"workflow","'s ",[520,1257,1258],{},"step.sleep"," and a ",[705,1261,1262],{"href":249},"saga","'s\n",[520,1265,1266],{},"TimeoutHandler"," deadline need a wakeup that doesn't depend on one.",[499,1269,1270,1271,753,1274,1276,1277,1279,1280,1282,1283,1286,1287,1290],{},"The default is a once-per-minute ",[503,1272,1273],{},"drain cron",[520,1275,717],{}," folds into ",[520,1278,833],{},"; each tick, the generated\nentry (guarded by ",[520,1281,811],{},") re-enters every run whose sleep has elapsed — sub-minute precision on ",[503,1284,1285],{},"Pro+",",\nbut Hobby caps cron at once a day and rejects a ",[520,1288,1289],{},"* * * * *"," schedule at deploy time.",[499,1292,1293,1294,1297],{},"The opt-in alternative swaps the drain cron for a ",[503,1295,1296],{},"delayed Vercel Queue message"," that wakes each timer at\n(roughly) its exact deadline instead — sub-second precision, works on Hobby, no minute-cron gate:",[512,1299,1302],{"className":514,"code":1300,"filename":1301,"language":517,"meta":518,"style":518},"export default defineHeximonConfig({\n  platform: new VercelFunctionsStrategy({ timerWakeup: \"queue\" }),\n  plugins: [\n    new HttpPlugin(),\n    new QueuePlugin(),\n    new SchedulePlugin(),\n    new SagaPlugin(),\n    new WorkflowPlugin(),\n    \u002F\u002F …\n  ],\n});\n","examples\u002Fflagship\u002Fapps\u002Fvercel\u002Fheximon.config.ts",[520,1303,1304,1316,1348,1357,1368,1379,1390,1401,1412,1417,1425],{"__ignoreMap":518},[523,1305,1306,1308,1310,1312,1314],{"class":525,"line":526},[523,1307,616],{"class":529},[523,1309,619],{"class":529},[523,1311,538],{"class":622},[523,1313,625],{"class":537},[523,1315,628],{"class":533},[523,1317,1318,1320,1322,1324,1326,1328,1330,1333,1335,1337,1340,1342,1344,1346],{"class":525,"line":560},[523,1319,635],{"class":634},[523,1321,638],{"class":533},[523,1323,641],{"class":533},[523,1325,567],{"class":622},[523,1327,625],{"class":537},[523,1329,849],{"class":533},[523,1331,1332],{"class":634}," timerWakeup",[523,1334,638],{"class":533},[523,1336,547],{"class":533},[523,1338,1339],{"class":550},"queue",[523,1341,554],{"class":533},[523,1343,541],{"class":533},[523,1345,679],{"class":537},[523,1347,649],{"class":533},[523,1349,1350,1352,1354],{"class":525,"line":583},[523,1351,655],{"class":634},[523,1353,638],{"class":533},[523,1355,1356],{"class":537}," [\n",[523,1358,1359,1362,1364,1366],{"class":525,"line":606},[523,1360,1361],{"class":533},"    new",[523,1363,590],{"class":622},[523,1365,646],{"class":537},[523,1367,649],{"class":533},[523,1369,1370,1372,1375,1377],{"class":525,"line":613},[523,1371,1361],{"class":533},[523,1373,1374],{"class":622}," QueuePlugin",[523,1376,646],{"class":537},[523,1378,649],{"class":533},[523,1380,1381,1383,1386,1388],{"class":525,"line":631},[523,1382,1361],{"class":533},[523,1384,1385],{"class":622}," SchedulePlugin",[523,1387,646],{"class":537},[523,1389,649],{"class":533},[523,1391,1392,1394,1397,1399],{"class":525,"line":652},[523,1393,1361],{"class":533},[523,1395,1396],{"class":622}," SagaPlugin",[523,1398,646],{"class":537},[523,1400,649],{"class":533},[523,1402,1403,1405,1408,1410],{"class":525,"line":673},[523,1404,1361],{"class":533},[523,1406,1407],{"class":622}," WorkflowPlugin",[523,1409,646],{"class":537},[523,1411,649],{"class":533},[523,1413,1415],{"class":525,"line":1414},9,[523,1416,1015],{"class":786},[523,1418,1420,1423],{"class":525,"line":1419},10,[523,1421,1422],{"class":537},"  ]",[523,1424,649],{"class":533},[523,1426,1428,1430,1432],{"class":525,"line":1427},11,[523,1429,676],{"class":533},[523,1431,679],{"class":537},[523,1433,557],{"class":533},[499,1435,1436,1437,1440,1441,1444,1445,1448,1449,1452,1453,707],{},"The switch governs both consumers at once and the app binds a ",[520,1438,1439],{},"DeferredWakeupQueue"," satisfier per environment\n(",[520,1442,1443],{},"MemoryDeferredWakeupQueue"," in dev\u002FCI, ",[520,1446,1447],{},"VercelDeferredWakeupQueue"," in production). For the replay engine, the\n",[520,1450,1451],{},"durable_timers"," mechanics, and the generated drain entry, see\n",[705,1454,1456],{"href":1455},"\u002Fdocs\u002Farchitecture\u002Fworkflows#workflows-and-the-freeze-safe-drain","Workflows",[709,1458,77],{"id":1459},"database",[499,1461,1462,1463,1466,1467,1470,1471,1474,1475,1477],{},"Vercel Functions freeze between invocations and don't hold an in-memory connection pool, so your database needs\nto be ",[503,1464,1465],{},"edge-capable",": a persistent, edge-reachable store like Turso (",[520,1468,1469],{},"@libsql\u002Fclient",", bundled to its pure-JS\n",[520,1472,1473],{},"web"," build) or Neon's serverless Postgres driver. A native TCP driver that can't bundle into a self-contained\n",[520,1476,756],{},", or an in-memory store that won't survive the freeze, doesn't work here.",[709,1479,1481],{"id":1480},"verification","Verification",[499,1483,1484,1485,1491,1492,1495,1496,1498,1499,707],{},"Per the ",[705,1486,1490],{"href":1487,"rel":1488},"https:\u002F\u002Fgithub.com\u002Fheximon\u002Fheximon\u002Fblob\u002Fmain\u002Fdocs\u002Flive-deploy-verification.md",[1489],"nofollow","live-deploy verification ledger",": the durable Vercel Queue round-trip (POST →\nplatform push → Turso write → GET), the ",[520,1493,1494],{},"timerWakeup: \"queue\""," wakeup for both workflow ",[520,1497,1258],{}," and saga\ntimeouts, and the drain-cron leg re-entering a suspended workflow run are each ",[503,1500,1501,1502],{},"verified on a real ",[520,1503,1504],{},"vercel deploy",[499,1506,1507],{},"Everything else on this page — cron triggers, the Build Output API shape, the mixed-runtime routing — is\nbuild-tested and expected to work but not separately live-verified.",[709,1509,1511],{"id":1510},"see-also","See also",[1513,1514,1515,1531,1542,1547,1556],"ul",{},[1516,1517,1518,1520,1521,1524,1525,1524,1528,1530],"li",{},[705,1519,1456],{"href":254}," — ",[520,1522,1523],{},"Workflow",", ",[520,1526,1527],{},"step.do",[520,1529,1258],{},", and the replay engine.",[1516,1532,1533,1520,1536,1538,1539,707],{},[705,1534,1535],{"href":249},"Sagas",[520,1537,1266],{}," deadlines and ",[520,1540,1541],{},"DurableTimer",[1516,1543,1544,1546],{},[705,1545,351],{"href":352}," — fan an integration event out past one deployment.",[1516,1548,1549,1551,1552,1555],{},[705,1550,342],{"href":343}," — the ",[520,1553,1554],{},"runtime: \"edge\""," controller partitioning in depth.",[1516,1557,1558,1562,1563,1566,1567,1570],{},[705,1559,1560],{"href":375},[520,1561,799],{}," — the CLI's Vercel-specific preflight, ",[520,1564,1565],{},"--create",", and ",[520,1568,1569],{},"--provision"," flags.",[1572,1573,1574],"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":518,"searchDepth":560,"depth":560,"links":1576},[1577,1578,1579,1580,1581,1582,1583],{"id":711,"depth":560,"text":712},{"id":818,"depth":560,"text":819},{"id":1035,"depth":560,"text":1036},{"id":1247,"depth":560,"text":1248},{"id":1459,"depth":560,"text":77},{"id":1480,"depth":560,"text":1481},{"id":1510,"depth":560,"text":1511},"VercelFunctionsStrategy, VercelEdgeStrategy, .vercel\u002Foutput Build Output API v3, vercel-entry.js, cron and queue triggers, the freeze-safe workflow drain.","md",null,{},{"icon":315},{"title":312,"description":1584},"0d_L8HvsedH4b25JmK6-cY9HsRf9-ZiHCUMlLdoJv80",[1592,1594],{"title":307,"path":308,"stem":309,"description":1593,"icon":310,"children":-1},"CloudflareWorkersStrategy, CloudflarePlugin, wrangler.json as a build artifact, dist\u002Fworker.js, Durable Object migrations, the Miniflare vp dev host.",{"title":317,"path":318,"stem":319,"description":1595,"icon":320,"children":-1},"NetlifyFunctionsStrategy, NetlifyEdgeStrategy, .netlify\u002F deploy tree, scheduled functions, Netlify Async Workloads queue, mixed-runtime split.",1783300759752]