[{"data":1,"prerenderedAt":2730},["ShallowReactive",2],{"docs-navigation":3,"docs:\u002Fdocs\u002Fnuxt\u002Fworkflow":618,"\u002Fdocs\u002Fnuxt\u002Fworkflow:surround":2727},[4],{"title":5,"path":6,"children":7},"Docs","\u002Fdocs",[8,316,467],{"title":9,"path":10,"children":11},"Vite","\u002Fdocs\u002Fvite",[12,30,52,63,78,100,174,183,219,238,255,273,304],{"title":13,"path":14,"description":15,"icon":16,"children":17},"Getting Started","\u002Fdocs\u002Fvite\u002Fgetting-started","Learn the ViteHub package model, pick a starting path, and get to a working feature quickly.","i-lucide-rocket",[18,22,26],{"title":19,"path":20,"description":21},"Choose a Package","\u002Fdocs\u002Fvite\u002Fgetting-started\u002Fchoose-a-package","Pick the right ViteHub feature by the job you need to solve on the server.",{"title":23,"path":24,"description":25},"Entrypoints","\u002Fdocs\u002Fvite\u002Fgetting-started\u002Fentrypoints","Understand what belongs on the package root and what each framework-specific entrypoint owns.",{"title":27,"path":28,"description":29},"Architecture","\u002Fdocs\u002Fvite\u002Fgetting-started\u002Farchitecture","How ViteHub keeps one shared feature bridge across Vite, Nitro, and Nuxt.",{"title":31,"path":32,"description":33,"icon":34,"children":35},"Database","\u002Fdocs\u002Fvite\u002Fdatabase","Set up Drizzle or Prisma with `@vitehub\u002Fdb` and explicit ORM runtime imports.","i-lucide-database",[36,40,44,48],{"title":37,"path":38,"description":39},"Drizzle","\u002Fdocs\u002Fvite\u002Fdatabase\u002Fdrizzle","Configure Drizzle with `@vitehub\u002Fdb\u002Fdrizzle`, schema discovery, and committed SQL migrations.",{"title":41,"path":42,"description":43},"Prisma","\u002Fdocs\u002Fvite\u002Fdatabase\u002Fprisma","Configure Prisma with `@vitehub\u002Fdb\u002Fprisma`, generated client output, and native Prisma migrations.",{"title":45,"path":46,"description":47},"Migrations","\u002Fdocs\u002Fvite\u002Fdatabase\u002Fmigrations","Understand when ViteHub applies committed Drizzle and Prisma migrations during development and build.",{"title":49,"path":50,"description":51},"Platform notes","\u002Fdocs\u002Fvite\u002Fdatabase\u002Fplatform-notes","Review driver defaults, hosting behavior, and current runtime limits for Drizzle and Prisma.",{"title":53,"path":54,"description":55,"icon":56,"children":57},"KV","\u002Fdocs\u002Fvite\u002Fkv","Set up key-value storage with the same provider detection used by NuxtHub.","i-lucide-database-zap",[58],{"title":59,"path":60,"description":61,"icon":62},"Usage","\u002Fdocs\u002Fvite\u002Fkv\u002Fusage","Use the KV SDK to set, get, delete, clear, and list key-value pairs.","i-lucide-code",{"title":64,"path":65,"description":66,"icon":67,"children":68},"Blob","\u002Fdocs\u002Fvite\u002Fblob","Add blob storage for images, videos, documents, and other files with `@vitehub\u002Fblob`.","i-lucide-shapes",[69,74],{"title":70,"path":71,"description":72,"icon":73},"Upload","\u002Fdocs\u002Fvite\u002Fblob\u002Fupload","Upload files with validation, simple form handlers, and multipart flows using `@vitehub\u002Fblob`.","i-lucide-upload",{"title":75,"path":76,"description":77,"icon":62},"Blob SDK","\u002Fdocs\u002Fvite\u002Fblob\u002Fusage","Store, read, list, validate, serve, and delete files with `@vitehub\u002Fblob`.",{"title":79,"path":80,"description":81,"icon":82,"children":83},"Vector","\u002Fdocs\u002Fvite\u002Fvector","Add provider-agnostic named vector indexes with similarity search.","i-lucide-scan-search",[84,90,95],{"title":85,"path":86,"description":87,"icon":88,"group":89},"Cloudflare","\u002Fdocs\u002Fvite\u002Fvector\u002Fcloudflare","Configure @vitehub\u002Fvector against Cloudflare Vectorize.","i-simple-icons-cloudflare","Providers",{"title":91,"path":92,"description":93,"icon":94,"group":89},"Postgres","\u002Fdocs\u002Fvite\u002Fvector\u002Fpostgres","Configure @vitehub\u002Fvector against a pgvector-backed Postgres database.","i-simple-icons-postgresql",{"title":96,"path":97,"description":98,"icon":99,"group":89},"Upstash","\u002Fdocs\u002Fvite\u002Fvector\u002Fupstash","Configure @vitehub\u002Fvector against the Upstash Vector HTTP API.","i-simple-icons-upstash",{"title":101,"path":102,"description":103,"icon":104,"children":105},"Queue","\u002Fdocs\u002Fvite\u002Fqueue","Send background jobs through Platformatic, Cloudflare, Vercel, Netlify, Upstash QStash, or Memory.","i-lucide-layers",[106,110,114,118,123,127,131,135,139,144,147,152,157,161,166,170],{"title":107,"path":108,"description":109},"Quickstart","\u002Fdocs\u002Fvite\u002Fqueue\u002Fquickstart","Get a first queue working locally with the memory provider.",{"title":111,"path":112,"description":113},"Runtime API","\u002Fdocs\u002Fvite\u002Fqueue\u002Fruntime-api","Reference for defineQueue, runQueue, deferQueue, getQueue, and the core Queue types.",{"title":115,"path":116,"description":117},"When to use Queue","\u002Fdocs\u002Fvite\u002Fqueue\u002Fwhen-to-use","Decide when Queue is the right primitive compared with Workflow, Cron, or inline request handling.",{"title":119,"path":120,"description":121,"group":122},"Send a job","\u002Fdocs\u002Fvite\u002Fqueue\u002Fguides\u002Fsend-a-job","Enqueue payloads with runQueue and the common delivery patterns.","Guides",{"title":124,"path":125,"description":126,"group":122},"Defer after response","\u002Fdocs\u002Fvite\u002Fqueue\u002Fguides\u002Fdefer-after-response","Use deferQueue when the queue send should happen after the current response is committed.",{"title":128,"path":129,"description":130,"group":122},"Validate payloads","\u002Fdocs\u002Fvite\u002Fqueue\u002Fguides\u002Fvalidate-payloads","Validate payloads before enqueueing and before running queue handlers.",{"title":132,"path":133,"description":134,"group":122},"Local development","\u002Fdocs\u002Fvite\u002Fqueue\u002Fguides\u002Flocal-development","Use the memory provider for local development and understand how auto-selection works.",{"title":136,"path":137,"description":138,"group":122},"Native handles","\u002Fdocs\u002Fvite\u002Fqueue\u002Fguides\u002Fnative-handles","Know when to use getQueue and provider-native methods instead of the portable runtime API.",{"title":140,"path":141,"description":142,"icon":143,"group":89},"Platformatic","\u002Fdocs\u002Fvite\u002Fqueue\u002Fproviders\u002Fplatformatic","Configure Platformatic Job Queue with local or self-hosted workers.","i-brand-platformatic",{"title":85,"path":145,"description":146,"icon":88,"group":89},"\u002Fdocs\u002Fvite\u002Fqueue\u002Fproviders\u002Fcloudflare","Configure Cloudflare Queues and process named queues in Workers.",{"title":148,"path":149,"description":150,"icon":151,"group":89},"Vercel","\u002Fdocs\u002Fvite\u002Fqueue\u002Fproviders\u002Fvercel","Configure Vercel Queue and send named jobs through Vercel.","i-simple-icons-vercel",{"title":153,"path":154,"description":155,"icon":156,"group":89},"Netlify","\u002Fdocs\u002Fvite\u002Fqueue\u002Fproviders\u002Fnetlify","Configure Netlify Async Workloads and run named queues on Netlify.","i-simple-icons-netlify",{"title":158,"path":159,"description":160,"icon":99,"group":89},"Upstash QStash","\u002Fdocs\u002Fvite\u002Fqueue\u002Fproviders\u002Fupstash-qstash","Configure Upstash QStash for queues and signed callback delivery.",{"title":162,"path":163,"description":164,"icon":165,"group":89},"Memory","\u002Fdocs\u002Fvite\u002Fqueue\u002Fproviders\u002Fmemory","Process queue jobs in-memory for local development and testing.","i-lucide-memory-stick",{"title":167,"path":168,"description":169},"Troubleshooting","\u002Fdocs\u002Fvite\u002Fqueue\u002Ftroubleshooting","Diagnose common Queue setup and runtime problems across local and hosted providers.",{"title":171,"path":172,"description":173},"Playground","\u002Fdocs\u002Fvite\u002Fqueue\u002Fplayground","Explore the existing Queue playground app and the files that show the end-to-end runtime flow.",{"title":175,"path":176,"description":177,"icon":178,"children":179},"Cache","\u002Fdocs\u002Fvite\u002Fcache","Configure Nitro cache storage for local development, Vercel, and Cloudflare deployments.","i-lucide-timer-reset",[180],{"title":59,"path":181,"description":182,"icon":62},"\u002Fdocs\u002Fvite\u002Fcache\u002Fusage","Cache routes and server functions with practical invalidation examples.",{"title":184,"path":185,"description":186,"icon":187,"children":188},"Email","\u002Fdocs\u002Fvite\u002Femail","Render markdown email files and send them through Resend, SendGrid, or Postmark.","i-lucide-mail",[189,194,199,204,209,214],{"title":190,"path":191,"description":192,"icon":193},"Frontmatter","\u002Fdocs\u002Fvite\u002Femail\u002Ffrontmatter","Define subject lines, recipients, metadata, and delivery defaults directly in the Markdown email file.","i-lucide-file-text",{"title":195,"path":196,"description":197,"icon":198},"Input Schemas","\u002Fdocs\u002Fvite\u002Femail\u002Finput-schemas","Add an embedded schema block when you want email input validation and stronger TypeScript inference.","i-brand-standard-schema",{"title":200,"path":201,"description":202,"icon":203},"i18n","\u002Fdocs\u002Fvite\u002Femail\u002Fi18n","Localize Markdown emails with locale-specific template files and ICU message formatting.","i-lucide-languages",{"title":205,"path":206,"description":207,"icon":208,"group":89},"Resend","\u002Fdocs\u002Fvite\u002Femail\u002Fresend","Configure Resend for transactional delivery and native batch sending.","i-provider-resend",{"title":210,"path":211,"description":212,"icon":213,"group":89},"SendGrid","\u002Fdocs\u002Fvite\u002Femail\u002Fsendgrid","Configure SendGrid when you need advanced delivery controls and template support.","i-provider-sendgrid",{"title":215,"path":216,"description":217,"icon":218,"group":89},"Postmark","\u002Fdocs\u002Fvite\u002Femail\u002Fpostmark","Configure Postmark for transactional streams and template-first sends.","i-provider-postmark",{"title":220,"path":221,"description":222,"icon":223,"children":224},"Workflow","\u002Fdocs\u002Fvite\u002Fworkflow","Run durable workflows on Cloudflare, Netlify, Vercel, or OpenWorkflow.","i-lucide-workflow",[225,228,231,235],{"title":85,"path":226,"description":227,"icon":88},"\u002Fdocs\u002Fvite\u002Fworkflow\u002Fcloudflare","Configure Cloudflare Workflows and inspect runs from your app.",{"title":148,"path":229,"description":230,"icon":151},"\u002Fdocs\u002Fvite\u002Fworkflow\u002Fvercel","Configure Vercel Workflow and run durable workflows on Vercel.",{"title":232,"path":233,"description":234,"icon":223},"OpenWorkflow","\u002Fdocs\u002Fvite\u002Fworkflow\u002Fopenworkflow","Connect OpenWorkflow and use your own workflow backend behind the ViteHub API.",{"title":153,"path":236,"description":237,"icon":156},"\u002Fdocs\u002Fvite\u002Fworkflow\u002Fnetlify","Configure Netlify Async Workloads and run discovered workflows on Netlify.",{"title":239,"path":240,"description":241,"icon":242,"children":243},"Cron","\u002Fdocs\u002Fvite\u002Fcron","Schedule crons with Node, Cloudflare, or Vercel.","i-lucide-list-check",[244,249,252],{"title":245,"path":246,"description":247,"icon":248},"Node","\u002Fdocs\u002Fvite\u002Fcron\u002Fnode","Configure in-process scheduling for local crons and lightweight cron tasks.","i-simple-icons-nodedotjs",{"title":85,"path":250,"description":251,"icon":88},"\u002Fdocs\u002Fvite\u002Fcron\u002Fcloudflare","Configure Cloudflare-triggered schedules for your crons.",{"title":148,"path":253,"description":254,"icon":151},"\u002Fdocs\u002Fvite\u002Fcron\u002Fvercel","Generate Vercel cron config from discovered crons.",{"title":256,"path":257,"description":258,"icon":259,"children":260},"Browser","\u002Fdocs\u002Fvite\u002Fbrowser","Run named browser automations against Playwright, Browserbase, or Cloudflare Browser Rendering.","i-lucide-monitor-play",[261,264,269],{"title":85,"path":262,"description":263,"icon":88},"\u002Fdocs\u002Fvite\u002Fbrowser\u002Fcloudflare","Configure Cloudflare Browser Rendering through the official `cloudflare` package.",{"title":265,"path":266,"description":267,"icon":268},"Browserbase","\u002Fdocs\u002Fvite\u002Fbrowser\u002Fbrowserbase","Configure Browserbase for managed CDP sessions and session-aware browser calls.","i-lucide-orbit",{"title":270,"path":271,"description":272,"icon":259},"Playwright","\u002Fdocs\u002Fvite\u002Fbrowser\u002Fplaywright","Configure remote Playwright browser sessions over a WebSocket endpoint.",{"title":274,"path":275,"description":276,"icon":277,"children":278},"Sandbox","\u002Fdocs\u002Fvite\u002Fsandbox","Run isolated sandboxes on Cloudflare Durable Objects, Cloudflare Dynamic Workers, Vercel, Deno, Docker, or locally.","i-lucide-box",[279,282,286,289,294,299],{"title":85,"path":280,"description":281,"icon":88},"\u002Fdocs\u002Fvite\u002Fsandbox\u002Fcloudflare","Configure Cloudflare Sandbox on top of Durable Objects.",{"title":283,"path":284,"description":285,"icon":88},"Cloudflare Dynamic","\u002Fdocs\u002Fvite\u002Fsandbox\u002Fcloudflare-dynamic","Configure Cloudflare Dynamic Workers with the Worker Loader API.",{"title":148,"path":287,"description":288,"icon":151},"\u002Fdocs\u002Fvite\u002Fsandbox\u002Fvercel","Configure Vercel Sandbox and run isolated sandboxes on Vercel.",{"title":290,"path":291,"description":292,"icon":293},"Deno","\u002Fdocs\u002Fvite\u002Fsandbox\u002Fdeno","Configure Deno Sandbox and run isolated sandboxes on Deno Deploy.","i-simple-icons-deno",{"title":295,"path":296,"description":297,"icon":298},"Docker","\u002Fdocs\u002Fvite\u002Fsandbox\u002Fdocker","Configure Docker Sandbox and run isolated sandboxes locally.","i-simple-icons-docker",{"title":300,"path":301,"description":302,"icon":303},"Local","\u002Fdocs\u002Fvite\u002Fsandbox\u002Flocal","Run sandboxes locally with OS-level isolation using platform primitives.","i-lucide-monitor",{"title":305,"path":306,"description":307,"icon":308,"children":309},"Analytics","\u002Fdocs\u002Fvite\u002Fanalytics","Integrate explicit analytics backends with a small shared runtime API.","i-lucide-megaphone",[310,313],{"title":148,"path":311,"description":312,"icon":151},"\u002Fdocs\u002Fvite\u002Fanalytics\u002Fvercel","Configure Vercel Analytics through the official SDK and keep a small portable runtime API.",{"title":85,"path":314,"description":315,"icon":88},"\u002Fdocs\u002Fvite\u002Fanalytics\u002Fcloudflare","Configure first-party analytics ingestion on Cloudflare and query a semantic event shape on top of Analytics Engine slots.",{"title":317,"path":318,"children":319},"Nitro","\u002Fdocs\u002Fnitro",[320,329,340,345,352,361,396,401,416,427,436,445,460],{"title":13,"path":321,"description":15,"icon":16,"children":322},"\u002Fdocs\u002Fnitro\u002Fgetting-started",[323,325,327],{"title":19,"path":324,"description":21},"\u002Fdocs\u002Fnitro\u002Fgetting-started\u002Fchoose-a-package",{"title":23,"path":326,"description":25},"\u002Fdocs\u002Fnitro\u002Fgetting-started\u002Fentrypoints",{"title":27,"path":328,"description":29},"\u002Fdocs\u002Fnitro\u002Fgetting-started\u002Farchitecture",{"title":31,"path":330,"description":33,"icon":34,"children":331},"\u002Fdocs\u002Fnitro\u002Fdatabase",[332,334,336,338],{"title":37,"path":333,"description":39},"\u002Fdocs\u002Fnitro\u002Fdatabase\u002Fdrizzle",{"title":41,"path":335,"description":43},"\u002Fdocs\u002Fnitro\u002Fdatabase\u002Fprisma",{"title":45,"path":337,"description":47},"\u002Fdocs\u002Fnitro\u002Fdatabase\u002Fmigrations",{"title":49,"path":339,"description":51},"\u002Fdocs\u002Fnitro\u002Fdatabase\u002Fplatform-notes",{"title":53,"path":341,"description":55,"icon":56,"children":342},"\u002Fdocs\u002Fnitro\u002Fkv",[343],{"title":59,"path":344,"description":61,"icon":62},"\u002Fdocs\u002Fnitro\u002Fkv\u002Fusage",{"title":64,"path":346,"description":66,"icon":67,"children":347},"\u002Fdocs\u002Fnitro\u002Fblob",[348,350],{"title":70,"path":349,"description":72,"icon":73},"\u002Fdocs\u002Fnitro\u002Fblob\u002Fupload",{"title":75,"path":351,"description":77,"icon":62},"\u002Fdocs\u002Fnitro\u002Fblob\u002Fusage",{"title":79,"path":353,"description":81,"icon":82,"children":354},"\u002Fdocs\u002Fnitro\u002Fvector",[355,357,359],{"title":85,"path":356,"description":87,"icon":88,"group":89},"\u002Fdocs\u002Fnitro\u002Fvector\u002Fcloudflare",{"title":91,"path":358,"description":93,"icon":94,"group":89},"\u002Fdocs\u002Fnitro\u002Fvector\u002Fpostgres",{"title":96,"path":360,"description":98,"icon":99,"group":89},"\u002Fdocs\u002Fnitro\u002Fvector\u002Fupstash",{"title":101,"path":362,"description":103,"icon":104,"children":363},"\u002Fdocs\u002Fnitro\u002Fqueue",[364,366,368,370,372,374,376,378,380,382,384,386,388,390,392,394],{"title":107,"path":365,"description":109},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fquickstart",{"title":111,"path":367,"description":113},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fruntime-api",{"title":115,"path":369,"description":117},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fwhen-to-use",{"title":119,"path":371,"description":121,"group":122},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fguides\u002Fsend-a-job",{"title":124,"path":373,"description":126,"group":122},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fguides\u002Fdefer-after-response",{"title":128,"path":375,"description":130,"group":122},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fguides\u002Fvalidate-payloads",{"title":132,"path":377,"description":134,"group":122},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fguides\u002Flocal-development",{"title":136,"path":379,"description":138,"group":122},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fguides\u002Fnative-handles",{"title":140,"path":381,"description":142,"icon":143,"group":89},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fproviders\u002Fplatformatic",{"title":85,"path":383,"description":146,"icon":88,"group":89},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fproviders\u002Fcloudflare",{"title":148,"path":385,"description":150,"icon":151,"group":89},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fproviders\u002Fvercel",{"title":153,"path":387,"description":155,"icon":156,"group":89},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fproviders\u002Fnetlify",{"title":158,"path":389,"description":160,"icon":99,"group":89},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fproviders\u002Fupstash-qstash",{"title":162,"path":391,"description":164,"icon":165,"group":89},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fproviders\u002Fmemory",{"title":167,"path":393,"description":169},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Ftroubleshooting",{"title":171,"path":395,"description":173},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fplayground",{"title":175,"path":397,"description":177,"icon":178,"children":398},"\u002Fdocs\u002Fnitro\u002Fcache",[399],{"title":59,"path":400,"description":182,"icon":62},"\u002Fdocs\u002Fnitro\u002Fcache\u002Fusage",{"title":184,"path":402,"description":186,"icon":187,"children":403},"\u002Fdocs\u002Fnitro\u002Femail",[404,406,408,410,412,414],{"title":190,"path":405,"description":192,"icon":193},"\u002Fdocs\u002Fnitro\u002Femail\u002Ffrontmatter",{"title":195,"path":407,"description":197,"icon":198},"\u002Fdocs\u002Fnitro\u002Femail\u002Finput-schemas",{"title":200,"path":409,"description":202,"icon":203},"\u002Fdocs\u002Fnitro\u002Femail\u002Fi18n",{"title":205,"path":411,"description":207,"icon":208,"group":89},"\u002Fdocs\u002Fnitro\u002Femail\u002Fresend",{"title":210,"path":413,"description":212,"icon":213,"group":89},"\u002Fdocs\u002Fnitro\u002Femail\u002Fsendgrid",{"title":215,"path":415,"description":217,"icon":218,"group":89},"\u002Fdocs\u002Fnitro\u002Femail\u002Fpostmark",{"title":220,"path":417,"description":222,"icon":223,"children":418},"\u002Fdocs\u002Fnitro\u002Fworkflow",[419,421,423,425],{"title":85,"path":420,"description":227,"icon":88},"\u002Fdocs\u002Fnitro\u002Fworkflow\u002Fcloudflare",{"title":148,"path":422,"description":230,"icon":151},"\u002Fdocs\u002Fnitro\u002Fworkflow\u002Fvercel",{"title":232,"path":424,"description":234,"icon":223},"\u002Fdocs\u002Fnitro\u002Fworkflow\u002Fopenworkflow",{"title":153,"path":426,"description":237,"icon":156},"\u002Fdocs\u002Fnitro\u002Fworkflow\u002Fnetlify",{"title":239,"path":428,"description":241,"icon":242,"children":429},"\u002Fdocs\u002Fnitro\u002Fcron",[430,432,434],{"title":245,"path":431,"description":247,"icon":248},"\u002Fdocs\u002Fnitro\u002Fcron\u002Fnode",{"title":85,"path":433,"description":251,"icon":88},"\u002Fdocs\u002Fnitro\u002Fcron\u002Fcloudflare",{"title":148,"path":435,"description":254,"icon":151},"\u002Fdocs\u002Fnitro\u002Fcron\u002Fvercel",{"title":256,"path":437,"description":258,"icon":259,"children":438},"\u002Fdocs\u002Fnitro\u002Fbrowser",[439,441,443],{"title":85,"path":440,"description":263,"icon":88},"\u002Fdocs\u002Fnitro\u002Fbrowser\u002Fcloudflare",{"title":265,"path":442,"description":267,"icon":268},"\u002Fdocs\u002Fnitro\u002Fbrowser\u002Fbrowserbase",{"title":270,"path":444,"description":272,"icon":259},"\u002Fdocs\u002Fnitro\u002Fbrowser\u002Fplaywright",{"title":274,"path":446,"description":276,"icon":277,"children":447},"\u002Fdocs\u002Fnitro\u002Fsandbox",[448,450,452,454,456,458],{"title":85,"path":449,"description":281,"icon":88},"\u002Fdocs\u002Fnitro\u002Fsandbox\u002Fcloudflare",{"title":283,"path":451,"description":285,"icon":88},"\u002Fdocs\u002Fnitro\u002Fsandbox\u002Fcloudflare-dynamic",{"title":148,"path":453,"description":288,"icon":151},"\u002Fdocs\u002Fnitro\u002Fsandbox\u002Fvercel",{"title":290,"path":455,"description":292,"icon":293},"\u002Fdocs\u002Fnitro\u002Fsandbox\u002Fdeno",{"title":295,"path":457,"description":297,"icon":298},"\u002Fdocs\u002Fnitro\u002Fsandbox\u002Fdocker",{"title":300,"path":459,"description":302,"icon":303},"\u002Fdocs\u002Fnitro\u002Fsandbox\u002Flocal",{"title":305,"path":461,"description":307,"icon":308,"children":462},"\u002Fdocs\u002Fnitro\u002Fanalytics",[463,465],{"title":148,"path":464,"description":312,"icon":151},"\u002Fdocs\u002Fnitro\u002Fanalytics\u002Fvercel",{"title":85,"path":466,"description":315,"icon":88},"\u002Fdocs\u002Fnitro\u002Fanalytics\u002Fcloudflare",{"title":468,"path":469,"children":470},"Nuxt","\u002Fdocs\u002Fnuxt",[471,480,491,496,503,512,547,552,567,578,587,596,611],{"title":13,"path":472,"description":15,"icon":16,"children":473},"\u002Fdocs\u002Fnuxt\u002Fgetting-started",[474,476,478],{"title":19,"path":475,"description":21},"\u002Fdocs\u002Fnuxt\u002Fgetting-started\u002Fchoose-a-package",{"title":23,"path":477,"description":25},"\u002Fdocs\u002Fnuxt\u002Fgetting-started\u002Fentrypoints",{"title":27,"path":479,"description":29},"\u002Fdocs\u002Fnuxt\u002Fgetting-started\u002Farchitecture",{"title":31,"path":481,"description":33,"icon":34,"children":482},"\u002Fdocs\u002Fnuxt\u002Fdatabase",[483,485,487,489],{"title":37,"path":484,"description":39},"\u002Fdocs\u002Fnuxt\u002Fdatabase\u002Fdrizzle",{"title":41,"path":486,"description":43},"\u002Fdocs\u002Fnuxt\u002Fdatabase\u002Fprisma",{"title":45,"path":488,"description":47},"\u002Fdocs\u002Fnuxt\u002Fdatabase\u002Fmigrations",{"title":49,"path":490,"description":51},"\u002Fdocs\u002Fnuxt\u002Fdatabase\u002Fplatform-notes",{"title":53,"path":492,"description":55,"icon":56,"children":493},"\u002Fdocs\u002Fnuxt\u002Fkv",[494],{"title":59,"path":495,"description":61,"icon":62},"\u002Fdocs\u002Fnuxt\u002Fkv\u002Fusage",{"title":64,"path":497,"description":66,"icon":67,"children":498},"\u002Fdocs\u002Fnuxt\u002Fblob",[499,501],{"title":70,"path":500,"description":72,"icon":73},"\u002Fdocs\u002Fnuxt\u002Fblob\u002Fupload",{"title":75,"path":502,"description":77,"icon":62},"\u002Fdocs\u002Fnuxt\u002Fblob\u002Fusage",{"title":79,"path":504,"description":81,"icon":82,"children":505},"\u002Fdocs\u002Fnuxt\u002Fvector",[506,508,510],{"title":85,"path":507,"description":87,"icon":88,"group":89},"\u002Fdocs\u002Fnuxt\u002Fvector\u002Fcloudflare",{"title":91,"path":509,"description":93,"icon":94,"group":89},"\u002Fdocs\u002Fnuxt\u002Fvector\u002Fpostgres",{"title":96,"path":511,"description":98,"icon":99,"group":89},"\u002Fdocs\u002Fnuxt\u002Fvector\u002Fupstash",{"title":101,"path":513,"description":103,"icon":104,"children":514},"\u002Fdocs\u002Fnuxt\u002Fqueue",[515,517,519,521,523,525,527,529,531,533,535,537,539,541,543,545],{"title":107,"path":516,"description":109},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fquickstart",{"title":111,"path":518,"description":113},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fruntime-api",{"title":115,"path":520,"description":117},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fwhen-to-use",{"title":119,"path":522,"description":121,"group":122},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fguides\u002Fsend-a-job",{"title":124,"path":524,"description":126,"group":122},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fguides\u002Fdefer-after-response",{"title":128,"path":526,"description":130,"group":122},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fguides\u002Fvalidate-payloads",{"title":132,"path":528,"description":134,"group":122},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fguides\u002Flocal-development",{"title":136,"path":530,"description":138,"group":122},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fguides\u002Fnative-handles",{"title":140,"path":532,"description":142,"icon":143,"group":89},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fproviders\u002Fplatformatic",{"title":85,"path":534,"description":146,"icon":88,"group":89},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fproviders\u002Fcloudflare",{"title":148,"path":536,"description":150,"icon":151,"group":89},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fproviders\u002Fvercel",{"title":153,"path":538,"description":155,"icon":156,"group":89},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fproviders\u002Fnetlify",{"title":158,"path":540,"description":160,"icon":99,"group":89},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fproviders\u002Fupstash-qstash",{"title":162,"path":542,"description":164,"icon":165,"group":89},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fproviders\u002Fmemory",{"title":167,"path":544,"description":169},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Ftroubleshooting",{"title":171,"path":546,"description":173},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fplayground",{"title":175,"path":548,"description":177,"icon":178,"children":549},"\u002Fdocs\u002Fnuxt\u002Fcache",[550],{"title":59,"path":551,"description":182,"icon":62},"\u002Fdocs\u002Fnuxt\u002Fcache\u002Fusage",{"title":184,"path":553,"description":186,"icon":187,"children":554},"\u002Fdocs\u002Fnuxt\u002Femail",[555,557,559,561,563,565],{"title":190,"path":556,"description":192,"icon":193},"\u002Fdocs\u002Fnuxt\u002Femail\u002Ffrontmatter",{"title":195,"path":558,"description":197,"icon":198},"\u002Fdocs\u002Fnuxt\u002Femail\u002Finput-schemas",{"title":200,"path":560,"description":202,"icon":203},"\u002Fdocs\u002Fnuxt\u002Femail\u002Fi18n",{"title":205,"path":562,"description":207,"icon":208,"group":89},"\u002Fdocs\u002Fnuxt\u002Femail\u002Fresend",{"title":210,"path":564,"description":212,"icon":213,"group":89},"\u002Fdocs\u002Fnuxt\u002Femail\u002Fsendgrid",{"title":215,"path":566,"description":217,"icon":218,"group":89},"\u002Fdocs\u002Fnuxt\u002Femail\u002Fpostmark",{"title":220,"path":568,"description":222,"icon":223,"children":569},"\u002Fdocs\u002Fnuxt\u002Fworkflow",[570,572,574,576],{"title":85,"path":571,"description":227,"icon":88},"\u002Fdocs\u002Fnuxt\u002Fworkflow\u002Fcloudflare",{"title":148,"path":573,"description":230,"icon":151},"\u002Fdocs\u002Fnuxt\u002Fworkflow\u002Fvercel",{"title":232,"path":575,"description":234,"icon":223},"\u002Fdocs\u002Fnuxt\u002Fworkflow\u002Fopenworkflow",{"title":153,"path":577,"description":237,"icon":156},"\u002Fdocs\u002Fnuxt\u002Fworkflow\u002Fnetlify",{"title":239,"path":579,"description":241,"icon":242,"children":580},"\u002Fdocs\u002Fnuxt\u002Fcron",[581,583,585],{"title":245,"path":582,"description":247,"icon":248},"\u002Fdocs\u002Fnuxt\u002Fcron\u002Fnode",{"title":85,"path":584,"description":251,"icon":88},"\u002Fdocs\u002Fnuxt\u002Fcron\u002Fcloudflare",{"title":148,"path":586,"description":254,"icon":151},"\u002Fdocs\u002Fnuxt\u002Fcron\u002Fvercel",{"title":256,"path":588,"description":258,"icon":259,"children":589},"\u002Fdocs\u002Fnuxt\u002Fbrowser",[590,592,594],{"title":85,"path":591,"description":263,"icon":88},"\u002Fdocs\u002Fnuxt\u002Fbrowser\u002Fcloudflare",{"title":265,"path":593,"description":267,"icon":268},"\u002Fdocs\u002Fnuxt\u002Fbrowser\u002Fbrowserbase",{"title":270,"path":595,"description":272,"icon":259},"\u002Fdocs\u002Fnuxt\u002Fbrowser\u002Fplaywright",{"title":274,"path":597,"description":276,"icon":277,"children":598},"\u002Fdocs\u002Fnuxt\u002Fsandbox",[599,601,603,605,607,609],{"title":85,"path":600,"description":281,"icon":88},"\u002Fdocs\u002Fnuxt\u002Fsandbox\u002Fcloudflare",{"title":283,"path":602,"description":285,"icon":88},"\u002Fdocs\u002Fnuxt\u002Fsandbox\u002Fcloudflare-dynamic",{"title":148,"path":604,"description":288,"icon":151},"\u002Fdocs\u002Fnuxt\u002Fsandbox\u002Fvercel",{"title":290,"path":606,"description":292,"icon":293},"\u002Fdocs\u002Fnuxt\u002Fsandbox\u002Fdeno",{"title":295,"path":608,"description":297,"icon":298},"\u002Fdocs\u002Fnuxt\u002Fsandbox\u002Fdocker",{"title":300,"path":610,"description":302,"icon":303},"\u002Fdocs\u002Fnuxt\u002Fsandbox\u002Flocal",{"title":305,"path":612,"description":307,"icon":308,"children":613},"\u002Fdocs\u002Fnuxt\u002Fanalytics",[614,616],{"title":148,"path":615,"description":312,"icon":151},"\u002Fdocs\u002Fnuxt\u002Fanalytics\u002Fvercel",{"title":85,"path":617,"description":315,"icon":88},"\u002Fdocs\u002Fnuxt\u002Fanalytics\u002Fcloudflare",{"id":619,"title":220,"body":620,"description":222,"extension":2720,"meta":2721,"navigation":2722,"path":568,"seo":2724,"stem":2725,"__hash__":2726},"docs\u002Fdocs\u002Fnuxt\u002Fworkflow\u002Findex.md",{"type":621,"value":622,"toc":2701},"minimark",[623,627,651,656,1897,1915,1919,1930,2037,2041,2057,2068,2078,2082,2086,2089,2183,2188,2191,2285,2291,2300,2330,2336,2344,2429,2435,2507,2511,2514,2544,2555,2563,2571,2641,2683,2697],[624,625,626],"p",{},"Use Workflow to run durable server-side processes that can pause, retry, checkpoint, and outlive a single request.",[628,629,631],"fw",{"id":630},"nuxt",[624,632,633,634,638,639,642,643,646,647,650],{},"Create workflow files under ",[635,636,637],"code",{},"server\u002Fworkflows\u002F"," with ",[635,640,641],{},"defineWorkflow(handler, options?)",". Start them with ",[635,644,645],{},"runWorkflow()",". When your provider supports it, use ",[635,648,649],{},"getWorkflowRun()"," later to check the same run again.",[652,653,655],"h2",{"id":654},"getting-started","Getting started",[657,658,660,665,753,757,768,1008,1012,1025,1316,1320,1701,1705,1708],"steps",{"level":659},"3",[661,662,664],"h3",{"id":663},"install-the-package","Install the package",[666,667,669,698,717,735],"tabs",{"sync":668},"workflow-provider-install",[670,671,672],"tabs-item",{"icon":88,"label":85},[673,674,680],"pre",{"className":675,"code":676,"filename":677,"language":678,"meta":679,"style":679},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add https:\u002F\u002Fpkg.pr.new\u002Fvite-hub\u002Fvitehub\u002F@vitehub\u002Fworkflow@main\n","Terminal","bash","",[635,681,682],{"__ignoreMap":679},[683,684,687,691,695],"span",{"class":685,"line":686},"line",1,[683,688,690],{"class":689},"sBMFI","pnpm",[683,692,694],{"class":693},"sfazB"," add",[683,696,697],{"class":693}," https:\u002F\u002Fpkg.pr.new\u002Fvite-hub\u002Fvitehub\u002F@vitehub\u002Fworkflow@main\n",[670,699,700],{"icon":151,"label":148},[673,701,703],{"className":675,"code":702,"filename":677,"language":678,"meta":679,"style":679},"pnpm add https:\u002F\u002Fpkg.pr.new\u002Fvite-hub\u002Fvitehub\u002F@vitehub\u002Fworkflow@main workflow\n",[635,704,705],{"__ignoreMap":679},[683,706,707,709,711,714],{"class":685,"line":686},[683,708,690],{"class":689},[683,710,694],{"class":693},[683,712,713],{"class":693}," https:\u002F\u002Fpkg.pr.new\u002Fvite-hub\u002Fvitehub\u002F@vitehub\u002Fworkflow@main",[683,715,716],{"class":693}," workflow\n",[670,718,719],{"icon":156,"label":153},[673,720,722],{"className":675,"code":721,"filename":677,"language":678,"meta":679,"style":679},"pnpm add https:\u002F\u002Fpkg.pr.new\u002Fvite-hub\u002Fvitehub\u002F@vitehub\u002Fworkflow@main @netlify\u002Fasync-workloads\n",[635,723,724],{"__ignoreMap":679},[683,725,726,728,730,732],{"class":685,"line":686},[683,727,690],{"class":689},[683,729,694],{"class":693},[683,731,713],{"class":693},[683,733,734],{"class":693}," @netlify\u002Fasync-workloads\n",[670,736,737],{"icon":223,"label":232},[673,738,740],{"className":675,"code":739,"filename":677,"language":678,"meta":679,"style":679},"pnpm add https:\u002F\u002Fpkg.pr.new\u002Fvite-hub\u002Fvitehub\u002F@vitehub\u002Fworkflow@main openworkflow\n",[635,741,742],{"__ignoreMap":679},[683,743,744,746,748,750],{"class":685,"line":686},[683,745,690],{"class":689},[683,747,694],{"class":693},[683,749,713],{"class":693},[683,751,752],{"class":693}," openworkflow\n",[661,754,756],{"id":755},"configure-a-provider","Configure a provider",[624,758,759,760,763,764,767],{},"On Cloudflare, Netlify, and Vercel, ViteHub usually picks the workflow provider automatically from the hosting platform. Set ",[635,761,762],{},"workflow.provider"," when you want to override that choice or when you use OpenWorkflow. On Cloudflare, set ",[635,765,766],{},"workflow.binding"," only when you need a different binding name or you want to pass the binding object directly.",[666,769,771,840,884,928],{"sync":770},"workflow-provider",[670,772,773],{"icon":88,"label":85},[628,774,775],{"id":630},[673,776,781],{"className":777,"code":778,"filename":779,"language":780,"meta":679,"style":679},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  modules: ['@vitehub\u002Fworkflow\u002Fnuxt'],\n})\n","nuxt.config.ts","ts",[635,782,783,804,831],{"__ignoreMap":679},[683,784,785,789,792,796,800],{"class":685,"line":686},[683,786,788],{"class":787},"s7zQu","export",[683,790,791],{"class":787}," default",[683,793,795],{"class":794},"s2Zo4"," defineNuxtConfig",[683,797,799],{"class":798},"sTEyZ","(",[683,801,803],{"class":802},"sMK4o","{\n",[683,805,807,811,814,817,820,823,825,828],{"class":685,"line":806},2,[683,808,810],{"class":809},"swJcz","  modules",[683,812,813],{"class":802},":",[683,815,816],{"class":798}," [",[683,818,819],{"class":802},"'",[683,821,822],{"class":693},"@vitehub\u002Fworkflow\u002Fnuxt",[683,824,819],{"class":802},[683,826,827],{"class":798},"]",[683,829,830],{"class":802},",\n",[683,832,834,837],{"class":685,"line":833},3,[683,835,836],{"class":802},"}",[683,838,839],{"class":798},")\n",[670,841,842],{"icon":151,"label":148},[628,843,844],{"id":630},[673,845,846],{"className":777,"code":778,"filename":779,"language":780,"meta":679,"style":679},[635,847,848,860,878],{"__ignoreMap":679},[683,849,850,852,854,856,858],{"class":685,"line":686},[683,851,788],{"class":787},[683,853,791],{"class":787},[683,855,795],{"class":794},[683,857,799],{"class":798},[683,859,803],{"class":802},[683,861,862,864,866,868,870,872,874,876],{"class":685,"line":806},[683,863,810],{"class":809},[683,865,813],{"class":802},[683,867,816],{"class":798},[683,869,819],{"class":802},[683,871,822],{"class":693},[683,873,819],{"class":802},[683,875,827],{"class":798},[683,877,830],{"class":802},[683,879,880,882],{"class":685,"line":833},[683,881,836],{"class":802},[683,883,839],{"class":798},[670,885,886],{"icon":156,"label":153},[628,887,888],{"id":630},[673,889,890],{"className":777,"code":778,"filename":779,"language":780,"meta":679,"style":679},[635,891,892,904,922],{"__ignoreMap":679},[683,893,894,896,898,900,902],{"class":685,"line":686},[683,895,788],{"class":787},[683,897,791],{"class":787},[683,899,795],{"class":794},[683,901,799],{"class":798},[683,903,803],{"class":802},[683,905,906,908,910,912,914,916,918,920],{"class":685,"line":806},[683,907,810],{"class":809},[683,909,813],{"class":802},[683,911,816],{"class":798},[683,913,819],{"class":802},[683,915,822],{"class":693},[683,917,819],{"class":802},[683,919,827],{"class":798},[683,921,830],{"class":802},[683,923,924,926],{"class":685,"line":833},[683,925,836],{"class":802},[683,927,839],{"class":798},[670,929,930],{"icon":223,"label":232},[628,931,932],{"id":630},[673,933,935],{"className":777,"code":934,"filename":779,"language":780,"meta":679,"style":679},"export default defineNuxtConfig({\n  modules: ['@vitehub\u002Fworkflow\u002Fnuxt'],\n  workflow: {\n    provider: 'openworkflow',\n  },\n})\n",[635,936,937,949,967,977,995,1001],{"__ignoreMap":679},[683,938,939,941,943,945,947],{"class":685,"line":686},[683,940,788],{"class":787},[683,942,791],{"class":787},[683,944,795],{"class":794},[683,946,799],{"class":798},[683,948,803],{"class":802},[683,950,951,953,955,957,959,961,963,965],{"class":685,"line":806},[683,952,810],{"class":809},[683,954,813],{"class":802},[683,956,816],{"class":798},[683,958,819],{"class":802},[683,960,822],{"class":693},[683,962,819],{"class":802},[683,964,827],{"class":798},[683,966,830],{"class":802},[683,968,969,972,974],{"class":685,"line":833},[683,970,971],{"class":809},"  workflow",[683,973,813],{"class":802},[683,975,976],{"class":802}," {\n",[683,978,980,983,985,988,991,993],{"class":685,"line":979},4,[683,981,982],{"class":809},"    provider",[683,984,813],{"class":802},[683,986,987],{"class":802}," '",[683,989,990],{"class":693},"openworkflow",[683,992,819],{"class":802},[683,994,830],{"class":802},[683,996,998],{"class":685,"line":997},5,[683,999,1000],{"class":802},"  },\n",[683,1002,1004,1006],{"class":685,"line":1003},6,[683,1005,836],{"class":802},[683,1007,839],{"class":798},[661,1009,1011],{"id":1010},"define-a-workflow","Define a workflow",[628,1013,1014],{"id":630},[624,1015,1016,1017,1020,1021,1024],{},"Create the workflow file for the job you want to run. ViteHub uses the file path as the workflow name, so ",[635,1018,1019],{},"server\u002Fworkflows\u002Fpublish-draft.ts"," registers ",[635,1022,1023],{},"publish-draft",".",[628,1026,1027],{"id":630},[673,1028,1030],{"className":777,"code":1029,"filename":1019,"language":780,"meta":679,"style":679},"import { defineWorkflow, readValidatedPayload } from '@vitehub\u002Fworkflow'\n\nexport default defineWorkflow(async (input?: { title?: string }) => {\n  const { title } = await readValidatedPayload(input, value => ({\n    title: typeof value?.title === 'string' && value.title.trim()\n      ? value.title.trim()\n      : 'Untitled draft',\n  }))\n\n  return {\n    title,\n    slug: title.toLowerCase().replace(\u002F[^a-z0-9]+\u002Fg, '-'),\n  }\n})\n",[635,1031,1032,1063,1069,1111,1145,1190,1207,1222,1231,1236,1244,1251,1303,1309],{"__ignoreMap":679},[683,1033,1034,1037,1040,1043,1046,1049,1052,1055,1057,1060],{"class":685,"line":686},[683,1035,1036],{"class":787},"import",[683,1038,1039],{"class":802}," {",[683,1041,1042],{"class":798}," defineWorkflow",[683,1044,1045],{"class":802},",",[683,1047,1048],{"class":798}," readValidatedPayload",[683,1050,1051],{"class":802}," }",[683,1053,1054],{"class":787}," from",[683,1056,987],{"class":802},[683,1058,1059],{"class":693},"@vitehub\u002Fworkflow",[683,1061,1062],{"class":802},"'\n",[683,1064,1065],{"class":685,"line":806},[683,1066,1068],{"emptyLinePlaceholder":1067},true,"\n",[683,1070,1071,1073,1075,1077,1079,1083,1086,1090,1093,1095,1098,1100,1103,1106,1109],{"class":685,"line":833},[683,1072,788],{"class":787},[683,1074,791],{"class":787},[683,1076,1042],{"class":794},[683,1078,799],{"class":798},[683,1080,1082],{"class":1081},"spNyl","async",[683,1084,1085],{"class":802}," (",[683,1087,1089],{"class":1088},"sHdIc","input",[683,1091,1092],{"class":802},"?:",[683,1094,1039],{"class":802},[683,1096,1097],{"class":809}," title",[683,1099,1092],{"class":802},[683,1101,1102],{"class":689}," string",[683,1104,1105],{"class":802}," })",[683,1107,1108],{"class":1081}," =>",[683,1110,976],{"class":802},[683,1112,1113,1116,1118,1120,1122,1125,1128,1130,1132,1134,1136,1139,1141,1143],{"class":685,"line":979},[683,1114,1115],{"class":1081},"  const",[683,1117,1039],{"class":802},[683,1119,1097],{"class":798},[683,1121,1051],{"class":802},[683,1123,1124],{"class":802}," =",[683,1126,1127],{"class":787}," await",[683,1129,1048],{"class":794},[683,1131,799],{"class":809},[683,1133,1089],{"class":798},[683,1135,1045],{"class":802},[683,1137,1138],{"class":1088}," value",[683,1140,1108],{"class":1081},[683,1142,1085],{"class":809},[683,1144,803],{"class":802},[683,1146,1147,1150,1152,1155,1157,1160,1163,1166,1168,1171,1173,1176,1178,1180,1182,1184,1187],{"class":685,"line":997},[683,1148,1149],{"class":809},"    title",[683,1151,813],{"class":802},[683,1153,1154],{"class":802}," typeof",[683,1156,1138],{"class":798},[683,1158,1159],{"class":802},"?.",[683,1161,1162],{"class":798},"title",[683,1164,1165],{"class":802}," ===",[683,1167,987],{"class":802},[683,1169,1170],{"class":693},"string",[683,1172,819],{"class":802},[683,1174,1175],{"class":802}," &&",[683,1177,1138],{"class":798},[683,1179,1024],{"class":802},[683,1181,1162],{"class":798},[683,1183,1024],{"class":802},[683,1185,1186],{"class":794},"trim",[683,1188,1189],{"class":809},"()\n",[683,1191,1192,1195,1197,1199,1201,1203,1205],{"class":685,"line":1003},[683,1193,1194],{"class":802},"      ?",[683,1196,1138],{"class":798},[683,1198,1024],{"class":802},[683,1200,1162],{"class":798},[683,1202,1024],{"class":802},[683,1204,1186],{"class":794},[683,1206,1189],{"class":809},[683,1208,1210,1213,1215,1218,1220],{"class":685,"line":1209},7,[683,1211,1212],{"class":802},"      :",[683,1214,987],{"class":802},[683,1216,1217],{"class":693},"Untitled draft",[683,1219,819],{"class":802},[683,1221,830],{"class":802},[683,1223,1225,1228],{"class":685,"line":1224},8,[683,1226,1227],{"class":802},"  }",[683,1229,1230],{"class":809},"))\n",[683,1232,1234],{"class":685,"line":1233},9,[683,1235,1068],{"emptyLinePlaceholder":1067},[683,1237,1239,1242],{"class":685,"line":1238},10,[683,1240,1241],{"class":787},"  return",[683,1243,976],{"class":802},[683,1245,1247,1249],{"class":685,"line":1246},11,[683,1248,1149],{"class":798},[683,1250,830],{"class":802},[683,1252,1254,1257,1259,1261,1263,1266,1269,1271,1274,1276,1279,1282,1285,1289,1291,1293,1296,1298,1301],{"class":685,"line":1253},12,[683,1255,1256],{"class":809},"    slug",[683,1258,813],{"class":802},[683,1260,1097],{"class":798},[683,1262,1024],{"class":802},[683,1264,1265],{"class":794},"toLowerCase",[683,1267,1268],{"class":809},"()",[683,1270,1024],{"class":802},[683,1272,1273],{"class":794},"replace",[683,1275,799],{"class":809},[683,1277,1278],{"class":802},"\u002F[^",[683,1280,1281],{"class":693},"a-z0-9",[683,1283,1284],{"class":802},"]+\u002F",[683,1286,1288],{"class":1287},"sbssI","g",[683,1290,1045],{"class":802},[683,1292,987],{"class":802},[683,1294,1295],{"class":693},"-",[683,1297,819],{"class":802},[683,1299,1300],{"class":809},")",[683,1302,830],{"class":802},[683,1304,1306],{"class":685,"line":1305},13,[683,1307,1308],{"class":802},"  }\n",[683,1310,1312,1314],{"class":685,"line":1311},14,[683,1313,836],{"class":802},[683,1315,839],{"class":798},[661,1317,1319],{"id":1318},"start-a-run","Start a run",[628,1321,1322],{"id":630},[673,1323,1326],{"className":777,"code":1324,"filename":1325,"language":780,"meta":679,"style":679},"import { createError, readBody } from 'h3'\nimport { readValidatedPayload, runWorkflow } from '@vitehub\u002Fworkflow'\n\nexport default defineEventHandler(async (event) => {\n  const { title } = await readValidatedPayload(await readBody(event), (input) => {\n    if (!input || typeof input !== 'object' || typeof input.title !== 'string' || !input.title.trim()) {\n      throw createError({\n        statusCode: 400,\n        statusMessage: 'Enter a title for the draft.',\n      })\n    }\n\n    return {\n      title: input.title.trim(),\n    }\n  })\n  const run = await runWorkflow('publish-draft', { title })\n\n  return {\n    runId: run.id,\n    status: await run.status(),\n  }\n})\n","server\u002Fapi\u002Fworkflows\u002Fpublish.post.ts",[635,1327,1328,1352,1375,1379,1403,1444,1512,1523,1535,1551,1558,1563,1567,1574,1595,1600,1607,1639,1644,1651,1668,1689,1694],{"__ignoreMap":679},[683,1329,1330,1332,1334,1337,1339,1342,1344,1346,1348,1350],{"class":685,"line":686},[683,1331,1036],{"class":787},[683,1333,1039],{"class":802},[683,1335,1336],{"class":798}," createError",[683,1338,1045],{"class":802},[683,1340,1341],{"class":798}," readBody",[683,1343,1051],{"class":802},[683,1345,1054],{"class":787},[683,1347,987],{"class":802},[683,1349,661],{"class":693},[683,1351,1062],{"class":802},[683,1353,1354,1356,1358,1360,1362,1365,1367,1369,1371,1373],{"class":685,"line":806},[683,1355,1036],{"class":787},[683,1357,1039],{"class":802},[683,1359,1048],{"class":798},[683,1361,1045],{"class":802},[683,1363,1364],{"class":798}," runWorkflow",[683,1366,1051],{"class":802},[683,1368,1054],{"class":787},[683,1370,987],{"class":802},[683,1372,1059],{"class":693},[683,1374,1062],{"class":802},[683,1376,1377],{"class":685,"line":833},[683,1378,1068],{"emptyLinePlaceholder":1067},[683,1380,1381,1383,1385,1388,1390,1392,1394,1397,1399,1401],{"class":685,"line":979},[683,1382,788],{"class":787},[683,1384,791],{"class":787},[683,1386,1387],{"class":794}," defineEventHandler",[683,1389,799],{"class":798},[683,1391,1082],{"class":1081},[683,1393,1085],{"class":802},[683,1395,1396],{"class":1088},"event",[683,1398,1300],{"class":802},[683,1400,1108],{"class":1081},[683,1402,976],{"class":802},[683,1404,1405,1407,1409,1411,1413,1415,1417,1419,1421,1424,1426,1428,1430,1432,1434,1436,1438,1440,1442],{"class":685,"line":997},[683,1406,1115],{"class":1081},[683,1408,1039],{"class":802},[683,1410,1097],{"class":798},[683,1412,1051],{"class":802},[683,1414,1124],{"class":802},[683,1416,1127],{"class":787},[683,1418,1048],{"class":794},[683,1420,799],{"class":809},[683,1422,1423],{"class":787},"await",[683,1425,1341],{"class":794},[683,1427,799],{"class":809},[683,1429,1396],{"class":798},[683,1431,1300],{"class":809},[683,1433,1045],{"class":802},[683,1435,1085],{"class":802},[683,1437,1089],{"class":1088},[683,1439,1300],{"class":802},[683,1441,1108],{"class":1081},[683,1443,976],{"class":802},[683,1445,1446,1449,1451,1454,1456,1459,1461,1464,1467,1469,1472,1474,1476,1478,1480,1482,1484,1486,1488,1490,1492,1494,1497,1499,1501,1503,1505,1507,1510],{"class":685,"line":1003},[683,1447,1448],{"class":787},"    if",[683,1450,1085],{"class":809},[683,1452,1453],{"class":802},"!",[683,1455,1089],{"class":798},[683,1457,1458],{"class":802}," ||",[683,1460,1154],{"class":802},[683,1462,1463],{"class":798}," input",[683,1465,1466],{"class":802}," !==",[683,1468,987],{"class":802},[683,1470,1471],{"class":693},"object",[683,1473,819],{"class":802},[683,1475,1458],{"class":802},[683,1477,1154],{"class":802},[683,1479,1463],{"class":798},[683,1481,1024],{"class":802},[683,1483,1162],{"class":798},[683,1485,1466],{"class":802},[683,1487,987],{"class":802},[683,1489,1170],{"class":693},[683,1491,819],{"class":802},[683,1493,1458],{"class":802},[683,1495,1496],{"class":802}," !",[683,1498,1089],{"class":798},[683,1500,1024],{"class":802},[683,1502,1162],{"class":798},[683,1504,1024],{"class":802},[683,1506,1186],{"class":794},[683,1508,1509],{"class":809},"()) ",[683,1511,803],{"class":802},[683,1513,1514,1517,1519,1521],{"class":685,"line":1209},[683,1515,1516],{"class":787},"      throw",[683,1518,1336],{"class":794},[683,1520,799],{"class":809},[683,1522,803],{"class":802},[683,1524,1525,1528,1530,1533],{"class":685,"line":1224},[683,1526,1527],{"class":809},"        statusCode",[683,1529,813],{"class":802},[683,1531,1532],{"class":1287}," 400",[683,1534,830],{"class":802},[683,1536,1537,1540,1542,1544,1547,1549],{"class":685,"line":1233},[683,1538,1539],{"class":809},"        statusMessage",[683,1541,813],{"class":802},[683,1543,987],{"class":802},[683,1545,1546],{"class":693},"Enter a title for the draft.",[683,1548,819],{"class":802},[683,1550,830],{"class":802},[683,1552,1553,1556],{"class":685,"line":1238},[683,1554,1555],{"class":802},"      }",[683,1557,839],{"class":809},[683,1559,1560],{"class":685,"line":1246},[683,1561,1562],{"class":802},"    }\n",[683,1564,1565],{"class":685,"line":1253},[683,1566,1068],{"emptyLinePlaceholder":1067},[683,1568,1569,1572],{"class":685,"line":1305},[683,1570,1571],{"class":787},"    return",[683,1573,976],{"class":802},[683,1575,1576,1579,1581,1583,1585,1587,1589,1591,1593],{"class":685,"line":1311},[683,1577,1578],{"class":809},"      title",[683,1580,813],{"class":802},[683,1582,1463],{"class":798},[683,1584,1024],{"class":802},[683,1586,1162],{"class":798},[683,1588,1024],{"class":802},[683,1590,1186],{"class":794},[683,1592,1268],{"class":809},[683,1594,830],{"class":802},[683,1596,1598],{"class":685,"line":1597},15,[683,1599,1562],{"class":802},[683,1601,1603,1605],{"class":685,"line":1602},16,[683,1604,1227],{"class":802},[683,1606,839],{"class":809},[683,1608,1610,1612,1615,1617,1619,1621,1623,1625,1627,1629,1631,1633,1635,1637],{"class":685,"line":1609},17,[683,1611,1115],{"class":1081},[683,1613,1614],{"class":798}," run",[683,1616,1124],{"class":802},[683,1618,1127],{"class":787},[683,1620,1364],{"class":794},[683,1622,799],{"class":809},[683,1624,819],{"class":802},[683,1626,1023],{"class":693},[683,1628,819],{"class":802},[683,1630,1045],{"class":802},[683,1632,1039],{"class":802},[683,1634,1097],{"class":798},[683,1636,1051],{"class":802},[683,1638,839],{"class":809},[683,1640,1642],{"class":685,"line":1641},18,[683,1643,1068],{"emptyLinePlaceholder":1067},[683,1645,1647,1649],{"class":685,"line":1646},19,[683,1648,1241],{"class":787},[683,1650,976],{"class":802},[683,1652,1654,1657,1659,1661,1663,1666],{"class":685,"line":1653},20,[683,1655,1656],{"class":809},"    runId",[683,1658,813],{"class":802},[683,1660,1614],{"class":798},[683,1662,1024],{"class":802},[683,1664,1665],{"class":798},"id",[683,1667,830],{"class":802},[683,1669,1671,1674,1676,1678,1680,1682,1685,1687],{"class":685,"line":1670},21,[683,1672,1673],{"class":809},"    status",[683,1675,813],{"class":802},[683,1677,1127],{"class":787},[683,1679,1614],{"class":798},[683,1681,1024],{"class":802},[683,1683,1684],{"class":794},"status",[683,1686,1268],{"class":809},[683,1688,830],{"class":802},[683,1690,1692],{"class":685,"line":1691},22,[683,1693,1308],{"class":802},[683,1695,1697,1699],{"class":685,"line":1696},23,[683,1698,836],{"class":802},[683,1700,839],{"class":798},[661,1702,1704],{"id":1703},"reattach-to-the-same-run-later","Reattach to the same run later",[624,1706,1707],{},"Persist or return the run id when you start a workflow. Use it later to check status or call provider-specific run methods.",[628,1709,1710],{"id":630},[673,1711,1714],{"className":777,"code":1712,"filename":1713,"language":780,"meta":679,"style":679},"import { getRouterParam } from 'h3'\nimport { getWorkflowRun } from '@vitehub\u002Fworkflow'\n\nexport default defineEventHandler(async (event) => {\n  const run = await getWorkflowRun(getRouterParam(event, 'id'))\n\n  if (!run)\n    return { found: false }\n\n  return {\n    found: true,\n    status: await run.status(),\n  }\n})\n","server\u002Fapi\u002Fworkflows\u002F[id].get.ts",[635,1715,1716,1735,1754,1758,1780,1811,1815,1829,1847,1851,1857,1869,1887,1891],{"__ignoreMap":679},[683,1717,1718,1720,1722,1725,1727,1729,1731,1733],{"class":685,"line":686},[683,1719,1036],{"class":787},[683,1721,1039],{"class":802},[683,1723,1724],{"class":798}," getRouterParam",[683,1726,1051],{"class":802},[683,1728,1054],{"class":787},[683,1730,987],{"class":802},[683,1732,661],{"class":693},[683,1734,1062],{"class":802},[683,1736,1737,1739,1741,1744,1746,1748,1750,1752],{"class":685,"line":806},[683,1738,1036],{"class":787},[683,1740,1039],{"class":802},[683,1742,1743],{"class":798}," getWorkflowRun",[683,1745,1051],{"class":802},[683,1747,1054],{"class":787},[683,1749,987],{"class":802},[683,1751,1059],{"class":693},[683,1753,1062],{"class":802},[683,1755,1756],{"class":685,"line":833},[683,1757,1068],{"emptyLinePlaceholder":1067},[683,1759,1760,1762,1764,1766,1768,1770,1772,1774,1776,1778],{"class":685,"line":979},[683,1761,788],{"class":787},[683,1763,791],{"class":787},[683,1765,1387],{"class":794},[683,1767,799],{"class":798},[683,1769,1082],{"class":1081},[683,1771,1085],{"class":802},[683,1773,1396],{"class":1088},[683,1775,1300],{"class":802},[683,1777,1108],{"class":1081},[683,1779,976],{"class":802},[683,1781,1782,1784,1786,1788,1790,1792,1794,1797,1799,1801,1803,1805,1807,1809],{"class":685,"line":997},[683,1783,1115],{"class":1081},[683,1785,1614],{"class":798},[683,1787,1124],{"class":802},[683,1789,1127],{"class":787},[683,1791,1743],{"class":794},[683,1793,799],{"class":809},[683,1795,1796],{"class":794},"getRouterParam",[683,1798,799],{"class":809},[683,1800,1396],{"class":798},[683,1802,1045],{"class":802},[683,1804,987],{"class":802},[683,1806,1665],{"class":693},[683,1808,819],{"class":802},[683,1810,1230],{"class":809},[683,1812,1813],{"class":685,"line":1003},[683,1814,1068],{"emptyLinePlaceholder":1067},[683,1816,1817,1820,1822,1824,1827],{"class":685,"line":1209},[683,1818,1819],{"class":787},"  if",[683,1821,1085],{"class":809},[683,1823,1453],{"class":802},[683,1825,1826],{"class":798},"run",[683,1828,839],{"class":809},[683,1830,1831,1833,1835,1838,1840,1844],{"class":685,"line":1224},[683,1832,1571],{"class":787},[683,1834,1039],{"class":802},[683,1836,1837],{"class":809}," found",[683,1839,813],{"class":802},[683,1841,1843],{"class":1842},"sfNiH"," false",[683,1845,1846],{"class":802}," }\n",[683,1848,1849],{"class":685,"line":1233},[683,1850,1068],{"emptyLinePlaceholder":1067},[683,1852,1853,1855],{"class":685,"line":1238},[683,1854,1241],{"class":787},[683,1856,976],{"class":802},[683,1858,1859,1862,1864,1867],{"class":685,"line":1246},[683,1860,1861],{"class":809},"    found",[683,1863,813],{"class":802},[683,1865,1866],{"class":1842}," true",[683,1868,830],{"class":802},[683,1870,1871,1873,1875,1877,1879,1881,1883,1885],{"class":685,"line":1253},[683,1872,1673],{"class":809},[683,1874,813],{"class":802},[683,1876,1127],{"class":787},[683,1878,1614],{"class":798},[683,1880,1024],{"class":802},[683,1882,1684],{"class":794},[683,1884,1268],{"class":809},[683,1886,830],{"class":802},[683,1888,1889],{"class":685,"line":1305},[683,1890,1308],{"class":802},[683,1892,1893,1895],{"class":685,"line":1311},[683,1894,836],{"class":802},[683,1896,839],{"class":798},[1898,1899,1902,1907,1911],"u-page-grid",{"className":1900},[1901],"pb-2",[1903,1904],"u-page-card",{"description":227,"icon":88,"title":1905,"to":1906},"Cloudflare Workflow",".\u002Fworkflow\u002Fcloudflare",[1903,1908],{"description":230,"icon":151,"title":1909,"to":1910},"Vercel Workflow",".\u002Fworkflow\u002Fvercel",[1903,1912],{"description":234,"icon":223,"title":1913,"to":1914},"OpenWorkflow Workflow",".\u002Fworkflow\u002Fopenworkflow",[652,1916,1918],{"id":1917},"defer-a-workflow-run","Defer a workflow run",[624,1920,1921,1922,1925,1926,1929],{},"Use ",[635,1923,1924],{},"deferWorkflow()"," when you want to start durable workflow work after the current response has already been committed. It reads Nitro's current request context internally, prefers a real ",[635,1927,1928],{},"waitUntil()"," hook when one exists, and otherwise falls back to best-effort fire-and-forget dispatch.",[673,1931,1933],{"className":777,"code":1932,"language":780,"meta":679,"style":679},"import { deferWorkflow } from '@vitehub\u002Fworkflow'\n\nexport default defineEventHandler(() => {\n  deferWorkflow('publish-draft', {\n    title: 'Hello from waitUntil',\n  })\n\n  return { ok: true }\n})\n",[635,1934,1935,1954,1958,1974,1991,2006,2012,2016,2031],{"__ignoreMap":679},[683,1936,1937,1939,1941,1944,1946,1948,1950,1952],{"class":685,"line":686},[683,1938,1036],{"class":787},[683,1940,1039],{"class":802},[683,1942,1943],{"class":798}," deferWorkflow",[683,1945,1051],{"class":802},[683,1947,1054],{"class":787},[683,1949,987],{"class":802},[683,1951,1059],{"class":693},[683,1953,1062],{"class":802},[683,1955,1956],{"class":685,"line":806},[683,1957,1068],{"emptyLinePlaceholder":1067},[683,1959,1960,1962,1964,1966,1968,1970,1972],{"class":685,"line":833},[683,1961,788],{"class":787},[683,1963,791],{"class":787},[683,1965,1387],{"class":794},[683,1967,799],{"class":798},[683,1969,1268],{"class":802},[683,1971,1108],{"class":1081},[683,1973,976],{"class":802},[683,1975,1976,1979,1981,1983,1985,1987,1989],{"class":685,"line":979},[683,1977,1978],{"class":794},"  deferWorkflow",[683,1980,799],{"class":809},[683,1982,819],{"class":802},[683,1984,1023],{"class":693},[683,1986,819],{"class":802},[683,1988,1045],{"class":802},[683,1990,976],{"class":802},[683,1992,1993,1995,1997,1999,2002,2004],{"class":685,"line":997},[683,1994,1149],{"class":809},[683,1996,813],{"class":802},[683,1998,987],{"class":802},[683,2000,2001],{"class":693},"Hello from waitUntil",[683,2003,819],{"class":802},[683,2005,830],{"class":802},[683,2007,2008,2010],{"class":685,"line":1003},[683,2009,1227],{"class":802},[683,2011,839],{"class":809},[683,2013,2014],{"class":685,"line":1209},[683,2015,1068],{"emptyLinePlaceholder":1067},[683,2017,2018,2020,2022,2025,2027,2029],{"class":685,"line":1224},[683,2019,1241],{"class":787},[683,2021,1039],{"class":802},[683,2023,2024],{"class":809}," ok",[683,2026,813],{"class":802},[683,2028,1866],{"class":1842},[683,2030,1846],{"class":802},[683,2032,2033,2035],{"class":685,"line":1233},[683,2034,836],{"class":802},[683,2036,839],{"class":798},[652,2038,2040],{"id":2039},"public-api","Public API",[2042,2043,2044],"table",{},[2045,2046,2047],"thead",{},[2048,2049,2050,2054],"tr",{},[2051,2052,2053],"th",{},"Function",[2051,2055,2056],{},"Use it for",[628,2058,2059],{"id":630},[624,2060,2061,2062,2064,2065,2067],{},"| ",[635,2063,641],{}," | Register one named workflow from a file under ",[635,2066,637],{},". |",[624,2069,2061,2070,2073,2074,2077],{},[635,2071,2072],{},"runWorkflow(name, payload)"," | Start a new workflow run and get a run handle back immediately. |\n| ",[635,2075,2076],{},"getWorkflowRun(runId)"," | Reattach to an existing run from a later request, task, or webhook. |",[652,2079,2081],{"id":2080},"type-reference","Type reference",[661,2083,2085],{"id":2084},"handler-signature","Handler signature",[624,2087,2088],{},"The handler receives an optional input and returns the workflow result. ViteHub does not enforce a return type.",[673,2090,2092],{"className":777,"code":2091,"language":780,"meta":679,"style":679},"type WorkflowHandler\u003CTInput, TResult> = (\n  input?: TInput,\n  context?: import('@vitehub\u002Fworkflow').WorkflowExecutionContext,\n) => TResult | Promise\u003CTResult>\n",[635,2093,2094,2121,2133,2159],{"__ignoreMap":679},[683,2095,2096,2099,2102,2105,2108,2110,2113,2116,2118],{"class":685,"line":686},[683,2097,2098],{"class":1081},"type",[683,2100,2101],{"class":689}," WorkflowHandler",[683,2103,2104],{"class":802},"\u003C",[683,2106,2107],{"class":689},"TInput",[683,2109,1045],{"class":802},[683,2111,2112],{"class":689}," TResult",[683,2114,2115],{"class":802},">",[683,2117,1124],{"class":802},[683,2119,2120],{"class":798}," (\n",[683,2122,2123,2126,2128,2131],{"class":685,"line":806},[683,2124,2125],{"class":1088},"  input",[683,2127,1092],{"class":802},[683,2129,2130],{"class":689}," TInput",[683,2132,830],{"class":802},[683,2134,2135,2138,2140,2143,2145,2147,2149,2151,2154,2157],{"class":685,"line":833},[683,2136,2137],{"class":1088},"  context",[683,2139,1092],{"class":802},[683,2141,2142],{"class":802}," import",[683,2144,799],{"class":798},[683,2146,819],{"class":802},[683,2148,1059],{"class":693},[683,2150,819],{"class":802},[683,2152,2153],{"class":798},").",[683,2155,2156],{"class":689},"WorkflowExecutionContext",[683,2158,830],{"class":802},[683,2160,2161,2164,2167,2169,2172,2175,2177,2180],{"class":685,"line":979},[683,2162,2163],{"class":798},") ",[683,2165,2166],{"class":1081},"=>",[683,2168,2112],{"class":689},[683,2170,2171],{"class":802}," |",[683,2173,2174],{"class":689}," Promise",[683,2176,2104],{"class":802},[683,2178,2179],{"class":689},"TResult",[683,2181,2182],{"class":802},">\n",[661,2184,2186],{"id":2185},"workflowexecutioncontext",[635,2187,2156],{},[624,2189,2190],{},"Handlers receive a portable execution context as the second argument.",[2042,2192,2193,2206],{},[2045,2194,2195],{},[2048,2196,2197,2200,2203],{},[2051,2198,2199],{},"Field",[2051,2201,2202],{},"Type",[2051,2204,2205],{},"Description",[2207,2208,2209,2225,2240,2255,2270],"tbody",{},[2048,2210,2211,2217,2222],{},[2212,2213,2214],"td",{},[635,2215,2216],{},"provider",[2212,2218,2219],{},[635,2220,2221],{},"WorkflowProvider",[2212,2223,2224],{},"Active workflow provider name.",[2048,2226,2227,2232,2237],{},[2212,2228,2229],{},[635,2230,2231],{},"step",[2212,2233,2234],{},[635,2235,2236],{},"WorkflowStepContext | undefined",[2212,2238,2239],{},"Portable step helpers. Implemented by Netlify in this release.",[2048,2241,2242,2247,2252],{},[2212,2243,2244],{},[635,2245,2246],{},"eventId",[2212,2248,2249],{},[635,2250,2251],{},"string | undefined",[2212,2253,2254],{},"Provider-native event or run identifier when available.",[2048,2256,2257,2262,2267],{},[2212,2258,2259],{},[635,2260,2261],{},"attempt",[2212,2263,2264],{},[635,2265,2266],{},"number | undefined",[2212,2268,2269],{},"Retry attempt when the provider exposes it.",[2048,2271,2272,2277,2282],{},[2212,2273,2274],{},[635,2275,2276],{},"sendEvent",[2212,2278,2279],{},[635,2280,2281],{},"((eventName, options?) => Promise\u003CWorkflowSendEventResult>) | undefined",[2212,2283,2284],{},"Provider-backed event publishing helper when available.",[661,2286,2288],{"id":2287},"workflowdefinitionoptions",[635,2289,2290],{},"WorkflowDefinitionOptions",[628,2292,2293],{"id":630},[624,2294,2295,2296,2299],{},"The options object passed to ",[635,2297,2298],{},"defineWorkflow()"," accepts:",[2042,2301,2302,2313],{},[2045,2303,2304],{},[2048,2305,2306,2309,2311],{},[2051,2307,2308],{},"Option",[2051,2310,2202],{},[2051,2312,2205],{},[2207,2314,2315],{},[2048,2316,2317,2322,2327],{},[2212,2318,2319],{},[635,2320,2321],{},"timeout",[2212,2323,2324],{},[635,2325,2326],{},"number",[2212,2328,2329],{},"Maximum execution time in milliseconds.",[661,2331,2333],{"id":2332},"workflowrun",[635,2334,2335],{},"WorkflowRun",[624,2337,2338,2340,2341,2343],{},[635,2339,645],{}," returns a ",[635,2342,2335],{}," handle with:",[2042,2345,2346,2357],{},[2045,2347,2348],{},[2048,2349,2350,2353,2355],{},[2051,2351,2352],{},"Field \u002F Method",[2051,2354,2202],{},[2051,2356,2205],{},[2207,2358,2359,2372,2385,2399,2414],{},[2048,2360,2361,2365,2369],{},[2212,2362,2363],{},[635,2364,1665],{},[2212,2366,2367],{},[635,2368,1170],{},[2212,2370,2371],{},"Unique run identifier. Persist this to reattach later.",[2048,2373,2374,2378,2382],{},[2212,2375,2376],{},[635,2377,2216],{},[2212,2379,2380],{},[635,2381,1170],{},[2212,2383,2384],{},"The active provider name.",[2048,2386,2387,2392,2396],{},[2212,2388,2389],{},[635,2390,2391],{},"native",[2212,2393,2394],{},[635,2395,1471],{},[2212,2397,2398],{},"Raw provider run object from the active SDK or platform binding.",[2048,2400,2401,2406,2411],{},[2212,2402,2403],{},[635,2404,2405],{},"status()",[2212,2407,2408],{},[635,2409,2410],{},"Promise\u003CWorkflowRunStatus>",[2212,2412,2413],{},"Poll the current run state.",[2048,2415,2416,2421,2426],{},[2212,2417,2418],{},[635,2419,2420],{},"stop()",[2212,2422,2423],{},[635,2424,2425],{},"Promise\u003Cvoid>",[2212,2427,2428],{},"Cancel the run.",[661,2430,2432],{"id":2431},"workflowrunstatus",[635,2433,2434],{},"WorkflowRunStatus",[2042,2436,2437,2447],{},[2045,2438,2439],{},[2048,2440,2441,2443,2445],{},[2051,2442,2199],{},[2051,2444,2202],{},[2051,2446,2205],{},[2207,2448,2449,2464,2479,2493],{},[2048,2450,2451,2456,2461],{},[2212,2452,2453],{},[635,2454,2455],{},"state",[2212,2457,2458],{},[635,2459,2460],{},"'queued' | 'running' | 'paused' | 'waiting' | 'completed' | 'failed' | 'cancelled' | 'terminated' | 'unknown'",[2212,2462,2463],{},"Current run state.",[2048,2465,2466,2471,2476],{},[2212,2467,2468],{},[635,2469,2470],{},"raw",[2212,2472,2473],{},[635,2474,2475],{},"unknown",[2212,2477,2478],{},"Raw provider response.",[2048,2480,2481,2486,2490],{},[2212,2482,2483],{},[635,2484,2485],{},"output",[2212,2487,2488],{},[635,2489,2475],{},[2212,2491,2492],{},"Handler return value when the run completes.",[2048,2494,2495,2500,2504],{},[2212,2496,2497],{},[635,2498,2499],{},"error",[2212,2501,2502],{},[635,2503,2475],{},[2212,2505,2506],{},"Error details when the run fails.",[652,2508,2510],{"id":2509},"configure-provider-and-workflow-options","Configure provider and workflow options",[624,2512,2513],{},"Workflow has one global layer and one definition layer:",[2515,2516,2517,2532],"ul",{},[2518,2519,2520,2521,2524,2525,2527,2528,2531],"li",{},"Top-level ",[635,2522,2523],{},"workflow"," config in ",[635,2526,779],{}," or ",[635,2529,2530],{},"nitro.config.ts"," selects the provider and sets up the app-wide integration.\n",[2518,2533,2534,2537,2538,2540,2541,2543],{},[635,2535,2536],{},"createWorkflow(options?)(handler)"," and ",[635,2539,641],{}," both configure one workflow definition with portable options such as ",[635,2542,2321],{},".\n::",[628,2545,2546],{"id":630},[2515,2547,2548],{},[2518,2549,2550,2552,2553,1024],{},[635,2551,641],{}," configures one workflow definition with portable options such as ",[635,2554,2321],{},[2515,2556,2557],{},[2518,2558,2559,2560,2562],{},"Netlify ignores definition-level ",[635,2561,2321],{}," for now and executes workflows through Async Workloads event handlers.",[624,2564,2565,2567,2568,2570],{},[635,2566,645],{}," starts a new run with input for that specific execution. ",[635,2569,649],{}," reconnects to an existing run by id. Neither one replaces top-level or definition-level configuration.",[628,2572,2573],{"id":630},[673,2574,2576],{"className":777,"code":2575,"filename":779,"language":780,"meta":679,"style":679},"export default defineNuxtConfig({\n  modules: ['@vitehub\u002Fworkflow\u002Fnuxt'],\n  workflow: {\n    provider: 'cloudflare',\n  },\n})\n",[635,2577,2578,2590,2608,2616,2631,2635],{"__ignoreMap":679},[683,2579,2580,2582,2584,2586,2588],{"class":685,"line":686},[683,2581,788],{"class":787},[683,2583,791],{"class":787},[683,2585,795],{"class":794},[683,2587,799],{"class":798},[683,2589,803],{"class":802},[683,2591,2592,2594,2596,2598,2600,2602,2604,2606],{"class":685,"line":806},[683,2593,810],{"class":809},[683,2595,813],{"class":802},[683,2597,816],{"class":798},[683,2599,819],{"class":802},[683,2601,822],{"class":693},[683,2603,819],{"class":802},[683,2605,827],{"class":798},[683,2607,830],{"class":802},[683,2609,2610,2612,2614],{"class":685,"line":833},[683,2611,971],{"class":809},[683,2613,813],{"class":802},[683,2615,976],{"class":802},[683,2617,2618,2620,2622,2624,2627,2629],{"class":685,"line":979},[683,2619,982],{"class":809},[683,2621,813],{"class":802},[683,2623,987],{"class":802},[683,2625,2626],{"class":693},"cloudflare",[683,2628,819],{"class":802},[683,2630,830],{"class":802},[683,2632,2633],{"class":685,"line":997},[683,2634,1000],{"class":802},[683,2636,2637,2639],{"class":685,"line":1003},[683,2638,836],{"class":802},[683,2640,839],{"class":798},[628,2642,2643],{"id":630},[673,2644,2646],{"className":777,"code":2645,"filename":1019,"language":780,"meta":679,"style":679},"export default defineWorkflow(async (input) => {\n  return input\n})\n",[635,2647,2648,2670,2677],{"__ignoreMap":679},[683,2649,2650,2652,2654,2656,2658,2660,2662,2664,2666,2668],{"class":685,"line":686},[683,2651,788],{"class":787},[683,2653,791],{"class":787},[683,2655,1042],{"class":794},[683,2657,799],{"class":798},[683,2659,1082],{"class":1081},[683,2661,1085],{"class":802},[683,2663,1089],{"class":1088},[683,2665,1300],{"class":802},[683,2667,1108],{"class":1081},[683,2669,976],{"class":802},[683,2671,2672,2674],{"class":685,"line":806},[683,2673,1241],{"class":787},[683,2675,2676],{"class":798}," input\n",[683,2678,2679,2681],{"class":685,"line":833},[683,2680,836],{"class":802},[683,2682,839],{"class":798},[2684,2685,2686,2689],"note",{},[624,2687,2688],{},"Each provider adds its own runtime behavior and extra methods. Use the provider pages in the sidebar for binding setup, backend clients, and provider-specific run helpers.",[624,2690,2691,2692,2694,2695,1024],{},"ViteHub only requires the SDK for the provider you choose. Cloudflare stays SDK-free, Vercel needs ",[635,2693,2523],{},", and OpenWorkflow needs ",[635,2696,990],{},[2698,2699,2700],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .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}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":679,"searchDepth":806,"depth":806,"links":2702},[2703,2710,2711,2712,2719],{"id":654,"depth":806,"text":655,"children":2704},[2705,2706,2707,2708,2709],{"id":663,"depth":833,"text":664},{"id":755,"depth":833,"text":756},{"id":1010,"depth":833,"text":1011},{"id":1318,"depth":833,"text":1319},{"id":1703,"depth":833,"text":1704},{"id":1917,"depth":806,"text":1918},{"id":2039,"depth":806,"text":2040},{"id":2080,"depth":806,"text":2081,"children":2713},[2714,2715,2716,2717,2718],{"id":2084,"depth":833,"text":2085},{"id":2185,"depth":833,"text":2156},{"id":2287,"depth":833,"text":2290},{"id":2332,"depth":833,"text":2335},{"id":2431,"depth":833,"text":2434},{"id":2509,"depth":806,"text":2510},"md",{},{"title":2723},"Overview",{"title":220,"description":222},"docs\u002Fnuxt\u002Fworkflow\u002Findex","kPREK_u3e8bg1igx2l_IyORuP9LzAMv1rXxTkVIKU4Q",[2728,2729],{"title":215,"path":566,"description":217},{"title":85,"path":571,"description":227},1775391847552]