[{"data":1,"prerenderedAt":1932},["ShallowReactive",2],{"navigation_docs":3,"-api-server-utils":208,"-api-server-utils-surround":1927},[4,42,68,115,136,157],{"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,82,86,90,94,99,103,107,111],{"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,"icon":81},"Setup diagnostics","\u002Fguides\u002Fdiagnostics","3.guides\u002F10.diagnostics","i-lucide-circle-alert",{"title":83,"path":84,"stem":85},"OAuth Providers","\u002Fguides\u002Foauth-providers","3.guides\u002F2.oauth-providers",{"title":87,"path":88,"stem":89},"Custom Database","\u002Fguides\u002Fcustom-database","3.guides\u002F3.custom-database",{"title":91,"path":92,"stem":93},"Database-less Mode","\u002Fguides\u002Fdatabase-less-mode","3.guides\u002F4.database-less-mode",{"title":95,"path":96,"stem":97,"icon":98},"External Auth Backend","\u002Fguides\u002Fexternal-auth-backend","3.guides\u002F5.external-auth-backend","i-lucide-server",{"title":100,"path":101,"stem":102},"Migrating from nuxt-auth-utils","\u002Fguides\u002Fmigrate-from-nuxt-auth-utils","3.guides\u002F6.migrate-from-nuxt-auth-utils",{"title":104,"path":105,"stem":106},"Two-Factor Authentication (TOTP + Backup Codes)","\u002Fguides\u002Ftwo-factor-auth","3.guides\u002F7.two-factor-auth",{"title":108,"path":109,"stem":110},"Testing","\u002Fguides\u002Ftesting","3.guides\u002F8.testing",{"title":112,"path":113,"stem":114},"Production Deployment","\u002Fguides\u002Fproduction-deployment","3.guides\u002F9.production-deployment",{"title":116,"path":117,"stem":118,"children":119,"page":67},"Integrations","\u002Fintegrations","4.integrations",[120,124,128,132],{"title":121,"path":122,"stem":123},"NuxtHub","\u002Fintegrations\u002Fnuxthub","4.integrations\u002F1.nuxthub",{"title":125,"path":126,"stem":127},"DevTools","\u002Fintegrations\u002Fdevtools","4.integrations\u002F2.devtools",{"title":129,"path":130,"stem":131},"Convex","\u002Fintegrations\u002Fconvex","4.integrations\u002F3.convex",{"title":133,"path":134,"stem":135},"i18n","\u002Fintegrations\u002Fi18n","4.integrations\u002F4.i18n",{"title":137,"path":138,"stem":139,"children":140,"page":67},"API Reference","\u002Fapi","5.api",[141,145,149,153],{"title":142,"path":143,"stem":144},"Composables","\u002Fapi\u002Fcomposables","5.api\u002F1.composables",{"title":146,"path":147,"stem":148},"Server Utilities","\u002Fapi\u002Fserver-utils","5.api\u002F2.server-utils",{"title":150,"path":151,"stem":152},"Components","\u002Fapi\u002Fcomponents","5.api\u002F3.components",{"title":154,"path":155,"stem":156},"Types","\u002Fapi\u002Ftypes","5.api\u002F4.types",{"title":158,"path":159,"stem":160,"children":161,"icon":81},"Errors","\u002Ferrors","6.errors\u002F0.index",[162,164,168,172,176,180,184,188,192,196,200,204],{"title":163,"path":159,"stem":160},"Overview",{"title":165,"path":166,"stem":167},"Auth configuration failed to load","\u002Ferrors\u002Fnuxt-auth-config-load-failed","6.errors\u002Fnuxt-auth-config-load-failed",{"title":169,"path":170,"stem":171},"Schema generator returned no code","\u002Ferrors\u002Fnuxt-auth-empty-schema","6.errors\u002Fnuxt-auth-empty-schema",{"title":173,"path":174,"stem":175},"Invalid server auth config export","\u002Ferrors\u002Fnuxt-auth-invalid-config-export","6.errors\u002Fnuxt-auth-invalid-config-export",{"title":177,"path":178,"stem":179},"Auth plugin path must be absolute","\u002Ferrors\u002Fnuxt-auth-invalid-plugin-source","6.errors\u002Fnuxt-auth-invalid-plugin-source",{"title":181,"path":182,"stem":183},"Missing auth configuration","\u002Ferrors\u002Fnuxt-auth-missing-config","6.errors\u002Fnuxt-auth-missing-config",{"title":185,"path":186,"stem":187},"NuxtHub database alias is missing","\u002Ferrors\u002Fnuxt-auth-missing-hub-db","6.errors\u002Fnuxt-auth-missing-hub-db",{"title":189,"path":190,"stem":191},"No database provider is enabled","\u002Ferrors\u002Fnuxt-auth-no-database-provider","6.errors\u002Fnuxt-auth-no-database-provider",{"title":193,"path":194,"stem":195},"Auth schema generation failed","\u002Ferrors\u002Fnuxt-auth-schema-generation-failed","6.errors\u002Fnuxt-auth-schema-generation-failed",{"title":197,"path":198,"stem":199},"Custom session storage is missing","\u002Ferrors\u002Fnuxt-auth-schema-storage-required","6.errors\u002Fnuxt-auth-schema-storage-required",{"title":201,"path":202,"stem":203},"Secondary storage in client-only mode","\u002Ferrors\u002Fnuxt-auth-storage-client-only","6.errors\u002Fnuxt-auth-storage-client-only",{"title":205,"path":206,"stem":207},"Unsupported database dialect","\u002Ferrors\u002Fnuxt-auth-unsupported-dialect","6.errors\u002Fnuxt-auth-unsupported-dialect",{"id":209,"title":146,"body":210,"description":1921,"extension":1922,"links":1923,"meta":1924,"navigation":388,"path":147,"seo":1925,"stem":148,"__hash__":1926},"docs\u002F5.api\u002F2.server-utils.md",{"type":211,"value":212,"toc":1904},"minimark",[213,217,240,254,259,262,470,473,536,547,551,554,630,639,644,660,664,670,743,750,766,770,787,887,893,898,902,907,914,992,1005,1008,1014,1028,1239,1242,1246,1249,1371,1374,1378,1381,1471,1474,1480,1483,1493,1534,1557,1560,1572,1576,1581,1623,1628,1688,1692,1880,1884,1900],[214,215,216],"p",{},"Use this page when you need exact behavior for the auto-imported server helpers registered by the module.",[214,218,219,220,224,225,228,229,232,233,235,236,239],{},"Only the helpers documented here and ",[221,222,223],"code",{},"defineServerAuth"," are registered. The internal ",[221,226,227],{},"resolveCustomSecondaryStorageRequirement"," helper and ",[221,230,231],{},"HubSecondaryStorageMode"," type are no longer auto-imported. Configure custom storage through ",[221,234,223],{}," and ",[221,237,238],{},"auth.hubSecondaryStorage",".",[241,242,243,244,248,249,253],"warning",{},"These utilities are only available in ",[245,246,247],"strong",{},"full mode",". In ",[250,251,252],"a",{"href":96},"clientOnly mode",", there is no local auth server, so these utilities are not registered.",[255,256,258],"h2",{"id":257},"serverauth","serverAuth",[214,260,261],{},"Returns the initialized Better Auth instance (module-level singleton). Pass the event for accurate URL detection on first initialization.",[263,264,270],"pre",{"className":265,"code":266,"filename":267,"language":268,"meta":269,"style":269},"language-ts shiki shiki-themes one-light synthwave-84 synthwave-84","export default defineEventHandler(async (event) => {\n  const auth = serverAuth(event)\n  const session = await auth.api.getSession({ headers: event.headers })\n\n  if (!session) {\n    throw createError({ statusCode: 401 })\n  }\n\n  return { user: session.user }\n})\n","server\u002Fapi\u002Fadmin\u002Fusers.get.ts","ts","",[221,271,272,312,337,383,390,408,430,436,441,464],{"__ignoreMap":269},[273,274,277,281,285,289,293,296,299,303,306,309],"span",{"class":275,"line":276},"line",1,[273,278,280],{"class":279},"sqe1H","export",[273,282,284],{"class":283},"sKg8T"," default",[273,286,288],{"class":287},"sfT9l"," defineEventHandler",[273,290,292],{"class":291},"s17Py","(",[273,294,295],{"class":279},"async",[273,297,298],{"class":291}," (",[273,300,302],{"class":301},"sgisi","event",[273,304,305],{"class":291},") ",[273,307,308],{"class":279},"=>",[273,310,311],{"class":291}," {\n",[273,313,315,318,322,326,329,331,334],{"class":275,"line":314},2,[273,316,317],{"class":279},"  const",[273,319,321],{"class":320},"s6Rhl"," auth",[273,323,325],{"class":324},"sQBpM"," =",[273,327,328],{"class":287}," serverAuth",[273,330,292],{"class":291},[273,332,302],{"class":333},"sYvLG",[273,335,336],{"class":291},")\n",[273,338,340,342,345,347,350,353,355,358,360,363,366,369,373,376,378,380],{"class":275,"line":339},3,[273,341,317],{"class":279},[273,343,344],{"class":320}," session",[273,346,325],{"class":324},[273,348,349],{"class":279}," await",[273,351,321],{"class":352},"svFNh",[273,354,239],{"class":291},[273,356,357],{"class":333},"api",[273,359,239],{"class":291},[273,361,362],{"class":287},"getSession",[273,364,365],{"class":291},"({ ",[273,367,368],{"class":333},"headers",[273,370,372],{"class":371},"sVnqq",":",[273,374,375],{"class":352}," event",[273,377,239],{"class":291},[273,379,368],{"class":333},[273,381,382],{"class":291}," })\n",[273,384,386],{"class":275,"line":385},4,[273,387,389],{"emptyLinePlaceholder":388},true,"\n",[273,391,393,396,398,402,405],{"class":275,"line":392},5,[273,394,395],{"class":279},"  if",[273,397,298],{"class":291},[273,399,401],{"class":400},"sn-Jc","!",[273,403,404],{"class":333},"session",[273,406,407],{"class":291},") {\n",[273,409,411,414,417,419,422,424,428],{"class":275,"line":410},6,[273,412,413],{"class":279},"    throw",[273,415,416],{"class":287}," createError",[273,418,365],{"class":291},[273,420,421],{"class":333},"statusCode",[273,423,372],{"class":371},[273,425,427],{"class":426},"s3ZNE"," 401",[273,429,382],{"class":291},[273,431,433],{"class":275,"line":432},7,[273,434,435],{"class":291},"  }\n",[273,437,439],{"class":275,"line":438},8,[273,440,389],{"emptyLinePlaceholder":388},[273,442,444,447,450,453,455,457,459,461],{"class":275,"line":443},9,[273,445,446],{"class":279},"  return",[273,448,449],{"class":291}," { ",[273,451,452],{"class":333},"user",[273,454,372],{"class":371},[273,456,344],{"class":352},[273,458,239],{"class":291},[273,460,452],{"class":333},[273,462,463],{"class":291}," }\n",[273,465,467],{"class":275,"line":466},10,[273,468,469],{"class":291},"})\n",[214,471,472],{},"You can also pass query options to bypass cookie cache \u002F refresh behavior:",[263,474,476],{"className":265,"code":475,"language":268,"meta":269,"style":269},"await auth.api.getSession({\n  headers: event.headers,\n  query: { disableCookieCache: true },\n})\n",[221,477,478,496,512,532],{"__ignoreMap":269},[273,479,480,483,485,487,489,491,493],{"class":275,"line":276},[273,481,482],{"class":279},"await",[273,484,321],{"class":352},[273,486,239],{"class":291},[273,488,357],{"class":333},[273,490,239],{"class":291},[273,492,362],{"class":287},[273,494,495],{"class":291},"({\n",[273,497,498,501,503,505,507,509],{"class":275,"line":314},[273,499,500],{"class":333},"  headers",[273,502,372],{"class":371},[273,504,375],{"class":352},[273,506,239],{"class":291},[273,508,368],{"class":333},[273,510,511],{"class":291},",\n",[273,513,514,517,519,521,524,526,529],{"class":275,"line":339},[273,515,516],{"class":333},"  query",[273,518,372],{"class":371},[273,520,449],{"class":291},[273,522,523],{"class":333},"disableCookieCache",[273,525,372],{"class":371},[273,527,528],{"class":426}," true",[273,530,531],{"class":291}," },\n",[273,533,534],{"class":275,"line":385},[273,535,469],{"class":291},[537,538,539,540,543,544,546],"note",{},"Use ",[221,541,542],{},"serverAuth(event)"," in request handlers to access advanced Better Auth features not exposed by the helper wrappers. In non-request contexts, you can call ",[221,545,48],{}," without an event.",[255,548,550],{"id":549},"getusersession","getUserSession",[214,552,553],{},"Retrieves the current session from the request context without throwing an error if unauthenticated.",[263,555,558],{"className":265,"code":556,"filename":557,"language":268,"meta":269,"style":269},"export default defineEventHandler(async (event) => {\n  const session = await getUserSession(event)\n  \n  if (session) {\n    \u002F\u002F ...\n  }\n})\n","server\u002Fapi\u002Fexample.ts",[221,559,560,582,601,606,616,622,626],{"__ignoreMap":269},[273,561,562,564,566,568,570,572,574,576,578,580],{"class":275,"line":276},[273,563,280],{"class":279},[273,565,284],{"class":283},[273,567,288],{"class":287},[273,569,292],{"class":291},[273,571,295],{"class":279},[273,573,298],{"class":291},[273,575,302],{"class":301},[273,577,305],{"class":291},[273,579,308],{"class":279},[273,581,311],{"class":291},[273,583,584,586,588,590,592,595,597,599],{"class":275,"line":314},[273,585,317],{"class":279},[273,587,344],{"class":320},[273,589,325],{"class":324},[273,591,349],{"class":279},[273,593,594],{"class":287}," getUserSession",[273,596,292],{"class":291},[273,598,302],{"class":333},[273,600,336],{"class":291},[273,602,603],{"class":275,"line":339},[273,604,605],{"class":291},"  \n",[273,607,608,610,612,614],{"class":275,"line":385},[273,609,395],{"class":279},[273,611,298],{"class":291},[273,613,404],{"class":333},[273,615,407],{"class":291},[273,617,618],{"class":275,"line":392},[273,619,621],{"class":620},"st7cf","    \u002F\u002F ...\n",[273,623,624],{"class":275,"line":410},[273,625,435],{"class":291},[273,627,628],{"class":275,"line":432},[273,629,469],{"class":291},[214,631,632,634,635,638],{},[221,633,550],{}," does not create request-cache entries by itself. Use ",[221,636,637],{},"getRequestSession(event)"," when you need request-lifetime caching across middleware\u002Fhandlers.",[214,640,641],{},[245,642,643],{},"Returns:",[645,646,647,654],"ul",{},[648,649,650,653],"li",{},[221,651,652],{},"{ user: AuthUser, session: AuthSession }"," if authenticated.",[648,655,656,659],{},[221,657,658],{},"null"," if unauthenticated.",[255,661,663],{"id":662},"getrequestsession","getRequestSession",[214,665,666,667,239],{},"Retrieves the current session and memoizes it for the lifetime of the current request. In Nuxt and Nitro handlers, the helper stores the memoized value on ",[221,668,669],{},"event.context.requestSession",[263,671,673],{"className":265,"code":672,"filename":557,"language":268,"meta":269,"style":269},"export default defineEventHandler(async (event) => {\n  const requestSession = await getRequestSession(event)\n  const sameRequestSession = await getRequestSession(event) \u002F\u002F cached\n})\n",[221,674,675,697,717,739],{"__ignoreMap":269},[273,676,677,679,681,683,685,687,689,691,693,695],{"class":275,"line":276},[273,678,280],{"class":279},[273,680,284],{"class":283},[273,682,288],{"class":287},[273,684,292],{"class":291},[273,686,295],{"class":279},[273,688,298],{"class":291},[273,690,302],{"class":301},[273,692,305],{"class":291},[273,694,308],{"class":279},[273,696,311],{"class":291},[273,698,699,701,704,706,708,711,713,715],{"class":275,"line":314},[273,700,317],{"class":279},[273,702,703],{"class":320}," requestSession",[273,705,325],{"class":324},[273,707,349],{"class":279},[273,709,710],{"class":287}," getRequestSession",[273,712,292],{"class":291},[273,714,302],{"class":333},[273,716,336],{"class":291},[273,718,719,721,724,726,728,730,732,734,736],{"class":275,"line":339},[273,720,317],{"class":279},[273,722,723],{"class":320}," sameRequestSession",[273,725,325],{"class":324},[273,727,349],{"class":279},[273,729,710],{"class":287},[273,731,292],{"class":291},[273,733,302],{"class":333},[273,735,305],{"class":291},[273,737,738],{"class":620},"\u002F\u002F cached\n",[273,740,741],{"class":275,"line":385},[273,742,469],{"class":291},[214,744,745,746,749],{},"Use this helper when multiple handlers\u002Fmiddleware in the same request need session access without repeating ",[221,747,748],{},"auth.api.getSession()"," calls.",[537,751,752,754,755,758,759,762,763,239],{},[221,753,663],{}," stays type-compatible in projects that use narrowed ",[221,756,757],{},"h3"," typings where ",[221,760,761],{},"H3Event"," does not explicitly declare ",[221,764,765],{},"context",[255,767,769],{"id":768},"setrequestsession","setRequestSession",[214,771,772,773,776,777,779,780,782,783,786],{},"Supplies an ",[221,774,775],{},"AppSession | null"," to ",[221,778,663],{},", ",[221,781,550],{},", and ",[221,784,785],{},"requireUserSession"," for the rest of the current request. Use it when trusted server code authenticates a request through another mechanism, such as a verified bearer token, and resolves the complete application session itself.",[263,788,791],{"className":265,"code":789,"filename":790,"language":268,"meta":269,"style":269},"export default defineEventHandler(async (event) => {\n  const claims = await verifyBearerToken(event)\n  const session = await resolveCurrentAppSession(claims)\n\n  setRequestSession(event, session)\n\n  \u002F\u002F Later middleware and handlers reuse the supplied value.\n})\n","server\u002Fmiddleware\u002Fbearer-session.ts",[221,792,793,815,835,855,859,874,878,883],{"__ignoreMap":269},[273,794,795,797,799,801,803,805,807,809,811,813],{"class":275,"line":276},[273,796,280],{"class":279},[273,798,284],{"class":283},[273,800,288],{"class":287},[273,802,292],{"class":291},[273,804,295],{"class":279},[273,806,298],{"class":291},[273,808,302],{"class":301},[273,810,305],{"class":291},[273,812,308],{"class":279},[273,814,311],{"class":291},[273,816,817,819,822,824,826,829,831,833],{"class":275,"line":314},[273,818,317],{"class":279},[273,820,821],{"class":320}," claims",[273,823,325],{"class":324},[273,825,349],{"class":279},[273,827,828],{"class":287}," verifyBearerToken",[273,830,292],{"class":291},[273,832,302],{"class":333},[273,834,336],{"class":291},[273,836,837,839,841,843,845,848,850,853],{"class":275,"line":339},[273,838,317],{"class":279},[273,840,344],{"class":320},[273,842,325],{"class":324},[273,844,349],{"class":279},[273,846,847],{"class":287}," resolveCurrentAppSession",[273,849,292],{"class":291},[273,851,852],{"class":333},"claims",[273,854,336],{"class":291},[273,856,857],{"class":275,"line":385},[273,858,389],{"emptyLinePlaceholder":388},[273,860,861,864,866,868,870,872],{"class":275,"line":392},[273,862,863],{"class":287},"  setRequestSession",[273,865,292],{"class":291},[273,867,302],{"class":333},[273,869,779],{"class":291},[273,871,404],{"class":333},[273,873,336],{"class":291},[273,875,876],{"class":275,"line":410},[273,877,389],{"emptyLinePlaceholder":388},[273,879,880],{"class":275,"line":432},[273,881,882],{"class":620},"  \u002F\u002F Later middleware and handlers reuse the supplied value.\n",[273,884,885],{"class":275,"line":438},[273,886,469],{"class":291},[214,888,889,890,892],{},"The helper makes the supplied value authoritative immediately, so an older session lookup or refresh cannot overwrite it when that work settles. Pass ",[221,891,658],{}," to cache an unauthenticated result for the current request.",[241,894,895,897],{},[221,896,769],{}," trusts the supplied value. Authenticate the request and enforce bearer-token audience and scope restrictions before calling it. The helper does not create, update, or clear a Better Auth session cookie.",[255,899,901],{"id":900},"refreshsessioncookiecache","refreshSessionCookieCache",[214,903,904,905,239],{},"Refreshes Better Auth's cached session cookie on the current response, then refreshes the request-cached session used by ",[221,906,637],{},[214,908,909,910,913],{},"If Better Auth does not write a replacement cache cookie, such as for a session created with ",[221,911,912],{},"rememberMe: false",", the helper expires the stale cache cookies so subsequent requests load the updated data. The session token and remember-me preference are preserved.",[263,915,918],{"className":265,"code":916,"filename":917,"language":268,"meta":269,"style":269},"export default defineEventHandler(async (event) => {\n  await updateCurrentUserProfile(event)\n  await refreshSessionCookieCache(event)\n\n  return { ok: true }\n})\n","server\u002Fapi\u002Fprofile.patch.ts",[221,919,920,942,956,969,973,988],{"__ignoreMap":269},[273,921,922,924,926,928,930,932,934,936,938,940],{"class":275,"line":276},[273,923,280],{"class":279},[273,925,284],{"class":283},[273,927,288],{"class":287},[273,929,292],{"class":291},[273,931,295],{"class":279},[273,933,298],{"class":291},[273,935,302],{"class":301},[273,937,305],{"class":291},[273,939,308],{"class":279},[273,941,311],{"class":291},[273,943,944,947,950,952,954],{"class":275,"line":314},[273,945,946],{"class":279},"  await",[273,948,949],{"class":287}," updateCurrentUserProfile",[273,951,292],{"class":291},[273,953,302],{"class":333},[273,955,336],{"class":291},[273,957,958,960,963,965,967],{"class":275,"line":339},[273,959,946],{"class":279},[273,961,962],{"class":287}," refreshSessionCookieCache",[273,964,292],{"class":291},[273,966,302],{"class":333},[273,968,336],{"class":291},[273,970,971],{"class":275,"line":385},[273,972,389],{"emptyLinePlaceholder":388},[273,974,975,977,979,982,984,986],{"class":275,"line":392},[273,976,446],{"class":279},[273,978,449],{"class":291},[273,980,981],{"class":333},"ok",[273,983,372],{"class":371},[273,985,528],{"class":426},[273,987,463],{"class":291},[273,989,990],{"class":275,"line":410},[273,991,469],{"class":291},[214,993,994,995,997,998,1000,1001,1004],{},"Use this helper after server-side code changes data returned by ",[221,996,748],{}," or ",[221,999,637],{},", such as user fields added through Better Auth's ",[221,1002,1003],{},"custom-session"," plugin.",[537,1006,1007],{},"This refreshes the cached session cookie. It does not update the session or user record; perform that update first.",[255,1009,1011,1012],{"id":1010},"session-enrichment-with-custom-session","Session Enrichment with ",[221,1013,1003],{},[214,1015,1016,1017,1019,1020,782,1023,997,1025,1027],{},"Use Better Auth's ",[221,1018,1003],{}," plugin when your app needs computed fields in the session payload returned by server helpers. Define the enrichment in ",[221,1021,1022],{},"server\u002Fauth.config.ts",[221,1024,550],{},[221,1026,663],{}," will return the enriched shape.",[263,1029,1031],{"className":265,"code":1030,"filename":1022,"language":268,"meta":269,"style":269},"import { customSession } from 'better-auth\u002Fplugins'\nimport { defineServerAuth } from '@nuxtjs\u002Fbetter-auth\u002Fconfig'\n\nexport default defineServerAuth({\n  plugins: [\n    customSession(async ({ user, session }) => {\n      return {\n        user: {\n          ...user,\n          role: user.email?.endsWith('@company.com') ? 'member' : 'guest',\n        },\n        session: {\n          ...session,\n        },\n      }\n    }),\n  ],\n})\n",[221,1032,1033,1053,1068,1072,1083,1093,1118,1125,1134,1143,1186,1192,1202,1211,1216,1222,1228,1234],{"__ignoreMap":269},[273,1034,1035,1038,1040,1043,1046,1049],{"class":275,"line":276},[273,1036,1037],{"class":279},"import",[273,1039,449],{"class":291},[273,1041,1042],{"class":333},"customSession",[273,1044,1045],{"class":291}," } ",[273,1047,1048],{"class":279},"from",[273,1050,1052],{"class":1051},"sPAZv"," 'better-auth\u002Fplugins'\n",[273,1054,1055,1057,1059,1061,1063,1065],{"class":275,"line":314},[273,1056,1037],{"class":279},[273,1058,449],{"class":291},[273,1060,223],{"class":333},[273,1062,1045],{"class":291},[273,1064,1048],{"class":279},[273,1066,1067],{"class":1051}," '@nuxtjs\u002Fbetter-auth\u002Fconfig'\n",[273,1069,1070],{"class":275,"line":339},[273,1071,389],{"emptyLinePlaceholder":388},[273,1073,1074,1076,1078,1081],{"class":275,"line":385},[273,1075,280],{"class":279},[273,1077,284],{"class":283},[273,1079,1080],{"class":287}," defineServerAuth",[273,1082,495],{"class":291},[273,1084,1085,1088,1090],{"class":275,"line":392},[273,1086,1087],{"class":333},"  plugins",[273,1089,372],{"class":371},[273,1091,1092],{"class":291}," [\n",[273,1094,1095,1098,1100,1102,1105,1107,1109,1111,1114,1116],{"class":275,"line":410},[273,1096,1097],{"class":287},"    customSession",[273,1099,292],{"class":291},[273,1101,295],{"class":279},[273,1103,1104],{"class":291}," ({ ",[273,1106,452],{"class":301},[273,1108,779],{"class":291},[273,1110,404],{"class":301},[273,1112,1113],{"class":291}," }) ",[273,1115,308],{"class":279},[273,1117,311],{"class":291},[273,1119,1120,1123],{"class":275,"line":432},[273,1121,1122],{"class":279},"      return",[273,1124,311],{"class":291},[273,1126,1127,1130,1132],{"class":275,"line":438},[273,1128,1129],{"class":333},"        user",[273,1131,372],{"class":371},[273,1133,311],{"class":291},[273,1135,1136,1139,1141],{"class":275,"line":443},[273,1137,1138],{"class":400},"          ...",[273,1140,452],{"class":333},[273,1142,511],{"class":291},[273,1144,1145,1148,1150,1153,1155,1159,1162,1165,1167,1170,1172,1175,1178,1181,1184],{"class":275,"line":466},[273,1146,1147],{"class":333},"          role",[273,1149,372],{"class":371},[273,1151,1152],{"class":352}," user",[273,1154,239],{"class":291},[273,1156,1158],{"class":1157},"sjaJz","email",[273,1160,1161],{"class":291},"?.",[273,1163,1164],{"class":287},"endsWith",[273,1166,292],{"class":291},[273,1168,1169],{"class":1051},"'@company.com'",[273,1171,305],{"class":291},[273,1173,1174],{"class":400},"?",[273,1176,1177],{"class":1051}," 'member'",[273,1179,1180],{"class":400}," :",[273,1182,1183],{"class":1051}," 'guest'",[273,1185,511],{"class":291},[273,1187,1189],{"class":275,"line":1188},11,[273,1190,1191],{"class":291},"        },\n",[273,1193,1195,1198,1200],{"class":275,"line":1194},12,[273,1196,1197],{"class":333},"        session",[273,1199,372],{"class":371},[273,1201,311],{"class":291},[273,1203,1205,1207,1209],{"class":275,"line":1204},13,[273,1206,1138],{"class":400},[273,1208,404],{"class":333},[273,1210,511],{"class":291},[273,1212,1214],{"class":275,"line":1213},14,[273,1215,1191],{"class":291},[273,1217,1219],{"class":275,"line":1218},15,[273,1220,1221],{"class":291},"      }\n",[273,1223,1225],{"class":275,"line":1224},16,[273,1226,1227],{"class":291},"    }),\n",[273,1229,1231],{"class":275,"line":1230},17,[273,1232,1233],{"class":291},"  ],\n",[273,1235,1237],{"class":275,"line":1236},18,[273,1238,469],{"class":291},[537,1240,1241],{},"This uses Better Auth's plugin API and does not require a module-specific option.",[255,1243,1245],{"id":1244},"createsession","createSession",[214,1247,1248],{},"Creates a Better Auth session for a user and returns the created session record. Use this helper in custom server-side authentication flows after your handler verifies the user identity.",[263,1250,1253],{"className":265,"code":1251,"filename":1252,"language":268,"meta":269,"style":269},"export default defineEventHandler(async (event) => {\n  const userId = await verifyCustomLoginAndReturnUserId(event)\n  const session = await createSession(event, userId)\n\n  return {\n    sessionId: session.id,\n    token: session.token,\n  }\n})\n","server\u002Fapi\u002Fcustom-auth.post.ts",[221,1254,1255,1277,1297,1321,1325,1331,1347,1363,1367],{"__ignoreMap":269},[273,1256,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275],{"class":275,"line":276},[273,1258,280],{"class":279},[273,1260,284],{"class":283},[273,1262,288],{"class":287},[273,1264,292],{"class":291},[273,1266,295],{"class":279},[273,1268,298],{"class":291},[273,1270,302],{"class":301},[273,1272,305],{"class":291},[273,1274,308],{"class":279},[273,1276,311],{"class":291},[273,1278,1279,1281,1284,1286,1288,1291,1293,1295],{"class":275,"line":314},[273,1280,317],{"class":279},[273,1282,1283],{"class":320}," userId",[273,1285,325],{"class":324},[273,1287,349],{"class":279},[273,1289,1290],{"class":287}," verifyCustomLoginAndReturnUserId",[273,1292,292],{"class":291},[273,1294,302],{"class":333},[273,1296,336],{"class":291},[273,1298,1299,1301,1303,1305,1307,1310,1312,1314,1316,1319],{"class":275,"line":339},[273,1300,317],{"class":279},[273,1302,344],{"class":320},[273,1304,325],{"class":324},[273,1306,349],{"class":279},[273,1308,1309],{"class":287}," createSession",[273,1311,292],{"class":291},[273,1313,302],{"class":333},[273,1315,779],{"class":291},[273,1317,1318],{"class":333},"userId",[273,1320,336],{"class":291},[273,1322,1323],{"class":275,"line":385},[273,1324,389],{"emptyLinePlaceholder":388},[273,1326,1327,1329],{"class":275,"line":392},[273,1328,446],{"class":279},[273,1330,311],{"class":291},[273,1332,1333,1336,1338,1340,1342,1345],{"class":275,"line":410},[273,1334,1335],{"class":333},"    sessionId",[273,1337,372],{"class":371},[273,1339,344],{"class":352},[273,1341,239],{"class":291},[273,1343,1344],{"class":333},"id",[273,1346,511],{"class":291},[273,1348,1349,1352,1354,1356,1358,1361],{"class":275,"line":432},[273,1350,1351],{"class":333},"    token",[273,1353,372],{"class":371},[273,1355,344],{"class":352},[273,1357,239],{"class":291},[273,1359,1360],{"class":333},"token",[273,1362,511],{"class":291},[273,1364,1365],{"class":275,"line":438},[273,1366,435],{"class":291},[273,1368,1369],{"class":275,"line":443},[273,1370,469],{"class":291},[214,1372,1373],{},"Pair this helper with your preferred cookie strategy. When you also use the module cookie helper, you can set the returned token on the response after creating the session.",[255,1375,1377],{"id":1376},"setsessioncookie","setSessionCookie",[214,1379,1380],{},"Sets the Better Auth session token cookie on the current response. Use this helper in custom server-side authentication flows after you obtain or create a valid Better Auth session token.",[263,1382,1384],{"className":265,"code":1383,"filename":1252,"language":268,"meta":269,"style":269},"export default defineEventHandler(async (event) => {\n  const token = await verifyCustomLoginAndReturnSessionToken(event)\n\n  await setSessionCookie(event, token)\n\n  return { ok: true }\n})\n",[221,1385,1386,1408,1428,1432,1449,1453,1467],{"__ignoreMap":269},[273,1387,1388,1390,1392,1394,1396,1398,1400,1402,1404,1406],{"class":275,"line":276},[273,1389,280],{"class":279},[273,1391,284],{"class":283},[273,1393,288],{"class":287},[273,1395,292],{"class":291},[273,1397,295],{"class":279},[273,1399,298],{"class":291},[273,1401,302],{"class":301},[273,1403,305],{"class":291},[273,1405,308],{"class":279},[273,1407,311],{"class":291},[273,1409,1410,1412,1415,1417,1419,1422,1424,1426],{"class":275,"line":314},[273,1411,317],{"class":279},[273,1413,1414],{"class":320}," token",[273,1416,325],{"class":324},[273,1418,349],{"class":279},[273,1420,1421],{"class":287}," verifyCustomLoginAndReturnSessionToken",[273,1423,292],{"class":291},[273,1425,302],{"class":333},[273,1427,336],{"class":291},[273,1429,1430],{"class":275,"line":339},[273,1431,389],{"emptyLinePlaceholder":388},[273,1433,1434,1436,1439,1441,1443,1445,1447],{"class":275,"line":385},[273,1435,946],{"class":279},[273,1437,1438],{"class":287}," setSessionCookie",[273,1440,292],{"class":291},[273,1442,302],{"class":333},[273,1444,779],{"class":291},[273,1446,1360],{"class":333},[273,1448,336],{"class":291},[273,1450,1451],{"class":275,"line":392},[273,1452,389],{"emptyLinePlaceholder":388},[273,1454,1455,1457,1459,1461,1463,1465],{"class":275,"line":410},[273,1456,446],{"class":279},[273,1458,449],{"class":291},[273,1460,981],{"class":333},[273,1462,372],{"class":371},[273,1464,528],{"class":426},[273,1466,463],{"class":291},[273,1468,1469],{"class":275,"line":432},[273,1470,469],{"class":291},[214,1472,1473],{},"The helper signs the cookie with your Better Auth secret and uses the configured cookie name and attributes from your server auth config.",[537,1475,1476,1479],{},[221,1477,1478],{},"setSessionCookie(event, token)"," sets the session token cookie only. It does not try to recreate every internal Better Auth sign-in side effect.",[255,1481,785],{"id":1482},"requireusersession",[214,1484,1485,1486,997,1489,1492],{},"Ensures the user is authenticated and optionally matches specific criteria. Throws a ",[221,1487,1488],{},"401 Unauthorized",[221,1490,1491],{},"403 Forbidden"," error if checks fail.",[263,1494,1496],{"className":265,"code":1495,"language":268,"meta":269,"style":269},"const { user, session } = await requireUserSession(event, options?)\n",[221,1497,1498],{"__ignoreMap":269},[273,1499,1500,1503,1505,1507,1509,1511,1513,1516,1518,1521,1523,1525,1527,1530,1532],{"class":275,"line":276},[273,1501,1502],{"class":279},"const",[273,1504,449],{"class":291},[273,1506,452],{"class":320},[273,1508,779],{"class":291},[273,1510,404],{"class":320},[273,1512,1045],{"class":291},[273,1514,1515],{"class":324},"=",[273,1517,349],{"class":279},[273,1519,1520],{"class":287}," requireUserSession",[273,1522,292],{"class":291},[273,1524,302],{"class":352},[273,1526,779],{"class":291},[273,1528,1529],{"class":352},"options",[273,1531,1174],{"class":400},[273,1533,336],{"class":291},[537,1535,1536,1538,1539,235,1542,1545,1546,1549,1550,1552,1553,1556],{},[221,1537,785],{}," uses ",[221,1540,1541],{},"AuthUser",[221,1543,1544],{},"AuthSession"," from ",[221,1547,1548],{},"#nuxt-better-auth"," for both the returned value and option callbacks (",[221,1551,452],{}," match + ",[221,1554,1555],{},"rule",").",[757,1558,1559],{"id":1529},"Options",[1561,1562,1563,1568],"field-group",{},[1564,1565,1567],"field",{"name":452,"type":1566},"UserMatch","Object matching user properties (see Route Protection).",[1564,1569,1571],{"name":1555,"type":1570},"(ctx) => boolean | Promise\u003Cboolean>","Custom validation callback.",[757,1573,1575],{"id":1574},"examples","Examples",[214,1577,1578],{},[245,1579,1580],{},"Role Check:",[263,1582,1585],{"className":265,"code":1583,"filename":1584,"language":268,"meta":269,"style":269},"await requireUserSession(event, {\n  user: { role: 'admin' }\n})\n","server\u002Fapi\u002Fadmin\u002Fdashboard.ts",[221,1586,1587,1600,1619],{"__ignoreMap":269},[273,1588,1589,1591,1593,1595,1597],{"class":275,"line":276},[273,1590,482],{"class":279},[273,1592,1520],{"class":287},[273,1594,292],{"class":291},[273,1596,302],{"class":352},[273,1598,1599],{"class":291},", {\n",[273,1601,1602,1605,1607,1609,1612,1614,1617],{"class":275,"line":314},[273,1603,1604],{"class":333},"  user",[273,1606,372],{"class":371},[273,1608,449],{"class":291},[273,1610,1611],{"class":333},"role",[273,1613,372],{"class":371},[273,1615,1616],{"class":1051}," 'admin'",[273,1618,463],{"class":291},[273,1620,1621],{"class":275,"line":339},[273,1622,469],{"class":291},[214,1624,1625],{},[245,1626,1627],{},"Custom Rule:",[263,1629,1631],{"className":265,"code":1630,"filename":1584,"language":268,"meta":269,"style":269},"await requireUserSession(event, {\n  rule: ({ user }) => {\n    return user.points > 100\n  }\n})\n",[221,1632,1633,1645,1662,1680,1684],{"__ignoreMap":269},[273,1634,1635,1637,1639,1641,1643],{"class":275,"line":276},[273,1636,482],{"class":279},[273,1638,1520],{"class":287},[273,1640,292],{"class":291},[273,1642,302],{"class":352},[273,1644,1599],{"class":291},[273,1646,1647,1650,1652,1654,1656,1658,1660],{"class":275,"line":314},[273,1648,1649],{"class":287},"  rule",[273,1651,372],{"class":371},[273,1653,1104],{"class":291},[273,1655,452],{"class":301},[273,1657,1113],{"class":291},[273,1659,308],{"class":279},[273,1661,311],{"class":291},[273,1663,1664,1667,1669,1671,1674,1677],{"class":275,"line":339},[273,1665,1666],{"class":279},"    return",[273,1668,1152],{"class":352},[273,1670,239],{"class":291},[273,1672,1673],{"class":333},"points",[273,1675,1676],{"class":400}," >",[273,1678,1679],{"class":426}," 100\n",[273,1681,1682],{"class":275,"line":385},[273,1683,435],{"class":291},[273,1685,1686],{"class":275,"line":392},[273,1687,469],{"class":291},[255,1689,1691],{"id":1690},"combining-user-matching-with-rules","Combining User Matching with Rules",[263,1693,1696],{"className":265,"code":1694,"filename":1695,"language":268,"meta":269,"style":269},"export default defineEventHandler(async (event) => {\n  const { teamId } = getRouterParams(event)\n\n  \u002F\u002F Require admin role AND membership in the specific team\n  await requireUserSession(event, {\n    user: { role: 'admin' },\n    rule: async (session) => {\n      const membership = await getTeamMembership(session.user.id, teamId)\n      return membership?.role === 'owner'\n    }\n  })\n\n  return getTeamSettings(teamId)\n})\n","server\u002Fapi\u002Fteam\u002F[teamId]\u002Fsettings.ts",[221,1697,1698,1720,1742,1746,1751,1763,1780,1800,1833,1849,1854,1859,1863,1876],{"__ignoreMap":269},[273,1699,1700,1702,1704,1706,1708,1710,1712,1714,1716,1718],{"class":275,"line":276},[273,1701,280],{"class":279},[273,1703,284],{"class":283},[273,1705,288],{"class":287},[273,1707,292],{"class":291},[273,1709,295],{"class":279},[273,1711,298],{"class":291},[273,1713,302],{"class":301},[273,1715,305],{"class":291},[273,1717,308],{"class":279},[273,1719,311],{"class":291},[273,1721,1722,1724,1726,1729,1731,1733,1736,1738,1740],{"class":275,"line":314},[273,1723,317],{"class":279},[273,1725,449],{"class":291},[273,1727,1728],{"class":320},"teamId",[273,1730,1045],{"class":291},[273,1732,1515],{"class":324},[273,1734,1735],{"class":287}," getRouterParams",[273,1737,292],{"class":291},[273,1739,302],{"class":333},[273,1741,336],{"class":291},[273,1743,1744],{"class":275,"line":339},[273,1745,389],{"emptyLinePlaceholder":388},[273,1747,1748],{"class":275,"line":385},[273,1749,1750],{"class":620},"  \u002F\u002F Require admin role AND membership in the specific team\n",[273,1752,1753,1755,1757,1759,1761],{"class":275,"line":392},[273,1754,946],{"class":279},[273,1756,1520],{"class":287},[273,1758,292],{"class":291},[273,1760,302],{"class":333},[273,1762,1599],{"class":291},[273,1764,1765,1768,1770,1772,1774,1776,1778],{"class":275,"line":410},[273,1766,1767],{"class":333},"    user",[273,1769,372],{"class":371},[273,1771,449],{"class":291},[273,1773,1611],{"class":333},[273,1775,372],{"class":371},[273,1777,1616],{"class":1051},[273,1779,531],{"class":291},[273,1781,1782,1785,1787,1790,1792,1794,1796,1798],{"class":275,"line":432},[273,1783,1784],{"class":287},"    rule",[273,1786,372],{"class":371},[273,1788,1789],{"class":279}," async",[273,1791,298],{"class":291},[273,1793,404],{"class":301},[273,1795,305],{"class":291},[273,1797,308],{"class":279},[273,1799,311],{"class":291},[273,1801,1802,1805,1808,1810,1812,1815,1817,1819,1821,1823,1825,1827,1829,1831],{"class":275,"line":438},[273,1803,1804],{"class":279},"      const",[273,1806,1807],{"class":320}," membership",[273,1809,325],{"class":324},[273,1811,349],{"class":279},[273,1813,1814],{"class":287}," getTeamMembership",[273,1816,292],{"class":291},[273,1818,404],{"class":352},[273,1820,239],{"class":291},[273,1822,452],{"class":333},[273,1824,239],{"class":291},[273,1826,1344],{"class":333},[273,1828,779],{"class":291},[273,1830,1728],{"class":333},[273,1832,336],{"class":291},[273,1834,1835,1837,1839,1841,1843,1846],{"class":275,"line":443},[273,1836,1122],{"class":279},[273,1838,1807],{"class":352},[273,1840,1161],{"class":291},[273,1842,1611],{"class":333},[273,1844,1845],{"class":400}," ===",[273,1847,1848],{"class":1051}," 'owner'\n",[273,1850,1851],{"class":275,"line":466},[273,1852,1853],{"class":291},"    }\n",[273,1855,1856],{"class":275,"line":1188},[273,1857,1858],{"class":291},"  })\n",[273,1860,1861],{"class":275,"line":1194},[273,1862,389],{"emptyLinePlaceholder":388},[273,1864,1865,1867,1870,1872,1874],{"class":275,"line":1204},[273,1866,446],{"class":279},[273,1868,1869],{"class":287}," getTeamSettings",[273,1871,292],{"class":291},[273,1873,1728],{"class":333},[273,1875,336],{"class":291},[273,1877,1878],{"class":275,"line":1213},[273,1879,469],{"class":291},[255,1881,1883],{"id":1882},"related-pages","Related pages",[645,1885,1886,1891,1896],{},[648,1887,1888],{},[250,1889,1890],{"href":49},"Server auth concept",[648,1892,1893],{},[250,1894,1895],{"href":57},"Route protection",[648,1897,1898],{},[250,1899,154],{"href":155},[1901,1902,1903],"style",{},"html pre.shiki code .sqe1H, html code.shiki .sqe1H{--shiki-light:#A626A4;--shiki-default:#FEDE5D;--shiki-dark:#FEDE5D}html pre.shiki code .sKg8T, html code.shiki .sKg8T{--shiki-light:#E45649;--shiki-default:#FEDE5D;--shiki-dark:#FEDE5D}html pre.shiki code .sfT9l, html code.shiki .sfT9l{--shiki-light:#4078F2;--shiki-default:#36F9F6;--shiki-dark:#36F9F6}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 .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 .sYvLG, html code.shiki .sYvLG{--shiki-light:#E45649;--shiki-default:#FF7EDB;--shiki-dark:#FF7EDB}html pre.shiki code .svFNh, html code.shiki .svFNh{--shiki-light:#383A42;--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 .sn-Jc, html code.shiki .sn-Jc{--shiki-light:#0184BC;--shiki-default:#FEDE5D;--shiki-dark:#FEDE5D}html pre.shiki code .s3ZNE, html code.shiki .s3ZNE{--shiki-light:#986801;--shiki-default:#F97E72;--shiki-dark:#F97E72}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 .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 .sPAZv, html code.shiki .sPAZv{--shiki-light:#50A14F;--shiki-default:#FF8B39;--shiki-dark:#FF8B39}html pre.shiki code .sjaJz, html code.shiki .sjaJz{--shiki-light:#C18401;--shiki-default:#FF7EDB;--shiki-dark:#FF7EDB}",{"title":269,"searchDepth":314,"depth":314,"links":1905},[1906,1907,1908,1909,1910,1911,1913,1914,1915,1919,1920],{"id":257,"depth":314,"text":258},{"id":549,"depth":314,"text":550},{"id":662,"depth":314,"text":663},{"id":768,"depth":314,"text":769},{"id":900,"depth":314,"text":901},{"id":1010,"depth":314,"text":1912},"Session Enrichment with custom-session",{"id":1244,"depth":314,"text":1245},{"id":1376,"depth":314,"text":1377},{"id":1482,"depth":314,"text":785,"children":1916},[1917,1918],{"id":1529,"depth":339,"text":1559},{"id":1574,"depth":339,"text":1575},{"id":1690,"depth":314,"text":1691},{"id":1882,"depth":314,"text":1883},"API reference for server-side helpers available in Nitro event handlers.","md",null,{},{"title":146,"description":1921},"2C_6fMJpw8sn-XQt6WYmzPKMPgqGi7J8i1drxrBgAfo",[1928,1930],{"title":142,"path":143,"stem":144,"description":1929,"children":-1},"API reference for client-side composables.",{"title":150,"path":151,"stem":152,"description":1931,"children":-1},"Built‑in UI helpers.",1791073729205]