[{"data":1,"prerenderedAt":1100},["ShallowReactive",2],{"navigation_docs":3,"-guides-custom-database":152,"-guides-custom-database-surround":1095},[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":82,"body":154,"description":1089,"extension":1090,"links":1091,"meta":1092,"navigation":340,"path":83,"seo":1093,"stem":84,"__hash__":1094},"docs/3.guides/3.custom-database.md",{"type":155,"value":156,"toc":1078},"minimark",[157,161,164,169,219,223,231,256,265,269,466,470,602,606,819,823,826,842,845,850,863,1005,1008,1015,1035,1041,1051,1055,1058,1070,1074],[158,159,160],"p",{},"Use this guide when you want Better Auth to run against your existing database stack instead of NuxtHub.",[158,162,163],{},"Better Auth supports any database through adapters. Use this guide when you need full control over your database setup or can't use NuxtHub.",[165,166,168],"h2",{"id":167},"when-to-use-this","When to Use This",[170,171,172,185],"table",{},[173,174,175],"thead",{},[176,177,178,182],"tr",{},[179,180,181],"th",{},"Scenario",[179,183,184],{},"Recommended",[186,187,188,199,208],"tbody",{},[176,189,190,194],{},[191,192,193],"td",{},"Quick start, managed infra",[191,195,196],{},[197,198,116],"a",{"href":117},[176,200,201,204],{},[191,202,203],{},"OAuth-only, no persistence",[191,205,206],{},[197,207,86],{"href":87},[176,209,210,213],{},[191,211,212],{},"Existing database, custom setup",[191,214,215],{},[216,217,218],"strong",{},"This guide",[165,220,222],{"id":221},"install-better-auth","Install Better Auth",[158,224,225,226,230],{},"Adapter imports come from the ",[227,228,229],"code",{},"better-auth"," package, so you must install it in your app.",[232,233,238],"pre",{"className":234,"code":235,"language":236,"meta":237,"style":237},"language-bash shiki shiki-themes one-light synthwave-84 synthwave-84","pnpm add better-auth\n","bash","",[227,239,240],{"__ignoreMap":237},[241,242,245,249,253],"span",{"class":243,"line":244},"line",1,[241,246,248],{"class":247},"siqUp","pnpm",[241,250,252],{"class":251},"sI3kV"," add",[241,254,255],{"class":251}," better-auth\n",[158,257,258,260,261,264],{},[227,259,229],{}," is a peer dependency of ",[227,262,263],{},"@onmax/nuxt-better-auth",". Keep the major versions aligned to avoid mismatches.",[165,266,268],{"id":267},"drizzle-adapter","Drizzle Adapter",[232,270,275],{"className":271,"code":272,"filename":273,"language":274,"meta":237,"style":237},"language-ts shiki shiki-themes one-light synthwave-84 synthwave-84","import { defineServerAuth } from '@onmax/nuxt-better-auth/config'\nimport { drizzleAdapter } from 'better-auth/adapters/drizzle'\nimport { drizzle } from 'drizzle-orm/node-postgres'\n\nconst db = drizzle(process.env.DATABASE_URL!)\n\nexport default defineServerAuth({\n  database: drizzleAdapter(db, { provider: 'pg' }),\n  emailAndPassword: { enabled: true },\n})\n","server/auth.config.ts","ts",[227,276,277,301,318,335,342,385,390,406,438,460],{"__ignoreMap":237},[241,278,279,283,287,291,294,297],{"class":243,"line":244},[241,280,282],{"class":281},"sqe1H","import",[241,284,286],{"class":285},"s17Py"," { ",[241,288,290],{"class":289},"sYvLG","defineServerAuth",[241,292,293],{"class":285}," } ",[241,295,296],{"class":281},"from",[241,298,300],{"class":299},"sPAZv"," '@onmax/nuxt-better-auth/config'\n",[241,302,304,306,308,311,313,315],{"class":243,"line":303},2,[241,305,282],{"class":281},[241,307,286],{"class":285},[241,309,310],{"class":289},"drizzleAdapter",[241,312,293],{"class":285},[241,314,296],{"class":281},[241,316,317],{"class":299}," 'better-auth/adapters/drizzle'\n",[241,319,321,323,325,328,330,332],{"class":243,"line":320},3,[241,322,282],{"class":281},[241,324,286],{"class":285},[241,326,327],{"class":289},"drizzle",[241,329,293],{"class":285},[241,331,296],{"class":281},[241,333,334],{"class":299}," 'drizzle-orm/node-postgres'\n",[241,336,338],{"class":243,"line":337},4,[241,339,341],{"emptyLinePlaceholder":340},true,"\n",[241,343,345,348,352,356,360,363,367,370,373,375,378,382],{"class":243,"line":344},5,[241,346,347],{"class":281},"const",[241,349,351],{"class":350},"s6Rhl"," db",[241,353,355],{"class":354},"sQBpM"," =",[241,357,359],{"class":358},"sfT9l"," drizzle",[241,361,362],{"class":285},"(",[241,364,366],{"class":365},"svFNh","process",[241,368,369],{"class":285},".",[241,371,372],{"class":289},"env",[241,374,369],{"class":285},[241,376,377],{"class":350},"DATABASE_URL",[241,379,381],{"class":380},"sn-Jc","!",[241,383,384],{"class":285},")\n",[241,386,388],{"class":243,"line":387},6,[241,389,341],{"emptyLinePlaceholder":340},[241,391,393,396,400,403],{"class":243,"line":392},7,[241,394,395],{"class":281},"export",[241,397,399],{"class":398},"sKg8T"," default",[241,401,402],{"class":358}," defineServerAuth",[241,404,405],{"class":285},"({\n",[241,407,409,412,416,419,421,424,427,430,432,435],{"class":243,"line":408},8,[241,410,411],{"class":289},"  database",[241,413,415],{"class":414},"sVnqq",":",[241,417,418],{"class":358}," drizzleAdapter",[241,420,362],{"class":285},[241,422,423],{"class":289},"db",[241,425,426],{"class":285},", { ",[241,428,429],{"class":289},"provider",[241,431,415],{"class":414},[241,433,434],{"class":299}," 'pg'",[241,436,437],{"class":285}," }),\n",[241,439,441,444,446,448,451,453,457],{"class":243,"line":440},9,[241,442,443],{"class":289},"  emailAndPassword",[241,445,415],{"class":414},[241,447,286],{"class":285},[241,449,450],{"class":289},"enabled",[241,452,415],{"class":414},[241,454,456],{"class":455},"s3ZNE"," true",[241,458,459],{"class":285}," },\n",[241,461,463],{"class":243,"line":462},10,[241,464,465],{"class":285},"})\n",[165,467,469],{"id":468},"prisma-adapter","Prisma Adapter",[232,471,473],{"className":271,"code":472,"filename":273,"language":274,"meta":237,"style":237},"import { defineServerAuth } from '@onmax/nuxt-better-auth/config'\nimport { prismaAdapter } from 'better-auth/adapters/prisma'\nimport { PrismaClient } from '@prisma/client'\n\nconst prisma = new PrismaClient()\n\nexport default defineServerAuth({\n  database: prismaAdapter(prisma, { provider: 'postgresql' }),\n  emailAndPassword: { enabled: true },\n})\n",[227,474,475,489,505,521,525,543,547,557,582,598],{"__ignoreMap":237},[241,476,477,479,481,483,485,487],{"class":243,"line":244},[241,478,282],{"class":281},[241,480,286],{"class":285},[241,482,290],{"class":289},[241,484,293],{"class":285},[241,486,296],{"class":281},[241,488,300],{"class":299},[241,490,491,493,495,498,500,502],{"class":243,"line":303},[241,492,282],{"class":281},[241,494,286],{"class":285},[241,496,497],{"class":289},"prismaAdapter",[241,499,293],{"class":285},[241,501,296],{"class":281},[241,503,504],{"class":299}," 'better-auth/adapters/prisma'\n",[241,506,507,509,511,514,516,518],{"class":243,"line":320},[241,508,282],{"class":281},[241,510,286],{"class":285},[241,512,513],{"class":289},"PrismaClient",[241,515,293],{"class":285},[241,517,296],{"class":281},[241,519,520],{"class":299}," '@prisma/client'\n",[241,522,523],{"class":243,"line":337},[241,524,341],{"emptyLinePlaceholder":340},[241,526,527,529,532,534,537,540],{"class":243,"line":344},[241,528,347],{"class":281},[241,530,531],{"class":350}," prisma",[241,533,355],{"class":354},[241,535,536],{"class":281}," new",[241,538,539],{"class":358}," PrismaClient",[241,541,542],{"class":285},"()\n",[241,544,545],{"class":243,"line":387},[241,546,341],{"emptyLinePlaceholder":340},[241,548,549,551,553,555],{"class":243,"line":392},[241,550,395],{"class":281},[241,552,399],{"class":398},[241,554,402],{"class":358},[241,556,405],{"class":285},[241,558,559,561,563,566,568,571,573,575,577,580],{"class":243,"line":408},[241,560,411],{"class":289},[241,562,415],{"class":414},[241,564,565],{"class":358}," prismaAdapter",[241,567,362],{"class":285},[241,569,570],{"class":289},"prisma",[241,572,426],{"class":285},[241,574,429],{"class":289},[241,576,415],{"class":414},[241,578,579],{"class":299}," 'postgresql'",[241,581,437],{"class":285},[241,583,584,586,588,590,592,594,596],{"class":243,"line":440},[241,585,443],{"class":289},[241,587,415],{"class":414},[241,589,286],{"class":285},[241,591,450],{"class":289},[241,593,415],{"class":414},[241,595,456],{"class":455},[241,597,459],{"class":285},[241,599,600],{"class":243,"line":462},[241,601,465],{"class":285},[165,603,605],{"id":604},"kysely-adapter","Kysely Adapter",[232,607,609],{"className":271,"code":608,"filename":273,"language":274,"meta":237,"style":237},"import { defineServerAuth } from '@onmax/nuxt-better-auth/config'\nimport { kyselyAdapter } from 'better-auth/adapters/kysely'\nimport { Kysely, PostgresDialect } from 'kysely'\nimport { Pool } from 'pg'\n\nconst db = new Kysely({\n  dialect: new PostgresDialect({ pool: new Pool({ connectionString: process.env.DATABASE_URL }) }),\n})\n\nexport default defineServerAuth({\n  database: kyselyAdapter(db, { dialect: 'postgres', type: 'pg' }),\n  emailAndPassword: { enabled: true },\n})\n",[227,610,611,625,641,663,679,683,698,744,748,752,762,797,814],{"__ignoreMap":237},[241,612,613,615,617,619,621,623],{"class":243,"line":244},[241,614,282],{"class":281},[241,616,286],{"class":285},[241,618,290],{"class":289},[241,620,293],{"class":285},[241,622,296],{"class":281},[241,624,300],{"class":299},[241,626,627,629,631,634,636,638],{"class":243,"line":303},[241,628,282],{"class":281},[241,630,286],{"class":285},[241,632,633],{"class":289},"kyselyAdapter",[241,635,293],{"class":285},[241,637,296],{"class":281},[241,639,640],{"class":299}," 'better-auth/adapters/kysely'\n",[241,642,643,645,647,650,653,656,658,660],{"class":243,"line":320},[241,644,282],{"class":281},[241,646,286],{"class":285},[241,648,649],{"class":289},"Kysely",[241,651,652],{"class":285},", ",[241,654,655],{"class":289},"PostgresDialect",[241,657,293],{"class":285},[241,659,296],{"class":281},[241,661,662],{"class":299}," 'kysely'\n",[241,664,665,667,669,672,674,676],{"class":243,"line":337},[241,666,282],{"class":281},[241,668,286],{"class":285},[241,670,671],{"class":289},"Pool",[241,673,293],{"class":285},[241,675,296],{"class":281},[241,677,678],{"class":299}," 'pg'\n",[241,680,681],{"class":243,"line":344},[241,682,341],{"emptyLinePlaceholder":340},[241,684,685,687,689,691,693,696],{"class":243,"line":387},[241,686,347],{"class":281},[241,688,351],{"class":350},[241,690,355],{"class":354},[241,692,536],{"class":281},[241,694,695],{"class":358}," Kysely",[241,697,405],{"class":285},[241,699,700,703,705,707,710,713,716,718,720,723,725,728,730,733,735,737,739,741],{"class":243,"line":392},[241,701,702],{"class":289},"  dialect",[241,704,415],{"class":414},[241,706,536],{"class":281},[241,708,709],{"class":358}," PostgresDialect",[241,711,712],{"class":285},"({ ",[241,714,715],{"class":289},"pool",[241,717,415],{"class":414},[241,719,536],{"class":281},[241,721,722],{"class":358}," Pool",[241,724,712],{"class":285},[241,726,727],{"class":289},"connectionString",[241,729,415],{"class":414},[241,731,732],{"class":365}," process",[241,734,369],{"class":285},[241,736,372],{"class":289},[241,738,369],{"class":285},[241,740,377],{"class":350},[241,742,743],{"class":285}," }) }),\n",[241,745,746],{"class":243,"line":408},[241,747,465],{"class":285},[241,749,750],{"class":243,"line":440},[241,751,341],{"emptyLinePlaceholder":340},[241,753,754,756,758,760],{"class":243,"line":462},[241,755,395],{"class":281},[241,757,399],{"class":398},[241,759,402],{"class":358},[241,761,405],{"class":285},[241,763,765,767,769,772,774,776,778,781,783,786,788,791,793,795],{"class":243,"line":764},11,[241,766,411],{"class":289},[241,768,415],{"class":414},[241,770,771],{"class":358}," kyselyAdapter",[241,773,362],{"class":285},[241,775,423],{"class":289},[241,777,426],{"class":285},[241,779,780],{"class":289},"dialect",[241,782,415],{"class":414},[241,784,785],{"class":299}," 'postgres'",[241,787,652],{"class":285},[241,789,790],{"class":289},"type",[241,792,415],{"class":414},[241,794,434],{"class":299},[241,796,437],{"class":285},[241,798,800,802,804,806,808,810,812],{"class":243,"line":799},12,[241,801,443],{"class":289},[241,803,415],{"class":414},[241,805,286],{"class":285},[241,807,450],{"class":289},[241,809,415],{"class":414},[241,811,456],{"class":455},[241,813,459],{"class":285},[241,815,817],{"class":243,"line":816},13,[241,818,465],{"class":285},[165,820,822],{"id":821},"schema-setup","Schema Setup",[158,824,825],{},"You must create the required tables manually. Better Auth provides a CLI to generate schemas:",[232,827,829],{"className":234,"code":828,"language":236,"meta":237,"style":237},"npx @better-auth/cli@latest generate\n",[227,830,831],{"__ignoreMap":237},[241,832,833,836,839],{"class":243,"line":244},[241,834,835],{"class":247},"npx",[241,837,838],{"class":251}," @better-auth/cli@latest",[241,840,841],{"class":251}," generate\n",[158,843,844],{},"This generates migration files for your adapter. Apply them with your database tool.",[846,847,849],"h3",{"id":848},"cli-config-nuxt","CLI config (Nuxt)",[158,851,852,853,856,857,859,860,862],{},"The CLI reads a Better Auth instance from ",[227,854,855],{},"auth.ts",", not your ",[227,858,273],{},". Add a dedicated ",[227,861,855],{}," file for CLI generation.",[232,864,866],{"className":271,"code":865,"filename":855,"language":274,"meta":237,"style":237},"import { betterAuth } from 'better-auth'\nimport { drizzleAdapter } from 'better-auth/adapters/drizzle'\nimport { drizzle } from 'drizzle-orm/node-postgres'\n\nconst db = drizzle(process.env.DATABASE_URL!)\n\nexport const auth = betterAuth({\n  database: drizzleAdapter(db, { provider: 'pg' }),\n  emailAndPassword: { enabled: true },\n})\n",[227,867,868,884,898,912,916,942,946,963,985,1001],{"__ignoreMap":237},[241,869,870,872,874,877,879,881],{"class":243,"line":244},[241,871,282],{"class":281},[241,873,286],{"class":285},[241,875,876],{"class":289},"betterAuth",[241,878,293],{"class":285},[241,880,296],{"class":281},[241,882,883],{"class":299}," 'better-auth'\n",[241,885,886,888,890,892,894,896],{"class":243,"line":303},[241,887,282],{"class":281},[241,889,286],{"class":285},[241,891,310],{"class":289},[241,893,293],{"class":285},[241,895,296],{"class":281},[241,897,317],{"class":299},[241,899,900,902,904,906,908,910],{"class":243,"line":320},[241,901,282],{"class":281},[241,903,286],{"class":285},[241,905,327],{"class":289},[241,907,293],{"class":285},[241,909,296],{"class":281},[241,911,334],{"class":299},[241,913,914],{"class":243,"line":337},[241,915,341],{"emptyLinePlaceholder":340},[241,917,918,920,922,924,926,928,930,932,934,936,938,940],{"class":243,"line":344},[241,919,347],{"class":281},[241,921,351],{"class":350},[241,923,355],{"class":354},[241,925,359],{"class":358},[241,927,362],{"class":285},[241,929,366],{"class":365},[241,931,369],{"class":285},[241,933,372],{"class":289},[241,935,369],{"class":285},[241,937,377],{"class":350},[241,939,381],{"class":380},[241,941,384],{"class":285},[241,943,944],{"class":243,"line":387},[241,945,341],{"emptyLinePlaceholder":340},[241,947,948,950,953,956,958,961],{"class":243,"line":392},[241,949,395],{"class":281},[241,951,952],{"class":281}," const",[241,954,955],{"class":350}," auth",[241,957,355],{"class":354},[241,959,960],{"class":358}," betterAuth",[241,962,405],{"class":285},[241,964,965,967,969,971,973,975,977,979,981,983],{"class":243,"line":408},[241,966,411],{"class":289},[241,968,415],{"class":414},[241,970,418],{"class":358},[241,972,362],{"class":285},[241,974,423],{"class":365},[241,976,426],{"class":285},[241,978,429],{"class":289},[241,980,415],{"class":414},[241,982,434],{"class":299},[241,984,437],{"class":285},[241,986,987,989,991,993,995,997,999],{"class":243,"line":440},[241,988,443],{"class":289},[241,990,415],{"class":414},[241,992,286],{"class":285},[241,994,450],{"class":289},[241,996,415],{"class":414},[241,998,456],{"class":455},[241,1000,459],{"class":285},[241,1002,1003],{"class":243,"line":462},[241,1004,465],{"class":285},[158,1006,1007],{},"If you use Prisma or Kysely, swap the adapter section to match your setup.",[158,1009,1010,1011,1014],{},"Use ",[227,1012,1013],{},"--config"," if you place the file elsewhere:",[232,1016,1018],{"className":234,"code":1017,"language":236,"meta":237,"style":237},"npx @better-auth/cli@latest generate --config server/auth/auth.ts\n",[227,1019,1020],{"__ignoreMap":237},[241,1021,1022,1024,1026,1029,1032],{"class":243,"line":244},[241,1023,835],{"class":247},[241,1025,838],{"class":251},[241,1027,1028],{"class":251}," generate",[241,1030,1031],{"class":455}," --config",[241,1033,1034],{"class":251}," server/auth/auth.ts\n",[158,1036,1037,1038,1040],{},"Keep this config in sync with ",[227,1039,273],{}," so the generated schema matches your runtime plugins and options.",[1042,1043,1046,1047,1050],"callout",{"icon":1044,"to":1045},"i-lucide-book","https://www.better-auth.com/docs/concepts/database","See ",[216,1048,1049],{},"Better Auth database docs"," for full schema reference and adapter options.",[165,1052,1054],{"id":1053},"environment-variables","Environment Variables",[158,1056,1057],{},"Store your connection string securely:",[232,1059,1064],{"className":1060,"code":1061,"filename":1062,"language":1063,"meta":237,"style":237},"language-ini shiki shiki-themes one-light synthwave-84 synthwave-84","DATABASE_URL=\"postgresql://user:password@localhost:5432/myapp\"\n",".env","ini",[227,1065,1066],{"__ignoreMap":237},[241,1067,1068],{"class":243,"line":244},[241,1069,1061],{},[1071,1072,1073],"warning",{},"Never commit database credentials to version control. Use environment variables in production.",[1075,1076,1077],"style",{},"html pre.shiki code .siqUp, html code.shiki .siqUp{--shiki-light:#4078F2;--shiki-default:#FE4450;--shiki-dark:#FE4450}html pre.shiki code .sI3kV, html code.shiki .sI3kV{--shiki-light:#50A14F;--shiki-default:#BBBBBB;--shiki-dark:#BBBBBB}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 .sqe1H, html code.shiki .sqe1H{--shiki-light:#A626A4;--shiki-default:#FEDE5D;--shiki-dark:#FEDE5D}html pre.shiki code .s17Py, html code.shiki .s17Py{--shiki-light:#383A42;--shiki-default:#BBBBBB;--shiki-dark:#BBBBBB}html pre.shiki code .sYvLG, html code.shiki .sYvLG{--shiki-light:#E45649;--shiki-default:#FF7EDB;--shiki-dark:#FF7EDB}html pre.shiki code .sPAZv, html code.shiki .sPAZv{--shiki-light:#50A14F;--shiki-default:#FF8B39;--shiki-dark:#FF8B39}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 pre.shiki code .svFNh, html code.shiki .svFNh{--shiki-light:#383A42;--shiki-default:#FF7EDB;--shiki-dark:#FF7EDB}html pre.shiki code .sn-Jc, html code.shiki .sn-Jc{--shiki-light:#0184BC;--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 .sVnqq, html code.shiki .sVnqq{--shiki-light:#0184BC;--shiki-default:#B6B1B1;--shiki-dark:#B6B1B1}html pre.shiki code .s3ZNE, html code.shiki .s3ZNE{--shiki-light:#986801;--shiki-default:#F97E72;--shiki-dark:#F97E72}",{"title":237,"searchDepth":303,"depth":303,"links":1079},[1080,1081,1082,1083,1084,1085,1088],{"id":167,"depth":303,"text":168},{"id":221,"depth":303,"text":222},{"id":267,"depth":303,"text":268},{"id":468,"depth":303,"text":469},{"id":604,"depth":303,"text":605},{"id":821,"depth":303,"text":822,"children":1086},[1087],{"id":848,"depth":320,"text":849},{"id":1053,"depth":303,"text":1054},"Use your own database with Drizzle, Prisma, or Kysely adapters.","md",null,{},{"title":82,"description":1089},"o3c8DnAYzi1WF5mH8XJ0A5unzlGL92n2C9KhSZSa9pE",[1096,1098],{"title":78,"path":79,"stem":80,"description":1097,"children":-1},"Configure OAuth providers and sign in with `signIn.social()`.",{"title":86,"path":87,"stem":88,"description":1099,"children":-1},"Run Better Auth without a database for edge and serverless deployments.",1777450762966]