[{"data":1,"prerenderedAt":1918},["ShallowReactive",2],{"docs-navigation:en":3,"content-page:docs:83WSs43tSrwm9XUzEi7INQLc7BNnd7Br4GnnXT1CaSE":595,"content-page-surround:docs:83WSs43tSrwm9XUzEi7INQLc7BNnd7Br4GnnXT1CaSE":1906,"i-logos:typescript-icon":1911,"i-lucide:clipboard":1915},[4,55,123,191,450,509,554,590],{"title":5,"page":6,"canonicalKey":7,"locale":8,"id":9,"draft":6,"icon":10,"sidebar":11,"children":12},"Learn",false,"1","en","content:docs:1.overview:.navigation.yml","i-lucide-book-open","section",[13,20,27,34,41,48],{"title":14,"id":15,"canonicalKey":16,"locale":8,"draft":6,"navigation":17,"icon":18,"path":19},"Better Convex Nuxt","content:docs:1.overview:1.introduction.md","1\u002F1",{"icon":18},"i-lucide-orbit","\u002Fdocs\u002Foverview\u002Fintroduction",{"title":21,"id":22,"canonicalKey":23,"locale":8,"draft":6,"navigation":24,"icon":25,"path":26},"Why Better Convex Nuxt","content:docs:1.overview:2.why-better-convex-nuxt.md","1\u002F2",{"icon":25},"i-lucide-badge-check","\u002Fdocs\u002Foverview\u002Fwhy-better-convex-nuxt",{"title":28,"id":29,"canonicalKey":30,"locale":8,"draft":6,"navigation":31,"icon":32,"path":33},"Who It Is For","content:docs:1.overview:3.who-it-is-for.md","1\u002F3",{"icon":32},"i-lucide-users","\u002Fdocs\u002Foverview\u002Fwho-it-is-for",{"title":35,"id":36,"canonicalKey":37,"locale":8,"draft":6,"navigation":38,"icon":39,"path":40},"Use Cases","content:docs:1.overview:4.use-cases.md","1\u002F4",{"icon":39},"i-lucide-layout-dashboard","\u002Fdocs\u002Foverview\u002Fuse-cases",{"title":42,"id":43,"canonicalKey":44,"locale":8,"draft":6,"navigation":45,"icon":46,"path":47},"Compare Nuxt Integrations","content:docs:1.overview:5.comparison.md","1\u002F5",{"icon":46},"i-lucide-scale","\u002Fdocs\u002Foverview\u002Fcomparison",{"title":49,"id":50,"canonicalKey":51,"locale":8,"draft":6,"navigation":52,"icon":53,"path":54},"Limitations and Trade-offs","content:docs:1.overview:6.limitations.md","1\u002F6",{"icon":53},"i-lucide-triangle-alert","\u002Fdocs\u002Foverview\u002Flimitations",{"title":56,"page":6,"canonicalKey":57,"locale":8,"id":58,"draft":6,"icon":59,"children":60},"Understand","2","content:docs:2.understand:.navigation.yml","i-lucide-brain",[61,67,74,81,88,95,102,109,116],{"title":62,"id":63,"canonicalKey":64,"locale":8,"draft":6,"navigation":65,"icon":59,"path":66},"Mental Model","content:docs:2.understand:1.mental-model.md","2\u002F1",{"icon":59},"\u002Fdocs\u002Funderstand\u002Fmental-model",{"title":68,"id":69,"canonicalKey":70,"locale":8,"draft":6,"navigation":71,"icon":72,"path":73},"Request Lifecycle","content:docs:2.understand:2.request-lifecycle.md","2\u002F2",{"icon":72},"i-lucide-route","\u002Fdocs\u002Funderstand\u002Frequest-lifecycle",{"title":75,"id":76,"canonicalKey":77,"locale":8,"draft":6,"navigation":78,"icon":79,"path":80},"SSR, Hydration, and Real-Time","content:docs:2.understand:3.ssr-hydration-realtime.md","2\u002F3",{"icon":79},"i-lucide-refresh-cw","\u002Fdocs\u002Funderstand\u002Fssr-hydration-realtime",{"title":82,"id":83,"canonicalKey":84,"locale":8,"draft":6,"navigation":85,"icon":86,"path":87},"Query Ownership and Caching","content:docs:2.understand:4.query-ownership-and-caching.md","2\u002F4",{"icon":86},"i-lucide-database","\u002Fdocs\u002Funderstand\u002Fquery-ownership-and-caching",{"title":89,"id":90,"canonicalKey":91,"locale":8,"draft":6,"navigation":92,"icon":93,"path":94},"Authentication and Identity","content:docs:2.understand:5.authentication-and-identity.md","2\u002F5",{"icon":93},"i-lucide-fingerprint","\u002Fdocs\u002Funderstand\u002Fauthentication-and-identity",{"title":96,"id":97,"canonicalKey":98,"locale":8,"draft":6,"navigation":99,"icon":100,"path":101},"Server and Client Boundaries","content:docs:2.understand:6.server-and-client-boundaries.md","2\u002F6",{"icon":100},"i-lucide-panels-top-left","\u002Fdocs\u002Funderstand\u002Fserver-and-client-boundaries",{"title":103,"id":104,"canonicalKey":105,"locale":8,"draft":6,"navigation":106,"icon":107,"path":108},"Errors and Failures","content:docs:2.understand:7.errors-and-failures.md","2\u002F7",{"icon":107},"i-lucide-circle-x","\u002Fdocs\u002Funderstand\u002Ferrors-and-failures",{"title":110,"id":111,"canonicalKey":112,"locale":8,"draft":6,"navigation":113,"icon":114,"path":115},"Design Decisions","content:docs:2.understand:8.design-decisions.md","2\u002F8",{"icon":114},"i-lucide-git-branch","\u002Fdocs\u002Funderstand\u002Fdesign-decisions",{"title":117,"id":118,"canonicalKey":119,"locale":8,"draft":6,"navigation":120,"icon":121,"path":122},"Glossary","content:docs:2.understand:9.glossary.md","2\u002F9",{"icon":121},"i-lucide-book-a","\u002Fdocs\u002Funderstand\u002Fglossary",{"title":124,"page":6,"canonicalKey":125,"locale":8,"id":126,"draft":6,"icon":127,"children":128},"Get Started","3","content:docs:3.get-started:.navigation.yml","i-lucide-rocket",[129,136,143,150,157,164,171,178,185],{"title":130,"id":131,"canonicalKey":132,"locale":8,"draft":6,"navigation":133,"icon":134,"path":135},"Choose Your Path","content:docs:3.get-started:1.choose-your-path.md","3\u002F1",{"icon":134},"i-lucide-signpost","\u002Fdocs\u002Fget-started\u002Fchoose-your-path",{"title":137,"id":138,"canonicalKey":139,"locale":8,"draft":6,"navigation":140,"icon":141,"path":142},"Installation","content:docs:3.get-started:2.installation.md","3\u002F2",{"icon":141},"i-lucide-download","\u002Fdocs\u002Fget-started\u002Finstallation",{"title":144,"id":145,"canonicalKey":146,"locale":8,"draft":6,"navigation":147,"icon":148,"path":149},"First Real-Time Page","content:docs:3.get-started:3.first-realtime-page.md","3\u002F3",{"icon":148},"i-lucide-radio","\u002Fdocs\u002Fget-started\u002Ffirst-realtime-page",{"title":151,"id":152,"canonicalKey":153,"locale":8,"draft":6,"navigation":154,"icon":155,"path":156},"Add a Mutation","content:docs:3.get-started:4.add-a-mutation.md","3\u002F4",{"icon":155},"i-lucide-square-pen","\u002Fdocs\u002Fget-started\u002Fadd-a-mutation",{"title":158,"id":159,"canonicalKey":160,"locale":8,"draft":6,"navigation":161,"icon":162,"path":163},"Add Authentication","content:docs:3.get-started:5.add-authentication.md","3\u002F5",{"icon":162},"i-lucide-log-in","\u002Fdocs\u002Fget-started\u002Fadd-authentication",{"title":165,"id":166,"canonicalKey":167,"locale":8,"draft":6,"navigation":168,"icon":169,"path":170},"Protect Data","content:docs:3.get-started:6.protect-data.md","3\u002F6",{"icon":169},"i-lucide-shield-check","\u002Fdocs\u002Fget-started\u002Fprotect-data",{"title":172,"id":173,"canonicalKey":174,"locale":8,"draft":6,"navigation":175,"icon":176,"path":177},"Project Structure","content:docs:3.get-started:7.project-structure.md","3\u002F7",{"icon":176},"i-lucide-folder-tree","\u002Fdocs\u002Fget-started\u002Fproject-structure",{"title":179,"id":180,"canonicalKey":181,"locale":8,"draft":6,"navigation":182,"icon":183,"path":184},"Next Steps","content:docs:3.get-started:8.next-steps.md","3\u002F8",{"icon":183},"i-lucide-arrow-right","\u002Fdocs\u002Fget-started\u002Fnext-steps",{"title":186,"id":187,"canonicalKey":188,"locale":8,"draft":6,"navigation":189,"icon":100,"path":190},"Plain Vue and Vite","content:docs:3.get-started:9.plain-vue.md","3\u002F9",{"icon":100},"\u002Fdocs\u002Fget-started\u002Fplain-vue",{"title":192,"page":6,"canonicalKey":193,"locale":8,"id":194,"draft":6,"icon":195,"sidebar":11,"children":196},"Build","4","content:docs:4.build:.navigation.yml","i-lucide-blocks",[197,234,265,336,368,393,432],{"title":198,"page":6,"canonicalKey":199,"locale":8,"children":200},"Queries","4\u002F1",[201,206,213,220,227],{"title":198,"id":202,"canonicalKey":203,"locale":8,"draft":6,"navigation":204,"icon":86,"path":205},"content:docs:4.build:1.queries:1.queries.md","4\u002F1\u002F1",{"icon":86},"\u002Fdocs\u002Fbuild\u002Fqueries\u002Fqueries",{"title":207,"id":208,"canonicalKey":209,"locale":8,"draft":6,"navigation":210,"icon":211,"path":212},"Reactive Arguments","content:docs:4.build:1.queries:2.reactive-arguments.md","4\u002F1\u002F2",{"icon":211},"i-lucide-sliders-horizontal","\u002Fdocs\u002Fbuild\u002Fqueries\u002Freactive-arguments",{"title":214,"id":215,"canonicalKey":216,"locale":8,"draft":6,"navigation":217,"icon":218,"path":219},"Loading and Stale Data","content:docs:4.build:1.queries:3.loading-and-stale-data.md","4\u002F1\u002F3",{"icon":218},"i-lucide-loader-circle","\u002Fdocs\u002Fbuild\u002Fqueries\u002Floading-and-stale-data",{"title":221,"id":222,"canonicalKey":223,"locale":8,"draft":6,"navigation":224,"icon":225,"path":226},"Query Execution Options","content:docs:4.build:1.queries:4.ssr-options.md","4\u002F1\u002F4",{"icon":225},"i-lucide-server-cog","\u002Fdocs\u002Fbuild\u002Fqueries\u002Fssr-options",{"title":228,"id":229,"canonicalKey":230,"locale":8,"draft":6,"navigation":231,"icon":232,"path":233},"Pagination","content:docs:4.build:1.queries:6.pagination.md","4\u002F1\u002F6",{"icon":232},"i-lucide-list-plus","\u002Fdocs\u002Fbuild\u002Fqueries\u002Fpagination",{"title":235,"page":6,"canonicalKey":236,"locale":8,"children":237},"Write Data","4\u002F2",[238,244,251,258],{"title":239,"id":240,"canonicalKey":241,"locale":8,"draft":6,"navigation":242,"icon":155,"path":243},"Mutations","content:docs:4.build:2.write-data:1.mutations.md","4\u002F2\u002F1",{"icon":155},"\u002Fdocs\u002Fbuild\u002Fwrite-data\u002Fmutations",{"title":245,"id":246,"canonicalKey":247,"locale":8,"draft":6,"navigation":248,"icon":249,"path":250},"Actions","content:docs:4.build:2.write-data:2.actions.md","4\u002F2\u002F2",{"icon":249},"i-lucide-zap","\u002Fdocs\u002Fbuild\u002Fwrite-data\u002Factions",{"title":252,"id":253,"canonicalKey":254,"locale":8,"draft":6,"navigation":255,"icon":256,"path":257},"Optimistic Updates","content:docs:4.build:2.write-data:3.optimistic-updates.md","4\u002F2\u002F3",{"icon":256},"i-lucide-gauge","\u002Fdocs\u002Fbuild\u002Fwrite-data\u002Foptimistic-updates",{"title":259,"id":260,"canonicalKey":261,"locale":8,"draft":6,"navigation":262,"icon":263,"path":264},"Concurrent Operations","content:docs:4.build:2.write-data:4.concurrent-operations.md","4\u002F2\u002F4",{"icon":263},"i-lucide-git-fork","\u002Fdocs\u002Fbuild\u002Fwrite-data\u002Fconcurrent-operations",{"title":266,"page":6,"canonicalKey":267,"locale":8,"children":268},"Authentication","4\u002F3",[269,275,282,289,295,301,308,315,322,329],{"title":266,"id":270,"canonicalKey":271,"locale":8,"draft":6,"navigation":272,"icon":273,"path":274},"content:docs:4.build:3.authentication:1.overview.md","4\u002F3\u002F1",{"icon":273},"i-lucide-shield","\u002Fdocs\u002Fbuild\u002Fauthentication\u002Foverview",{"title":276,"id":277,"canonicalKey":278,"locale":8,"draft":6,"navigation":279,"icon":280,"path":281},"Better Auth Setup","content:docs:4.build:3.authentication:2.better-auth-setup.md","4\u002F3\u002F2",{"icon":280},"i-lucide-settings-2","\u002Fdocs\u002Fbuild\u002Fauthentication\u002Fbetter-auth-setup",{"title":283,"id":284,"canonicalKey":285,"locale":8,"draft":6,"navigation":286,"icon":287,"path":288},"Auth State and User Data","content:docs:4.build:3.authentication:3.auth-state-and-user.md","4\u002F3\u002F3",{"icon":287},"i-lucide-user-round","\u002Fdocs\u002Fbuild\u002Fauthentication\u002Fauth-state-and-user",{"title":290,"id":291,"canonicalKey":292,"locale":8,"draft":6,"navigation":293,"icon":162,"path":294},"Sign In and Sign Out","content:docs:4.build:3.authentication:4.sign-in-and-sign-out.md","4\u002F3\u002F4",{"icon":162},"\u002Fdocs\u002Fbuild\u002Fauthentication\u002Fsign-in-and-sign-out",{"title":296,"id":297,"canonicalKey":298,"locale":8,"draft":6,"navigation":299,"icon":72,"path":300},"Route Protection","content:docs:4.build:3.authentication:5.route-protection.md","4\u002F3\u002F5",{"icon":72},"\u002Fdocs\u002Fbuild\u002Fauthentication\u002Froute-protection",{"title":302,"id":303,"canonicalKey":304,"locale":8,"draft":6,"navigation":305,"icon":306,"path":307},"Backend Authorization","content:docs:4.build:3.authentication:6.backend-authorization.md","4\u002F3\u002F6",{"icon":306},"i-lucide-lock-keyhole","\u002Fdocs\u002Fbuild\u002Fauthentication\u002Fbackend-authorization",{"title":309,"id":310,"canonicalKey":311,"locale":8,"draft":6,"navigation":312,"icon":313,"path":314},"Better Auth Plugins","content:docs:4.build:3.authentication:7.better-auth-plugins.md","4\u002F3\u002F7",{"icon":313},"i-lucide-plug","\u002Fdocs\u002Fbuild\u002Fauthentication\u002Fbetter-auth-plugins",{"title":316,"id":317,"canonicalKey":318,"locale":8,"draft":6,"navigation":319,"icon":320,"path":321},"Custom User Fields","content:docs:4.build:3.authentication:8.custom-user-fields.md","4\u002F3\u002F8",{"icon":320},"i-lucide-user-cog","\u002Fdocs\u002Fbuild\u002Fauthentication\u002Fcustom-user-fields",{"title":323,"id":324,"canonicalKey":325,"locale":8,"draft":6,"navigation":326,"icon":327,"path":328},"User Synchronization","content:docs:4.build:3.authentication:9.user-synchronization.md","4\u002F3\u002F9",{"icon":327},"i-lucide-refresh-ccw","\u002Fdocs\u002Fbuild\u002Fauthentication\u002Fuser-synchronization",{"title":330,"id":331,"canonicalKey":332,"locale":8,"draft":6,"navigation":333,"icon":334,"path":335},"Delegated OAuth and MCP","content:docs:4.build:3.authentication:10.delegated-oauth-and-mcp.md","4\u002F3\u002F10",{"icon":334},"i-lucide-bot","\u002Fdocs\u002Fbuild\u002Fauthentication\u002Fdelegated-oauth-and-mcp",{"title":337,"page":6,"canonicalKey":338,"locale":8,"children":339},"Server","4\u002F4",[340,347,354,361],{"title":341,"id":342,"canonicalKey":343,"locale":8,"draft":6,"navigation":344,"icon":345,"path":346},"serverConvex","content:docs:4.build:4.server:1.server-convex.md","4\u002F4\u002F1",{"icon":345},"i-lucide-server","\u002Fdocs\u002Fbuild\u002Fserver\u002Fserver-convex",{"title":348,"id":349,"canonicalKey":350,"locale":8,"draft":6,"navigation":351,"icon":352,"path":353},"Server Routes","content:docs:4.build:4.server:2.server-routes.md","4\u002F4\u002F2",{"icon":352},"i-lucide-waypoints","\u002Fdocs\u002Fbuild\u002Fserver\u002Fserver-routes",{"title":355,"id":356,"canonicalKey":357,"locale":8,"draft":6,"navigation":358,"icon":359,"path":360},"Webhooks and Jobs","content:docs:4.build:4.server:3.webhooks-and-jobs.md","4\u002F4\u002F3",{"icon":359},"i-lucide-webhook","\u002Fdocs\u002Fbuild\u002Fserver\u002Fwebhooks-and-jobs",{"title":362,"id":363,"canonicalKey":364,"locale":8,"draft":6,"navigation":365,"icon":366,"path":367},"Credentials and Server Security","content:docs:4.build:4.server:4.credentials-and-security.md","4\u002F4\u002F4",{"icon":366},"i-lucide-key-round","\u002Fdocs\u002Fbuild\u002Fserver\u002Fcredentials-and-security",{"title":369,"page":6,"canonicalKey":370,"locale":8,"children":371},"Files","4\u002F5",[372,379,386],{"title":373,"id":374,"canonicalKey":375,"locale":8,"draft":6,"navigation":376,"icon":377,"path":378},"Upload Files","content:docs:4.build:5.files:1.upload-files.md","4\u002F5\u002F1",{"icon":377},"i-lucide-upload","\u002Fdocs\u002Fbuild\u002Ffiles\u002Fupload-files",{"title":380,"id":381,"canonicalKey":382,"locale":8,"draft":6,"navigation":383,"icon":384,"path":385},"Storage URLs","content:docs:4.build:5.files:3.storage-urls.md","4\u002F5\u002F3",{"icon":384},"i-lucide-link","\u002Fdocs\u002Fbuild\u002Ffiles\u002Fstorage-urls",{"title":387,"id":388,"canonicalKey":389,"locale":8,"draft":6,"navigation":390,"icon":391,"path":392},"File Validation and Deletion","content:docs:4.build:5.files:4.validation-and-deletion.md","4\u002F5\u002F4",{"icon":391},"i-lucide-file-x","\u002Fdocs\u002Fbuild\u002Ffiles\u002Fvalidation-and-deletion",{"title":394,"page":6,"canonicalKey":395,"locale":8,"children":396},"Application Behavior","4\u002F6",[397,404,411,418,425],{"title":398,"id":399,"canonicalKey":400,"locale":8,"draft":6,"navigation":401,"icon":402,"path":403},"Connection State","content:docs:4.build:6.application-behavior:1.connection-state.md","4\u002F6\u002F1",{"icon":402},"i-lucide-wifi","\u002Fdocs\u002Fbuild\u002Fapplication-behavior\u002Fconnection-state",{"title":405,"id":406,"canonicalKey":407,"locale":8,"draft":6,"navigation":408,"icon":409,"path":410},"Error Handling","content:docs:4.build:6.application-behavior:2.error-handling.md","4\u002F6\u002F2",{"icon":409},"i-lucide-circle-alert","\u002Fdocs\u002Fbuild\u002Fapplication-behavior\u002Ferror-handling",{"title":412,"id":413,"canonicalKey":414,"locale":8,"draft":6,"navigation":415,"icon":416,"path":417},"Logging","content:docs:4.build:6.application-behavior:3.logging.md","4\u002F6\u002F3",{"icon":416},"i-lucide-scroll-text","\u002Fdocs\u002Fbuild\u002Fapplication-behavior\u002Flogging",{"title":419,"id":420,"canonicalKey":421,"locale":8,"draft":6,"navigation":422,"icon":423,"path":424},"DevTools","content:docs:4.build:6.application-behavior:4.devtools.md","4\u002F6\u002F4",{"icon":423},"i-lucide-wrench","\u002Fdocs\u002Fbuild\u002Fapplication-behavior\u002Fdevtools",{"title":426,"id":427,"canonicalKey":428,"locale":8,"draft":6,"navigation":429,"icon":430,"path":431},"Performance","content:docs:4.build:6.application-behavior:5.performance.md","4\u002F6\u002F5",{"icon":430},"i-lucide-chart-no-axes-combined","\u002Fdocs\u002Fbuild\u002Fapplication-behavior\u002Fperformance",{"title":433,"page":6,"canonicalKey":434,"locale":8,"id":435,"draft":6,"icon":334,"children":436},"Agents and MCP","4\u002F7","content:docs:4.build:7.agents:.navigation.yml",[437,444],{"title":438,"id":439,"canonicalKey":440,"locale":8,"draft":6,"navigation":441,"icon":442,"path":443},"MCP on Convex","content:docs:4.build:7.agents:1.mcp.md","4\u002F7\u002F1",{"icon":442},"i-lucide-plug-zap","\u002Fdocs\u002Fbuild\u002Fagents\u002Fmcp",{"title":445,"id":446,"canonicalKey":447,"locale":8,"draft":6,"navigation":448,"icon":100,"path":449},"Vue MCP Apps","content:docs:4.build:7.agents:2.mcp-apps.md","4\u002F7\u002F2",{"icon":100},"\u002Fdocs\u002Fbuild\u002Fagents\u002Fmcp-apps",{"title":451,"page":6,"canonicalKey":452,"locale":8,"id":453,"draft":6,"icon":454,"children":455},"Recipes","5","content:docs:5.recipes:.navigation.yml","i-lucide-cooking-pot",[456,462,469,476,483,490,497,503],{"title":457,"id":458,"canonicalKey":459,"locale":8,"draft":6,"navigation":460,"icon":39,"path":461},"Protected Dashboard","content:docs:5.recipes:1.protected-dashboard.md","5\u002F1",{"icon":39},"\u002Fdocs\u002Frecipes\u002Fprotected-dashboard",{"title":463,"id":464,"canonicalKey":465,"locale":8,"draft":6,"navigation":466,"icon":467,"path":468},"Real-Time Feed","content:docs:5.recipes:2.realtime-feed.md","5\u002F2",{"icon":467},"i-lucide-messages-square","\u002Fdocs\u002Frecipes\u002Frealtime-feed",{"title":470,"id":471,"canonicalKey":472,"locale":8,"draft":6,"navigation":473,"icon":474,"path":475},"Optimistic Todo List","content:docs:5.recipes:3.optimistic-todo-list.md","5\u002F3",{"icon":474},"i-lucide-list-todo","\u002Fdocs\u002Frecipes\u002Foptimistic-todo-list",{"title":477,"id":478,"canonicalKey":479,"locale":8,"draft":6,"navigation":480,"icon":481,"path":482},"Infinite Scroll","content:docs:5.recipes:4.infinite-scroll.md","5\u002F4",{"icon":481},"i-lucide-mouse","\u002Fdocs\u002Frecipes\u002Finfinite-scroll",{"title":484,"id":485,"canonicalKey":486,"locale":8,"draft":6,"navigation":487,"icon":488,"path":489},"File Upload Form","content:docs:5.recipes:5.file-upload-form.md","5\u002F5",{"icon":488},"i-lucide-file-up","\u002Fdocs\u002Frecipes\u002Ffile-upload-form",{"title":491,"id":492,"canonicalKey":493,"locale":8,"draft":6,"navigation":494,"icon":495,"path":496},"Organization Permissions","content:docs:5.recipes:6.organization-permissions.md","5\u002F6",{"icon":495},"i-lucide-building-2","\u002Fdocs\u002Frecipes\u002Forganization-permissions",{"title":498,"id":499,"canonicalKey":500,"locale":8,"draft":6,"navigation":501,"icon":345,"path":502},"Authenticated Server Route","content:docs:5.recipes:7.authenticated-server-route.md","5\u002F7",{"icon":345},"\u002Fdocs\u002Frecipes\u002Fauthenticated-server-route",{"title":504,"id":505,"canonicalKey":506,"locale":8,"draft":6,"navigation":507,"icon":100,"path":508},"Public and Private Data","content:docs:5.recipes:8.public-and-private-data.md","5\u002F8",{"icon":100},"\u002Fdocs\u002Frecipes\u002Fpublic-and-private-data",{"title":510,"page":6,"canonicalKey":511,"locale":8,"id":512,"draft":6,"icon":513,"children":514},"Reference","6","content:docs:6.reference:.navigation.yml","i-lucide-braces",[515,521,527,533,540,547],{"title":516,"id":517,"canonicalKey":518,"locale":8,"draft":6,"navigation":519,"icon":513,"path":520},"Composables","content:docs:6.reference:1.composables.md","6\u002F1",{"icon":513},"\u002Fdocs\u002Freference\u002Fcomposables",{"title":522,"id":523,"canonicalKey":524,"locale":8,"draft":6,"navigation":525,"icon":345,"path":526},"Server API","content:docs:6.reference:3.server-api.md","6\u002F3",{"icon":345},"\u002Fdocs\u002Freference\u002Fserver-api",{"title":528,"id":529,"canonicalKey":530,"locale":8,"draft":6,"navigation":531,"icon":107,"path":532},"Error Types","content:docs:6.reference:4.error-types.md","6\u002F4",{"icon":107},"\u002Fdocs\u002Freference\u002Ferror-types",{"title":534,"id":535,"canonicalKey":536,"locale":8,"draft":6,"navigation":537,"icon":538,"path":539},"Module Configuration","content:docs:6.reference:5.module-configuration.md","6\u002F5",{"icon":538},"i-lucide-settings","\u002Fdocs\u002Freference\u002Fmodule-configuration",{"title":541,"id":542,"canonicalKey":543,"locale":8,"draft":6,"navigation":544,"icon":545,"path":546},"Package Exports","content:docs:6.reference:6.package-exports.md","6\u002F6",{"icon":545},"i-lucide-package-open","\u002Fdocs\u002Freference\u002Fpackage-exports",{"title":548,"id":549,"canonicalKey":550,"locale":8,"draft":6,"navigation":551,"icon":552,"path":553},"API Surface","content:docs:6.reference:7.api-surface.md","6\u002F7",{"icon":552},"i-lucide-list","\u002Fdocs\u002Freference\u002Fapi-surface",{"title":555,"page":6,"canonicalKey":556,"locale":8,"id":557,"draft":6,"icon":280,"children":558},"Operations","7","content:docs:7.operations:.navigation.yml",[559,566,572,578,584],{"title":560,"id":561,"canonicalKey":562,"locale":8,"draft":6,"navigation":563,"icon":564,"path":565},"Environment Variables","content:docs:7.operations:1.environment-variables.md","7\u002F1",{"icon":564},"i-lucide-variable","\u002Fdocs\u002Foperations\u002Fenvironment-variables",{"title":567,"id":568,"canonicalKey":569,"locale":8,"draft":6,"navigation":570,"icon":127,"path":571},"Deployment","content:docs:7.operations:2.deployment.md","7\u002F2",{"icon":127},"\u002Fdocs\u002Foperations\u002Fdeployment",{"title":573,"id":574,"canonicalKey":575,"locale":8,"draft":6,"navigation":576,"icon":169,"path":577},"Security Model","content:docs:7.operations:3.security-model.md","7\u002F3",{"icon":169},"\u002Fdocs\u002Foperations\u002Fsecurity-model",{"title":579,"id":580,"canonicalKey":581,"locale":8,"draft":6,"navigation":582,"icon":423,"path":583},"Troubleshooting","content:docs:7.operations:4.troubleshooting.md","7\u002F4",{"icon":423},"\u002Fdocs\u002Foperations\u002Ftroubleshooting",{"title":585,"id":586,"canonicalKey":587,"locale":8,"draft":6,"navigation":588,"icon":25,"path":589},"Release Compatibility","content:docs:7.operations:5.release-compatibility.md","7\u002F5",{"icon":25},"\u002Fdocs\u002Foperations\u002Frelease-compatibility",{"title":591,"id":592,"canonicalKey":593,"locale":8,"draft":6,"path":594},"Better Convex documentation","content:docs:index.md","\u002F","\u002Fdocs",{"title":341,"description":596,"navigation":597,"body":598,"type":1893,"id":342,"canonicalKey":343,"draft":6,"partial":6,"locale":8,"collection":1894,"navigationFile":6,"file":1895,"route":1901,"resolution":1903},"Call Convex from a Nitro request with explicit authentication policy and request-scoped state.",{"icon":345},{"type":599,"children":600,"toc":1878},"root",[601,636,869,876,952,963,969,974,1001,1006,1012,1023,1028,1034,1039,1108,1113,1200,1224,1229,1235,1247,1323,1328,1334,1353,1358,1365,1370,1797,1823,1849,1855,1873],{"type":602,"tag":603,"props":604,"children":605},"element","p",{},[606,613,615,620,622,627,629,634],{"type":602,"tag":607,"props":608,"children":609},"code",{},[610],{"type":611,"value":612},"text","serverConvex(event)",{"type":611,"value":614}," creates one request-scoped caller with ",{"type":602,"tag":607,"props":616,"children":617},{},[618],{"type":611,"value":619},"query",{"type":611,"value":621},", ",{"type":602,"tag":607,"props":623,"children":624},{},[625],{"type":611,"value":626},"mutation",{"type":611,"value":628},", and ",{"type":602,"tag":607,"props":630,"children":631},{},[632],{"type":611,"value":633},"action",{"type":611,"value":635}," methods.",{"type":602,"tag":637,"props":638,"children":642},"pre",{"language":639,"filename":640,"class":641},"ts","server\u002Fapi\u002Fprojects.get.ts","shiki shiki-themes light-plus dark-plus dark:dark-plus",[643],{"type":602,"tag":607,"props":644,"children":646},{"class":645},"language-ts",[647,687,689,717,718,721,722,777,778,860,861],{"type":602,"tag":648,"props":649,"children":652},"span",{"class":650,"style":651},"line","display: inline",[653,659,665,671,676,681],{"type":602,"tag":648,"props":654,"children":656},{"style":655},"color:#AF00DB;--shiki-dark:#C586C0",[657],{"type":611,"value":658},"import",{"type":602,"tag":648,"props":660,"children":662},{"style":661},"color:#000000;--shiki-dark:#D4D4D4",[663],{"type":611,"value":664}," { ",{"type":602,"tag":648,"props":666,"children":668},{"style":667},"color:#001080;--shiki-dark:#9CDCFE",[669],{"type":611,"value":670},"api",{"type":602,"tag":648,"props":672,"children":673},{"style":661},[674],{"type":611,"value":675}," } ",{"type":602,"tag":648,"props":677,"children":678},{"style":655},[679],{"type":611,"value":680},"from",{"type":602,"tag":648,"props":682,"children":684},{"style":683},"color:#A31515;--shiki-dark:#CE9178",[685],{"type":611,"value":686}," '#convex\u002Fapi'",{"type":611,"value":688},"\n",{"type":602,"tag":648,"props":690,"children":691},{"class":650,"style":651},[692,696,700,704,708,712],{"type":602,"tag":648,"props":693,"children":694},{"style":655},[695],{"type":611,"value":658},{"type":602,"tag":648,"props":697,"children":698},{"style":661},[699],{"type":611,"value":664},{"type":602,"tag":648,"props":701,"children":702},{"style":667},[703],{"type":611,"value":341},{"type":602,"tag":648,"props":705,"children":706},{"style":661},[707],{"type":611,"value":675},{"type":602,"tag":648,"props":709,"children":710},{"style":655},[711],{"type":611,"value":680},{"type":602,"tag":648,"props":713,"children":714},{"style":683},[715],{"type":611,"value":716}," '#convex\u002Fserver'",{"type":611,"value":688},{"type":602,"tag":648,"props":719,"children":720},{"class":650,"style":651},[],{"type":611,"value":688},{"type":602,"tag":648,"props":723,"children":724},{"class":650,"style":651},[725,730,735,741,746,752,757,762,767,772],{"type":602,"tag":648,"props":726,"children":727},{"style":655},[728],{"type":611,"value":729},"export",{"type":602,"tag":648,"props":731,"children":732},{"style":655},[733],{"type":611,"value":734}," default",{"type":602,"tag":648,"props":736,"children":738},{"style":737},"color:#795E26;--shiki-dark:#DCDCAA",[739],{"type":611,"value":740}," defineEventHandler",{"type":602,"tag":648,"props":742,"children":743},{"style":661},[744],{"type":611,"value":745},"(",{"type":602,"tag":648,"props":747,"children":749},{"style":748},"color:#0000FF;--shiki-dark:#569CD6",[750],{"type":611,"value":751},"async",{"type":602,"tag":648,"props":753,"children":754},{"style":661},[755],{"type":611,"value":756}," (",{"type":602,"tag":648,"props":758,"children":759},{"style":667},[760],{"type":611,"value":761},"event",{"type":602,"tag":648,"props":763,"children":764},{"style":661},[765],{"type":611,"value":766},") ",{"type":602,"tag":648,"props":768,"children":769},{"style":748},[770],{"type":611,"value":771},"=>",{"type":602,"tag":648,"props":773,"children":774},{"style":661},[775],{"type":611,"value":776}," {",{"type":611,"value":688},{"type":602,"tag":648,"props":779,"children":780},{"class":650,"style":651},[781,786,791,796,800,804,809,814,819,824,828,832,836,841,846,850,855],{"type":602,"tag":648,"props":782,"children":783},{"style":655},[784],{"type":611,"value":785},"  return",{"type":602,"tag":648,"props":787,"children":788},{"style":655},[789],{"type":611,"value":790}," await",{"type":602,"tag":648,"props":792,"children":793},{"style":737},[794],{"type":611,"value":795}," serverConvex",{"type":602,"tag":648,"props":797,"children":798},{"style":661},[799],{"type":611,"value":745},{"type":602,"tag":648,"props":801,"children":802},{"style":667},[803],{"type":611,"value":761},{"type":602,"tag":648,"props":805,"children":806},{"style":661},[807],{"type":611,"value":808},", { ",{"type":602,"tag":648,"props":810,"children":811},{"style":667},[812],{"type":611,"value":813},"auth:",{"type":602,"tag":648,"props":815,"children":816},{"style":683},[817],{"type":611,"value":818}," 'required'",{"type":602,"tag":648,"props":820,"children":821},{"style":661},[822],{"type":611,"value":823}," }).",{"type":602,"tag":648,"props":825,"children":826},{"style":737},[827],{"type":611,"value":619},{"type":602,"tag":648,"props":829,"children":830},{"style":661},[831],{"type":611,"value":745},{"type":602,"tag":648,"props":833,"children":834},{"style":667},[835],{"type":611,"value":670},{"type":602,"tag":648,"props":837,"children":838},{"style":661},[839],{"type":611,"value":840},".",{"type":602,"tag":648,"props":842,"children":843},{"style":667},[844],{"type":611,"value":845},"projects",{"type":602,"tag":648,"props":847,"children":848},{"style":661},[849],{"type":611,"value":840},{"type":602,"tag":648,"props":851,"children":852},{"style":667},[853],{"type":611,"value":854},"list",{"type":602,"tag":648,"props":856,"children":857},{"style":661},[858],{"type":611,"value":859},")",{"type":611,"value":688},{"type":602,"tag":648,"props":862,"children":863},{"class":650,"style":651},[864],{"type":602,"tag":648,"props":865,"children":866},{"style":661},[867],{"type":611,"value":868},"})",{"type":602,"tag":870,"props":871,"children":873},"h2",{"id":872},"authentication-modes",[874],{"type":611,"value":875},"Authentication modes",{"type":602,"tag":877,"props":878,"children":879},"table",{},[880,899],{"type":602,"tag":881,"props":882,"children":883},"thead",{},[884],{"type":602,"tag":885,"props":886,"children":887},"tr",{},[888,894],{"type":602,"tag":889,"props":890,"children":891},"th",{},[892],{"type":611,"value":893},"Mode",{"type":602,"tag":889,"props":895,"children":896},{},[897],{"type":611,"value":898},"Cookie behavior",{"type":602,"tag":900,"props":901,"children":902},"tbody",{},[903,920,936],{"type":602,"tag":885,"props":904,"children":905},{},[906,915],{"type":602,"tag":907,"props":908,"children":909},"td",{},[910],{"type":602,"tag":607,"props":911,"children":912},{},[913],{"type":611,"value":914},"required",{"type":602,"tag":907,"props":916,"children":917},{},[918],{"type":611,"value":919},"Exchange the request session; throw if no valid identity exists",{"type":602,"tag":885,"props":921,"children":922},{},[923,931],{"type":602,"tag":907,"props":924,"children":925},{},[926],{"type":602,"tag":607,"props":927,"children":928},{},[929],{"type":611,"value":930},"optional",{"type":602,"tag":907,"props":932,"children":933},{},[934],{"type":611,"value":935},"Use identity when valid, otherwise call anonymously",{"type":602,"tag":885,"props":937,"children":938},{},[939,947],{"type":602,"tag":907,"props":940,"children":941},{},[942],{"type":602,"tag":607,"props":943,"children":944},{},[945],{"type":611,"value":946},"none",{"type":602,"tag":907,"props":948,"children":949},{},[950],{"type":611,"value":951},"Do not inspect or exchange auth cookies",{"type":602,"tag":603,"props":953,"children":954},{},[955,957,961],{"type":611,"value":956},"The server default is ",{"type":602,"tag":607,"props":958,"children":959},{},[960],{"type":611,"value":930},{"type":611,"value":962}," when no explicit principal is supplied.",{"type":602,"tag":870,"props":964,"children":966},{"id":965},"caller-lifetime",[967],{"type":611,"value":968},"Caller lifetime",{"type":602,"tag":603,"props":970,"children":971},{},[972],{"type":611,"value":973},"One caller lazily owns:",{"type":602,"tag":975,"props":976,"children":977},"ul",{},[978,984,996],{"type":602,"tag":979,"props":980,"children":981},"li",{},[982],{"type":611,"value":983},"one token-resolution promise;",{"type":602,"tag":979,"props":985,"children":986},{},[987,989,994],{"type":611,"value":988},"one official ",{"type":602,"tag":607,"props":990,"children":991},{},[992],{"type":611,"value":993},"ConvexHttpClient",{"type":611,"value":995},";",{"type":602,"tag":979,"props":997,"children":998},{},[999],{"type":611,"value":1000},"one current request identity snapshot.",{"type":602,"tag":603,"props":1002,"children":1003},{},[1004],{"type":611,"value":1005},"Do not store a caller in module scope or on a cross-request cache. Create it inside the handler.",{"type":602,"tag":870,"props":1007,"children":1009},{"id":1008},"transport-bounds",[1010],{"type":611,"value":1011},"Transport bounds",{"type":602,"tag":603,"props":1013,"children":1014},{},[1015,1017,1021],{"type":611,"value":1016},"SSR queries and ",{"type":602,"tag":607,"props":1018,"children":1019},{},[1020],{"type":611,"value":341},{"type":611,"value":1022}," use the same bounded official HTTP transport.\nAn incoming request abort cancels upstream response consumption. Query calls\nhave an 8-second deadline, mutations 15 seconds, and actions 60 seconds. These\nfixed private limits are operation-aware and are not caller configuration.",{"type":602,"tag":603,"props":1024,"children":1025},{},[1026],{"type":611,"value":1027},"Every query, mutation, and action response is capped at 1 MiB. A declared\noversize response is rejected before its body is read; a streamed response is\ncancelled as soon as it crosses the same cap.",{"type":602,"tag":870,"props":1029,"children":1031},{"id":1030},"explicit-principal",[1032],{"type":611,"value":1033},"Explicit principal",{"type":602,"tag":603,"props":1035,"children":1036},{},[1037],{"type":611,"value":1038},"An operator-controlled server workflow may provide an already obtained Convex JWT:",{"type":602,"tag":637,"props":1040,"children":1041},{"language":639,"class":641},[1042],{"type":602,"tag":607,"props":1043,"children":1044},{"class":645},[1045,1081,1082,1100,1101],{"type":602,"tag":648,"props":1046,"children":1047},{"class":650,"style":651},[1048,1053,1059,1064,1068,1072,1076],{"type":602,"tag":648,"props":1049,"children":1050},{"style":748},[1051],{"type":611,"value":1052},"const",{"type":602,"tag":648,"props":1054,"children":1056},{"style":1055},"color:#0070C1;--shiki-dark:#4FC1FF",[1057],{"type":611,"value":1058}," caller",{"type":602,"tag":648,"props":1060,"children":1061},{"style":661},[1062],{"type":611,"value":1063}," = ",{"type":602,"tag":648,"props":1065,"children":1066},{"style":737},[1067],{"type":611,"value":341},{"type":602,"tag":648,"props":1069,"children":1070},{"style":661},[1071],{"type":611,"value":745},{"type":602,"tag":648,"props":1073,"children":1074},{"style":667},[1075],{"type":611,"value":761},{"type":602,"tag":648,"props":1077,"children":1078},{"style":661},[1079],{"type":611,"value":1080},", {",{"type":611,"value":688},{"type":602,"tag":648,"props":1083,"children":1084},{"class":650,"style":651},[1085,1090,1095],{"type":602,"tag":648,"props":1086,"children":1087},{"style":667},[1088],{"type":611,"value":1089},"  authToken:",{"type":602,"tag":648,"props":1091,"children":1092},{"style":667},[1093],{"type":611,"value":1094}," trustedToken",{"type":602,"tag":648,"props":1096,"children":1097},{"style":661},[1098],{"type":611,"value":1099},",",{"type":611,"value":688},{"type":602,"tag":648,"props":1102,"children":1103},{"class":650,"style":651},[1104],{"type":602,"tag":648,"props":1105,"children":1106},{"style":661},[1107],{"type":611,"value":868},{"type":602,"tag":603,"props":1109,"children":1110},{},[1111],{"type":611,"value":1112},"Or exchange an explicit Better Auth cookie credential:",{"type":602,"tag":637,"props":1114,"children":1115},{"language":639,"class":641},[1116],{"type":602,"tag":607,"props":1117,"children":1118},{"class":645},[1119,1150,1151,1192,1193],{"type":602,"tag":648,"props":1120,"children":1121},{"class":650,"style":651},[1122,1126,1130,1134,1138,1142,1146],{"type":602,"tag":648,"props":1123,"children":1124},{"style":748},[1125],{"type":611,"value":1052},{"type":602,"tag":648,"props":1127,"children":1128},{"style":1055},[1129],{"type":611,"value":1058},{"type":602,"tag":648,"props":1131,"children":1132},{"style":661},[1133],{"type":611,"value":1063},{"type":602,"tag":648,"props":1135,"children":1136},{"style":737},[1137],{"type":611,"value":341},{"type":602,"tag":648,"props":1139,"children":1140},{"style":661},[1141],{"type":611,"value":745},{"type":602,"tag":648,"props":1143,"children":1144},{"style":667},[1145],{"type":611,"value":761},{"type":602,"tag":648,"props":1147,"children":1148},{"style":661},[1149],{"type":611,"value":1080},{"type":611,"value":688},{"type":602,"tag":648,"props":1152,"children":1153},{"class":650,"style":651},[1154,1159,1163,1168,1173,1177,1182,1187],{"type":602,"tag":648,"props":1155,"children":1156},{"style":667},[1157],{"type":611,"value":1158},"  credential:",{"type":602,"tag":648,"props":1160,"children":1161},{"style":661},[1162],{"type":611,"value":664},{"type":602,"tag":648,"props":1164,"children":1165},{"style":667},[1166],{"type":611,"value":1167},"type:",{"type":602,"tag":648,"props":1169,"children":1170},{"style":683},[1171],{"type":611,"value":1172}," 'cookie'",{"type":602,"tag":648,"props":1174,"children":1175},{"style":661},[1176],{"type":611,"value":621},{"type":602,"tag":648,"props":1178,"children":1179},{"style":667},[1180],{"type":611,"value":1181},"value:",{"type":602,"tag":648,"props":1183,"children":1184},{"style":667},[1185],{"type":611,"value":1186}," cookieHeader",{"type":602,"tag":648,"props":1188,"children":1189},{"style":661},[1190],{"type":611,"value":1191}," },",{"type":611,"value":688},{"type":602,"tag":648,"props":1194,"children":1195},{"class":650,"style":651},[1196],{"type":602,"tag":648,"props":1197,"children":1198},{"style":661},[1199],{"type":611,"value":868},{"type":602,"tag":603,"props":1201,"children":1202},{},[1203,1208,1210,1215,1217,1222],{"type":602,"tag":607,"props":1204,"children":1205},{},[1206],{"type":611,"value":1207},"authToken",{"type":611,"value":1209}," and ",{"type":602,"tag":607,"props":1211,"children":1212},{},[1213],{"type":611,"value":1214},"credential",{"type":611,"value":1216}," are mutually exclusive. Either one already means\nrequired authentication, so ",{"type":602,"tag":607,"props":1218,"children":1219},{},[1220],{"type":611,"value":1221},"auth",{"type":611,"value":1223}," must be omitted for an explicit principal.\nThe public type rejects these impossible combinations, and runtime validation\ndoes the same for JavaScript and casts.",{"type":602,"tag":603,"props":1225,"children":1226},{},[1227],{"type":611,"value":1228},"Never accept these values from an untrusted request body and forward them blindly.\nRaw Better Auth session tokens are not a public bearer-exchange credential. The\npackage reserves bearer session handling for its private, marked Convex bridge.",{"type":602,"tag":870,"props":1230,"children":1232},{"id":1231},"function-arguments",[1233],{"type":611,"value":1234},"Function arguments",{"type":602,"tag":603,"props":1236,"children":1237},{},[1238,1240,1245],{"type":611,"value":1239},"The caller matches Convex's generated function-reference contract. Omit the\nartificial ",{"type":602,"tag":607,"props":1241,"children":1242},{},[1243],{"type":611,"value":1244},"{}",{"type":611,"value":1246}," for a function with no arguments:",{"type":602,"tag":637,"props":1248,"children":1249},{"language":639,"class":641},[1250],{"type":602,"tag":607,"props":1251,"children":1252},{"class":645},[1253],{"type":602,"tag":648,"props":1254,"children":1255},{"class":650,"style":651},[1256,1260,1265,1269,1274,1278,1282,1286,1291,1295,1299,1303,1307,1311,1315,1319],{"type":602,"tag":648,"props":1257,"children":1258},{"style":748},[1259],{"type":611,"value":1052},{"type":602,"tag":648,"props":1261,"children":1262},{"style":1055},[1263],{"type":611,"value":1264}," projects",{"type":602,"tag":648,"props":1266,"children":1267},{"style":661},[1268],{"type":611,"value":1063},{"type":602,"tag":648,"props":1270,"children":1271},{"style":655},[1272],{"type":611,"value":1273},"await",{"type":602,"tag":648,"props":1275,"children":1276},{"style":737},[1277],{"type":611,"value":795},{"type":602,"tag":648,"props":1279,"children":1280},{"style":661},[1281],{"type":611,"value":745},{"type":602,"tag":648,"props":1283,"children":1284},{"style":667},[1285],{"type":611,"value":761},{"type":602,"tag":648,"props":1287,"children":1288},{"style":661},[1289],{"type":611,"value":1290},").",{"type":602,"tag":648,"props":1292,"children":1293},{"style":737},[1294],{"type":611,"value":619},{"type":602,"tag":648,"props":1296,"children":1297},{"style":661},[1298],{"type":611,"value":745},{"type":602,"tag":648,"props":1300,"children":1301},{"style":667},[1302],{"type":611,"value":670},{"type":602,"tag":648,"props":1304,"children":1305},{"style":661},[1306],{"type":611,"value":840},{"type":602,"tag":648,"props":1308,"children":1309},{"style":667},[1310],{"type":611,"value":845},{"type":602,"tag":648,"props":1312,"children":1313},{"style":661},[1314],{"type":611,"value":840},{"type":602,"tag":648,"props":1316,"children":1317},{"style":667},[1318],{"type":611,"value":854},{"type":602,"tag":648,"props":1320,"children":1321},{"style":661},[1322],{"type":611,"value":859},{"type":602,"tag":603,"props":1324,"children":1325},{},[1326],{"type":611,"value":1327},"Functions with declared arguments still require their exact generated object.",{"type":602,"tag":870,"props":1329,"children":1331},{"id":1330},"errors",[1332],{"type":611,"value":1333},"Errors",{"type":602,"tag":603,"props":1335,"children":1336},{},[1337,1339,1344,1346,1351],{"type":611,"value":1338},"Calls reject with ",{"type":602,"tag":607,"props":1340,"children":1341},{},[1342],{"type":611,"value":1343},"ConvexCallError",{"type":611,"value":1345}," for classifiable auth, transport, and structured Convex server failures. Invalid options throw ",{"type":602,"tag":607,"props":1347,"children":1348},{},[1349],{"type":611,"value":1350},"ServerConvexValidationError",{"type":611,"value":1352}," before network access.",{"type":602,"tag":603,"props":1354,"children":1355},{},[1356],{"type":611,"value":1357},"A rejected caller keeps its rejected token\u002Fclient state. Create a new caller for an intentional retry.",{"type":602,"tag":1359,"props":1360,"children":1362},"h3",{"id":1361},"errors-safe-server-diagnostics",[1363],{"type":611,"value":1364},"Safe server diagnostics",{"type":602,"tag":603,"props":1366,"children":1367},{},[1368],{"type":611,"value":1369},"The application already knows the operation, function reference, and request\ncorrelation context. Combine those static values with reviewed public error\nfields instead of logging the raw error cause:",{"type":602,"tag":637,"props":1371,"children":1372},{"language":639,"class":641},[1373],{"type":602,"tag":607,"props":1374,"children":1375},{"class":645},[1376,1404,1405,1434,1435,1438,1439,1476,1477,1480,1481,1493,1494,1560,1561,1588,1589,1620,1621,1634,1635,1676,1677,1694,1695,1721,1722,1748,1749,1757,1758,1766,1767,1775,1776,1788,1789],{"type":602,"tag":648,"props":1377,"children":1378},{"class":650,"style":651},[1379,1383,1387,1391,1395,1399],{"type":602,"tag":648,"props":1380,"children":1381},{"style":655},[1382],{"type":611,"value":658},{"type":602,"tag":648,"props":1384,"children":1385},{"style":661},[1386],{"type":611,"value":664},{"type":602,"tag":648,"props":1388,"children":1389},{"style":667},[1390],{"type":611,"value":1343},{"type":602,"tag":648,"props":1392,"children":1393},{"style":661},[1394],{"type":611,"value":675},{"type":602,"tag":648,"props":1396,"children":1397},{"style":655},[1398],{"type":611,"value":680},{"type":602,"tag":648,"props":1400,"children":1401},{"style":683},[1402],{"type":611,"value":1403}," '@lupinum\u002Fbetter-convex-nuxt\u002Ferrors'",{"type":611,"value":688},{"type":602,"tag":648,"props":1406,"children":1407},{"class":650,"style":651},[1408,1412,1416,1421,1425,1429],{"type":602,"tag":648,"props":1409,"children":1410},{"style":655},[1411],{"type":611,"value":658},{"type":602,"tag":648,"props":1413,"children":1414},{"style":661},[1415],{"type":611,"value":664},{"type":602,"tag":648,"props":1417,"children":1418},{"style":667},[1419],{"type":611,"value":1420},"getFunctionName",{"type":602,"tag":648,"props":1422,"children":1423},{"style":661},[1424],{"type":611,"value":675},{"type":602,"tag":648,"props":1426,"children":1427},{"style":655},[1428],{"type":611,"value":680},{"type":602,"tag":648,"props":1430,"children":1431},{"style":683},[1432],{"type":611,"value":1433}," 'convex\u002Fserver'",{"type":611,"value":688},{"type":602,"tag":648,"props":1436,"children":1437},{"class":650,"style":651},[],{"type":611,"value":688},{"type":602,"tag":648,"props":1440,"children":1441},{"class":650,"style":651},[1442,1446,1451,1455,1459,1463,1467,1471],{"type":602,"tag":648,"props":1443,"children":1444},{"style":748},[1445],{"type":611,"value":1052},{"type":602,"tag":648,"props":1447,"children":1448},{"style":1055},[1449],{"type":611,"value":1450}," reference",{"type":602,"tag":648,"props":1452,"children":1453},{"style":661},[1454],{"type":611,"value":1063},{"type":602,"tag":648,"props":1456,"children":1457},{"style":667},[1458],{"type":611,"value":670},{"type":602,"tag":648,"props":1460,"children":1461},{"style":661},[1462],{"type":611,"value":840},{"type":602,"tag":648,"props":1464,"children":1465},{"style":667},[1466],{"type":611,"value":845},{"type":602,"tag":648,"props":1468,"children":1469},{"style":661},[1470],{"type":611,"value":840},{"type":602,"tag":648,"props":1472,"children":1473},{"style":667},[1474],{"type":611,"value":1475},"archive",{"type":611,"value":688},{"type":602,"tag":648,"props":1478,"children":1479},{"class":650,"style":651},[],{"type":611,"value":688},{"type":602,"tag":648,"props":1482,"children":1483},{"class":650,"style":651},[1484,1489],{"type":602,"tag":648,"props":1485,"children":1486},{"style":655},[1487],{"type":611,"value":1488},"try",{"type":602,"tag":648,"props":1490,"children":1491},{"style":661},[1492],{"type":611,"value":776},{"type":611,"value":688},{"type":602,"tag":648,"props":1495,"children":1496},{"class":650,"style":651},[1497,1501,1505,1509,1513,1517,1521,1525,1529,1533,1537,1541,1546,1550,1555],{"type":602,"tag":648,"props":1498,"children":1499},{"style":655},[1500],{"type":611,"value":785},{"type":602,"tag":648,"props":1502,"children":1503},{"style":655},[1504],{"type":611,"value":790},{"type":602,"tag":648,"props":1506,"children":1507},{"style":737},[1508],{"type":611,"value":795},{"type":602,"tag":648,"props":1510,"children":1511},{"style":661},[1512],{"type":611,"value":745},{"type":602,"tag":648,"props":1514,"children":1515},{"style":667},[1516],{"type":611,"value":761},{"type":602,"tag":648,"props":1518,"children":1519},{"style":661},[1520],{"type":611,"value":808},{"type":602,"tag":648,"props":1522,"children":1523},{"style":667},[1524],{"type":611,"value":813},{"type":602,"tag":648,"props":1526,"children":1527},{"style":683},[1528],{"type":611,"value":818},{"type":602,"tag":648,"props":1530,"children":1531},{"style":661},[1532],{"type":611,"value":823},{"type":602,"tag":648,"props":1534,"children":1535},{"style":737},[1536],{"type":611,"value":626},{"type":602,"tag":648,"props":1538,"children":1539},{"style":661},[1540],{"type":611,"value":745},{"type":602,"tag":648,"props":1542,"children":1543},{"style":667},[1544],{"type":611,"value":1545},"reference",{"type":602,"tag":648,"props":1547,"children":1548},{"style":661},[1549],{"type":611,"value":808},{"type":602,"tag":648,"props":1551,"children":1552},{"style":667},[1553],{"type":611,"value":1554},"projectId",{"type":602,"tag":648,"props":1556,"children":1557},{"style":661},[1558],{"type":611,"value":1559}," })",{"type":611,"value":688},{"type":602,"tag":648,"props":1562,"children":1563},{"class":650,"style":651},[1564,1569,1574,1578,1583],{"type":602,"tag":648,"props":1565,"children":1566},{"style":661},[1567],{"type":611,"value":1568},"} ",{"type":602,"tag":648,"props":1570,"children":1571},{"style":655},[1572],{"type":611,"value":1573},"catch",{"type":602,"tag":648,"props":1575,"children":1576},{"style":661},[1577],{"type":611,"value":756},{"type":602,"tag":648,"props":1579,"children":1580},{"style":667},[1581],{"type":611,"value":1582},"error",{"type":602,"tag":648,"props":1584,"children":1585},{"style":661},[1586],{"type":611,"value":1587},") {",{"type":611,"value":688},{"type":602,"tag":648,"props":1590,"children":1591},{"class":650,"style":651},[1592,1597,1601,1605,1610,1616],{"type":602,"tag":648,"props":1593,"children":1594},{"style":655},[1595],{"type":611,"value":1596},"  if",{"type":602,"tag":648,"props":1598,"children":1599},{"style":661},[1600],{"type":611,"value":756},{"type":602,"tag":648,"props":1602,"children":1603},{"style":667},[1604],{"type":611,"value":1582},{"type":602,"tag":648,"props":1606,"children":1607},{"style":748},[1608],{"type":611,"value":1609}," instanceof",{"type":602,"tag":648,"props":1611,"children":1613},{"style":1612},"color:#267F99;--shiki-dark:#4EC9B0",[1614],{"type":611,"value":1615}," ConvexCallError",{"type":602,"tag":648,"props":1617,"children":1618},{"style":661},[1619],{"type":611,"value":1587},{"type":611,"value":688},{"type":602,"tag":648,"props":1622,"children":1623},{"class":650,"style":651},[1624,1629],{"type":602,"tag":648,"props":1625,"children":1626},{"style":737},[1627],{"type":611,"value":1628},"    reportServerCallFailure",{"type":602,"tag":648,"props":1630,"children":1631},{"style":661},[1632],{"type":611,"value":1633},"({",{"type":611,"value":688},{"type":602,"tag":648,"props":1636,"children":1637},{"class":650,"style":651},[1638,1643,1648,1652,1657,1661,1666,1670],{"type":602,"tag":648,"props":1639,"children":1640},{"style":667},[1641],{"type":611,"value":1642},"      correlationId:",{"type":602,"tag":648,"props":1644,"children":1645},{"style":667},[1646],{"type":611,"value":1647}," event",{"type":602,"tag":648,"props":1649,"children":1650},{"style":661},[1651],{"type":611,"value":840},{"type":602,"tag":648,"props":1653,"children":1654},{"style":667},[1655],{"type":611,"value":1656},"context",{"type":602,"tag":648,"props":1658,"children":1659},{"style":661},[1660],{"type":611,"value":840},{"type":602,"tag":648,"props":1662,"children":1663},{"style":667},[1664],{"type":611,"value":1665},"requestId",{"type":602,"tag":648,"props":1667,"children":1668},{"style":661},[1669],{"type":611,"value":621},{"type":602,"tag":648,"props":1671,"children":1673},{"style":1672},"color:#008000;--shiki-dark:#6A9955",[1674],{"type":611,"value":1675},"\u002F\u002F application-owned",{"type":611,"value":688},{"type":602,"tag":648,"props":1678,"children":1679},{"class":650,"style":651},[1680,1685,1690],{"type":602,"tag":648,"props":1681,"children":1682},{"style":667},[1683],{"type":611,"value":1684},"      operation:",{"type":602,"tag":648,"props":1686,"children":1687},{"style":683},[1688],{"type":611,"value":1689}," 'mutation'",{"type":602,"tag":648,"props":1691,"children":1692},{"style":661},[1693],{"type":611,"value":1099},{"type":611,"value":688},{"type":602,"tag":648,"props":1696,"children":1697},{"class":650,"style":651},[1698,1703,1708,1712,1716],{"type":602,"tag":648,"props":1699,"children":1700},{"style":667},[1701],{"type":611,"value":1702},"      functionName:",{"type":602,"tag":648,"props":1704,"children":1705},{"style":737},[1706],{"type":611,"value":1707}," getFunctionName",{"type":602,"tag":648,"props":1709,"children":1710},{"style":661},[1711],{"type":611,"value":745},{"type":602,"tag":648,"props":1713,"children":1714},{"style":667},[1715],{"type":611,"value":1545},{"type":602,"tag":648,"props":1717,"children":1718},{"style":661},[1719],{"type":611,"value":1720},"),",{"type":611,"value":688},{"type":602,"tag":648,"props":1723,"children":1724},{"class":650,"style":651},[1725,1730,1735,1739,1744],{"type":602,"tag":648,"props":1726,"children":1727},{"style":667},[1728],{"type":611,"value":1729},"      kind:",{"type":602,"tag":648,"props":1731,"children":1732},{"style":667},[1733],{"type":611,"value":1734}," error",{"type":602,"tag":648,"props":1736,"children":1737},{"style":661},[1738],{"type":611,"value":840},{"type":602,"tag":648,"props":1740,"children":1741},{"style":667},[1742],{"type":611,"value":1743},"kind",{"type":602,"tag":648,"props":1745,"children":1746},{"style":661},[1747],{"type":611,"value":1099},{"type":611,"value":688},{"type":602,"tag":648,"props":1750,"children":1751},{"class":650,"style":651},[1752],{"type":602,"tag":648,"props":1753,"children":1754},{"style":1672},[1755],{"type":611,"value":1756},"      \u002F\u002F Add `code` only after checking it against application-owned values.",{"type":611,"value":688},{"type":602,"tag":648,"props":1759,"children":1760},{"class":650,"style":651},[1761],{"type":602,"tag":648,"props":1762,"children":1763},{"style":661},[1764],{"type":611,"value":1765},"    })",{"type":611,"value":688},{"type":602,"tag":648,"props":1768,"children":1769},{"class":650,"style":651},[1770],{"type":602,"tag":648,"props":1771,"children":1772},{"style":661},[1773],{"type":611,"value":1774},"  }",{"type":611,"value":688},{"type":602,"tag":648,"props":1777,"children":1778},{"class":650,"style":651},[1779,1784],{"type":602,"tag":648,"props":1780,"children":1781},{"style":655},[1782],{"type":611,"value":1783},"  throw",{"type":602,"tag":648,"props":1785,"children":1786},{"style":667},[1787],{"type":611,"value":1734},{"type":611,"value":688},{"type":602,"tag":648,"props":1790,"children":1791},{"class":650,"style":651},[1792],{"type":602,"tag":648,"props":1793,"children":1794},{"style":661},[1795],{"type":611,"value":1796},"}",{"type":602,"tag":603,"props":1798,"children":1799},{},[1800,1802,1807,1809,1814,1816,1821],{"type":611,"value":1801},"Do not include function arguments, results, cookies, headers, tokens, ",{"type":602,"tag":607,"props":1803,"children":1804},{},[1805],{"type":611,"value":1806},"message",{"type":611,"value":1808},",\n",{"type":602,"tag":607,"props":1810,"children":1811},{},[1812],{"type":611,"value":1813},"data",{"type":611,"value":1815},", or ",{"type":602,"tag":607,"props":1817,"children":1818},{},[1819],{"type":611,"value":1820},"cause",{"type":611,"value":1822}," in generic telemetry. Function names expose application\ntopology, so keep them in server-only, access-controlled diagnostics.",{"type":602,"tag":603,"props":1824,"children":1825},{},[1826,1828,1833,1835,1840,1842,1847],{"type":611,"value":1827},"The pinned Convex client uses indistinguishable plain ",{"type":602,"tag":607,"props":1829,"children":1830},{},[1831],{"type":611,"value":1832},"Error",{"type":611,"value":1834}," values for\nseveral client, protocol, and unstructured server failures. Those failures stay\n",{"type":602,"tag":607,"props":1836,"children":1837},{},[1838],{"type":611,"value":1839},"unknown",{"type":611,"value":1841},"; do not infer a category from message text. Throw a structured\n",{"type":602,"tag":607,"props":1843,"children":1844},{},[1845],{"type":611,"value":1846},"ConvexError",{"type":611,"value":1848}," with an application-owned, public-safe code for expected domain\nor operator failures.",{"type":602,"tag":870,"props":1850,"children":1852},{"id":1851},"no-client-hydration",[1853],{"type":611,"value":1854},"No client hydration",{"type":602,"tag":603,"props":1856,"children":1857},{},[1858,1860,1864,1866,1871],{"type":611,"value":1859},"A ",{"type":602,"tag":607,"props":1861,"children":1862},{},[1863],{"type":611,"value":341},{"type":611,"value":1865}," result returned from your API route is ordinary route data. It does not seed ",{"type":602,"tag":607,"props":1867,"children":1868},{},[1869],{"type":611,"value":1870},"useConvexQuery",{"type":611,"value":1872}," or establish a subscription.",{"type":602,"tag":603,"props":1874,"children":1875},{},[1876],{"type":611,"value":1877},"Use a composable directly in a page for normal SSR-to-live data. Use a server route when a real server boundary is required.",{"title":1879,"searchDepth":1880,"depth":1880,"links":1881},"",4,[1882,1884,1885,1886,1887,1888,1892],{"id":872,"depth":1883,"text":875},2,{"id":965,"depth":1883,"text":968},{"id":1008,"depth":1883,"text":1011},{"id":1030,"depth":1883,"text":1033},{"id":1231,"depth":1883,"text":1234},{"id":1330,"depth":1883,"text":1333,"children":1889},[1890],{"id":1361,"depth":1891,"text":1364},3,{"id":1851,"depth":1883,"text":1854},"markdown","docs",{"source":1896,"path":1897,"stem":1898,"dir":1899,"extension":1900},"content","docs\u002F4.build\u002F4.server\u002F1.server-convex.md","docs\u002F4.build\u002F4.server\u002F1.server-convex","server","md",{"requestedPath":346,"resolvedPath":346,"alternates":1902},[],{"requested":1904,"resolved":1905,"usedFallback":6},{},{"locale":8},{"previous":1907,"next":1909},{"title":330,"id":331,"canonicalKey":332,"locale":8,"draft":6,"navigation":1908,"icon":334,"path":335},{"icon":334},{"title":348,"id":349,"canonicalKey":350,"locale":8,"draft":6,"navigation":1910,"icon":352,"path":353},{"icon":352},{"left":1912,"top":1912,"width":1913,"height":1913,"rotate":1912,"vFlip":6,"hFlip":6,"body":1914},0,256,"\u003Cpath fill=\"#3178c6\" d=\"M20 0h216c11.046 0 20 8.954 20 20v216c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20V20C0 8.954 8.954 0 20 0\"\u002F>\u003Cpath fill=\"#fff\" d=\"M150.518 200.475v27.62q6.738 3.453 15.938 5.179T185.849 235q9.934 0 18.874-1.899t15.678-6.257q6.738-4.359 10.669-11.394q3.93-7.033 3.93-17.391q0-7.51-2.246-13.163a30.8 30.8 0 0 0-6.479-10.055q-4.232-4.402-10.149-7.898t-13.347-6.602q-5.442-2.245-9.761-4.359t-7.342-4.316q-3.024-2.2-4.665-4.661t-1.641-5.567q0-2.848 1.468-5.135q1.469-2.288 4.147-3.927t6.565-2.547q3.887-.906 8.638-.906q3.456 0 7.299.518q3.844.517 7.732 1.597a54 54 0 0 1 7.558 2.719a41.7 41.7 0 0 1 6.781 3.797v-25.807q-6.306-2.417-13.778-3.582T198.633 107q-9.847 0-18.658 2.115q-8.811 2.114-15.506 6.602q-6.694 4.49-10.582 11.437Q150 134.102 150 143.769q0 12.342 7.127 21.06t21.638 14.759a292 292 0 0 1 10.625 4.575q4.924 2.244 8.509 4.66t5.658 5.265t2.073 6.474a9.9 9.9 0 0 1-1.296 4.963q-1.295 2.287-3.93 3.97t-6.565 2.632t-9.2.95q-8.983 0-17.794-3.151t-16.327-9.451m-46.036-68.733H140V109H41v22.742h35.345V233h28.137z\"\u002F>",{"left":1912,"top":1912,"width":1916,"height":1916,"rotate":1912,"vFlip":6,"hFlip":6,"body":1917},24,"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Crect width=\"8\" height=\"4\" x=\"8\" y=\"2\" rx=\"1\" ry=\"1\"\u002F>\u003Cpath d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\"\u002F>\u003C\u002Fg>",1786627521582]