[{"data":1,"prerenderedAt":1692},["ShallowReactive",2],{"docs-navigation":3,"docs:\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fruntime-api":618,"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fruntime-api:surround":1689},[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":620,"body":621,"description":113,"extension":1683,"meta":1684,"navigation":1685,"path":518,"seo":1686,"stem":1687,"__hash__":1688},"docs\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fruntime-api.md","Queue runtime API",{"type":622,"value":623,"toc":1663},"minimark",[624,633,638,646,653,663,813,819,830,834,840,846,849,859,1013,1019,1025,1034,1146,1152,1156,1164,1293,1299,1303,1309,1315,1391,1400,1406,1410,1413,1447,1453,1457,1463,1469,1543,1549,1554,1636,1640,1659],[625,626,627,628,632],"p",{},"Use this page when you need the Queue surface area, signatures, or option names. For a guided first run, start with ",[629,630,107],"a",{"href":631},".\u002Fquickstart",".",[634,635,637],"h2",{"id":636},"definition-apis","Definition APIs",[639,640,642],"h3",{"id":641},"definequeuehandler-options",[643,644,645],"code",{},"defineQueue(handler, options?)",[625,647,648,649,652],{},"Use ",[643,650,651],{},"defineQueue()"," to register one queue definition from the discovery directory.",[654,655,657],"fw",{"id":656},"nuxt",[625,658,659,660,632],{},"Queue definitions live in ",[643,661,662],{},"server\u002Fqueues\u002F**",[664,665,670],"pre",{"className":666,"code":667,"language":668,"meta":669,"style":669},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineQueue } from '@vitehub\u002Fqueue'\n\nexport default defineQueue(async (job) => {\n  return {\n    id: job.id,\n  }\n}, {\n  cache: false,\n})\n","ts","",[643,671,672,705,712,747,755,776,782,790,804],{"__ignoreMap":669},[673,674,677,681,685,689,692,695,698,702],"span",{"class":675,"line":676},"line",1,[673,678,680],{"class":679},"s7zQu","import",[673,682,684],{"class":683},"sMK4o"," {",[673,686,688],{"class":687},"sTEyZ"," defineQueue",[673,690,691],{"class":683}," }",[673,693,694],{"class":679}," from",[673,696,697],{"class":683}," '",[673,699,701],{"class":700},"sfazB","@vitehub\u002Fqueue",[673,703,704],{"class":683},"'\n",[673,706,708],{"class":675,"line":707},2,[673,709,711],{"emptyLinePlaceholder":710},true,"\n",[673,713,715,718,721,724,727,731,734,738,741,744],{"class":675,"line":714},3,[673,716,717],{"class":679},"export",[673,719,720],{"class":679}," default",[673,722,688],{"class":723},"s2Zo4",[673,725,726],{"class":687},"(",[673,728,730],{"class":729},"spNyl","async",[673,732,733],{"class":683}," (",[673,735,737],{"class":736},"sHdIc","job",[673,739,740],{"class":683},")",[673,742,743],{"class":729}," =>",[673,745,746],{"class":683}," {\n",[673,748,750,753],{"class":675,"line":749},4,[673,751,752],{"class":679},"  return",[673,754,746],{"class":683},[673,756,758,762,765,768,770,773],{"class":675,"line":757},5,[673,759,761],{"class":760},"swJcz","    id",[673,763,764],{"class":683},":",[673,766,767],{"class":687}," job",[673,769,632],{"class":683},[673,771,772],{"class":687},"id",[673,774,775],{"class":683},",\n",[673,777,779],{"class":675,"line":778},6,[673,780,781],{"class":683},"  }\n",[673,783,785,788],{"class":675,"line":784},7,[673,786,787],{"class":683},"},",[673,789,746],{"class":683},[673,791,793,796,798,802],{"class":675,"line":792},8,[673,794,795],{"class":760},"  cache",[673,797,764],{"class":683},[673,799,801],{"class":800},"sfNiH"," false",[673,803,775],{"class":683},[673,805,807,810],{"class":675,"line":806},9,[673,808,809],{"class":683},"}",[673,811,812],{"class":687},")\n",[639,814,816],{"id":815},"createqueueoptionshandler",[643,817,818],{},"createQueue(options?)(handler)",[654,820,821],{"id":656},[625,822,823,826,827,829],{},[643,824,825],{},"createQueue()"," is not the normal Nitro or Nuxt definition pattern. Use ",[643,828,651],{}," there.",[634,831,833],{"id":832},"enqueue-apis","Enqueue APIs",[639,835,837],{"id":836},"runqueuename-input",[643,838,839],{},"runQueue(name, input)",[625,841,648,842,845],{},[643,843,844],{},"runQueue()"," for the normal enqueue path.",[625,847,848],{},"You can pass either:",[850,851,852,856],"ul",{},[853,854,855],"li",{},"a bare payload for the common case",[853,857,858],{},"an input object when you need delivery options",[664,860,862],{"className":666,"code":861,"language":668,"meta":669,"style":669},"import { runQueue } from '@vitehub\u002Fqueue'\n\nawait runQueue('welcome-email', {\n  email: 'ava@example.com',\n})\n\nawait runQueue('welcome-email', {\n  id: 'welcome-1',\n  payload: { email: 'ava@example.com' },\n  delaySeconds: 10,\n})\n",[643,863,864,883,887,909,925,931,935,953,969,992,1006],{"__ignoreMap":669},[673,865,866,868,870,873,875,877,879,881],{"class":675,"line":676},[673,867,680],{"class":679},[673,869,684],{"class":683},[673,871,872],{"class":687}," runQueue",[673,874,691],{"class":683},[673,876,694],{"class":679},[673,878,697],{"class":683},[673,880,701],{"class":700},[673,882,704],{"class":683},[673,884,885],{"class":675,"line":707},[673,886,711],{"emptyLinePlaceholder":710},[673,888,889,892,894,896,899,902,904,907],{"class":675,"line":714},[673,890,891],{"class":679},"await",[673,893,872],{"class":723},[673,895,726],{"class":687},[673,897,898],{"class":683},"'",[673,900,901],{"class":700},"welcome-email",[673,903,898],{"class":683},[673,905,906],{"class":683},",",[673,908,746],{"class":683},[673,910,911,914,916,918,921,923],{"class":675,"line":749},[673,912,913],{"class":760},"  email",[673,915,764],{"class":683},[673,917,697],{"class":683},[673,919,920],{"class":700},"ava@example.com",[673,922,898],{"class":683},[673,924,775],{"class":683},[673,926,927,929],{"class":675,"line":757},[673,928,809],{"class":683},[673,930,812],{"class":687},[673,932,933],{"class":675,"line":778},[673,934,711],{"emptyLinePlaceholder":710},[673,936,937,939,941,943,945,947,949,951],{"class":675,"line":784},[673,938,891],{"class":679},[673,940,872],{"class":723},[673,942,726],{"class":687},[673,944,898],{"class":683},[673,946,901],{"class":700},[673,948,898],{"class":683},[673,950,906],{"class":683},[673,952,746],{"class":683},[673,954,955,958,960,962,965,967],{"class":675,"line":792},[673,956,957],{"class":760},"  id",[673,959,764],{"class":683},[673,961,697],{"class":683},[673,963,964],{"class":700},"welcome-1",[673,966,898],{"class":683},[673,968,775],{"class":683},[673,970,971,974,976,978,981,983,985,987,989],{"class":675,"line":806},[673,972,973],{"class":760},"  payload",[673,975,764],{"class":683},[673,977,684],{"class":683},[673,979,980],{"class":760}," email",[673,982,764],{"class":683},[673,984,697],{"class":683},[673,986,920],{"class":700},[673,988,898],{"class":683},[673,990,991],{"class":683}," },\n",[673,993,995,998,1000,1004],{"class":675,"line":994},10,[673,996,997],{"class":760},"  delaySeconds",[673,999,764],{"class":683},[673,1001,1003],{"class":1002},"sbssI"," 10",[673,1005,775],{"class":683},[673,1007,1009,1011],{"class":675,"line":1008},11,[673,1010,809],{"class":683},[673,1012,812],{"class":687},[639,1014,1016],{"id":1015},"deferqueuename-input",[643,1017,1018],{},"deferQueue(name, input)",[625,1020,648,1021,1024],{},[643,1022,1023],{},"deferQueue()"," when the send should happen after the current response is already committed.",[625,1026,1027,1029,1030,1033],{},[643,1028,1023],{}," reads the active request context. It uses ",[643,1031,1032],{},"waitUntil()"," when the runtime provides it and falls back to fire-and-forget dispatch otherwise.",[664,1035,1037],{"className":666,"code":1036,"language":668,"meta":669,"style":669},"import { deferQueue } from '@vitehub\u002Fqueue'\n\nexport default defineEventHandler(() => {\n  deferQueue('welcome-email', {\n    email: 'ava@example.com',\n  })\n\n  return { ok: true }\n})\n",[643,1038,1039,1058,1062,1080,1097,1112,1119,1123,1140],{"__ignoreMap":669},[673,1040,1041,1043,1045,1048,1050,1052,1054,1056],{"class":675,"line":676},[673,1042,680],{"class":679},[673,1044,684],{"class":683},[673,1046,1047],{"class":687}," deferQueue",[673,1049,691],{"class":683},[673,1051,694],{"class":679},[673,1053,697],{"class":683},[673,1055,701],{"class":700},[673,1057,704],{"class":683},[673,1059,1060],{"class":675,"line":707},[673,1061,711],{"emptyLinePlaceholder":710},[673,1063,1064,1066,1068,1071,1073,1076,1078],{"class":675,"line":714},[673,1065,717],{"class":679},[673,1067,720],{"class":679},[673,1069,1070],{"class":723}," defineEventHandler",[673,1072,726],{"class":687},[673,1074,1075],{"class":683},"()",[673,1077,743],{"class":729},[673,1079,746],{"class":683},[673,1081,1082,1085,1087,1089,1091,1093,1095],{"class":675,"line":749},[673,1083,1084],{"class":723},"  deferQueue",[673,1086,726],{"class":760},[673,1088,898],{"class":683},[673,1090,901],{"class":700},[673,1092,898],{"class":683},[673,1094,906],{"class":683},[673,1096,746],{"class":683},[673,1098,1099,1102,1104,1106,1108,1110],{"class":675,"line":757},[673,1100,1101],{"class":760},"    email",[673,1103,764],{"class":683},[673,1105,697],{"class":683},[673,1107,920],{"class":700},[673,1109,898],{"class":683},[673,1111,775],{"class":683},[673,1113,1114,1117],{"class":675,"line":778},[673,1115,1116],{"class":683},"  }",[673,1118,812],{"class":760},[673,1120,1121],{"class":675,"line":784},[673,1122,711],{"emptyLinePlaceholder":710},[673,1124,1125,1127,1129,1132,1134,1137],{"class":675,"line":792},[673,1126,752],{"class":679},[673,1128,684],{"class":683},[673,1130,1131],{"class":760}," ok",[673,1133,764],{"class":683},[673,1135,1136],{"class":800}," true",[673,1138,1139],{"class":683}," }\n",[673,1141,1142,1144],{"class":675,"line":806},[673,1143,809],{"class":683},[673,1145,812],{"class":687},[625,1147,648,1148,1151],{},[629,1149,124],{"href":1150},".\u002Fguides\u002Fdefer-after-response"," when you need the request-context rules in more detail.",[639,1153,1155],{"id":1154},"enqueue-input-options","Enqueue input options",[625,1157,1158,1159,1161,1162,764],{},"These options are available when you pass an object to ",[643,1160,844],{}," or ",[643,1163,1023],{},[1165,1166,1167,1180],"table",{},[1168,1169,1170],"thead",{},[1171,1172,1173,1177],"tr",{},[1174,1175,1176],"th",{},"Option",[1174,1178,1179],{},"Description",[1181,1182,1183,1194,1203,1213,1223,1233,1243,1253,1263,1273,1283],"tbody",{},[1171,1184,1185,1191],{},[1186,1187,1188],"td",{},[643,1189,1190],{},"payload",[1186,1192,1193],{},"The message payload passed to the queue handler.",[1171,1195,1196,1200],{},[1186,1197,1198],{},[643,1199,772],{},[1186,1201,1202],{},"Override the generated job identifier.",[1171,1204,1205,1210],{},[1186,1206,1207],{},[643,1208,1209],{},"maxAttempts",[1186,1211,1212],{},"Request retry attempts when the provider supports them.",[1171,1214,1215,1220],{},[1186,1216,1217],{},[643,1218,1219],{},"resultTTL",[1186,1221,1222],{},"Keep job results for a limited time when the provider supports it.",[1171,1224,1225,1230],{},[1186,1226,1227],{},[643,1228,1229],{},"timeout",[1186,1231,1232],{},"Set an execution or wait timeout when the provider supports it.",[1171,1234,1235,1240],{},[1186,1236,1237],{},[643,1238,1239],{},"idempotencyKey",[1186,1241,1242],{},"Deduplicate sends when the provider supports it.",[1171,1244,1245,1250],{},[1186,1246,1247],{},[643,1248,1249],{},"retentionSeconds",[1186,1251,1252],{},"Keep the queued message for a limited time when the provider supports it.",[1171,1254,1255,1260],{},[1186,1256,1257],{},[643,1258,1259],{},"delaySeconds",[1186,1261,1262],{},"Delay delivery by a number of seconds.",[1171,1264,1265,1270],{},[1186,1266,1267],{},[643,1268,1269],{},"delayUntil",[1186,1271,1272],{},"Delay delivery until a specific time when the provider supports it.",[1171,1274,1275,1280],{},[1186,1276,1277],{},[643,1278,1279],{},"priority",[1186,1281,1282],{},"Request provider-specific priority handling.",[1171,1284,1285,1290],{},[1186,1286,1287],{},[643,1288,1289],{},"contentType",[1186,1291,1292],{},"Override how the payload is encoded when the provider supports it.",[1294,1295,1296],"note",{},[625,1297,1298],{},"Option support varies by provider. Use the provider pages for exact behavior.",[634,1300,1302],{"id":1301},"queue-handle-api","Queue handle API",[639,1304,1306],{"id":1305},"getqueuename",[643,1307,1308],{},"getQueue(name?)",[625,1310,648,1311,1314],{},[643,1312,1313],{},"getQueue()"," when you need the active queue handle instead of a send call.",[664,1316,1318],{"className":666,"code":1317,"language":668,"meta":669,"style":669},"import { getQueue } from '@vitehub\u002Fqueue'\n\nconst queue = await getQueue('welcome-email')\n\nconsole.log(queue.provider)\n",[643,1319,1320,1339,1343,1369,1373],{"__ignoreMap":669},[673,1321,1322,1324,1326,1329,1331,1333,1335,1337],{"class":675,"line":676},[673,1323,680],{"class":679},[673,1325,684],{"class":683},[673,1327,1328],{"class":687}," getQueue",[673,1330,691],{"class":683},[673,1332,694],{"class":679},[673,1334,697],{"class":683},[673,1336,701],{"class":700},[673,1338,704],{"class":683},[673,1340,1341],{"class":675,"line":707},[673,1342,711],{"emptyLinePlaceholder":710},[673,1344,1345,1348,1351,1354,1357,1359,1361,1363,1365,1367],{"class":675,"line":714},[673,1346,1347],{"class":729},"const",[673,1349,1350],{"class":687}," queue ",[673,1352,1353],{"class":683},"=",[673,1355,1356],{"class":679}," await",[673,1358,1328],{"class":723},[673,1360,726],{"class":687},[673,1362,898],{"class":683},[673,1364,901],{"class":700},[673,1366,898],{"class":683},[673,1368,812],{"class":687},[673,1370,1371],{"class":675,"line":749},[673,1372,711],{"emptyLinePlaceholder":710},[673,1374,1375,1378,1380,1383,1386,1388],{"class":675,"line":757},[673,1376,1377],{"class":687},"console",[673,1379,632],{"class":683},[673,1381,1382],{"class":723},"log",[673,1384,1385],{"class":687},"(queue",[673,1387,632],{"class":683},[673,1389,1390],{"class":687},"provider)\n",[625,1392,1393,1394,1396,1397,1399],{},"Most apps only need ",[643,1395,844],{},". Reach for ",[643,1398,1313],{}," when you need provider-native methods such as batch handlers, polling helpers, or direct inspection tools.",[625,1401,648,1402,1405],{},[629,1403,136],{"href":1404},".\u002Fguides\u002Fnative-handles"," for guidance on when to cross that boundary.",[634,1407,1409],{"id":1408},"validation-helpers","Validation helpers",[625,1411,1412],{},"Queue also exports validation helpers for enqueue routes and handlers:",[1165,1414,1415,1425],{},[1168,1416,1417],{},[1171,1418,1419,1422],{},[1174,1420,1421],{},"Helper",[1174,1423,1424],{},"Use it for",[1181,1426,1427,1437],{},[1171,1428,1429,1434],{},[1186,1430,1431],{},[643,1432,1433],{},"readValidatedPayload()",[1186,1435,1436],{},"Validate user input before enqueueing.",[1171,1438,1439,1444],{},[1186,1440,1441],{},[643,1442,1443],{},"readValidatedJob()",[1186,1445,1446],{},"Validate the payload inside the queue handler.",[625,1448,648,1449,1452],{},[629,1450,128],{"href":1451},".\u002Fguides\u002Fvalidate-payloads"," for examples.",[634,1454,1456],{"id":1455},"core-types","Core types",[639,1458,1460],{"id":1459},"queuejobtpayload",[643,1461,1462],{},"QueueJob\u003CTPayload>",[625,1464,1465,1466,1468],{},"Queue handlers receive a ",[643,1467,1462],{}," object.",[1165,1470,1471,1483],{},[1168,1472,1473],{},[1171,1474,1475,1478,1481],{},[1174,1476,1477],{},"Field",[1174,1479,1480],{},"Type",[1174,1482,1179],{},[1181,1484,1485,1499,1513,1528],{},[1171,1486,1487,1491,1496],{},[1186,1488,1489],{},[643,1490,772],{},[1186,1492,1493],{},[643,1494,1495],{},"string",[1186,1497,1498],{},"Unique job identifier.",[1171,1500,1501,1505,1510],{},[1186,1502,1503],{},[643,1504,1190],{},[1186,1506,1507],{},[643,1508,1509],{},"TPayload",[1186,1511,1512],{},"The payload you enqueued.",[1171,1514,1515,1520,1525],{},[1186,1516,1517],{},[643,1518,1519],{},"attempts",[1186,1521,1522],{},[643,1523,1524],{},"number",[1186,1526,1527],{},"The current attempt count.",[1171,1529,1530,1535,1540],{},[1186,1531,1532],{},[643,1533,1534],{},"signal",[1186,1536,1537],{},[643,1538,1539],{},"AbortSignal",[1186,1541,1542],{},"Abort signal tied to the job lifecycle.",[639,1544,1546],{"id":1545},"queuedefinitionoptions",[643,1547,1548],{},"QueueDefinitionOptions",[625,1550,1551,1553],{},[643,1552,1548],{}," combines portable queue behavior with provider-specific overrides.",[1165,1555,1556,1564],{},[1168,1557,1558],{},[1171,1559,1560,1562],{},[1174,1561,1176],{},[1174,1563,1179],{},[1181,1565,1566,1576,1586,1596,1606,1616,1626],{},[1171,1567,1568,1573],{},[1186,1569,1570],{},[643,1571,1572],{},"cache",[1186,1574,1575],{},"Enable or disable client caching for this queue definition.",[1171,1577,1578,1583],{},[1186,1579,1580],{},[643,1581,1582],{},"concurrency",[1186,1584,1585],{},"Limit concurrent processing when the provider supports it.",[1171,1587,1588,1593],{},[1186,1589,1590],{},[643,1591,1592],{},"onError",[1186,1594,1595],{},"Handle queue message failures.",[1171,1597,1598,1603],{},[1186,1599,1600],{},[643,1601,1602],{},"callbackOptions",[1186,1604,1605],{},"Per-queue Vercel callback settings.",[1171,1607,1608,1613],{},[1186,1609,1610],{},[643,1611,1612],{},"consumer",[1186,1614,1615],{},"Override the Vercel consumer name.",[1171,1617,1618,1623],{},[1186,1619,1620],{},[643,1621,1622],{},"config",[1186,1624,1625],{},"Pass Netlify Async Workloads handler config.",[1171,1627,1628,1633],{},[1186,1629,1630],{},[643,1631,1632],{},"destination",[1186,1634,1635],{},"Override the Upstash QStash callback destination.",[634,1637,1639],{"id":1638},"related-pages","Related pages",[850,1641,1642,1646,1651,1655],{},[853,1643,1644],{},[629,1645,107],{"href":631},[853,1647,1648],{},[629,1649,119],{"href":1650},".\u002Fguides\u002Fsend-a-job",[853,1652,1653],{},[629,1654,128],{"href":1451},[853,1656,1657],{},[629,1658,136],{"href":1404},[1660,1661,1662],"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 .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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":669,"searchDepth":707,"depth":707,"links":1664},[1665,1669,1674,1677,1678,1682],{"id":636,"depth":707,"text":637,"children":1666},[1667,1668],{"id":641,"depth":714,"text":645},{"id":815,"depth":714,"text":818},{"id":832,"depth":707,"text":833,"children":1670},[1671,1672,1673],{"id":836,"depth":714,"text":839},{"id":1015,"depth":714,"text":1018},{"id":1154,"depth":714,"text":1155},{"id":1301,"depth":707,"text":1302,"children":1675},[1676],{"id":1305,"depth":714,"text":1308},{"id":1408,"depth":707,"text":1409},{"id":1455,"depth":707,"text":1456,"children":1679},[1680,1681],{"id":1459,"depth":714,"text":1462},{"id":1545,"depth":714,"text":1548},{"id":1638,"depth":707,"text":1639},"md",{},{"title":111},{"title":620,"description":113},"docs\u002Fnuxt\u002Fqueue\u002Fruntime-api","uqyeOeNLktiO-6SnaeO9MvaE-QaUBxqr7bqWy4Bda8I",[1690,1691],{"title":107,"path":516,"description":109},{"title":115,"path":520,"description":117},1775568179308]