[{"data":1,"prerenderedAt":3370},["ShallowReactive",2],{"navigation_docs":3,"-api-composables":152,"-api-composables-surround":3365},[4,42,68,110,131],{"title":5,"path":6,"stem":7,"children":8,"icon":11},"Getting Started","\u002Fgetting-started","1.getting-started\u002F0.index",[9,12,17,22,27,32,37],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-sparkles",{"title":13,"path":14,"stem":15,"icon":16},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F1.installation","i-lucide-download",{"title":18,"path":19,"stem":20,"icon":21},"Configuration","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F2.configuration","i-lucide-settings",{"title":23,"path":24,"stem":25,"icon":26},"Client Setup","\u002Fgetting-started\u002Fclient-setup","1.getting-started\u002F3.client-setup","i-lucide-monitor",{"title":28,"path":29,"stem":30,"icon":31},"Type Augmentation","\u002Fgetting-started\u002Ftype-augmentation","1.getting-started\u002F4.type-augmentation","i-lucide-type",{"title":33,"path":34,"stem":35,"icon":36},"Schema Generation (NuxtHub)","\u002Fgetting-started\u002Fschema-generation","1.getting-started\u002F5.schema-generation","i-lucide-database",{"title":38,"path":39,"stem":40,"icon":41},"How It Works","\u002Fgetting-started\u002Fhow-it-works","1.getting-started\u002F6.how-it-works","i-lucide-workflow",{"title":43,"path":44,"stem":45,"children":46,"page":67},"Core Concepts","\u002Fcore-concepts","2.core-concepts",[47,51,55,59,63],{"title":48,"path":49,"stem":50},"serverAuth()","\u002Fcore-concepts\u002Fserver-auth","2.core-concepts\u002F1.server-auth",{"title":52,"path":53,"stem":54},"Sessions","\u002Fcore-concepts\u002Fsessions","2.core-concepts\u002F2.sessions",{"title":56,"path":57,"stem":58},"Route Protection","\u002Fcore-concepts\u002Froute-protection","2.core-concepts\u002F3.route-protection",{"title":60,"path":61,"stem":62},"Auto‑Imports and Aliases","\u002Fcore-concepts\u002Fauto-imports-aliases","2.core-concepts\u002F4.auto-imports-aliases",{"title":64,"path":65,"stem":66},"Security & Caveats","\u002Fcore-concepts\u002Fsecurity-caveats","2.core-concepts\u002F5.security-caveats",false,{"title":69,"path":70,"stem":71,"children":72,"page":67},"Guides","\u002Fguides","3.guides",[73,77,81,85,89,94,98,102,106],{"title":74,"path":75,"stem":76},"Role‑Based Access","\u002Fguides\u002Frole-based-access","3.guides\u002F1.role-based-access",{"title":78,"path":79,"stem":80},"OAuth Providers","\u002Fguides\u002Foauth-providers","3.guides\u002F2.oauth-providers",{"title":82,"path":83,"stem":84},"Custom Database","\u002Fguides\u002Fcustom-database","3.guides\u002F3.custom-database",{"title":86,"path":87,"stem":88},"Database-less Mode","\u002Fguides\u002Fdatabase-less-mode","3.guides\u002F4.database-less-mode",{"title":90,"path":91,"stem":92,"icon":93},"External Auth Backend","\u002Fguides\u002Fexternal-auth-backend","3.guides\u002F5.external-auth-backend","i-lucide-server",{"title":95,"path":96,"stem":97},"Migrating from nuxt-auth-utils","\u002Fguides\u002Fmigrate-from-nuxt-auth-utils","3.guides\u002F6.migrate-from-nuxt-auth-utils",{"title":99,"path":100,"stem":101},"Two-Factor Authentication (TOTP + Backup Codes)","\u002Fguides\u002Ftwo-factor-auth","3.guides\u002F7.two-factor-auth",{"title":103,"path":104,"stem":105},"Testing","\u002Fguides\u002Ftesting","3.guides\u002F8.testing",{"title":107,"path":108,"stem":109},"Production Deployment","\u002Fguides\u002Fproduction-deployment","3.guides\u002F9.production-deployment",{"title":111,"path":112,"stem":113,"children":114,"page":67},"Integrations","\u002Fintegrations","4.integrations",[115,119,123,127],{"title":116,"path":117,"stem":118},"NuxtHub","\u002Fintegrations\u002Fnuxthub","4.integrations\u002F1.nuxthub",{"title":120,"path":121,"stem":122},"DevTools","\u002Fintegrations\u002Fdevtools","4.integrations\u002F2.devtools",{"title":124,"path":125,"stem":126},"Convex","\u002Fintegrations\u002Fconvex","4.integrations\u002F3.convex",{"title":128,"path":129,"stem":130},"i18n","\u002Fintegrations\u002Fi18n","4.integrations\u002F4.i18n",{"title":132,"path":133,"stem":134,"children":135,"page":67},"API Reference","\u002Fapi","5.api",[136,140,144,148],{"title":137,"path":138,"stem":139},"Composables","\u002Fapi\u002Fcomposables","5.api\u002F1.composables",{"title":141,"path":142,"stem":143},"Server Utilities","\u002Fapi\u002Fserver-utils","5.api\u002F2.server-utils",{"title":145,"path":146,"stem":147},"Components","\u002Fapi\u002Fcomponents","5.api\u002F3.components",{"title":149,"path":150,"stem":151},"Types","\u002Fapi\u002Ftypes","5.api\u002F4.types",{"id":153,"title":137,"body":154,"description":3359,"extension":3360,"links":3361,"meta":3362,"navigation":316,"path":138,"seo":3363,"stem":139,"__hash__":3364},"docs\u002F5.api\u002F1.composables.md",{"type":155,"value":156,"toc":3333},"minimark",[157,161,165,177,210,215,222,380,384,473,477,480,518,547,600,604,610,615,645,648,684,697,703,755,765,885,888,895,933,937,945,1056,1065,1069,1078,1101,1135,1143,1148,1151,1165,1178,1183,1222,1228,1236,1255,1266,1272,1275,1289,1293,1336,1341,1344,1369,1392,1398,1412,1416,1420,1423,1440,1450,1566,1576,1644,1647,1651,1654,1720,1727,1730,1755,1817,1821,1824,1995,2005,2031,2035,2045,2145,2151,2155,2161,2279,2282,2333,2336,2346,2532,2539,2571,2586,2601,2604,2724,2727,2747,2757,2761,2777,2791,2797,2948,2951,2960,3088,3104,3107,3111,3122,3269,3279,3299,3309,3313,3329],[158,159,160],"p",{},"Use this page when you need exact behavior for the client-side composables exposed by the module.",[162,163,164],"note",{},"These composables are auto-imported in Vue files. No import statement is needed in pages, components, plugins, middleware, or stores inside your Nuxt app.",[158,166,167,168,172,173,176],{},"Only the public composables exported by ",[169,170,171],"code",{},"@nuxtjs\u002Fbetter-auth\u002Fcomposables"," are registered as auto-imports. The deprecated ",[169,174,175],{},"useUserSessionState"," alias remains available.",[158,178,179,180,183,184,183,187,190,191,194,195,198,199,202,203,206,207,209],{},"Internal helpers ",[169,181,182],{},"getAuthRuntimeFlags",", ",[169,185,186],{},"useRawAuthClient",[169,188,189],{},"useAuthActionNamespaces",", and ",[169,192,193],{},"matchesUser"," are no longer auto-imported. Use ",[169,196,197],{},"useAuthClient"," for the configured client and ",[169,200,201],{},"useSignIn"," or ",[169,204,205],{},"useSignUp"," for authentication actions. Applications that used ",[169,208,193],{}," should keep their matching logic in application code.",[211,212,214],"h2",{"id":213},"quick-start","Quick Start",[158,216,217,218,221],{},"Use ",[169,219,220],{},"useUserSession()"," in pages and components to access the current session and session lifecycle actions.",[223,224,230],"pre",{"className":225,"code":226,"filename":227,"language":228,"meta":229,"style":229},"language-vue shiki shiki-themes one-light synthwave-84 synthwave-84","\u003Cscript setup lang=\"ts\">\nconst { user, loggedIn, signOut } = useUserSession()\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cbutton v-if=\"loggedIn\" @click=\"signOut()\">\n    Sign out {{ user?.email }}\n  \u003C\u002Fbutton>\n\u003C\u002Ftemplate>\n","pages\u002Fapp.vue","vue","",[169,231,232,263,301,311,318,328,355,361,371],{"__ignoreMap":229},[233,234,237,241,245,249,252,256,260],"span",{"class":235,"line":236},"line",1,[233,238,240],{"class":239},"sL9le","\u003C",[233,242,244],{"class":243},"stweg","script",[233,246,248],{"class":247},"s0frj"," setup",[233,250,251],{"class":247}," lang",[233,253,255],{"class":254},"sNM9w","=",[233,257,259],{"class":258},"sPAZv","\"ts\"",[233,261,262],{"class":239},">\n",[233,264,266,270,274,278,280,283,285,288,291,294,298],{"class":235,"line":265},2,[233,267,269],{"class":268},"sqe1H","const",[233,271,273],{"class":272},"sEEOt"," { ",[233,275,277],{"class":276},"s6Rhl","user",[233,279,183],{"class":272},[233,281,282],{"class":276},"loggedIn",[233,284,183],{"class":272},[233,286,287],{"class":276},"signOut",[233,289,290],{"class":272}," } ",[233,292,255],{"class":293},"sQBpM",[233,295,297],{"class":296},"sfT9l"," useUserSession",[233,299,300],{"class":272},"()\n",[233,302,304,307,309],{"class":235,"line":303},3,[233,305,306],{"class":239},"\u003C\u002F",[233,308,244],{"class":243},[233,310,262],{"class":239},[233,312,314],{"class":235,"line":313},4,[233,315,317],{"emptyLinePlaceholder":316},true,"\n",[233,319,321,323,326],{"class":235,"line":320},5,[233,322,240],{"class":239},[233,324,325],{"class":243},"template",[233,327,262],{"class":239},[233,329,331,334,337,340,342,345,348,350,353],{"class":235,"line":330},6,[233,332,333],{"class":239},"  \u003C",[233,335,336],{"class":243},"button",[233,338,339],{"class":247}," v-if",[233,341,255],{"class":254},[233,343,344],{"class":258},"\"loggedIn\"",[233,346,347],{"class":247}," @click",[233,349,255],{"class":254},[233,351,352],{"class":258},"\"signOut()\"",[233,354,262],{"class":239},[233,356,358],{"class":235,"line":357},7,[233,359,360],{"class":272},"    Sign out {{ user?.email }}\n",[233,362,364,367,369],{"class":235,"line":363},8,[233,365,366],{"class":239},"  \u003C\u002F",[233,368,336],{"class":243},[233,370,262],{"class":239},[233,372,374,376,378],{"class":235,"line":373},9,[233,375,306],{"class":239},[233,377,325],{"class":243},[233,379,262],{"class":239},[211,381,383],{"id":382},"choosing-an-api","Choosing an API",[385,386,387,400],"table",{},[388,389,390],"thead",{},[391,392,393,397],"tr",{},[394,395,396],"th",{},"Use case",[394,398,399],{},"Composable",[401,402,403,413,423,433,443,453,463],"tbody",{},[391,404,405,409],{},[406,407,408],"td",{},"Pages, components, and setup stores that need auth state and session lifecycle actions",[406,410,411],{},[169,412,220],{},[391,414,415,418],{},[406,416,417],{},"Direct Better Auth client access",[406,419,420],{},[169,421,422],{},"useAuthClient()",[391,424,425,428],{},[406,426,427],{},"Sign-in forms that need loading, error, and success state",[406,429,430],{},[169,431,432],{},"useSignIn()",[391,434,435,438],{},[406,436,437],{},"Sign-up forms that need loading, error, and success state",[406,439,440],{},[169,441,442],{},"useSignUp()",[391,444,445,448],{},[406,446,447],{},"Sign-out buttons that need loading, error, and success state",[406,449,450],{},[169,451,452],{},"useSignOut()",[391,454,455,458],{},[406,456,457],{},"Better Auth plugin\u002Fclient methods that need loading, error, and success state",[406,459,460],{},[169,461,462],{},"useAuthClientAction()",[391,464,465,468],{},[406,466,467],{},"Custom auth endpoints that create or change the current session",[406,469,470],{},[169,471,472],{},"runWithSessionRefresh()",[211,474,476],{"id":475},"useusersession","useUserSession",[158,478,479],{},"The primary composable for accessing authentication state. It is safe to return directly from Pinia setup stores because it only exposes session state and session lifecycle actions.",[223,481,486],{"className":482,"code":483,"filename":484,"language":485,"meta":229,"style":229},"language-ts shiki shiki-themes one-light synthwave-84 synthwave-84","const { loggedIn, user, session, signOut } = useUserSession()\n","pages\u002Flogin.vue","ts",[169,487,488],{"__ignoreMap":229},[233,489,490,492,495,497,499,501,503,506,508,510,512,514,516],{"class":235,"line":236},[233,491,269],{"class":268},[233,493,273],{"class":494},"s17Py",[233,496,282],{"class":276},[233,498,183],{"class":494},[233,500,277],{"class":276},[233,502,183],{"class":494},[233,504,505],{"class":276},"session",[233,507,183],{"class":494},[233,509,287],{"class":276},[233,511,290],{"class":494},[233,513,255],{"class":293},[233,515,297],{"class":296},[233,517,300],{"class":494},[519,520,521,529,533,537,543],"field-group",{},[522,523,525,528],"field",{"name":282,"type":524},"ComputedRef\u003Cboolean>",[169,526,527],{},"true"," if the user is currently authenticated.",[522,530,532],{"name":277,"type":531},"Ref\u003CAuthUser | null>","The current user object, inferred from your config.",[522,534,536],{"name":505,"type":535},"Ref\u003CClientAuthSession | null>","The current session object.",[522,538,540,542],{"name":539,"type":524},"ready",[169,541,527],{}," when initial session resolution is complete (from SSR hydration or client fetch).",[522,544,546],{"name":287,"type":545},"(options?: SignOutOptions) => Promise\u003Cvoid>","Signs out and clears local session state.",[162,548,549,552],{},[158,550,551],{},"For SSR-safe auth access:",[553,554,555,573,582],"ul",{},[556,557,217,558,183,560,183,562,183,564,190,566,569,570,572],"li",{},[169,559,277],{},[169,561,505],{},[169,563,282],{},[169,565,539],{},[169,567,568],{},"fetchSession"," from ",[169,571,220],{},".",[556,574,217,575,202,578,581],{},[169,576,577],{},"useAuthRequestFetch()",[169,579,580],{},"useAuthAsyncData()"," for auth-bound data in pages.",[556,583,584,585,183,588,591,592,595,596,599],{},"Use server helpers like ",[169,586,587],{},"serverAuth(event)",[169,589,590],{},"getUserSession(event)",", or ",[169,593,594],{},"requireUserSession(event)"," in ",[169,597,598],{},"server\u002F"," handlers.",[211,601,603],{"id":602},"pinia-setup-stores","Pinia setup stores",[158,605,606,607,609],{},"Return ",[169,608,220],{}," directly when you want auth state in a Pinia setup store or another shared state container.",[611,612,614],"h3",{"id":613},"client-session-type","Client session type",[158,616,617,620,621,624,625,569,628,631,632,634,635,637,638,641,642,644],{},[169,618,619],{},"useUserSession().session"," uses ",[169,622,623],{},"ClientAuthSession",", which omits ",[169,626,627],{},"token",[169,629,630],{},"AuthSession",". The module already removes the token from client state. Update explicit client-side ",[169,633,630],{}," annotations to ",[169,636,623],{}," imported from ",[169,639,640],{},"#nuxt-better-auth",". Server helpers continue to return the full ",[169,643,630],{},", including its token.",[158,646,647],{},"It returns:",[553,649,650,654,658,662,666,670,675,679],{},[556,651,652],{},[169,653,277],{},[556,655,656],{},[169,657,505],{},[556,659,660],{},[169,661,282],{},[556,663,664],{},[169,665,539],{},[556,667,668],{},[169,669,568],{},[556,671,672],{},[169,673,674],{},"waitForSession",[556,676,677],{},[169,678,287],{},[556,680,681],{},[169,682,683],{},"updateUser",[158,685,686,687,183,690,591,693,696],{},"It does not return ",[169,688,689],{},"client",[169,691,692],{},"signIn",[169,694,695],{},"signUp",". Those values are runtime Better Auth client namespaces, not auth state. Keep them in components or action composables instead of storing them in hydrated state.",[158,698,699,702],{},[169,700,701],{},"useUserSessionState()"," remains as a deprecated alias for the same store-safe shape.",[223,704,707],{"className":482,"code":705,"filename":706,"language":485,"meta":229,"style":229},"export const useUserStore = defineStore('user', () => {\n  return useUserSession()\n})\n","app\u002Fstores\u002Fuser.ts",[169,708,709,741,750],{"__ignoreMap":229},[233,710,711,714,717,720,723,726,729,732,735,738],{"class":235,"line":236},[233,712,713],{"class":268},"export",[233,715,716],{"class":268}," const",[233,718,719],{"class":276}," useUserStore",[233,721,722],{"class":293}," =",[233,724,725],{"class":296}," defineStore",[233,727,728],{"class":494},"(",[233,730,731],{"class":258},"'user'",[233,733,734],{"class":494},", () ",[233,736,737],{"class":268},"=>",[233,739,740],{"class":494}," {\n",[233,742,743,746,748],{"class":235,"line":265},[233,744,745],{"class":268},"  return",[233,747,297],{"class":296},[233,749,300],{"class":494},[233,751,752],{"class":235,"line":303},[233,753,754],{"class":494},"})\n",[158,756,757,758,183,760,591,762,764],{},"Keep sign-in and sign-up flows in components. Use ",[169,759,432],{},[169,761,442],{},[169,763,462],{}," when the UI needs loading, error, and success state:",[223,766,768],{"className":225,"code":767,"filename":484,"language":228,"meta":229,"style":229},"\u003Cscript setup lang=\"ts\">\nconst signInEmail = useSignIn('email')\n\nasync function submit(email: string, password: string) {\n  await signInEmail.execute({ email, password })\n}\n\u003C\u002Fscript>\n",[169,769,770,786,806,810,847,872,877],{"__ignoreMap":229},[233,771,772,774,776,778,780,782,784],{"class":235,"line":236},[233,773,240],{"class":239},[233,775,244],{"class":243},[233,777,248],{"class":247},[233,779,251],{"class":247},[233,781,255],{"class":254},[233,783,259],{"class":258},[233,785,262],{"class":239},[233,787,788,790,793,795,798,800,803],{"class":235,"line":265},[233,789,269],{"class":268},[233,791,792],{"class":276}," signInEmail",[233,794,722],{"class":293},[233,796,797],{"class":296}," useSignIn",[233,799,728],{"class":272},[233,801,802],{"class":258},"'email'",[233,804,805],{"class":272},")\n",[233,807,808],{"class":235,"line":303},[233,809,317],{"emptyLinePlaceholder":316},[233,811,812,815,818,821,823,827,831,835,837,840,842,844],{"class":235,"line":313},[233,813,814],{"class":268},"async",[233,816,817],{"class":268}," function",[233,819,820],{"class":296}," submit",[233,822,728],{"class":272},[233,824,826],{"class":825},"sgisi","email",[233,828,830],{"class":829},"sn-Jc",":",[233,832,834],{"class":833},"sr8De"," string",[233,836,183],{"class":272},[233,838,839],{"class":825},"password",[233,841,830],{"class":829},[233,843,834],{"class":833},[233,845,846],{"class":272},") {\n",[233,848,849,852,855,857,860,863,865,867,869],{"class":235,"line":320},[233,850,851],{"class":268},"  await",[233,853,792],{"class":854},"svFNh",[233,856,572],{"class":272},[233,858,859],{"class":296},"execute",[233,861,862],{"class":272},"({ ",[233,864,826],{"class":854},[233,866,183],{"class":272},[233,868,839],{"class":854},[233,870,871],{"class":272}," })\n",[233,873,874],{"class":235,"line":330},[233,875,876],{"class":272},"}\n",[233,878,879,881,883],{"class":235,"line":357},[233,880,306],{"class":239},[233,882,244],{"class":243},[233,884,262],{"class":239},[211,886,197],{"id":887},"useauthclient",[158,889,890,891,894],{},"Returns the Vue-safe Better Auth client on the client runtime and ",[169,892,893],{},"null"," on the server runtime. Use this for direct client\u002Fplugin method access when you do not need action state.",[223,896,898],{"className":482,"code":897,"language":485,"meta":229,"style":229},"const client = useAuthClient()\nawait client?.sendVerificationEmail({ email })\n",[169,899,900,914],{"__ignoreMap":229},[233,901,902,904,907,909,912],{"class":235,"line":236},[233,903,269],{"class":268},[233,905,906],{"class":276}," client",[233,908,722],{"class":293},[233,910,911],{"class":296}," useAuthClient",[233,913,300],{"class":494},[233,915,916,919,921,924,927,929,931],{"class":235,"line":265},[233,917,918],{"class":268},"await",[233,920,906],{"class":854},[233,922,923],{"class":494},"?.",[233,925,926],{"class":296},"sendVerificationEmail",[233,928,862],{"class":494},[233,930,826],{"class":854},[233,932,871],{"class":494},[611,934,936],{"id":935},"promise-behavior","Promise Behavior",[158,938,939,940,944],{},"Raw Better Auth client methods return a promise that resolves when the ",[941,942,943],"strong",{},"server responds",", not when local state updates.",[223,946,948],{"className":482,"code":947,"language":485,"meta":229,"style":229},"\u002F\u002F This awaits the server response\nawait client.signIn.email({ email, password })\n\n\u002F\u002F Local state updates asynchronously after\n\u002F\u002F Use onSuccess callback for actions that depend on updated state\nawait client.signIn.email(\n  { email, password },\n  { onSuccess: () => navigateTo('\u002Fdashboard') }\n)\n",[169,949,950,956,981,985,990,995,1012,1026,1052],{"__ignoreMap":229},[233,951,952],{"class":235,"line":236},[233,953,955],{"class":954},"st7cf","\u002F\u002F This awaits the server response\n",[233,957,958,960,962,964,967,969,971,973,975,977,979],{"class":235,"line":265},[233,959,918],{"class":268},[233,961,906],{"class":854},[233,963,572],{"class":494},[233,965,692],{"class":966},"sYvLG",[233,968,572],{"class":494},[233,970,826],{"class":296},[233,972,862],{"class":494},[233,974,826],{"class":854},[233,976,183],{"class":494},[233,978,839],{"class":854},[233,980,871],{"class":494},[233,982,983],{"class":235,"line":303},[233,984,317],{"emptyLinePlaceholder":316},[233,986,987],{"class":235,"line":313},[233,988,989],{"class":954},"\u002F\u002F Local state updates asynchronously after\n",[233,991,992],{"class":235,"line":320},[233,993,994],{"class":954},"\u002F\u002F Use onSuccess callback for actions that depend on updated state\n",[233,996,997,999,1001,1003,1005,1007,1009],{"class":235,"line":330},[233,998,918],{"class":268},[233,1000,906],{"class":854},[233,1002,572],{"class":494},[233,1004,692],{"class":966},[233,1006,572],{"class":494},[233,1008,826],{"class":296},[233,1010,1011],{"class":494},"(\n",[233,1013,1014,1017,1019,1021,1023],{"class":235,"line":357},[233,1015,1016],{"class":494},"  { ",[233,1018,826],{"class":854},[233,1020,183],{"class":494},[233,1022,839],{"class":854},[233,1024,1025],{"class":494}," },\n",[233,1027,1028,1030,1033,1036,1039,1041,1044,1046,1049],{"class":235,"line":363},[233,1029,1016],{"class":494},[233,1031,1032],{"class":296},"onSuccess",[233,1034,830],{"class":1035},"sVnqq",[233,1037,1038],{"class":494}," () ",[233,1040,737],{"class":268},[233,1042,1043],{"class":296}," navigateTo",[233,1045,728],{"class":494},[233,1047,1048],{"class":258},"'\u002Fdashboard'",[233,1050,1051],{"class":494},") }\n",[233,1053,1054],{"class":235,"line":373},[233,1055,805],{"class":494},[158,1057,1058,1059,1061,1062,1064],{},"For form flows, prefer ",[169,1060,432],{}," and ",[169,1063,442],{}," because they normalize errors, sync session state, and apply configured redirects.",[211,1066,1068],{"id":1067},"usesignin-usesignup-redirects","useSignIn \u002F useSignUp redirects",[158,1070,1071,1072,1074,1075,1077],{},"If no ",[169,1073,1032],{}," callback is provided in method options, ",[169,1076,432],{}," will:",[553,1079,1080,1091,1098],{},[556,1081,1082,1083,1086,1087,1090],{},"navigate to ",[169,1084,1085],{},"route.query.redirect"," (or custom ",[169,1088,1089],{},"auth.redirectQueryKey",") when it is a local path",[556,1092,1093,1094,1097],{},"otherwise fallback to ",[169,1095,1096],{},"auth.redirects.authenticated"," when configured and an authenticated session is established",[556,1099,1100],{},"otherwise no automatic navigation",[223,1102,1104],{"className":482,"code":1103,"language":485,"meta":229,"style":229},"await useSignIn('email').execute({ email, password }) \u002F\u002F redirects to safe `?redirect=...` or auth.redirects.authenticated\n",[169,1105,1106],{"__ignoreMap":229},[233,1107,1108,1110,1112,1114,1116,1119,1121,1123,1125,1127,1129,1132],{"class":235,"line":236},[233,1109,918],{"class":268},[233,1111,797],{"class":296},[233,1113,728],{"class":494},[233,1115,802],{"class":258},[233,1117,1118],{"class":494},").",[233,1120,859],{"class":296},[233,1122,862],{"class":494},[233,1124,826],{"class":854},[233,1126,183],{"class":494},[233,1128,839],{"class":854},[233,1130,1131],{"class":494}," }) ",[233,1133,1134],{"class":954},"\u002F\u002F redirects to safe `?redirect=...` or auth.redirects.authenticated\n",[158,1136,1137,1139,1140,1142],{},[169,1138,442],{}," follows the same redirect precedence:\nquery redirect > ",[169,1141,1096],{}," (only when authenticated) > no auto-redirect.",[611,1144,1146],{"id":1145},"signout",[169,1147,287],{},[158,1149,1150],{},"Signs the user out and clears the local session state.",[223,1152,1154],{"className":482,"code":1153,"language":485,"meta":229,"style":229},"await signOut()\n",[169,1155,1156],{"__ignoreMap":229},[233,1157,1158,1160,1163],{"class":235,"line":236},[233,1159,918],{"class":268},[233,1161,1162],{"class":296}," signOut",[233,1164,300],{"class":494},[158,1166,1167,1168,1171,1172,1175,1176,572],{},"If ",[169,1169,1170],{},"auth.redirects.logout"," is configured, ",[169,1173,1174],{},"signOut()"," will navigate there automatically (client-side), unless you provide ",[169,1177,1032],{},[158,1179,1180],{},[941,1181,1182],{},"Options",[223,1184,1186],{"className":482,"code":1185,"language":485,"meta":229,"style":229},"await signOut({\n  onSuccess: () => navigateTo('\u002F'),\n})\n",[169,1187,1188,1197,1218],{"__ignoreMap":229},[233,1189,1190,1192,1194],{"class":235,"line":236},[233,1191,918],{"class":268},[233,1193,1162],{"class":296},[233,1195,1196],{"class":494},"({\n",[233,1198,1199,1202,1204,1206,1208,1210,1212,1215],{"class":235,"line":265},[233,1200,1201],{"class":296},"  onSuccess",[233,1203,830],{"class":1035},[233,1205,1038],{"class":494},[233,1207,737],{"class":268},[233,1209,1043],{"class":296},[233,1211,728],{"class":494},[233,1213,1214],{"class":258},"'\u002F'",[233,1216,1217],{"class":494},"),\n",[233,1219,1220],{"class":235,"line":303},[233,1221,754],{"class":494},[611,1223,1225],{"id":1224},"waitforsession",[169,1226,1227],{},"waitForSession()",[158,1229,1230,1231,1233,1234,572],{},"Waits until ",[169,1232,282],{}," becomes true or five seconds pass. A signed-out session can already be ready, so this helper does not wait for ",[169,1235,539],{},[223,1237,1239],{"className":482,"code":1238,"language":485,"meta":229,"style":229},"await waitForSession()\n\u002F\u002F The user is logged in, or the five-second wait ended.\n",[169,1240,1241,1250],{"__ignoreMap":229},[233,1242,1243,1245,1248],{"class":235,"line":236},[233,1244,918],{"class":268},[233,1246,1247],{"class":296}," waitForSession",[233,1249,300],{"class":494},[233,1251,1252],{"class":235,"line":265},[233,1253,1254],{"class":954},"\u002F\u002F The user is logged in, or the five-second wait ended.\n",[1256,1257,1258,1259,1262,1263,572],"tip",{},"The function always resolves and returns no value. Check ",[169,1260,1261],{},"loggedIn.value"," after awaiting it if the next action requires authentication. To perform a session lookup and wait for it to finish, use ",[169,1264,1265],{},"await fetchSession()",[1267,1268,1270],"h4",{"id":1269},"fetchsession",[169,1271,568],{},[158,1273,1274],{},"Manually triggers a session refresh. Useful if you've updated user data on the server via a side channel.",[223,1276,1278],{"className":482,"code":1277,"language":485,"meta":229,"style":229},"await fetchSession()\n",[169,1279,1280],{"__ignoreMap":229},[233,1281,1282,1284,1287],{"class":235,"line":236},[233,1283,918],{"class":268},[233,1285,1286],{"class":296}," fetchSession",[233,1288,300],{"class":494},[158,1290,1291],{},[941,1292,1182],{},[223,1294,1296],{"className":482,"code":1295,"language":485,"meta":229,"style":229},"await fetchSession({\n  headers, \u002F\u002F optional HeadersInit\n  force: true, \u002F\u002F disables Better Auth cookie cache for this fetch\n})\n",[169,1297,1298,1306,1316,1332],{"__ignoreMap":229},[233,1299,1300,1302,1304],{"class":235,"line":236},[233,1301,918],{"class":268},[233,1303,1286],{"class":296},[233,1305,1196],{"class":494},[233,1307,1308,1311,1313],{"class":235,"line":265},[233,1309,1310],{"class":854},"  headers",[233,1312,183],{"class":494},[233,1314,1315],{"class":954},"\u002F\u002F optional HeadersInit\n",[233,1317,1318,1321,1323,1327,1329],{"class":235,"line":303},[233,1319,1320],{"class":966},"  force",[233,1322,830],{"class":1035},[233,1324,1326],{"class":1325},"s3ZNE"," true",[233,1328,183],{"class":494},[233,1330,1331],{"class":954},"\u002F\u002F disables Better Auth cookie cache for this fetch\n",[233,1333,1334],{"class":235,"line":313},[233,1335,754],{"class":494},[1267,1337,1339],{"id":1338},"updateuser",[169,1340,683],{},[158,1342,1343],{},"Updates the user on the server and optimistically patches local state. Local state reverts if the server call fails.",[158,1345,1346,1348,1349,1352,1353,183,1356,1359,1360,1363,1364,569,1366,1368],{},[169,1347,683],{}," accepts ",[169,1350,1351],{},"AuthUserUpdateInput",": ",[169,1354,1355],{},"name",[169,1357,1358],{},"image",", and input-enabled fields from your Better Auth configuration and client plugins. It no longer accepts user IDs, email verification status, admin roles, or custom fields declared with ",[169,1361,1362],{},"input: false",". Use Better Auth's dedicated email-change or admin actions for those operations. Import ",[169,1365,1351],{},[169,1367,640],{}," when annotating an update.",[223,1370,1372],{"className":482,"code":1371,"language":485,"meta":229,"style":229},"await updateUser({ name: 'New Name' })\n",[169,1373,1374],{"__ignoreMap":229},[233,1375,1376,1378,1381,1383,1385,1387,1390],{"class":235,"line":236},[233,1377,918],{"class":268},[233,1379,1380],{"class":296}," updateUser",[233,1382,862],{"class":494},[233,1384,1355],{"class":966},[233,1386,830],{"class":1035},[233,1388,1389],{"class":258}," 'New Name'",[233,1391,871],{"class":494},[162,1393,1394,1395,1397],{},"During SSR, ",[169,1396,683],{}," only patches local state since no client is available.",[1256,1399,1400,1352,1403,1061,1405,1407,1408,1411],{},[941,1401,1402],{},"Reactivity",[169,1404,277],{},[169,1406,505],{}," are global states using ",[169,1409,1410],{},"useState",". Changes in one component are instantly reflected everywhere.",[1413,1414],"read-more",{"title":1415,"to":146},"BetterAuthState component",[211,1417,1419],{"id":1418},"useauthrequestfetch","useAuthRequestFetch",[158,1421,1422],{},"Returns Nuxt's request-scoped fetch function. On SSR it preserves request context (including cookies); on client it behaves like regular fetch.",[158,1424,1425,1427,1428,1431,1432,1435,1436,1439],{},[169,1426,577],{}," defaults to ",[169,1429,1430],{},"GET",". For endpoints that only allow ",[169,1433,1434],{},"POST"," (or another method), pass ",[169,1437,1438],{},"method"," explicitly to preserve response type inference.",[158,1441,1442,1443,1061,1446,1449],{},"When endpoint typing is enabled, ",[169,1444,1445],{},"useFetch('\u002Fapi\u002Fauth\u002F...')",[169,1447,1448],{},"useLazyFetch('\u002Fapi\u002Fauth\u002F...')"," infer payloads directly from your Better Auth config:",[223,1451,1453],{"className":482,"code":1452,"filename":227,"language":485,"meta":229,"style":229},"const { data: customerState } = await useFetch('\u002Fapi\u002Fauth\u002Fcustomer\u002Fstate')\ncustomerState.value?.activeSubscriptions[0]?.toUpperCase()\n\nconst { data: customerById } = await useLazyFetch('\u002Fapi\u002Fauth\u002Fcustomer\u002F123\u002Fstate')\ncustomerById.value?.customerId.toUpperCase()\n",[169,1454,1455,1486,1514,1518,1547],{"__ignoreMap":229},[233,1456,1457,1459,1461,1464,1466,1469,1471,1473,1476,1479,1481,1484],{"class":235,"line":236},[233,1458,269],{"class":268},[233,1460,273],{"class":494},[233,1462,1463],{"class":966},"data",[233,1465,1352],{"class":494},[233,1467,1468],{"class":276},"customerState",[233,1470,290],{"class":494},[233,1472,255],{"class":293},[233,1474,1475],{"class":268}," await",[233,1477,1478],{"class":296}," useFetch",[233,1480,728],{"class":494},[233,1482,1483],{"class":258},"'\u002Fapi\u002Fauth\u002Fcustomer\u002Fstate'",[233,1485,805],{"class":494},[233,1487,1488,1490,1492,1495,1497,1500,1503,1506,1509,1512],{"class":235,"line":265},[233,1489,1468],{"class":854},[233,1491,572],{"class":494},[233,1493,1494],{"class":966},"value",[233,1496,923],{"class":494},[233,1498,1499],{"class":966},"activeSubscriptions",[233,1501,1502],{"class":494},"[",[233,1504,1505],{"class":1325},"0",[233,1507,1508],{"class":494},"]?.",[233,1510,1511],{"class":296},"toUpperCase",[233,1513,300],{"class":494},[233,1515,1516],{"class":235,"line":303},[233,1517,317],{"emptyLinePlaceholder":316},[233,1519,1520,1522,1524,1526,1528,1531,1533,1535,1537,1540,1542,1545],{"class":235,"line":313},[233,1521,269],{"class":268},[233,1523,273],{"class":494},[233,1525,1463],{"class":966},[233,1527,1352],{"class":494},[233,1529,1530],{"class":276},"customerById",[233,1532,290],{"class":494},[233,1534,255],{"class":293},[233,1536,1475],{"class":268},[233,1538,1539],{"class":296}," useLazyFetch",[233,1541,728],{"class":494},[233,1543,1544],{"class":258},"'\u002Fapi\u002Fauth\u002Fcustomer\u002F123\u002Fstate'",[233,1546,805],{"class":494},[233,1548,1549,1551,1553,1555,1557,1560,1562,1564],{"class":235,"line":320},[233,1550,1530],{"class":854},[233,1552,572],{"class":494},[233,1554,1494],{"class":966},[233,1556,923],{"class":494},[233,1558,1559],{"class":966},"customerId",[233,1561,572],{"class":494},[233,1563,1511],{"class":296},[233,1565,300],{"class":494},[158,1567,1568,1569,1572,1573,1575],{},"Global ",[169,1570,1571],{},"$fetch"," is not augmented by this module; use ",[169,1574,577],{}," for typed auth endpoint payloads with request-scoped cookies.",[223,1577,1579],{"className":482,"code":1578,"filename":227,"language":485,"meta":229,"style":229},"const requestFetch = useAuthRequestFetch()\nconst state = await requestFetch('\u002Fapi\u002Fauth\u002Fcustomer\u002Fstate')\nconst postOnly = await requestFetch('\u002Fapi\u002Fauth\u002Fcustomer\u002Fpost-only', { method: 'POST' })\n",[169,1580,1581,1595,1614],{"__ignoreMap":229},[233,1582,1583,1585,1588,1590,1593],{"class":235,"line":236},[233,1584,269],{"class":268},[233,1586,1587],{"class":276}," requestFetch",[233,1589,722],{"class":293},[233,1591,1592],{"class":296}," useAuthRequestFetch",[233,1594,300],{"class":494},[233,1596,1597,1599,1602,1604,1606,1608,1610,1612],{"class":235,"line":265},[233,1598,269],{"class":268},[233,1600,1601],{"class":276}," state",[233,1603,722],{"class":293},[233,1605,1475],{"class":268},[233,1607,1587],{"class":296},[233,1609,728],{"class":494},[233,1611,1483],{"class":258},[233,1613,805],{"class":494},[233,1615,1616,1618,1621,1623,1625,1627,1629,1632,1635,1637,1639,1642],{"class":235,"line":303},[233,1617,269],{"class":268},[233,1619,1620],{"class":276}," postOnly",[233,1622,722],{"class":293},[233,1624,1475],{"class":268},[233,1626,1587],{"class":296},[233,1628,728],{"class":494},[233,1630,1631],{"class":258},"'\u002Fapi\u002Fauth\u002Fcustomer\u002Fpost-only'",[233,1633,1634],{"class":494},", { ",[233,1636,1438],{"class":966},[233,1638,830],{"class":1035},[233,1640,1641],{"class":258}," 'POST'",[233,1643,871],{"class":494},[158,1645,1646],{},"Use this when you need low-level control and want to build your own data loader pattern.",[211,1648,1650],{"id":1649},"useauthasyncdata","useAuthAsyncData",[158,1652,1653],{},"SSR-safe helper for auth-bound data loading.",[223,1655,1657],{"className":482,"code":1656,"filename":227,"language":485,"meta":229,"style":229},"const { data: customerState, pending, error } = await useAuthAsyncData(\n  'customer-state',\n  requestFetch => requestFetch('\u002Fapi\u002Fauth\u002Fcustomer\u002Fstate'),\n)\n",[169,1658,1659,1692,1700,1716],{"__ignoreMap":229},[233,1660,1661,1663,1665,1667,1669,1671,1673,1676,1678,1681,1683,1685,1687,1690],{"class":235,"line":236},[233,1662,269],{"class":268},[233,1664,273],{"class":494},[233,1666,1463],{"class":966},[233,1668,1352],{"class":494},[233,1670,1468],{"class":276},[233,1672,183],{"class":494},[233,1674,1675],{"class":276},"pending",[233,1677,183],{"class":494},[233,1679,1680],{"class":276},"error",[233,1682,290],{"class":494},[233,1684,255],{"class":293},[233,1686,1475],{"class":268},[233,1688,1689],{"class":296}," useAuthAsyncData",[233,1691,1011],{"class":494},[233,1693,1694,1697],{"class":235,"line":265},[233,1695,1696],{"class":258},"  'customer-state'",[233,1698,1699],{"class":494},",\n",[233,1701,1702,1705,1708,1710,1712,1714],{"class":235,"line":303},[233,1703,1704],{"class":825},"  requestFetch",[233,1706,1707],{"class":268}," =>",[233,1709,1587],{"class":296},[233,1711,728],{"class":494},[233,1713,1483],{"class":258},[233,1715,1217],{"class":494},[233,1717,1718],{"class":235,"line":313},[233,1719,805],{"class":494},[158,1721,1722,1723,1726],{},"When route typing is enabled, payload types for ",[169,1724,1725],{},"\u002Fapi\u002Fauth\u002F*"," endpoints are inferred automatically.",[158,1728,1729],{},"By default:",[553,1731,1732,1744,1750],{},[556,1733,1734,1737,1738,1740,1741,1743],{},[169,1735,1736],{},"requireAuth"," is ",[169,1739,527],{}," (unauthenticated users resolve to ",[169,1742,893],{}," without calling the endpoint).",[556,1745,1746,1427,1748,572],{},[169,1747,1463],{},[169,1749,893],{},[556,1751,1752,1753,572],{},"errors are exposed through ",[169,1754,1680],{},[223,1756,1758],{"className":482,"code":1757,"filename":227,"language":485,"meta":229,"style":229},"const { data } = await useAuthAsyncData(\n  'public-profile',\n  requestFetch => requestFetch('\u002Fapi\u002Fprofile\u002Fpublic'),\n  { requireAuth: false },\n)\n",[169,1759,1760,1778,1785,1800,1813],{"__ignoreMap":229},[233,1761,1762,1764,1766,1768,1770,1772,1774,1776],{"class":235,"line":236},[233,1763,269],{"class":268},[233,1765,273],{"class":494},[233,1767,1463],{"class":276},[233,1769,290],{"class":494},[233,1771,255],{"class":293},[233,1773,1475],{"class":268},[233,1775,1689],{"class":296},[233,1777,1011],{"class":494},[233,1779,1780,1783],{"class":235,"line":265},[233,1781,1782],{"class":258},"  'public-profile'",[233,1784,1699],{"class":494},[233,1786,1787,1789,1791,1793,1795,1798],{"class":235,"line":303},[233,1788,1704],{"class":825},[233,1790,1707],{"class":268},[233,1792,1587],{"class":296},[233,1794,728],{"class":494},[233,1796,1797],{"class":258},"'\u002Fapi\u002Fprofile\u002Fpublic'",[233,1799,1217],{"class":494},[233,1801,1802,1804,1806,1808,1811],{"class":235,"line":313},[233,1803,1016],{"class":494},[233,1805,1736],{"class":966},[233,1807,830],{"class":1035},[233,1809,1810],{"class":1325}," false",[233,1812,1025],{"class":494},[233,1814,1815],{"class":235,"line":320},[233,1816,805],{"class":494},[211,1818,1820],{"id":1819},"useaction","useAction",[158,1822,1823],{},"Creates a reusable async action handle with normalized error state.",[223,1825,1828],{"className":482,"code":1826,"filename":1827,"language":485,"meta":229,"style":229},"const saveProfile = useAction(async (payload: { name: string }) => {\n  return await $fetch('\u002Fapi\u002Fprofile', { method: 'PATCH', body: payload })\n})\n\nawait saveProfile.execute({ name: 'Max' })\n\nif (saveProfile.status.value === 'error') {\n  console.error(saveProfile.error.value?.message)\n}\n","components\u002FProfileForm.vue",[169,1829,1830,1868,1903,1907,1911,1932,1936,1963,1991],{"__ignoreMap":229},[233,1831,1832,1834,1837,1839,1842,1844,1846,1849,1852,1854,1856,1858,1860,1862,1864,1866],{"class":235,"line":236},[233,1833,269],{"class":268},[233,1835,1836],{"class":276}," saveProfile",[233,1838,722],{"class":293},[233,1840,1841],{"class":296}," useAction",[233,1843,728],{"class":494},[233,1845,814],{"class":268},[233,1847,1848],{"class":494}," (",[233,1850,1851],{"class":825},"payload",[233,1853,830],{"class":829},[233,1855,273],{"class":494},[233,1857,1355],{"class":854},[233,1859,830],{"class":829},[233,1861,834],{"class":833},[233,1863,1131],{"class":494},[233,1865,737],{"class":268},[233,1867,740],{"class":494},[233,1869,1870,1872,1874,1877,1879,1882,1884,1886,1888,1891,1893,1896,1898,1901],{"class":235,"line":265},[233,1871,745],{"class":268},[233,1873,1475],{"class":268},[233,1875,1876],{"class":296}," $fetch",[233,1878,728],{"class":494},[233,1880,1881],{"class":258},"'\u002Fapi\u002Fprofile'",[233,1883,1634],{"class":494},[233,1885,1438],{"class":966},[233,1887,830],{"class":1035},[233,1889,1890],{"class":258}," 'PATCH'",[233,1892,183],{"class":494},[233,1894,1895],{"class":966},"body",[233,1897,830],{"class":1035},[233,1899,1900],{"class":854}," payload",[233,1902,871],{"class":494},[233,1904,1905],{"class":235,"line":303},[233,1906,754],{"class":494},[233,1908,1909],{"class":235,"line":313},[233,1910,317],{"emptyLinePlaceholder":316},[233,1912,1913,1915,1917,1919,1921,1923,1925,1927,1930],{"class":235,"line":320},[233,1914,918],{"class":268},[233,1916,1836],{"class":854},[233,1918,572],{"class":494},[233,1920,859],{"class":296},[233,1922,862],{"class":494},[233,1924,1355],{"class":966},[233,1926,830],{"class":1035},[233,1928,1929],{"class":258}," 'Max'",[233,1931,871],{"class":494},[233,1933,1934],{"class":235,"line":330},[233,1935,317],{"emptyLinePlaceholder":316},[233,1937,1938,1941,1943,1946,1948,1951,1953,1955,1958,1961],{"class":235,"line":357},[233,1939,1940],{"class":268},"if",[233,1942,1848],{"class":494},[233,1944,1945],{"class":854},"saveProfile",[233,1947,572],{"class":494},[233,1949,1950],{"class":966},"status",[233,1952,572],{"class":494},[233,1954,1494],{"class":966},[233,1956,1957],{"class":829}," ===",[233,1959,1960],{"class":258}," 'error'",[233,1962,846],{"class":494},[233,1964,1965,1968,1970,1972,1974,1976,1978,1980,1982,1984,1986,1989],{"class":235,"line":363},[233,1966,1967],{"class":854},"  console",[233,1969,572],{"class":494},[233,1971,1680],{"class":296},[233,1973,728],{"class":494},[233,1975,1945],{"class":854},[233,1977,572],{"class":494},[233,1979,1680],{"class":966},[233,1981,572],{"class":494},[233,1983,1494],{"class":966},[233,1985,923],{"class":494},[233,1987,1988],{"class":966},"message",[233,1990,805],{"class":494},[233,1992,1993],{"class":235,"line":373},[233,1994,876],{"class":494},[158,1996,1997,1999,2000,2002,2003,830],{},[169,1998,1820],{}," returns the same handle shape as ",[169,2001,201],{},"\u002F",[169,2004,205],{},[519,2006,2007,2011,2019,2023],{},[522,2008,2010],{"name":859,"type":2009},"(...args) => Promise\u003Cvoid>","Executes the action and never throws.",[522,2012,2014,2015,2018],{"name":1950,"type":2013},"'idle' | 'pending' | 'success' | 'error'","Current status of the latest ",[169,2016,2017],{},"execute()"," call.",[522,2020,2022],{"name":1463,"type":2021},"any | null","Last successful result.",[522,2024,2026,2027,2030],{"name":1680,"type":2025},"AuthActionError | null","Normalized error from thrown errors or ",[169,2028,2029],{},"{ error }"," responses.",[211,2032,2034],{"id":2033},"runwithsessionrefresh","runWithSessionRefresh",[158,2036,2037,2038,2040,2041,1061,2043,572],{},"Runs a custom auth action, then refreshes ",[169,2039,220],{}," state after the action succeeds. Use it for custom Better Auth endpoints that create, replace, or update the current session outside ",[169,2042,432],{},[169,2044,442],{},[223,2046,2048],{"className":482,"code":2047,"filename":484,"language":485,"meta":229,"style":229},"const submitCustomLogin = useAction((body: { token: string }) =>\n  runWithSessionRefresh(() =>\n    $fetch('\u002Fapi\u002Fauth\u002Fsign-in\u002Fcustom', { method: 'POST', body }),\n  ),\n)\n\nawait submitCustomLogin.execute({ token })\n",[169,2049,2050,2081,2091,2116,2121,2125,2129],{"__ignoreMap":229},[233,2051,2052,2054,2057,2059,2061,2064,2066,2068,2070,2072,2074,2076,2078],{"class":235,"line":236},[233,2053,269],{"class":268},[233,2055,2056],{"class":276}," submitCustomLogin",[233,2058,722],{"class":293},[233,2060,1841],{"class":296},[233,2062,2063],{"class":494},"((",[233,2065,1895],{"class":825},[233,2067,830],{"class":829},[233,2069,273],{"class":494},[233,2071,627],{"class":854},[233,2073,830],{"class":829},[233,2075,834],{"class":833},[233,2077,1131],{"class":494},[233,2079,2080],{"class":268},"=>\n",[233,2082,2083,2086,2089],{"class":235,"line":265},[233,2084,2085],{"class":296},"  runWithSessionRefresh",[233,2087,2088],{"class":494},"(() ",[233,2090,2080],{"class":268},[233,2092,2093,2096,2098,2101,2103,2105,2107,2109,2111,2113],{"class":235,"line":303},[233,2094,2095],{"class":296},"    $fetch",[233,2097,728],{"class":494},[233,2099,2100],{"class":258},"'\u002Fapi\u002Fauth\u002Fsign-in\u002Fcustom'",[233,2102,1634],{"class":494},[233,2104,1438],{"class":966},[233,2106,830],{"class":1035},[233,2108,1641],{"class":258},[233,2110,183],{"class":494},[233,2112,1895],{"class":854},[233,2114,2115],{"class":494}," }),\n",[233,2117,2118],{"class":235,"line":313},[233,2119,2120],{"class":494},"  ),\n",[233,2122,2123],{"class":235,"line":320},[233,2124,805],{"class":494},[233,2126,2127],{"class":235,"line":330},[233,2128,317],{"emptyLinePlaceholder":316},[233,2130,2131,2133,2135,2137,2139,2141,2143],{"class":235,"line":357},[233,2132,918],{"class":268},[233,2134,2056],{"class":854},[233,2136,572],{"class":494},[233,2138,859],{"class":296},[233,2140,862],{"class":494},[233,2142,627],{"class":854},[233,2144,871],{"class":494},[158,2146,2147,2148,2150],{},"The helper returns the callback result. It skips the session refresh when the callback throws or returns a Better Auth ",[169,2149,2029],{}," result.",[211,2152,2154],{"id":2153},"useauthclientaction","useAuthClientAction",[158,2156,2157,2158,2160],{},"Wraps plugin\u002Fclient methods from ",[169,2159,422],{}," in the same action handle pattern.",[223,2162,2165],{"className":482,"code":2163,"filename":2164,"language":485,"meta":229,"style":229},"const checkout = useAuthClientAction((client) => client.checkout)\n\nawait checkout.execute({ slug: 'pro' })\n\nif (checkout.status.value === 'error') {\n  console.error(checkout.error.value?.message)\n}\n","pages\u002Fpricing.vue",[169,2166,2167,2197,2201,2223,2227,2249,2275],{"__ignoreMap":229},[233,2168,2169,2171,2174,2176,2179,2181,2183,2186,2188,2190,2192,2195],{"class":235,"line":236},[233,2170,269],{"class":268},[233,2172,2173],{"class":276}," checkout",[233,2175,722],{"class":293},[233,2177,2178],{"class":296}," useAuthClientAction",[233,2180,2063],{"class":494},[233,2182,689],{"class":825},[233,2184,2185],{"class":494},") ",[233,2187,737],{"class":268},[233,2189,906],{"class":854},[233,2191,572],{"class":494},[233,2193,2194],{"class":966},"checkout",[233,2196,805],{"class":494},[233,2198,2199],{"class":235,"line":265},[233,2200,317],{"emptyLinePlaceholder":316},[233,2202,2203,2205,2207,2209,2211,2213,2216,2218,2221],{"class":235,"line":303},[233,2204,918],{"class":268},[233,2206,2173],{"class":854},[233,2208,572],{"class":494},[233,2210,859],{"class":296},[233,2212,862],{"class":494},[233,2214,2215],{"class":966},"slug",[233,2217,830],{"class":1035},[233,2219,2220],{"class":258}," 'pro'",[233,2222,871],{"class":494},[233,2224,2225],{"class":235,"line":313},[233,2226,317],{"emptyLinePlaceholder":316},[233,2228,2229,2231,2233,2235,2237,2239,2241,2243,2245,2247],{"class":235,"line":320},[233,2230,1940],{"class":268},[233,2232,1848],{"class":494},[233,2234,2194],{"class":854},[233,2236,572],{"class":494},[233,2238,1950],{"class":966},[233,2240,572],{"class":494},[233,2242,1494],{"class":966},[233,2244,1957],{"class":829},[233,2246,1960],{"class":258},[233,2248,846],{"class":494},[233,2250,2251,2253,2255,2257,2259,2261,2263,2265,2267,2269,2271,2273],{"class":235,"line":330},[233,2252,1967],{"class":854},[233,2254,572],{"class":494},[233,2256,1680],{"class":296},[233,2258,728],{"class":494},[233,2260,2194],{"class":854},[233,2262,572],{"class":494},[233,2264,1680],{"class":966},[233,2266,572],{"class":494},[233,2268,1494],{"class":966},[233,2270,923],{"class":494},[233,2272,1988],{"class":966},[233,2274,805],{"class":494},[233,2276,2277],{"class":235,"line":357},[233,2278,876],{"class":494},[158,2280,2281],{},"Nested methods are supported via selector functions:",[223,2283,2286],{"className":482,"code":2284,"filename":2285,"language":485,"meta":229,"style":229},"const openPortal = useAuthClientAction((client) => client.customer.portal)\nawait openPortal.execute()\n","pages\u002Fapp\u002Findex.vue",[169,2287,2288,2321],{"__ignoreMap":229},[233,2289,2290,2292,2295,2297,2299,2301,2303,2305,2307,2309,2311,2314,2316,2319],{"class":235,"line":236},[233,2291,269],{"class":268},[233,2293,2294],{"class":276}," openPortal",[233,2296,722],{"class":293},[233,2298,2178],{"class":296},[233,2300,2063],{"class":494},[233,2302,689],{"class":825},[233,2304,2185],{"class":494},[233,2306,737],{"class":268},[233,2308,906],{"class":854},[233,2310,572],{"class":494},[233,2312,2313],{"class":966},"customer",[233,2315,572],{"class":494},[233,2317,2318],{"class":966},"portal",[233,2320,805],{"class":494},[233,2322,2323,2325,2327,2329,2331],{"class":235,"line":265},[233,2324,918],{"class":268},[233,2326,2294],{"class":854},[233,2328,572],{"class":494},[233,2330,859],{"class":296},[233,2332,300],{"class":494},[211,2334,201],{"id":2335},"usesignin",[158,2337,2338,2339,2342,2343,572],{},"Returns a keyed action handle for Better Auth ",[169,2340,2341],{},"signIn.*",". Each method handle exposes template-friendly async state, similar to composables like ",[169,2344,2345],{},"useFetch",[223,2347,2349],{"className":482,"code":2348,"filename":484,"language":485,"meta":229,"style":229},"const { execute, data, status, error } = useSignIn('email')\n\nawait execute(\n  { email, password, rememberMe },\n  {\n    onSuccess: () => navigateTo('\u002Fapp'),\n    onError: (ctx) => console.error(ctx.error),\n  },\n)\n\nif (status.value === 'error') {\n  console.error(error.value?.message)\n}\n",[169,2350,2351,2383,2387,2396,2413,2418,2438,2471,2476,2480,2485,2504,2527],{"__ignoreMap":229},[233,2352,2353,2355,2357,2359,2361,2363,2365,2367,2369,2371,2373,2375,2377,2379,2381],{"class":235,"line":236},[233,2354,269],{"class":268},[233,2356,273],{"class":494},[233,2358,859],{"class":276},[233,2360,183],{"class":494},[233,2362,1463],{"class":276},[233,2364,183],{"class":494},[233,2366,1950],{"class":276},[233,2368,183],{"class":494},[233,2370,1680],{"class":276},[233,2372,290],{"class":494},[233,2374,255],{"class":293},[233,2376,797],{"class":296},[233,2378,728],{"class":494},[233,2380,802],{"class":258},[233,2382,805],{"class":494},[233,2384,2385],{"class":235,"line":265},[233,2386,317],{"emptyLinePlaceholder":316},[233,2388,2389,2391,2394],{"class":235,"line":303},[233,2390,918],{"class":268},[233,2392,2393],{"class":296}," execute",[233,2395,1011],{"class":494},[233,2397,2398,2400,2402,2404,2406,2408,2411],{"class":235,"line":313},[233,2399,1016],{"class":494},[233,2401,826],{"class":854},[233,2403,183],{"class":494},[233,2405,839],{"class":854},[233,2407,183],{"class":494},[233,2409,2410],{"class":854},"rememberMe",[233,2412,1025],{"class":494},[233,2414,2415],{"class":235,"line":320},[233,2416,2417],{"class":494},"  {\n",[233,2419,2420,2423,2425,2427,2429,2431,2433,2436],{"class":235,"line":330},[233,2421,2422],{"class":296},"    onSuccess",[233,2424,830],{"class":1035},[233,2426,1038],{"class":494},[233,2428,737],{"class":268},[233,2430,1043],{"class":296},[233,2432,728],{"class":494},[233,2434,2435],{"class":258},"'\u002Fapp'",[233,2437,1217],{"class":494},[233,2439,2440,2443,2445,2447,2450,2452,2454,2457,2459,2461,2463,2465,2467,2469],{"class":235,"line":357},[233,2441,2442],{"class":296},"    onError",[233,2444,830],{"class":1035},[233,2446,1848],{"class":494},[233,2448,2449],{"class":825},"ctx",[233,2451,2185],{"class":494},[233,2453,737],{"class":268},[233,2455,2456],{"class":854}," console",[233,2458,572],{"class":494},[233,2460,1680],{"class":296},[233,2462,728],{"class":494},[233,2464,2449],{"class":854},[233,2466,572],{"class":494},[233,2468,1680],{"class":966},[233,2470,1217],{"class":494},[233,2472,2473],{"class":235,"line":363},[233,2474,2475],{"class":494},"  },\n",[233,2477,2478],{"class":235,"line":373},[233,2479,805],{"class":494},[233,2481,2483],{"class":235,"line":2482},10,[233,2484,317],{"emptyLinePlaceholder":316},[233,2486,2488,2490,2492,2494,2496,2498,2500,2502],{"class":235,"line":2487},11,[233,2489,1940],{"class":268},[233,2491,1848],{"class":494},[233,2493,1950],{"class":854},[233,2495,572],{"class":494},[233,2497,1494],{"class":966},[233,2499,1957],{"class":829},[233,2501,1960],{"class":258},[233,2503,846],{"class":494},[233,2505,2507,2509,2511,2513,2515,2517,2519,2521,2523,2525],{"class":235,"line":2506},12,[233,2508,1967],{"class":854},[233,2510,572],{"class":494},[233,2512,1680],{"class":296},[233,2514,728],{"class":494},[233,2516,1680],{"class":854},[233,2518,572],{"class":494},[233,2520,1494],{"class":966},[233,2522,923],{"class":494},[233,2524,1988],{"class":966},[233,2526,805],{"class":494},[233,2528,2530],{"class":235,"line":2529},13,[233,2531,876],{"class":494},[158,2533,2534,2535,2538],{},"For OAuth sign-in, use the ",[169,2536,2537],{},"social"," key and pass the provider in the payload:",[223,2540,2542],{"className":482,"code":2541,"filename":484,"language":485,"meta":229,"style":229},"await useSignIn('social').execute({ provider: 'github' })\n",[169,2543,2544],{"__ignoreMap":229},[233,2545,2546,2548,2550,2552,2555,2557,2559,2561,2564,2566,2569],{"class":235,"line":236},[233,2547,918],{"class":268},[233,2549,797],{"class":296},[233,2551,728],{"class":494},[233,2553,2554],{"class":258},"'social'",[233,2556,1118],{"class":494},[233,2558,859],{"class":296},[233,2560,862],{"class":494},[233,2562,2563],{"class":966},"provider",[233,2565,830],{"class":1035},[233,2567,2568],{"class":258}," 'github'",[233,2570,871],{"class":494},[158,2572,2573,2574,2577,2578,2581,2582,2585],{},"Provider keys are inferred from ",[169,2575,2576],{},"server\u002Fauth.config.ts"," ",[169,2579,2580],{},"socialProviders"," keys.\nWhen ",[169,2583,2584],{},"callbackURL"," is omitted, the module auto-fills it using the same safe redirect order as other auth flows:",[553,2587,2588,2594,2598],{},[556,2589,2590,2591,2593],{},"safe query redirect (",[169,2592,1089],{},")",[556,2595,2596],{},[169,2597,1096],{},[556,2599,2600],{},"otherwise no fallback callback URL",[158,2602,2603],{},"Use renaming to avoid collisions when you use multiple methods in the same scope:",[223,2605,2607],{"className":482,"code":2606,"filename":484,"language":485,"meta":229,"style":229},"const {\n  execute: loginWithEmail,\n  status: statusEmail,\n  error: errorEmail,\n} = useSignIn('email')\n\nconst {\n  execute: loginWithPasskey,\n  status: statusPasskey,\n  error: errorPasskey,\n} = useSignIn('passkey')\n",[169,2608,2609,2615,2627,2639,2651,2666,2670,2676,2687,2698,2709],{"__ignoreMap":229},[233,2610,2611,2613],{"class":235,"line":236},[233,2612,269],{"class":268},[233,2614,740],{"class":494},[233,2616,2617,2620,2622,2625],{"class":235,"line":265},[233,2618,2619],{"class":966},"  execute",[233,2621,1352],{"class":494},[233,2623,2624],{"class":276},"loginWithEmail",[233,2626,1699],{"class":494},[233,2628,2629,2632,2634,2637],{"class":235,"line":303},[233,2630,2631],{"class":966},"  status",[233,2633,1352],{"class":494},[233,2635,2636],{"class":276},"statusEmail",[233,2638,1699],{"class":494},[233,2640,2641,2644,2646,2649],{"class":235,"line":313},[233,2642,2643],{"class":966},"  error",[233,2645,1352],{"class":494},[233,2647,2648],{"class":276},"errorEmail",[233,2650,1699],{"class":494},[233,2652,2653,2656,2658,2660,2662,2664],{"class":235,"line":320},[233,2654,2655],{"class":494},"} ",[233,2657,255],{"class":293},[233,2659,797],{"class":296},[233,2661,728],{"class":494},[233,2663,802],{"class":258},[233,2665,805],{"class":494},[233,2667,2668],{"class":235,"line":330},[233,2669,317],{"emptyLinePlaceholder":316},[233,2671,2672,2674],{"class":235,"line":357},[233,2673,269],{"class":268},[233,2675,740],{"class":494},[233,2677,2678,2680,2682,2685],{"class":235,"line":363},[233,2679,2619],{"class":966},[233,2681,1352],{"class":494},[233,2683,2684],{"class":276},"loginWithPasskey",[233,2686,1699],{"class":494},[233,2688,2689,2691,2693,2696],{"class":235,"line":373},[233,2690,2631],{"class":966},[233,2692,1352],{"class":494},[233,2694,2695],{"class":276},"statusPasskey",[233,2697,1699],{"class":494},[233,2699,2700,2702,2704,2707],{"class":235,"line":2482},[233,2701,2643],{"class":966},[233,2703,1352],{"class":494},[233,2705,2706],{"class":276},"errorPasskey",[233,2708,1699],{"class":494},[233,2710,2711,2713,2715,2717,2719,2722],{"class":235,"line":2487},[233,2712,2655],{"class":494},[233,2714,255],{"class":293},[233,2716,797],{"class":296},[233,2718,728],{"class":494},[233,2720,2721],{"class":258},"'passkey'",[233,2723,805],{"class":494},[158,2725,2726],{},"Each method returns an action handle:",[519,2728,2729,2732,2736,2742],{},[522,2730,2731],{"name":859,"type":2009},"Calls the underlying Better Auth method and never throws.",[522,2733,2014,2734,2018],{"name":1950,"type":2013},[169,2735,2017],{},[522,2737,2738,2739,2741],{"name":1463,"type":2021},"Last successful result. Cleared on each new ",[169,2740,2017],{}," and on errors.",[522,2743,2744,2745,1118],{"name":1680,"type":2025},"Normalized error for the latest call (cleared on new ",[169,2746,2017],{},[162,2748,2749,2750,2752,2753,1061,2755,572],{},"Each sign-in method has independent state. When you call ",[169,2751,2017],{}," multiple times, only the latest call updates ",[169,2754,1950],{},[169,2756,1680],{},[611,2758,2760],{"id":2759},"error-state-and-promise-behavior","Error state and promise behavior",[158,2762,217,2763,183,2765,190,2767,2769,2770,2773,2774,2776],{},[169,2764,1950],{},[169,2766,1463],{},[169,2768,1680],{}," as your source of truth. The action handle always sets ",[169,2771,2772],{},"status='error'"," and populates normalized ",[169,2775,1680],{}," when a sign-in attempt fails.",[162,2778,2779,2780,2782,2783,1061,2785,190,2787,2790],{},"Better Auth methods can signal failure by throwing or by resolving to a ",[169,2781,2029],{}," result. In both cases, the action handle updates ",[169,2784,1950],{},[169,2786,1680],{},[169,2788,2789],{},"await execute()"," always resolves.",[1267,2792,2794,2795,2593],{"id":2793},"recommended-flow-execute","Recommended flow (",[169,2796,859],{},[223,2798,2800],{"className":482,"code":2799,"filename":484,"language":485,"meta":229,"style":229},"const { execute, data, status, error } = useSignIn('email')\n\nawait execute({ email, password })\n\nif (status.value === 'error') {\n  console.error(error.value?.message)\n}\n\nif (status.value === 'success') {\n  console.log(data.value)\n}\n",[169,2801,2802,2834,2838,2854,2858,2876,2898,2902,2906,2925,2944],{"__ignoreMap":229},[233,2803,2804,2806,2808,2810,2812,2814,2816,2818,2820,2822,2824,2826,2828,2830,2832],{"class":235,"line":236},[233,2805,269],{"class":268},[233,2807,273],{"class":494},[233,2809,859],{"class":276},[233,2811,183],{"class":494},[233,2813,1463],{"class":276},[233,2815,183],{"class":494},[233,2817,1950],{"class":276},[233,2819,183],{"class":494},[233,2821,1680],{"class":276},[233,2823,290],{"class":494},[233,2825,255],{"class":293},[233,2827,797],{"class":296},[233,2829,728],{"class":494},[233,2831,802],{"class":258},[233,2833,805],{"class":494},[233,2835,2836],{"class":235,"line":265},[233,2837,317],{"emptyLinePlaceholder":316},[233,2839,2840,2842,2844,2846,2848,2850,2852],{"class":235,"line":303},[233,2841,918],{"class":268},[233,2843,2393],{"class":296},[233,2845,862],{"class":494},[233,2847,826],{"class":854},[233,2849,183],{"class":494},[233,2851,839],{"class":854},[233,2853,871],{"class":494},[233,2855,2856],{"class":235,"line":313},[233,2857,317],{"emptyLinePlaceholder":316},[233,2859,2860,2862,2864,2866,2868,2870,2872,2874],{"class":235,"line":320},[233,2861,1940],{"class":268},[233,2863,1848],{"class":494},[233,2865,1950],{"class":854},[233,2867,572],{"class":494},[233,2869,1494],{"class":966},[233,2871,1957],{"class":829},[233,2873,1960],{"class":258},[233,2875,846],{"class":494},[233,2877,2878,2880,2882,2884,2886,2888,2890,2892,2894,2896],{"class":235,"line":330},[233,2879,1967],{"class":854},[233,2881,572],{"class":494},[233,2883,1680],{"class":296},[233,2885,728],{"class":494},[233,2887,1680],{"class":854},[233,2889,572],{"class":494},[233,2891,1494],{"class":966},[233,2893,923],{"class":494},[233,2895,1988],{"class":966},[233,2897,805],{"class":494},[233,2899,2900],{"class":235,"line":357},[233,2901,876],{"class":494},[233,2903,2904],{"class":235,"line":363},[233,2905,317],{"emptyLinePlaceholder":316},[233,2907,2908,2910,2912,2914,2916,2918,2920,2923],{"class":235,"line":373},[233,2909,1940],{"class":268},[233,2911,1848],{"class":494},[233,2913,1950],{"class":854},[233,2915,572],{"class":494},[233,2917,1494],{"class":966},[233,2919,1957],{"class":829},[233,2921,2922],{"class":258}," 'success'",[233,2924,846],{"class":494},[233,2926,2927,2929,2931,2934,2936,2938,2940,2942],{"class":235,"line":2482},[233,2928,1967],{"class":854},[233,2930,572],{"class":494},[233,2932,2933],{"class":296},"log",[233,2935,728],{"class":494},[233,2937,1463],{"class":854},[233,2939,572],{"class":494},[233,2941,1494],{"class":966},[233,2943,805],{"class":494},[233,2945,2946],{"class":235,"line":2487},[233,2947,876],{"class":494},[211,2949,205],{"id":2950},"usesignup",[158,2952,2953,2954,2956,2957,572],{},"Same API as ",[169,2955,201],{},", but wraps Better Auth ",[169,2958,2959],{},"signUp.*",[223,2961,2964],{"className":482,"code":2962,"filename":2963,"language":485,"meta":229,"style":229},"const { execute, data, status, error } = useSignUp('email')\n\nawait execute(\n  { email, password, name },\n  {\n    onSuccess: () => navigateTo('\u002Fwelcome'),\n    onError: (ctx) => console.error(ctx.error),\n  },\n)\n","pages\u002Fsignup.vue",[169,2965,2966,2999,3003,3011,3027,3031,3050,3080,3084],{"__ignoreMap":229},[233,2967,2968,2970,2972,2974,2976,2978,2980,2982,2984,2986,2988,2990,2993,2995,2997],{"class":235,"line":236},[233,2969,269],{"class":268},[233,2971,273],{"class":494},[233,2973,859],{"class":276},[233,2975,183],{"class":494},[233,2977,1463],{"class":276},[233,2979,183],{"class":494},[233,2981,1950],{"class":276},[233,2983,183],{"class":494},[233,2985,1680],{"class":276},[233,2987,290],{"class":494},[233,2989,255],{"class":293},[233,2991,2992],{"class":296}," useSignUp",[233,2994,728],{"class":494},[233,2996,802],{"class":258},[233,2998,805],{"class":494},[233,3000,3001],{"class":235,"line":265},[233,3002,317],{"emptyLinePlaceholder":316},[233,3004,3005,3007,3009],{"class":235,"line":303},[233,3006,918],{"class":268},[233,3008,2393],{"class":296},[233,3010,1011],{"class":494},[233,3012,3013,3015,3017,3019,3021,3023,3025],{"class":235,"line":313},[233,3014,1016],{"class":494},[233,3016,826],{"class":854},[233,3018,183],{"class":494},[233,3020,839],{"class":854},[233,3022,183],{"class":494},[233,3024,1355],{"class":854},[233,3026,1025],{"class":494},[233,3028,3029],{"class":235,"line":320},[233,3030,2417],{"class":494},[233,3032,3033,3035,3037,3039,3041,3043,3045,3048],{"class":235,"line":330},[233,3034,2422],{"class":296},[233,3036,830],{"class":1035},[233,3038,1038],{"class":494},[233,3040,737],{"class":268},[233,3042,1043],{"class":296},[233,3044,728],{"class":494},[233,3046,3047],{"class":258},"'\u002Fwelcome'",[233,3049,1217],{"class":494},[233,3051,3052,3054,3056,3058,3060,3062,3064,3066,3068,3070,3072,3074,3076,3078],{"class":235,"line":357},[233,3053,2442],{"class":296},[233,3055,830],{"class":1035},[233,3057,1848],{"class":494},[233,3059,2449],{"class":825},[233,3061,2185],{"class":494},[233,3063,737],{"class":268},[233,3065,2456],{"class":854},[233,3067,572],{"class":494},[233,3069,1680],{"class":296},[233,3071,728],{"class":494},[233,3073,2449],{"class":854},[233,3075,572],{"class":494},[233,3077,1680],{"class":966},[233,3079,1217],{"class":494},[233,3081,3082],{"class":235,"line":363},[233,3083,2475],{"class":494},[233,3085,3086],{"class":235,"line":373},[233,3087,805],{"class":494},[158,3089,3090,3092,3093,183,3095,183,3097,183,3099,3101,3102,572],{},[169,3091,205],{}," returns the same action handle shape (",[169,3094,859],{},[169,3096,1950],{},[169,3098,1463],{},[169,3100,1680],{},") and follows the same error normalization semantics as ",[169,3103,201],{},[1413,3105],{"title":3106,"to":79},"OAuth Providers guide",[211,3108,3110],{"id":3109},"usesignout","useSignOut",[158,3112,3113,3114,3117,3118,1061,3120,572],{},"Wraps ",[169,3115,3116],{},"useUserSession().signOut()"," with the same action handle shape as ",[169,3119,432],{},[169,3121,442],{},[223,3123,3126],{"className":225,"code":3124,"filename":3125,"language":228,"meta":229,"style":229},"\u003Cscript setup lang=\"ts\">\nconst { execute: signOut, status, error } = useSignOut()\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cbutton :disabled=\"status === 'pending'\" @click=\"signOut()\">\n    {{ status === 'pending' ? 'Signing out…' : 'Sign out' }}\n  \u003C\u002Fbutton>\n  \u003Cp v-if=\"error\" role=\"alert\">{{ error.message }}\u003C\u002Fp>\n\u003C\u002Ftemplate>\n","components\u002FSignOutButton.vue",[169,3127,3128,3144,3173,3181,3185,3193,3215,3220,3228,3261],{"__ignoreMap":229},[233,3129,3130,3132,3134,3136,3138,3140,3142],{"class":235,"line":236},[233,3131,240],{"class":239},[233,3133,244],{"class":243},[233,3135,248],{"class":247},[233,3137,251],{"class":247},[233,3139,255],{"class":254},[233,3141,259],{"class":258},[233,3143,262],{"class":239},[233,3145,3146,3148,3150,3152,3154,3156,3158,3160,3162,3164,3166,3168,3171],{"class":235,"line":265},[233,3147,269],{"class":268},[233,3149,273],{"class":272},[233,3151,859],{"class":966},[233,3153,1352],{"class":272},[233,3155,287],{"class":276},[233,3157,183],{"class":272},[233,3159,1950],{"class":276},[233,3161,183],{"class":272},[233,3163,1680],{"class":276},[233,3165,290],{"class":272},[233,3167,255],{"class":293},[233,3169,3170],{"class":296}," useSignOut",[233,3172,300],{"class":272},[233,3174,3175,3177,3179],{"class":235,"line":303},[233,3176,306],{"class":239},[233,3178,244],{"class":243},[233,3180,262],{"class":239},[233,3182,3183],{"class":235,"line":313},[233,3184,317],{"emptyLinePlaceholder":316},[233,3186,3187,3189,3191],{"class":235,"line":320},[233,3188,240],{"class":239},[233,3190,325],{"class":243},[233,3192,262],{"class":239},[233,3194,3195,3197,3199,3202,3204,3207,3209,3211,3213],{"class":235,"line":330},[233,3196,333],{"class":239},[233,3198,336],{"class":243},[233,3200,3201],{"class":247}," :disabled",[233,3203,255],{"class":254},[233,3205,3206],{"class":258},"\"status === 'pending'\"",[233,3208,347],{"class":247},[233,3210,255],{"class":254},[233,3212,352],{"class":258},[233,3214,262],{"class":239},[233,3216,3217],{"class":235,"line":357},[233,3218,3219],{"class":272},"    {{ status === 'pending' ? 'Signing out…' : 'Sign out' }}\n",[233,3221,3222,3224,3226],{"class":235,"line":363},[233,3223,366],{"class":239},[233,3225,336],{"class":243},[233,3227,262],{"class":239},[233,3229,3230,3232,3234,3236,3238,3241,3244,3246,3249,3252,3255,3257,3259],{"class":235,"line":373},[233,3231,333],{"class":239},[233,3233,158],{"class":243},[233,3235,339],{"class":247},[233,3237,255],{"class":254},[233,3239,3240],{"class":258},"\"error\"",[233,3242,3243],{"class":247}," role",[233,3245,255],{"class":254},[233,3247,3248],{"class":258},"\"alert\"",[233,3250,3251],{"class":239},">",[233,3253,3254],{"class":272},"{{ error.message }}",[233,3256,306],{"class":239},[233,3258,158],{"class":243},[233,3260,262],{"class":239},[233,3262,3263,3265,3267],{"class":235,"line":2482},[233,3264,306],{"class":239},[233,3266,325],{"class":243},[233,3268,262],{"class":239},[158,3270,3271,3272,3274,3275,3278],{},"On success, it clears the local session and follows ",[169,3273,1170],{}," when configured. Pass ",[169,3276,3277],{},"execute({ onSuccess })"," to run your own callback instead of the configured redirect. The action stays pending until the callback completes.",[158,3280,3281,3282,3284,3285,1061,3288,3290,3291,3293,3294,202,3296,3298],{},"On a failed sign-out request, ",[169,3283,1950],{}," becomes ",[169,3286,3287],{},"'error'",[169,3289,1680],{}," contains the normalized error. The session remains intact, and neither the success callback nor redirect runs. As with the other action composables, ",[169,3292,2017],{}," resolves after capturing errors; read ",[169,3295,1950],{},[169,3297,1680],{}," to determine the outcome. Concurrent calls share the existing sign-out request.",[158,3300,3301,3302,3304,3305,3308],{},"Create the composable during setup; call ",[169,3303,2017],{}," only on the client. Signing out an anonymous user does not delete their account. Use the anonymous plugin's ",[169,3306,3307],{},"deleteAnonymousUser"," method explicitly when that is your application's policy.",[211,3310,3312],{"id":3311},"related-pages","Related pages",[553,3314,3315,3320,3325],{},[556,3316,3317],{},[3318,3319,52],"a",{"href":53},[556,3321,3322],{},[3318,3323,3324],{"href":142},"Server utilities",[556,3326,3327],{},[3318,3328,145],{"href":146},[3330,3331,3332],"style",{},"html pre.shiki code .sL9le, html code.shiki .sL9le{--shiki-light:#383A42;--shiki-default:#36F9F6;--shiki-dark:#36F9F6}html pre.shiki code .stweg, html code.shiki .stweg{--shiki-light:#E45649;--shiki-default:#72F1B8;--shiki-dark:#72F1B8}html pre.shiki code .s0frj, html code.shiki .s0frj{--shiki-light:#986801;--shiki-light-font-style:inherit;--shiki-default:#FEDE5D;--shiki-default-font-style:italic;--shiki-dark:#FEDE5D;--shiki-dark-font-style:italic}html pre.shiki code .sNM9w, html code.shiki .sNM9w{--shiki-light:#383A42;--shiki-default:#B6B1B1;--shiki-dark:#B6B1B1}html pre.shiki code .sPAZv, html code.shiki .sPAZv{--shiki-light:#50A14F;--shiki-default:#FF8B39;--shiki-dark:#FF8B39}html pre.shiki code .sqe1H, html code.shiki .sqe1H{--shiki-light:#A626A4;--shiki-default:#FEDE5D;--shiki-dark:#FEDE5D}html pre.shiki code .sEEOt, html code.shiki .sEEOt{--shiki-light:#383A42;--shiki-default:#FFFFFFEE;--shiki-dark:#FFFFFFEE}html pre.shiki code .s6Rhl, html code.shiki .s6Rhl{--shiki-light:#986801;--shiki-default:#FF7EDB;--shiki-dark:#FF7EDB}html pre.shiki code .sQBpM, html code.shiki .sQBpM{--shiki-light:#0184BC;--shiki-default:#FFFFFFEE;--shiki-dark:#FFFFFFEE}html pre.shiki code .sfT9l, html code.shiki .sfT9l{--shiki-light:#4078F2;--shiki-default:#36F9F6;--shiki-dark:#36F9F6}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 .s17Py, html code.shiki .s17Py{--shiki-light:#383A42;--shiki-default:#BBBBBB;--shiki-dark:#BBBBBB}html pre.shiki code .sgisi, html code.shiki .sgisi{--shiki-light:#383A42;--shiki-light-font-style:inherit;--shiki-default:#FF7EDB;--shiki-default-font-style:italic;--shiki-dark:#FF7EDB;--shiki-dark-font-style:italic}html pre.shiki code .sn-Jc, html code.shiki .sn-Jc{--shiki-light:#0184BC;--shiki-default:#FEDE5D;--shiki-dark:#FEDE5D}html pre.shiki code .sr8De, html code.shiki .sr8De{--shiki-light:#0184BC;--shiki-default:#FE4450;--shiki-dark:#FE4450}html pre.shiki code .svFNh, html code.shiki .svFNh{--shiki-light:#383A42;--shiki-default:#FF7EDB;--shiki-dark:#FF7EDB}html pre.shiki code .st7cf, html code.shiki .st7cf{--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-default:#848BBD;--shiki-default-font-style:italic;--shiki-dark:#848BBD;--shiki-dark-font-style:italic}html pre.shiki code .sYvLG, html code.shiki .sYvLG{--shiki-light:#E45649;--shiki-default:#FF7EDB;--shiki-dark:#FF7EDB}html pre.shiki code .sVnqq, html code.shiki .sVnqq{--shiki-light:#0184BC;--shiki-default:#B6B1B1;--shiki-dark:#B6B1B1}html pre.shiki code .s3ZNE, html code.shiki .s3ZNE{--shiki-light:#986801;--shiki-default:#F97E72;--shiki-dark:#F97E72}",{"title":229,"searchDepth":265,"depth":265,"links":3334},[3335,3336,3337,3338,3341,3344,3348,3349,3350,3351,3352,3353,3356,3357,3358],{"id":213,"depth":265,"text":214},{"id":382,"depth":265,"text":383},{"id":475,"depth":265,"text":476},{"id":602,"depth":265,"text":603,"children":3339},[3340],{"id":613,"depth":303,"text":614},{"id":887,"depth":265,"text":197,"children":3342},[3343],{"id":935,"depth":303,"text":936},{"id":1067,"depth":265,"text":1068,"children":3345},[3346,3347],{"id":1145,"depth":303,"text":287},{"id":1224,"depth":303,"text":1227},{"id":1418,"depth":265,"text":1419},{"id":1649,"depth":265,"text":1650},{"id":1819,"depth":265,"text":1820},{"id":2033,"depth":265,"text":2034},{"id":2153,"depth":265,"text":2154},{"id":2335,"depth":265,"text":201,"children":3354},[3355],{"id":2759,"depth":303,"text":2760},{"id":2950,"depth":265,"text":205},{"id":3109,"depth":265,"text":3110},{"id":3311,"depth":265,"text":3312},"API reference for client-side composables.","md",null,{},{"title":137,"description":3359},"-S4G2aFlatg0LHBWPRibafiDZ3Rf8biuW3wj3W4qMmU",[3366,3368],{"title":128,"path":129,"stem":130,"description":3367,"children":-1},"Translate authentication errors with @nuxtjs\u002Fi18n.",{"title":141,"path":142,"stem":143,"description":3369,"children":-1},"API reference for server-side helpers available in Nitro event handlers.",1788606331400]