[{"data":1,"prerenderedAt":1734},["ShallowReactive",2],{"docs-navigation":3,"docs:\u002Fdocs\u002Fnuxt\u002Fdatabase":618,"\u002Fdocs\u002Fnuxt\u002Fdatabase:surround":1731},[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":31,"body":620,"description":33,"extension":1724,"meta":1725,"navigation":1726,"path":481,"seo":1728,"stem":1729,"__hash__":1730},"docs\u002Fdocs\u002Fnuxt\u002Fdatabase\u002Findex.md",{"type":621,"value":622,"toc":1712},"minimark",[623,632,642,647,1443,1447,1459,1551,1555,1558,1604,1608,1611,1677,1683,1708],[624,625,626,627,631],"p",{},"Use ViteHub Database to configure one ORM through a shared ",[628,629,630],"code",{},"db"," config across Vite, Nitro, and Nuxt. Choose Drizzle or Prisma for each app, then import the runtime from an explicit subpath instead of the package root.",[633,634,635],"important",{},[624,636,637,638,641],{},"Each app must choose a single ORM. ",[628,639,640],{},"@vitehub\u002Fdb"," does not support mixing Drizzle and Prisma in the same app config.",[643,644,646],"h2",{"id":645},"getting-started","Getting started",[648,649,651,656,781,785,854,860,866,1256,1260,1263],"steps",{"level":650},"3",[652,653,655],"h3",{"id":654},"install-the-package-and-your-orm","Install the package and your ORM",[657,658,660,729],"tabs",{"sync":659},"db-install",[661,662,663,698,701],"tabs-item",{"label":37},[664,665,671],"pre",{"className":666,"code":667,"filename":668,"language":669,"meta":670,"style":670},"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\u002Fdb@main drizzle-orm drizzle-kit @libsql\u002Fclient\n","Terminal","bash","",[628,672,673],{"__ignoreMap":670},[674,675,678,682,686,689,692,695],"span",{"class":676,"line":677},"line",1,[674,679,681],{"class":680},"sBMFI","pnpm",[674,683,685],{"class":684},"sfazB"," add",[674,687,688],{"class":684}," https:\u002F\u002Fpkg.pr.new\u002Fvite-hub\u002Fvitehub\u002F@vitehub\u002Fdb@main",[674,690,691],{"class":684}," drizzle-orm",[674,693,694],{"class":684}," drizzle-kit",[674,696,697],{"class":684}," @libsql\u002Fclient\n",[624,699,700],{},"Add the driver package that matches your database runtime:",[702,703,704,711,717,723],"ul",{},[705,706,707,708],"li",{},"PostgreSQL: ",[628,709,710],{},"pg",[705,712,713,714],{},"MySQL: ",[628,715,716],{},"mysql2",[705,718,719,720],{},"Embedded PostgreSQL: ",[628,721,722],{},"@electric-sql\u002Fpglite",[705,724,725,726],{},"SQLite file or Turso: ",[628,727,728],{},"@libsql\u002Fclient",[661,730,731,753,756],{"label":41},[664,732,734],{"className":666,"code":733,"filename":668,"language":669,"meta":670,"style":670},"pnpm add https:\u002F\u002Fpkg.pr.new\u002Fvite-hub\u002Fvitehub\u002F@vitehub\u002Fdb@main prisma @prisma\u002Fclient @prisma\u002Fadapter-pg\n",[628,735,736],{"__ignoreMap":670},[674,737,738,740,742,744,747,750],{"class":676,"line":677},[674,739,681],{"class":680},[674,741,685],{"class":684},[674,743,688],{"class":684},[674,745,746],{"class":684}," prisma",[674,748,749],{"class":684}," @prisma\u002Fclient",[674,751,752],{"class":684}," @prisma\u002Fadapter-pg\n",[624,754,755],{},"Add the adapter package that matches your runtime:",[702,757,758,763,769,775],{},[705,759,707,760],{},[628,761,762],{},"@prisma\u002Fadapter-pg",[705,764,765,766],{},"SQLite file: ",[628,767,768],{},"@prisma\u002Fadapter-better-sqlite3",[705,770,771,772],{},"LibSQL or Turso: ",[628,773,774],{},"@prisma\u002Fadapter-libsql",[705,776,777,778],{},"MySQL or MariaDB: ",[628,779,780],{},"@prisma\u002Fadapter-mariadb",[652,782,784],{"id":783},"choose-an-integration-surface","Choose an integration surface",[786,787,789],"fw",{"id":788},"nuxt",[664,790,795],{"className":791,"code":792,"filename":793,"language":794,"meta":670,"style":670},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\nmodules: ['@vitehub\u002Fdb\u002Fnuxt'],\n})\n","nuxt.config.ts","ts",[628,796,797,818,845],{"__ignoreMap":670},[674,798,799,803,806,810,814],{"class":676,"line":677},[674,800,802],{"class":801},"s7zQu","export",[674,804,805],{"class":801}," default",[674,807,809],{"class":808},"s2Zo4"," defineNuxtConfig",[674,811,813],{"class":812},"sTEyZ","(",[674,815,817],{"class":816},"sMK4o","{\n",[674,819,821,825,828,831,834,837,839,842],{"class":676,"line":820},2,[674,822,824],{"class":823},"swJcz","modules",[674,826,827],{"class":816},":",[674,829,830],{"class":812}," [",[674,832,833],{"class":816},"'",[674,835,836],{"class":684},"@vitehub\u002Fdb\u002Fnuxt",[674,838,833],{"class":816},[674,840,841],{"class":812},"]",[674,843,844],{"class":816},",\n",[674,846,848,851],{"class":676,"line":847},3,[674,849,850],{"class":816},"}",[674,852,853],{"class":812},")\n",[652,855,857,858],{"id":856},"configure-db","Configure ",[628,859,630],{},[624,861,862,863,865],{},"The same top-level ",[628,864,630],{}," key works across Vite, Nitro, and Nuxt. Pick the ORM you want to use and keep the config focused on that runtime.",[657,867,869,1069],{"sync":868},"db-orm",[661,870,871],{"label":37},[664,872,875],{"className":791,"code":873,"filename":874,"language":794,"meta":670,"style":670},"import { defineNitroConfig } from 'nitro\u002Fconfig'\n\nexport default defineNitroConfig({\n  modules: ['@vitehub\u002Fdb\u002Fnitro'],\n  db: {\n    orm: 'drizzle',\n    dialect: 'sqlite',\n    connection: {\n      url: 'file:.data\u002Fdb\u002Fapp.sqlite',\n    },\n    drizzle: {\n      migrationsDirs: ['server\u002Fdb\u002Fmigrations'],\n    },\n  },\n})\n","nitro.config.ts",[628,876,877,903,909,921,942,953,970,987,997,1014,1020,1030,1051,1056,1062],{"__ignoreMap":670},[674,878,879,882,885,888,891,894,897,900],{"class":676,"line":677},[674,880,881],{"class":801},"import",[674,883,884],{"class":816}," {",[674,886,887],{"class":812}," defineNitroConfig",[674,889,890],{"class":816}," }",[674,892,893],{"class":801}," from",[674,895,896],{"class":816}," '",[674,898,899],{"class":684},"nitro\u002Fconfig",[674,901,902],{"class":816},"'\n",[674,904,905],{"class":676,"line":820},[674,906,908],{"emptyLinePlaceholder":907},true,"\n",[674,910,911,913,915,917,919],{"class":676,"line":847},[674,912,802],{"class":801},[674,914,805],{"class":801},[674,916,887],{"class":808},[674,918,813],{"class":812},[674,920,817],{"class":816},[674,922,924,927,929,931,933,936,938,940],{"class":676,"line":923},4,[674,925,926],{"class":823},"  modules",[674,928,827],{"class":816},[674,930,830],{"class":812},[674,932,833],{"class":816},[674,934,935],{"class":684},"@vitehub\u002Fdb\u002Fnitro",[674,937,833],{"class":816},[674,939,841],{"class":812},[674,941,844],{"class":816},[674,943,945,948,950],{"class":676,"line":944},5,[674,946,947],{"class":823},"  db",[674,949,827],{"class":816},[674,951,952],{"class":816}," {\n",[674,954,956,959,961,963,966,968],{"class":676,"line":955},6,[674,957,958],{"class":823},"    orm",[674,960,827],{"class":816},[674,962,896],{"class":816},[674,964,965],{"class":684},"drizzle",[674,967,833],{"class":816},[674,969,844],{"class":816},[674,971,973,976,978,980,983,985],{"class":676,"line":972},7,[674,974,975],{"class":823},"    dialect",[674,977,827],{"class":816},[674,979,896],{"class":816},[674,981,982],{"class":684},"sqlite",[674,984,833],{"class":816},[674,986,844],{"class":816},[674,988,990,993,995],{"class":676,"line":989},8,[674,991,992],{"class":823},"    connection",[674,994,827],{"class":816},[674,996,952],{"class":816},[674,998,1000,1003,1005,1007,1010,1012],{"class":676,"line":999},9,[674,1001,1002],{"class":823},"      url",[674,1004,827],{"class":816},[674,1006,896],{"class":816},[674,1008,1009],{"class":684},"file:.data\u002Fdb\u002Fapp.sqlite",[674,1011,833],{"class":816},[674,1013,844],{"class":816},[674,1015,1017],{"class":676,"line":1016},10,[674,1018,1019],{"class":816},"    },\n",[674,1021,1023,1026,1028],{"class":676,"line":1022},11,[674,1024,1025],{"class":823},"    drizzle",[674,1027,827],{"class":816},[674,1029,952],{"class":816},[674,1031,1033,1036,1038,1040,1042,1045,1047,1049],{"class":676,"line":1032},12,[674,1034,1035],{"class":823},"      migrationsDirs",[674,1037,827],{"class":816},[674,1039,830],{"class":812},[674,1041,833],{"class":816},[674,1043,1044],{"class":684},"server\u002Fdb\u002Fmigrations",[674,1046,833],{"class":816},[674,1048,841],{"class":812},[674,1050,844],{"class":816},[674,1052,1054],{"class":676,"line":1053},13,[674,1055,1019],{"class":816},[674,1057,1059],{"class":676,"line":1058},14,[674,1060,1061],{"class":816},"  },\n",[674,1063,1065,1067],{"class":676,"line":1064},15,[674,1066,850],{"class":816},[674,1068,853],{"class":812},[661,1070,1071],{"label":41},[664,1072,1074],{"className":791,"code":1073,"filename":874,"language":794,"meta":670,"style":670},"import { defineNitroConfig } from 'nitro\u002Fconfig'\n\nexport default defineNitroConfig({\n  modules: ['@vitehub\u002Fdb\u002Fnitro'],\n  db: {\n    orm: 'prisma',\n    dialect: 'postgresql',\n    connection: {\n      url: process.env.DATABASE_URL,\n    },\n    prisma: {\n      schemaPath: 'prisma\u002Fschema.prisma',\n      clientOutput: '.vitehub\u002Fdb\u002Fprisma-client',\n    },\n  },\n})\n",[628,1075,1076,1094,1098,1110,1128,1136,1151,1166,1174,1196,1200,1209,1225,1241,1245,1249],{"__ignoreMap":670},[674,1077,1078,1080,1082,1084,1086,1088,1090,1092],{"class":676,"line":677},[674,1079,881],{"class":801},[674,1081,884],{"class":816},[674,1083,887],{"class":812},[674,1085,890],{"class":816},[674,1087,893],{"class":801},[674,1089,896],{"class":816},[674,1091,899],{"class":684},[674,1093,902],{"class":816},[674,1095,1096],{"class":676,"line":820},[674,1097,908],{"emptyLinePlaceholder":907},[674,1099,1100,1102,1104,1106,1108],{"class":676,"line":847},[674,1101,802],{"class":801},[674,1103,805],{"class":801},[674,1105,887],{"class":808},[674,1107,813],{"class":812},[674,1109,817],{"class":816},[674,1111,1112,1114,1116,1118,1120,1122,1124,1126],{"class":676,"line":923},[674,1113,926],{"class":823},[674,1115,827],{"class":816},[674,1117,830],{"class":812},[674,1119,833],{"class":816},[674,1121,935],{"class":684},[674,1123,833],{"class":816},[674,1125,841],{"class":812},[674,1127,844],{"class":816},[674,1129,1130,1132,1134],{"class":676,"line":944},[674,1131,947],{"class":823},[674,1133,827],{"class":816},[674,1135,952],{"class":816},[674,1137,1138,1140,1142,1144,1147,1149],{"class":676,"line":955},[674,1139,958],{"class":823},[674,1141,827],{"class":816},[674,1143,896],{"class":816},[674,1145,1146],{"class":684},"prisma",[674,1148,833],{"class":816},[674,1150,844],{"class":816},[674,1152,1153,1155,1157,1159,1162,1164],{"class":676,"line":972},[674,1154,975],{"class":823},[674,1156,827],{"class":816},[674,1158,896],{"class":816},[674,1160,1161],{"class":684},"postgresql",[674,1163,833],{"class":816},[674,1165,844],{"class":816},[674,1167,1168,1170,1172],{"class":676,"line":989},[674,1169,992],{"class":823},[674,1171,827],{"class":816},[674,1173,952],{"class":816},[674,1175,1176,1178,1180,1183,1186,1189,1191,1194],{"class":676,"line":999},[674,1177,1002],{"class":823},[674,1179,827],{"class":816},[674,1181,1182],{"class":812}," process",[674,1184,1185],{"class":816},".",[674,1187,1188],{"class":812},"env",[674,1190,1185],{"class":816},[674,1192,1193],{"class":812},"DATABASE_URL",[674,1195,844],{"class":816},[674,1197,1198],{"class":676,"line":1016},[674,1199,1019],{"class":816},[674,1201,1202,1205,1207],{"class":676,"line":1022},[674,1203,1204],{"class":823},"    prisma",[674,1206,827],{"class":816},[674,1208,952],{"class":816},[674,1210,1211,1214,1216,1218,1221,1223],{"class":676,"line":1032},[674,1212,1213],{"class":823},"      schemaPath",[674,1215,827],{"class":816},[674,1217,896],{"class":816},[674,1219,1220],{"class":684},"prisma\u002Fschema.prisma",[674,1222,833],{"class":816},[674,1224,844],{"class":816},[674,1226,1227,1230,1232,1234,1237,1239],{"class":676,"line":1053},[674,1228,1229],{"class":823},"      clientOutput",[674,1231,827],{"class":816},[674,1233,896],{"class":816},[674,1235,1236],{"class":684},".vitehub\u002Fdb\u002Fprisma-client",[674,1238,833],{"class":816},[674,1240,844],{"class":816},[674,1242,1243],{"class":676,"line":1058},[674,1244,1019],{"class":816},[674,1246,1247],{"class":676,"line":1064},[674,1248,1061],{"class":816},[674,1250,1252,1254],{"class":676,"line":1251},16,[674,1253,850],{"class":816},[674,1255,853],{"class":812},[652,1257,1259],{"id":1258},"import-the-runtime-explicitly","Import the runtime explicitly",[624,1261,1262],{},"Import the runtime from the ORM subpath you configured. The package root does not export a live database client.",[657,1264,1266,1368],{"sync":1265},"db-runtime",[661,1267,1268],{"label":37},[664,1269,1272],{"className":791,"code":1270,"filename":1271,"language":794,"meta":670,"style":670},"import { db, schema } from '@vitehub\u002Fdb\u002Fdrizzle'\n\nexport default defineEventHandler(async () => {\n  return await db.select().from(schema.posts)\n})\n","server\u002Fapi\u002Fposts.get.ts",[628,1273,1274,1300,1304,1327,1362],{"__ignoreMap":670},[674,1275,1276,1278,1280,1283,1286,1289,1291,1293,1295,1298],{"class":676,"line":677},[674,1277,881],{"class":801},[674,1279,884],{"class":816},[674,1281,1282],{"class":812}," db",[674,1284,1285],{"class":816},",",[674,1287,1288],{"class":812}," schema",[674,1290,890],{"class":816},[674,1292,893],{"class":801},[674,1294,896],{"class":816},[674,1296,1297],{"class":684},"@vitehub\u002Fdb\u002Fdrizzle",[674,1299,902],{"class":816},[674,1301,1302],{"class":676,"line":820},[674,1303,908],{"emptyLinePlaceholder":907},[674,1305,1306,1308,1310,1313,1315,1319,1322,1325],{"class":676,"line":847},[674,1307,802],{"class":801},[674,1309,805],{"class":801},[674,1311,1312],{"class":808}," defineEventHandler",[674,1314,813],{"class":812},[674,1316,1318],{"class":1317},"spNyl","async",[674,1320,1321],{"class":816}," ()",[674,1323,1324],{"class":1317}," =>",[674,1326,952],{"class":816},[674,1328,1329,1332,1335,1337,1339,1342,1345,1347,1350,1352,1355,1357,1360],{"class":676,"line":923},[674,1330,1331],{"class":801},"  return",[674,1333,1334],{"class":801}," await",[674,1336,1282],{"class":812},[674,1338,1185],{"class":816},[674,1340,1341],{"class":808},"select",[674,1343,1344],{"class":823},"()",[674,1346,1185],{"class":816},[674,1348,1349],{"class":808},"from",[674,1351,813],{"class":823},[674,1353,1354],{"class":812},"schema",[674,1356,1185],{"class":816},[674,1358,1359],{"class":812},"posts",[674,1361,853],{"class":823},[674,1363,1364,1366],{"class":676,"line":944},[674,1365,850],{"class":816},[674,1367,853],{"class":812},[661,1369,1370],{"label":41},[664,1371,1373],{"className":791,"code":1372,"filename":1271,"language":794,"meta":670,"style":670},"import { prisma } from '@vitehub\u002Fdb\u002Fprisma'\n\nexport default defineEventHandler(async () => {\n  return await prisma.post.findMany()\n})\n",[628,1374,1375,1394,1398,1416,1437],{"__ignoreMap":670},[674,1376,1377,1379,1381,1383,1385,1387,1389,1392],{"class":676,"line":677},[674,1378,881],{"class":801},[674,1380,884],{"class":816},[674,1382,746],{"class":812},[674,1384,890],{"class":816},[674,1386,893],{"class":801},[674,1388,896],{"class":816},[674,1390,1391],{"class":684},"@vitehub\u002Fdb\u002Fprisma",[674,1393,902],{"class":816},[674,1395,1396],{"class":676,"line":820},[674,1397,908],{"emptyLinePlaceholder":907},[674,1399,1400,1402,1404,1406,1408,1410,1412,1414],{"class":676,"line":847},[674,1401,802],{"class":801},[674,1403,805],{"class":801},[674,1405,1312],{"class":808},[674,1407,813],{"class":812},[674,1409,1318],{"class":1317},[674,1411,1321],{"class":816},[674,1413,1324],{"class":1317},[674,1415,952],{"class":816},[674,1417,1418,1420,1422,1424,1426,1429,1431,1434],{"class":676,"line":923},[674,1419,1331],{"class":801},[674,1421,1334],{"class":801},[674,1423,746],{"class":812},[674,1425,1185],{"class":816},[674,1427,1428],{"class":812},"post",[674,1430,1185],{"class":816},[674,1432,1433],{"class":808},"findMany",[674,1435,1436],{"class":823},"()\n",[674,1438,1439,1441],{"class":676,"line":944},[674,1440,850],{"class":816},[674,1442,853],{"class":812},[643,1444,1446],{"id":1445},"shared-config","Shared config",[624,1448,1449,1451,1452,1455,1456,1185],{},[628,1450,640],{}," keeps the shared config surface small. ORM-specific settings live under ",[628,1453,1454],{},"db.drizzle"," or ",[628,1457,1458],{},"db.prisma",[1460,1461,1462,1475],"table",{},[1463,1464,1465],"thead",{},[1466,1467,1468,1472],"tr",{},[1469,1470,1471],"th",{},"Key",[1469,1473,1474],{},"Purpose",[1476,1477,1478,1493,1511,1521,1531,1541],"tbody",{},[1466,1479,1480,1486],{},[1481,1482,1483],"td",{},[628,1484,1485],{},"orm",[1481,1487,1488,1489,1455,1491,1185],{},"Selects ",[628,1490,965],{},[628,1492,1146],{},[1466,1494,1495,1500],{},[1481,1496,1497],{},[628,1498,1499],{},"dialect",[1481,1501,1488,1502,1504,1505,1507,1508,1185],{},[628,1503,982],{},", ",[628,1506,1161],{},", or ",[628,1509,1510],{},"mysql",[1466,1512,1513,1518],{},[1481,1514,1515],{},[628,1516,1517],{},"driver",[1481,1519,1520],{},"Overrides the default driver for the chosen ORM and dialect.",[1466,1522,1523,1528],{},[1481,1524,1525],{},[628,1526,1527],{},"connection",[1481,1529,1530],{},"Holds the connection URL, adapter-specific fields, and optional binding metadata.",[1466,1532,1533,1538],{},[1481,1534,1535],{},[628,1536,1537],{},"applyMigrationsDuringDev",[1481,1539,1540],{},"Applies committed migrations during local development.",[1466,1542,1543,1548],{},[1481,1544,1545],{},[628,1546,1547],{},"applyMigrationsDuringBuild",[1481,1549,1550],{},"Applies committed migrations during build when the runtime supports it.",[643,1552,1554],{"id":1553},"runtime-imports","Runtime imports",[624,1556,1557],{},"ViteHub keeps runtime imports explicit:",[1460,1559,1560,1569],{},[1463,1561,1562],{},[1466,1563,1564,1567],{},[1469,1565,1566],{},"Import",[1469,1568,1474],{},[1476,1570,1571,1580,1595],{},[1466,1572,1573,1577],{},[1481,1574,1575],{},[628,1576,640],{},[1481,1578,1579],{},"Config, types, and integration wiring.",[1466,1581,1582,1586],{},[1481,1583,1584],{},[628,1585,1297],{},[1481,1587,1588,1589,1591,1592,1594],{},"The generated Drizzle ",[628,1590,630],{}," client and discovered ",[628,1593,1354],{}," exports.",[1466,1596,1597,1601],{},[1481,1598,1599],{},[628,1600,1391],{},[1481,1602,1603],{},"The generated Prisma client and Prisma re-exports.",[643,1605,1607],{"id":1606},"native-tooling","Native tooling",[624,1609,1610],{},"ViteHub does not wrap ORM CLIs. Generate and manage migrations with the native toolchain for the ORM you picked.",[657,1612,1614,1639],{"sync":1613},"db-tooling",[661,1615,1616],{"label":37},[664,1617,1619],{"className":666,"code":1618,"filename":668,"language":669,"meta":670,"style":670},"pnpm drizzle-kit generate\npnpm drizzle-kit migrate\n",[628,1620,1621,1630],{"__ignoreMap":670},[674,1622,1623,1625,1627],{"class":676,"line":677},[674,1624,681],{"class":680},[674,1626,694],{"class":684},[674,1628,1629],{"class":684}," generate\n",[674,1631,1632,1634,1636],{"class":676,"line":820},[674,1633,681],{"class":680},[674,1635,694],{"class":684},[674,1637,1638],{"class":684}," migrate\n",[661,1640,1641],{"label":41},[664,1642,1644],{"className":666,"code":1643,"filename":668,"language":669,"meta":670,"style":670},"pnpm prisma generate\npnpm prisma migrate dev\npnpm prisma migrate deploy\n",[628,1645,1646,1654,1666],{"__ignoreMap":670},[674,1647,1648,1650,1652],{"class":676,"line":677},[674,1649,681],{"class":680},[674,1651,746],{"class":684},[674,1653,1629],{"class":684},[674,1655,1656,1658,1660,1663],{"class":676,"line":820},[674,1657,681],{"class":680},[674,1659,746],{"class":684},[674,1661,1662],{"class":684}," migrate",[674,1664,1665],{"class":684}," dev\n",[674,1667,1668,1670,1672,1674],{"class":676,"line":847},[674,1669,681],{"class":680},[674,1671,746],{"class":684},[674,1673,1662],{"class":684},[674,1675,1676],{"class":684}," deploy\n",[1678,1679,1680],"note",{},[624,1681,1682],{},"ViteHub only applies committed migrations during development or build. It never generates migrations for you.",[1684,1685,1688,1694,1698,1703],"u-page-grid",{"className":1686},[1687],"pb-2",[1689,1690],"u-page-card",{"description":1691,"icon":1692,"title":37,"to":1693},"Configure schema discovery, typed queries, and committed SQL migrations with Drizzle.","i-lucide-droplets",".\u002Fdatabase\u002Fdrizzle",[1689,1695],{"description":1696,"icon":268,"title":41,"to":1697},"Configure Prisma Client generation, adapters, and runtime imports with Prisma.",".\u002Fdatabase\u002Fprisma",[1689,1699],{"description":1700,"icon":1701,"title":45,"to":1702},"See how ViteHub applies committed Drizzle and Prisma migrations during dev and build.","i-lucide-waypoints",".\u002Fdatabase\u002Fmigrations",[1689,1704],{"description":1705,"icon":1706,"title":49,"to":1707},"Review driver defaults, hosting behavior, and current runtime limits.","i-lucide-server",".\u002Fdatabase\u002Fplatform-notes",[1709,1710,1711],"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}",{"title":670,"searchDepth":820,"depth":820,"links":1713},[1714,1721,1722,1723],{"id":645,"depth":820,"text":646,"children":1715},[1716,1717,1718,1720],{"id":654,"depth":847,"text":655},{"id":783,"depth":847,"text":784},{"id":856,"depth":847,"text":1719},"Configure db",{"id":1258,"depth":847,"text":1259},{"id":1445,"depth":820,"text":1446},{"id":1553,"depth":820,"text":1554},{"id":1606,"depth":820,"text":1607},"md",{},{"title":1727},"Overview",{"title":31,"description":33},"docs\u002Fnuxt\u002Fdatabase\u002Findex","2i8HKT7JdZP_0Sl-CxQxK-cFHJ46SjPfBMh-QQJcu6Q",[1732,1733],{"title":27,"path":479,"description":29},{"title":37,"path":484,"description":39},1775391843377]