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