[{"data":1,"prerenderedAt":610},["ShallowReactive",2],{"navigation":3,"/docs/recipes/user-augmentation":186,"/docs/recipes/user-augmentation-surround":605},[4],{"title":5,"path":6,"stem":7,"children":8,"page":39},"Docs","/docs","docs",[9,40,60,78,100,114,158],{"title":10,"path":11,"stem":12,"children":13,"page":39},"Guide","/docs/guide","docs/1.guide",[14,19,24,29,34],{"title":15,"path":16,"stem":17,"icon":18},"Getting Started","/docs/guide/get-started","docs/1.guide/1.get-started","i-lucide-rocket",{"title":20,"path":21,"stem":22,"icon":23},"Basics","/docs/guide/basics","docs/1.guide/2.basics","i-lucide-book-open",{"title":25,"path":26,"stem":27,"icon":28},"Authentication","/docs/guide/auth","docs/1.guide/3.auth","i-lucide-shield-check",{"title":30,"path":31,"stem":32,"icon":33},"Permissions","/docs/guide/permissions","docs/1.guide/4.permissions","i-lucide-shield",{"title":35,"path":36,"stem":37,"icon":38},"Core Concepts","/docs/guide/concepts","docs/1.guide/5.concepts","i-lucide-lightbulb",false,{"title":41,"path":42,"stem":43,"children":44,"page":39},"Data Fetching","/docs/data-fetching","docs/2.data-fetching",[45,50,55],{"title":46,"path":47,"stem":48,"icon":49},"Fetching Data","/docs/data-fetching/queries","docs/2.data-fetching/1.queries","i-lucide-database",{"title":51,"path":52,"stem":53,"icon":54},"Pagination","/docs/data-fetching/pagination","docs/2.data-fetching/2.pagination","i-lucide-list",{"title":56,"path":57,"stem":58,"icon":59},"Caching & Data Reuse","/docs/data-fetching/caching-reuse","docs/2.data-fetching/3.caching-reuse","i-lucide-database-zap",{"title":61,"path":62,"stem":63,"children":64,"page":39},"Mutations","/docs/mutations","docs/3.mutations",[65,69,74],{"title":61,"path":66,"stem":67,"icon":68},"/docs/mutations/mutations","docs/3.mutations/1.mutations","i-lucide-pen-tool",{"title":70,"path":71,"stem":72,"icon":73},"Actions","/docs/mutations/actions","docs/3.mutations/2.actions","i-lucide-zap",{"title":75,"path":76,"stem":77,"icon":73},"Optimistic Updates","/docs/mutations/optimistic-updates","docs/3.mutations/3.optimistic-updates",{"title":79,"path":80,"stem":81,"children":82,"page":39},"Auth Security","/docs/auth-security","docs/4.auth-security",[83,87,91,95],{"title":84,"path":85,"stem":86,"icon":28},"Permissions Setup","/docs/auth-security/permissions-setup","docs/4.auth-security/0.permissions-setup",{"title":25,"path":88,"stem":89,"icon":90},"/docs/auth-security/authentication","docs/4.auth-security/1.authentication","i-lucide-lock",{"title":92,"path":93,"stem":94,"icon":33},"Permissions Reference","/docs/auth-security/permissions","docs/4.auth-security/2.permissions",{"title":96,"path":97,"stem":98,"icon":99},"Standard Role Template","/docs/auth-security/standard-role-template","docs/4.auth-security/3.standard-role-template","i-lucide-file-check",{"title":101,"path":102,"stem":103,"children":104,"page":39},"Server Side","/docs/server-side","docs/5.server-side",[105,110],{"title":106,"path":107,"stem":108,"icon":109},"Server Routes","/docs/server-side/server-routes","docs/5.server-side/1.server-routes","i-lucide-server",{"title":111,"path":112,"stem":113,"icon":109},"SSR & Hydration","/docs/server-side/ssr-hydration","docs/5.server-side/2.ssr-hydration",{"title":115,"path":116,"stem":117,"children":118,"page":39},"Advanced","/docs/advanced","docs/6.advanced",[119,124,129,134,139,144,149,154],{"title":120,"path":121,"stem":122,"icon":123},"Connection State","/docs/advanced/connection-state","docs/6.advanced/1.connection-state","i-lucide-wifi",{"title":125,"path":126,"stem":127,"icon":128},"Client Access","/docs/advanced/client-access","docs/6.advanced/2.client-access","i-lucide-box",{"title":130,"path":131,"stem":132,"icon":133},"Performance","/docs/advanced/performance","docs/6.advanced/3.performance","i-lucide-gauge",{"title":135,"path":136,"stem":137,"icon":138},"Error Handling","/docs/advanced/error-handling","docs/6.advanced/4.error-handling","i-lucide-alert-circle",{"title":140,"path":141,"stem":142,"icon":143},"File Storage","/docs/advanced/file-storage","docs/6.advanced/5.file-storage","i-lucide-upload",{"title":145,"path":146,"stem":147,"icon":148},"Logging","/docs/advanced/logging","docs/6.advanced/6.logging","i-lucide-scroll-text",{"title":150,"path":151,"stem":152,"icon":153},"Module Configuration","/docs/advanced/module-config","docs/6.advanced/7.module-config","i-lucide-settings",{"title":155,"path":156,"stem":157,"icon":54},"API Surface","/docs/advanced/api-surface","docs/6.advanced/8.api-surface",{"title":159,"path":160,"stem":161,"children":162,"page":39},"Recipes","/docs/recipes","docs/7.recipes",[163,168,173,178,182],{"title":164,"path":165,"stem":166,"icon":167},"Protected Dashboard","/docs/recipes/protected-dashboard","docs/7.recipes/1.protected-dashboard","i-lucide-layout-dashboard",{"title":169,"path":170,"stem":171,"icon":172},"Real-Time Feed","/docs/recipes/realtime-feed","docs/7.recipes/2.realtime-feed","i-lucide-messages-square",{"title":174,"path":175,"stem":176,"icon":177},"User Augmentation","/docs/recipes/user-augmentation","docs/7.recipes/3.user-augmentation","i-lucide-user-round-cog",{"title":179,"path":180,"stem":181,"icon":28},"Auth Guards and Permissions","/docs/recipes/auth-guards-and-permissions","docs/7.recipes/4.auth-guards-and-permissions",{"title":183,"path":184,"stem":185,"icon":73},"Instant List → Detail Navigation","/docs/recipes/instant-list-detail-cache-reuse","docs/7.recipes/5.instant-list-detail-cache-reuse",{"id":187,"title":174,"body":188,"description":597,"extension":598,"links":599,"meta":600,"navigation":601,"path":175,"seo":602,"sitemap":603,"stem":176,"__hash__":604},"docs/docs/7.recipes/3.user-augmentation.md",{"type":189,"value":190,"toc":591},"minimark",[191,196,213,217,352,356,566,570,587],[192,193,195],"h2",{"id":194},"goal","Goal",[197,198,199,200,204,205,208,209,212],"p",{},"Make ",[201,202,203],"code",{},"useConvexAuth().user"," understand app-specific claims like ",[201,206,207],{},"role"," or ",[201,210,211],{},"stripeCustomerId",".",[192,214,216],{"id":215},"add-module-augmentation","Add Module Augmentation",[218,219,225],"pre",{"className":220,"code":221,"filename":222,"language":223,"meta":224,"style":224},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","declare module 'better-convex-nuxt/dist/runtime/utils/types' {\n  interface ConvexUser {\n    role?: 'admin' | 'member' | 'viewer'\n    stripeCustomerId?: string\n    organizationId?: string\n  }\n}\n\nexport {}\n","app/types/convex-user.d.ts","ts","",[201,226,227,253,265,302,313,323,329,335,342],{"__ignoreMap":224},[228,229,232,236,239,243,247,250],"span",{"class":230,"line":231},"line",1,[228,233,235],{"class":234},"spNyl","declare",[228,237,238],{"class":234}," module",[228,240,242],{"class":241},"sMK4o"," '",[228,244,246],{"class":245},"sfazB","better-convex-nuxt/dist/runtime/utils/types",[228,248,249],{"class":241},"'",[228,251,252],{"class":241}," {\n",[228,254,256,259,263],{"class":230,"line":255},2,[228,257,258],{"class":234},"  interface",[228,260,262],{"class":261},"sBMFI"," ConvexUser",[228,264,252],{"class":241},[228,266,268,272,275,277,280,282,285,287,290,292,294,296,299],{"class":230,"line":267},3,[228,269,271],{"class":270},"swJcz","    role",[228,273,274],{"class":241},"?:",[228,276,242],{"class":241},[228,278,279],{"class":245},"admin",[228,281,249],{"class":241},[228,283,284],{"class":241}," |",[228,286,242],{"class":241},[228,288,289],{"class":245},"member",[228,291,249],{"class":241},[228,293,284],{"class":241},[228,295,242],{"class":241},[228,297,298],{"class":245},"viewer",[228,300,301],{"class":241},"'\n",[228,303,305,308,310],{"class":230,"line":304},4,[228,306,307],{"class":270},"    stripeCustomerId",[228,309,274],{"class":241},[228,311,312],{"class":261}," string\n",[228,314,316,319,321],{"class":230,"line":315},5,[228,317,318],{"class":270},"    organizationId",[228,320,274],{"class":241},[228,322,312],{"class":261},[228,324,326],{"class":230,"line":325},6,[228,327,328],{"class":241},"  }\n",[228,330,332],{"class":230,"line":331},7,[228,333,334],{"class":241},"}\n",[228,336,338],{"class":230,"line":337},8,[228,339,341],{"emptyLinePlaceholder":340},true,"\n",[228,343,345,349],{"class":230,"line":344},9,[228,346,348],{"class":347},"s7zQu","export",[228,350,351],{"class":241}," {}\n",[192,353,355],{"id":354},"use-it-in-components","Use It in Components",[218,357,361],{"className":358,"code":359,"language":360,"meta":224,"style":224},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nconst { user } = useConvexAuth()\n\nconst isAdmin = computed(() => user.value?.role === 'admin')\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003Cp>Customer: {{ user?.stripeCustomerId || 'none' }}\u003C/p>\n    \u003Cp v-if=\"isAdmin\">Admin tools enabled\u003C/p>\n  \u003C/div>\n\u003C/template>\n","vue",[201,362,363,390,415,419,466,475,479,488,498,517,547,557],{"__ignoreMap":224},[228,364,365,368,371,374,377,380,383,385,387],{"class":230,"line":231},[228,366,367],{"class":241},"\u003C",[228,369,370],{"class":270},"script",[228,372,373],{"class":234}," setup",[228,375,376],{"class":234}," lang",[228,378,379],{"class":241},"=",[228,381,382],{"class":241},"\"",[228,384,223],{"class":245},[228,386,382],{"class":241},[228,388,389],{"class":241},">\n",[228,391,392,395,398,402,405,408,412],{"class":230,"line":255},[228,393,394],{"class":234},"const",[228,396,397],{"class":241}," {",[228,399,401],{"class":400},"sTEyZ"," user ",[228,403,404],{"class":241},"}",[228,406,407],{"class":241}," =",[228,409,411],{"class":410},"s2Zo4"," useConvexAuth",[228,413,414],{"class":400},"()\n",[228,416,417],{"class":230,"line":267},[228,418,341],{"emptyLinePlaceholder":340},[228,420,421,423,426,428,431,434,437,440,443,445,448,451,454,457,459,461,463],{"class":230,"line":304},[228,422,394],{"class":234},[228,424,425],{"class":400}," isAdmin ",[228,427,379],{"class":241},[228,429,430],{"class":410}," computed",[228,432,433],{"class":400},"(",[228,435,436],{"class":241},"()",[228,438,439],{"class":234}," =>",[228,441,442],{"class":400}," user",[228,444,212],{"class":241},[228,446,447],{"class":400},"value",[228,449,450],{"class":241},"?.",[228,452,453],{"class":400},"role ",[228,455,456],{"class":241},"===",[228,458,242],{"class":241},[228,460,279],{"class":245},[228,462,249],{"class":241},[228,464,465],{"class":400},")\n",[228,467,468,471,473],{"class":230,"line":315},[228,469,470],{"class":241},"\u003C/",[228,472,370],{"class":270},[228,474,389],{"class":241},[228,476,477],{"class":230,"line":325},[228,478,341],{"emptyLinePlaceholder":340},[228,480,481,483,486],{"class":230,"line":331},[228,482,367],{"class":241},[228,484,485],{"class":270},"template",[228,487,389],{"class":241},[228,489,490,493,496],{"class":230,"line":337},[228,491,492],{"class":241},"  \u003C",[228,494,495],{"class":270},"div",[228,497,389],{"class":241},[228,499,500,503,505,508,511,513,515],{"class":230,"line":344},[228,501,502],{"class":241},"    \u003C",[228,504,197],{"class":270},[228,506,507],{"class":241},">",[228,509,510],{"class":400},"Customer: {{ user?.stripeCustomerId || 'none' }}",[228,512,470],{"class":241},[228,514,197],{"class":270},[228,516,389],{"class":241},[228,518,520,522,524,527,529,531,534,536,538,541,543,545],{"class":230,"line":519},10,[228,521,502],{"class":241},[228,523,197],{"class":270},[228,525,526],{"class":234}," v-if",[228,528,379],{"class":241},[228,530,382],{"class":241},[228,532,533],{"class":245},"isAdmin",[228,535,382],{"class":241},[228,537,507],{"class":241},[228,539,540],{"class":400},"Admin tools enabled",[228,542,470],{"class":241},[228,544,197],{"class":270},[228,546,389],{"class":241},[228,548,550,553,555],{"class":230,"line":549},11,[228,551,552],{"class":241},"  \u003C/",[228,554,495],{"class":270},[228,556,389],{"class":241},[228,558,560,562,564],{"class":230,"line":559},12,[228,561,470],{"class":241},[228,563,485],{"class":270},[228,565,389],{"class":241},[192,567,569],{"id":568},"best-practice","Best Practice",[571,572,573,580],"ul",{},[574,575,576,577,579],"li",{},"Treat ",[201,578,203],{}," as UI-friendly identity + claims.",[574,581,582,583,586],{},"Keep authoritative authorization in Convex queries/mutations (for example via ",[201,584,585],{},"usePermissions()"," and backend checks).",[588,589,590],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .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 .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}",{"title":224,"searchDepth":231,"depth":255,"links":592},[593,594,595,596],{"id":194,"depth":255,"text":195},{"id":215,"depth":255,"text":216},{"id":354,"depth":255,"text":355},{"id":568,"depth":255,"text":569},"Add custom claims typing to useConvexAuth().user with module augmentation.","md",null,{},{"icon":177},{"title":174,"description":597},{"loc":175},"kjhY8K-5BOXzsKpCDwzu-Hn-NnMW2eKgoHz6oj4sEMU",[606,608],{"title":169,"path":170,"stem":171,"description":607,"icon":172,"children":-1},"Build a feed/chat UI with paginated queries and optimistic inserts.",{"title":179,"path":180,"stem":181,"description":609,"icon":28,"children":-1},"Combine route protection, permissions, and expired-session redirects.",1772891787377]