[{"data":1,"prerenderedAt":1513},["ShallowReactive",2],{"navigation_docs":3,"-use-cases-better-auth-identify-user":424,"-use-cases-better-auth-identify-user-surround":1508},[4,25,75,230,338,393],{"title":5,"path":6,"stem":7,"children":8,"page":24},"Start","\u002Fstart","1.start",[9,14,19],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fstart\u002Fintroduction","1.start\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fstart\u002Finstallation","1.start\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","\u002Fstart\u002Fquick-start","1.start\u002F3.quick-start","i-lucide-zap",false,{"title":26,"path":27,"stem":28,"children":29,"page":24},"Learn","\u002Flearn","2.learn",[30,35,40,45,50,55,60,65,70],{"title":31,"path":32,"stem":33,"icon":34},"Overview","\u002Flearn\u002Foverview","2.learn\u002F0.overview","i-lucide-list",{"title":36,"path":37,"stem":38,"icon":39},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":41,"path":42,"stem":43,"icon":44},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":46,"path":47,"stem":48,"icon":49},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":51,"path":52,"stem":53,"icon":54},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":56,"path":57,"stem":58,"icon":59},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling","i-lucide-filter",{"title":61,"path":62,"stem":63,"icon":64},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":66,"path":67,"stem":68,"icon":69},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":71,"path":72,"stem":73,"icon":74},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs","i-lucide-book-open",{"title":76,"path":77,"stem":78,"children":79,"page":24},"Integrate","\u002Fintegrate","3.integrate",[80,84,147],{"title":31,"path":81,"stem":82,"icon":83},"\u002Fintegrate\u002Foverview","3.integrate\u002F0.overview","i-lucide-plug",{"title":85,"path":86,"stem":87,"children":88,"page":24},"Adapters","\u002Fintegrate\u002Fadapters","3.integrate\u002Fadapters",[89,92,132],{"title":31,"path":90,"stem":91,"icon":34},"\u002Fintegrate\u002Fadapters\u002Foverview","3.integrate\u002Fadapters\u002F01.overview",{"title":93,"path":94,"stem":95,"children":96,"page":24},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","3.integrate\u002Fadapters\u002Fcloud",[97,102,107,112,117,122,127],{"title":98,"path":99,"stem":100,"icon":101},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","3.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":103,"path":104,"stem":105,"icon":106},"OTLP","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fotlp","3.integrate\u002Fadapters\u002Fcloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":108,"path":109,"stem":110,"icon":111},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","3.integrate\u002Fadapters\u002Fcloud\u002F03.posthog","i-simple-icons-posthog",{"title":113,"path":114,"stem":115,"icon":116},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","3.integrate\u002Fadapters\u002Fcloud\u002F04.sentry","i-simple-icons-sentry",{"title":118,"path":119,"stem":120,"icon":121},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","3.integrate\u002Fadapters\u002Fcloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":123,"path":124,"stem":125,"icon":126},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","3.integrate\u002Fadapters\u002Fcloud\u002F06.datadog","i-simple-icons-datadog",{"title":128,"path":129,"stem":130,"icon":131},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fhyperdx","3.integrate\u002Fadapters\u002Fcloud\u002F07.hyperdx","i-custom-hyperdx",{"title":133,"path":134,"stem":135,"children":136,"page":24},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","3.integrate\u002Fadapters\u002Fself-hosted",[137,142],{"title":138,"path":139,"stem":140,"icon":141},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","3.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":143,"path":144,"stem":145,"icon":146},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","3.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":148,"path":149,"stem":150,"children":151,"page":24},"Frameworks","\u002Fintegrate\u002Fframeworks","3.integrate\u002Fframeworks",[152,156,161,166,171,176,181,186,191,196,201,206,211,216,220,225],{"title":31,"path":153,"stem":154,"icon":155},"\u002Fintegrate\u002Fframeworks\u002Foverview","3.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":157,"path":158,"stem":159,"icon":160},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","3.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":162,"path":163,"stem":164,"icon":165},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","3.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":167,"path":168,"stem":169,"icon":170},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","3.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":172,"path":173,"stem":174,"icon":175},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","3.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":177,"path":178,"stem":179,"icon":180},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","3.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":182,"path":183,"stem":184,"icon":185},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","3.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":187,"path":188,"stem":189,"icon":190},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","3.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":192,"path":193,"stem":194,"icon":195},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","3.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":197,"path":198,"stem":199,"icon":200},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","3.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":202,"path":203,"stem":204,"icon":205},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","3.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":207,"path":208,"stem":209,"icon":210},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","3.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":212,"path":213,"stem":214,"icon":215},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","3.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":217,"path":218,"stem":219,"icon":69},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","3.integrate\u002Fframeworks\u002F13.standalone",{"title":221,"path":222,"stem":223,"icon":224},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","3.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":226,"path":227,"stem":228,"icon":229},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","3.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":231,"path":232,"stem":233,"children":234,"page":24},"Use Cases","\u002Fuse-cases","4.use-cases",[235,239,244,273,301,333],{"title":31,"path":236,"stem":237,"icon":238},"\u002Fuse-cases\u002Foverview","4.use-cases\u002F0.overview","i-lucide-list-checks",{"title":240,"path":241,"stem":242,"icon":243},"Client Logging","\u002Fuse-cases\u002Fclient-logging","4.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":245,"icon":246,"path":247,"stem":248,"children":249,"page":24},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","4.use-cases\u002F2.ai-sdk",[250,253,258,263,268],{"title":31,"path":251,"stem":252,"icon":34},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","4.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":254,"path":255,"stem":256,"icon":257},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","4.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":259,"path":260,"stem":261,"icon":262},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","4.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":264,"path":265,"stem":266,"icon":267},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","4.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":269,"path":270,"stem":271,"icon":272},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","4.use-cases\u002F2.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":274,"icon":275,"path":276,"stem":277,"children":278,"page":24},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","4.use-cases\u002F3.better-auth",[279,282,287,292,296],{"title":31,"path":280,"stem":281,"icon":34},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","4.use-cases\u002F3.better-auth\u002F01.overview",{"title":283,"path":284,"stem":285,"icon":286},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","4.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":288,"path":289,"stem":290,"icon":291},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","4.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":293,"path":294,"stem":295,"icon":243},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","4.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":297,"path":298,"stem":299,"icon":300},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","4.use-cases\u002F3.better-auth\u002F05.performance","i-lucide-gauge",{"title":302,"icon":303,"path":304,"stem":305,"children":306,"page":24},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","4.use-cases\u002F4.audit",[307,310,315,320,325,329],{"title":31,"path":308,"stem":309,"icon":34},"\u002Fuse-cases\u002Faudit\u002Foverview","4.use-cases\u002F4.audit\u002F01.overview",{"title":311,"path":312,"stem":313,"icon":314},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","4.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":316,"path":317,"stem":318,"icon":319},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","4.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":321,"path":322,"stem":323,"icon":324},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","4.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":326,"path":327,"stem":328,"icon":303},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","4.use-cases\u002F4.audit\u002F05.compliance",{"title":330,"path":331,"stem":332,"icon":74},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","4.use-cases\u002F4.audit\u002F06.recipes",{"title":334,"path":335,"stem":336,"icon":337},"Enrichers","\u002Fuse-cases\u002Fenrichers","4.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":339,"path":340,"stem":341,"children":342,"page":24},"Extend","\u002Fextend","5.extend",[343,347,352,357,362,366,370,374,378,383,388],{"title":31,"path":344,"stem":345,"icon":346},"\u002Fextend\u002Foverview","5.extend\u002F0.overview","i-lucide-blocks",{"title":348,"path":349,"stem":350,"icon":351},"Stream","\u002Fextend\u002Fstream","5.extend\u002F1.stream","i-lucide-radio-tower",{"title":353,"path":354,"stem":355,"icon":356},"Custom framework","\u002Fextend\u002Fcustom-framework","5.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":358,"path":359,"stem":360,"icon":361},"FS reader","\u002Fextend\u002Ffs-reader","5.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":330,"path":363,"stem":364,"icon":365},"\u002Fextend\u002Fconsumer-recipes","5.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":367,"path":368,"stem":369,"icon":346},"Plugins","\u002Fextend\u002Fplugins","5.extend\u002F4.plugins",{"title":371,"path":372,"stem":373,"icon":337},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","5.extend\u002F5.custom-enrichers",{"title":375,"path":376,"stem":377,"icon":59},"Tail sampling","\u002Fextend\u002Ftail-sampling","5.extend\u002F6.tail-sampling",{"title":379,"path":380,"stem":381,"icon":382},"Identity headers","\u002Fextend\u002Fidentity-headers","5.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":384,"path":385,"stem":386,"icon":387},"Custom drains","\u002Fextend\u002Fcustom-drains","5.extend\u002F8.custom-drains","i-lucide-share-2",{"title":389,"path":390,"stem":391,"icon":392},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","5.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":394,"path":395,"stem":396,"children":397,"page":24},"Reference","\u002Freference","6.reference",[398,403,406,411,415,420],{"title":399,"path":400,"stem":401,"icon":402},"Configuration","\u002Freference\u002Fconfiguration","6.reference\u002F1.configuration","i-lucide-settings",{"title":297,"path":404,"stem":405,"icon":300},"\u002Freference\u002Fperformance","6.reference\u002F2.performance",{"title":407,"path":408,"stem":409,"icon":410},"Vite Plugin","\u002Freference\u002Fvite-plugin","6.reference\u002F3.vite-plugin","i-custom-vite",{"title":412,"path":413,"stem":414,"icon":303},"Best Practices","\u002Freference\u002Fbest-practices","6.reference\u002F4.best-practices",{"title":416,"path":417,"stem":418,"icon":419},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","6.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":421,"path":422,"stem":423,"icon":337},"Agent Skills","\u002Freference\u002Fagent-skills","6.reference\u002F6.agent-skills",{"id":425,"title":426,"body":427,"description":1497,"extension":1498,"links":1499,"meta":1504,"navigation":1505,"path":284,"seo":1506,"stem":285,"__hash__":1507},"docs\u002F4.use-cases\u002F3.better-auth\u002F02.identify-user.md","identifyUser",{"type":428,"value":429,"toc":1491},"minimark",[430,453,661,669,673,793,877,881,884,914,920,966,970,976,1101,1104,1255,1261,1265,1487],[431,432,433,436,437,440,441,444,445,448,449,452],"p",{},[434,435,426],"code",{}," is the core building block. Take a ",[434,438,439],{},"RequestLogger"," and a Better Auth session, extract safe fields, and call ",[434,442,443],{},"log.set()",". Returns ",[434,446,447],{},"true"," if the user was identified, ",[434,450,451],{},"false"," otherwise.",[454,455,461],"pre",{"className":456,"code":457,"filename":458,"language":459,"meta":460,"style":460},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { identifyUser } from 'evlog\u002Fbetter-auth'\n\nconst session = await auth.api.getSession({ headers: event.headers })\nif (session) {\n  const identified = identifyUser(log, session)\n  if (identified) {\n    log.set({ subscription: 'premium' })\n  }\n}\n","server\u002Fapi\u002Fcheckout.post.ts","typescript","",[434,462,463,496,503,561,573,600,617,649,655],{"__ignoreMap":460},[464,465,468,472,476,480,483,486,489,493],"span",{"class":466,"line":467},"line",1,[464,469,471],{"class":470},"s7zQu","import",[464,473,475],{"class":474},"sMK4o"," {",[464,477,479],{"class":478},"sTEyZ"," identifyUser",[464,481,482],{"class":474}," }",[464,484,485],{"class":470}," from",[464,487,488],{"class":474}," '",[464,490,492],{"class":491},"sfazB","evlog\u002Fbetter-auth",[464,494,495],{"class":474},"'\n",[464,497,499],{"class":466,"line":498},2,[464,500,502],{"emptyLinePlaceholder":501},true,"\n",[464,504,506,510,513,516,519,522,525,528,530,534,537,540,544,547,550,552,555,558],{"class":466,"line":505},3,[464,507,509],{"class":508},"spNyl","const",[464,511,512],{"class":478}," session ",[464,514,515],{"class":474},"=",[464,517,518],{"class":470}," await",[464,520,521],{"class":478}," auth",[464,523,524],{"class":474},".",[464,526,527],{"class":478},"api",[464,529,524],{"class":474},[464,531,533],{"class":532},"s2Zo4","getSession",[464,535,536],{"class":478},"(",[464,538,539],{"class":474},"{",[464,541,543],{"class":542},"swJcz"," headers",[464,545,546],{"class":474},":",[464,548,549],{"class":478}," event",[464,551,524],{"class":474},[464,553,554],{"class":478},"headers ",[464,556,557],{"class":474},"}",[464,559,560],{"class":478},")\n",[464,562,564,567,570],{"class":466,"line":563},4,[464,565,566],{"class":470},"if",[464,568,569],{"class":478}," (session) ",[464,571,572],{"class":474},"{\n",[464,574,576,579,582,585,587,589,592,595,598],{"class":466,"line":575},5,[464,577,578],{"class":508},"  const",[464,580,581],{"class":478}," identified",[464,583,584],{"class":474}," =",[464,586,479],{"class":532},[464,588,536],{"class":542},[464,590,591],{"class":478},"log",[464,593,594],{"class":474},",",[464,596,597],{"class":478}," session",[464,599,560],{"class":542},[464,601,603,606,609,612,615],{"class":466,"line":602},6,[464,604,605],{"class":470},"  if",[464,607,608],{"class":542}," (",[464,610,611],{"class":478},"identified",[464,613,614],{"class":542},") ",[464,616,572],{"class":474},[464,618,620,623,625,628,630,632,635,637,639,642,645,647],{"class":466,"line":619},7,[464,621,622],{"class":478},"    log",[464,624,524],{"class":474},[464,626,627],{"class":532},"set",[464,629,536],{"class":542},[464,631,539],{"class":474},[464,633,634],{"class":542}," subscription",[464,636,546],{"class":474},[464,638,488],{"class":474},[464,640,641],{"class":491},"premium",[464,643,644],{"class":474},"'",[464,646,482],{"class":474},[464,648,560],{"class":542},[464,650,652],{"class":466,"line":651},8,[464,653,654],{"class":474},"  }\n",[464,656,658],{"class":466,"line":657},9,[464,659,660],{"class":474},"}\n",[662,663,664,668],"tip",{},[665,666,667],"strong",{},"Safe by default."," Only whitelisted fields are extracted — passwords, tokens, and secrets are never written to the logger.",[670,671,259],"h2",{"id":672},"options",[674,675,676,695],"table",{},[677,678,679],"thead",{},[680,681,682,686,689,692],"tr",{},[683,684,685],"th",{},"Option",[683,687,688],{},"Type",[683,690,691],{},"Default",[683,693,694],{},"Description",[696,697,698,721,753,773],"tbody",{},[680,699,700,706,711,715],{},[701,702,703],"td",{},[434,704,705],{},"maskEmail",[701,707,708],{},[434,709,710],{},"boolean",[701,712,713],{},[434,714,451],{},[701,716,717,718,524],{},"Mask emails as ",[434,719,720],{},"h***@example.com",[680,722,723,728,732,736],{},[701,724,725],{},[434,726,727],{},"session",[701,729,730],{},[434,731,710],{},[701,733,734],{},[434,735,447],{},[701,737,738,739,742,743,742,746,742,749,752],{},"Include session metadata (",[434,740,741],{},"session.id",", ",[434,744,745],{},"session.expiresAt",[434,747,748],{},"session.ipAddress",[434,750,751],{},"session.userAgent",").",[680,754,755,760,765,770],{},[701,756,757],{},[434,758,759],{},"fields",[701,761,762],{},[434,763,764],{},"string[]",[701,766,767],{},[434,768,769],{},"['id', 'name', 'email', 'image', 'emailVerified', 'createdAt']",[701,771,772],{},"User fields to extract.",[680,774,775,780,785,790],{},[701,776,777],{},[434,778,779],{},"extend",[701,781,782],{},[434,783,784],{},"(session) => Record\u003Cstring, unknown>",[701,786,787],{},[434,788,789],{},"undefined",[701,791,792],{},"Add custom fields from Better Auth plugins (organizations, roles, etc.).",[454,794,796],{"className":456,"code":795,"filename":458,"language":459,"meta":460,"style":460},"identifyUser(log, session, {\n  maskEmail: true,\n  fields: ['id', 'name'],\n  session: false,\n})\n",[434,797,798,814,828,859,871],{"__ignoreMap":460},[464,799,800,802,805,807,809,811],{"class":466,"line":467},[464,801,426],{"class":532},[464,803,804],{"class":478},"(log",[464,806,594],{"class":474},[464,808,597],{"class":478},[464,810,594],{"class":474},[464,812,813],{"class":474}," {\n",[464,815,816,819,821,825],{"class":466,"line":498},[464,817,818],{"class":542},"  maskEmail",[464,820,546],{"class":474},[464,822,824],{"class":823},"sfNiH"," true",[464,826,827],{"class":474},",\n",[464,829,830,833,835,838,840,843,845,847,849,852,854,857],{"class":466,"line":505},[464,831,832],{"class":542},"  fields",[464,834,546],{"class":474},[464,836,837],{"class":478}," [",[464,839,644],{"class":474},[464,841,842],{"class":491},"id",[464,844,644],{"class":474},[464,846,594],{"class":474},[464,848,488],{"class":474},[464,850,851],{"class":491},"name",[464,853,644],{"class":474},[464,855,856],{"class":478},"]",[464,858,827],{"class":474},[464,860,861,864,866,869],{"class":466,"line":563},[464,862,863],{"class":542},"  session",[464,865,546],{"class":474},[464,867,868],{"class":823}," false",[464,870,827],{"class":474},[464,872,873,875],{"class":466,"line":575},[464,874,557],{"class":474},[464,876,560],{"class":478},[670,878,880],{"id":879},"mask-emails","Mask emails",[431,882,883],{},"Emails are PII. In environments where the audit\u002Flog trail might be reviewed by support or third parties, mask them:",[454,885,887],{"className":456,"code":886,"language":459,"meta":460,"style":460},"identifyUser(log, session, { maskEmail: true })\n",[434,888,889],{"__ignoreMap":460},[464,890,891,893,895,897,899,901,903,906,908,910,912],{"class":466,"line":467},[464,892,426],{"class":532},[464,894,804],{"class":478},[464,896,594],{"class":474},[464,898,597],{"class":478},[464,900,594],{"class":474},[464,902,475],{"class":474},[464,904,905],{"class":542}," maskEmail",[464,907,546],{"class":474},[464,909,824],{"class":823},[464,911,482],{"class":474},[464,913,560],{"class":478},[431,915,916,917,919],{},"The ",[434,918,705],{}," helper is also exported on its own:",[454,921,923],{"className":456,"code":922,"language":459,"meta":460,"style":460},"import { maskEmail } from 'evlog\u002Fbetter-auth'\n\nmaskEmail('hugo@example.com') \u002F\u002F 'h***@example.com'\n",[434,924,925,943,947],{"__ignoreMap":460},[464,926,927,929,931,933,935,937,939,941],{"class":466,"line":467},[464,928,471],{"class":470},[464,930,475],{"class":474},[464,932,905],{"class":478},[464,934,482],{"class":474},[464,936,485],{"class":470},[464,938,488],{"class":474},[464,940,492],{"class":491},[464,942,495],{"class":474},[464,944,945],{"class":466,"line":498},[464,946,502],{"emptyLinePlaceholder":501},[464,948,949,951,953,955,958,960,962],{"class":466,"line":505},[464,950,705],{"class":532},[464,952,536],{"class":478},[464,954,644],{"class":474},[464,956,957],{"class":491},"hugo@example.com",[464,959,644],{"class":474},[464,961,614],{"class":478},[464,963,965],{"class":964},"sHwdD","\u002F\u002F 'h***@example.com'\n",[670,967,969],{"id":968},"capture-plugin-fields","Capture plugin fields",[431,971,972,973,975],{},"Better Auth ships with plugins (organizations, 2FA, roles, admin) that add fields to the session. Use ",[434,974,779],{}," to surface them on the wide event:",[454,977,980],{"className":456,"code":978,"filename":979,"language":459,"meta":460,"style":460},"import { createAuthMiddleware } from 'evlog\u002Fbetter-auth'\n\nconst identify = createAuthMiddleware(auth, {\n  extend: (session) => ({\n    organization: session.user.activeOrganization,\n    role: session.user.role,\n  }),\n})\n","server\u002Fmiddleware\u002Fauth-identify.ts",[434,981,982,1001,1005,1023,1045,1066,1086,1095],{"__ignoreMap":460},[464,983,984,986,988,991,993,995,997,999],{"class":466,"line":467},[464,985,471],{"class":470},[464,987,475],{"class":474},[464,989,990],{"class":478}," createAuthMiddleware",[464,992,482],{"class":474},[464,994,485],{"class":470},[464,996,488],{"class":474},[464,998,492],{"class":491},[464,1000,495],{"class":474},[464,1002,1003],{"class":466,"line":498},[464,1004,502],{"emptyLinePlaceholder":501},[464,1006,1007,1009,1012,1014,1016,1019,1021],{"class":466,"line":505},[464,1008,509],{"class":508},[464,1010,1011],{"class":478}," identify ",[464,1013,515],{"class":474},[464,1015,990],{"class":532},[464,1017,1018],{"class":478},"(auth",[464,1020,594],{"class":474},[464,1022,813],{"class":474},[464,1024,1025,1028,1030,1032,1035,1038,1041,1043],{"class":466,"line":563},[464,1026,1027],{"class":532},"  extend",[464,1029,546],{"class":474},[464,1031,608],{"class":474},[464,1033,727],{"class":1034},"sHdIc",[464,1036,1037],{"class":474},")",[464,1039,1040],{"class":508}," =>",[464,1042,608],{"class":478},[464,1044,572],{"class":474},[464,1046,1047,1050,1052,1054,1056,1059,1061,1064],{"class":466,"line":575},[464,1048,1049],{"class":542},"    organization",[464,1051,546],{"class":474},[464,1053,597],{"class":478},[464,1055,524],{"class":474},[464,1057,1058],{"class":478},"user",[464,1060,524],{"class":474},[464,1062,1063],{"class":478},"activeOrganization",[464,1065,827],{"class":474},[464,1067,1068,1071,1073,1075,1077,1079,1081,1084],{"class":466,"line":602},[464,1069,1070],{"class":542},"    role",[464,1072,546],{"class":474},[464,1074,597],{"class":478},[464,1076,524],{"class":474},[464,1078,1058],{"class":478},[464,1080,524],{"class":474},[464,1082,1083],{"class":478},"role",[464,1085,827],{"class":474},[464,1087,1088,1091,1093],{"class":466,"line":619},[464,1089,1090],{"class":474},"  }",[464,1092,1037],{"class":478},[464,1094,827],{"class":474},[464,1096,1097,1099],{"class":466,"line":651},[464,1098,557],{"class":474},[464,1100,560],{"class":478},[431,1102,1103],{},"Wide event with plugin fields:",[454,1105,1110],{"className":1106,"code":1107,"filename":1108,"language":1109,"meta":460,"style":460},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"userId\": \"QBX9tPjJQExWawAbNll75\",\n  \"user\": { \"id\": \"QBX9tPjJQExWawAbNll75\", \"name\": \"Hugo Richard\" },\n  \"organization\": { \"id\": \"org_42\", \"name\": \"Acme\" },\n  \"role\": \"admin\"\n}\n","Wide Event","json",[434,1111,1112,1116,1139,1186,1233,1251],{"__ignoreMap":460},[464,1113,1114],{"class":466,"line":467},[464,1115,572],{"class":474},[464,1117,1118,1121,1124,1127,1129,1132,1135,1137],{"class":466,"line":498},[464,1119,1120],{"class":474},"  \"",[464,1122,1123],{"class":508},"userId",[464,1125,1126],{"class":474},"\"",[464,1128,546],{"class":474},[464,1130,1131],{"class":474}," \"",[464,1133,1134],{"class":491},"QBX9tPjJQExWawAbNll75",[464,1136,1126],{"class":474},[464,1138,827],{"class":474},[464,1140,1141,1143,1145,1147,1149,1151,1153,1156,1158,1160,1162,1164,1166,1168,1170,1172,1174,1176,1178,1181,1183],{"class":466,"line":505},[464,1142,1120],{"class":474},[464,1144,1058],{"class":508},[464,1146,1126],{"class":474},[464,1148,546],{"class":474},[464,1150,475],{"class":474},[464,1152,1131],{"class":474},[464,1154,842],{"class":1155},"sBMFI",[464,1157,1126],{"class":474},[464,1159,546],{"class":474},[464,1161,1131],{"class":474},[464,1163,1134],{"class":491},[464,1165,1126],{"class":474},[464,1167,594],{"class":474},[464,1169,1131],{"class":474},[464,1171,851],{"class":1155},[464,1173,1126],{"class":474},[464,1175,546],{"class":474},[464,1177,1131],{"class":474},[464,1179,1180],{"class":491},"Hugo Richard",[464,1182,1126],{"class":474},[464,1184,1185],{"class":474}," },\n",[464,1187,1188,1190,1193,1195,1197,1199,1201,1203,1205,1207,1209,1212,1214,1216,1218,1220,1222,1224,1226,1229,1231],{"class":466,"line":563},[464,1189,1120],{"class":474},[464,1191,1192],{"class":508},"organization",[464,1194,1126],{"class":474},[464,1196,546],{"class":474},[464,1198,475],{"class":474},[464,1200,1131],{"class":474},[464,1202,842],{"class":1155},[464,1204,1126],{"class":474},[464,1206,546],{"class":474},[464,1208,1131],{"class":474},[464,1210,1211],{"class":491},"org_42",[464,1213,1126],{"class":474},[464,1215,594],{"class":474},[464,1217,1131],{"class":474},[464,1219,851],{"class":1155},[464,1221,1126],{"class":474},[464,1223,546],{"class":474},[464,1225,1131],{"class":474},[464,1227,1228],{"class":491},"Acme",[464,1230,1126],{"class":474},[464,1232,1185],{"class":474},[464,1234,1235,1237,1239,1241,1243,1245,1248],{"class":466,"line":575},[464,1236,1120],{"class":474},[464,1238,1083],{"class":508},[464,1240,1126],{"class":474},[464,1242,546],{"class":474},[464,1244,1131],{"class":474},[464,1246,1247],{"class":491},"admin",[464,1249,1250],{"class":474},"\"\n",[464,1252,1253],{"class":466,"line":602},[464,1254,660],{"class":474},[662,1256,1257,1258,1260],{},"Keep ",[434,1259,779],{}," deterministic — it runs on every request. Avoid heavy computations or extra database calls inside it; query the data Better Auth already loaded into the session.",[670,1262,1264],{"id":1263},"captured-fields","Captured fields",[674,1266,1267,1279],{},[677,1268,1269],{},[680,1270,1271,1274,1277],{},[683,1272,1273],{},"Field",[683,1275,1276],{},"Source",[683,1278,694],{},[696,1280,1281,1298,1312,1327,1345,1360,1375,1390,1404,1418,1432,1446,1461,1474],{},[680,1282,1283,1287,1292],{},[701,1284,1285],{},[434,1286,1123],{},[701,1288,1289],{},[434,1290,1291],{},"session.user.id",[701,1293,1294,1295,752],{},"Top-level user ID (used by PostHog adapter as ",[434,1296,1297],{},"distinct_id",[680,1299,1300,1305,1309],{},[701,1301,1302],{},[434,1303,1304],{},"user.id",[701,1306,1307],{},[434,1308,1291],{},[701,1310,1311],{},"User ID.",[680,1313,1314,1319,1324],{},[701,1315,1316],{},[434,1317,1318],{},"user.name",[701,1320,1321],{},[434,1322,1323],{},"session.user.name",[701,1325,1326],{},"Display name.",[680,1328,1329,1334,1339],{},[701,1330,1331],{},[434,1332,1333],{},"user.email",[701,1335,1336],{},[434,1337,1338],{},"session.user.email",[701,1340,1341,1342,752],{},"Email (maskable with ",[434,1343,1344],{},"maskEmail: true",[680,1346,1347,1352,1357],{},[701,1348,1349],{},[434,1350,1351],{},"user.image",[701,1353,1354],{},[434,1355,1356],{},"session.user.image",[701,1358,1359],{},"Avatar URL.",[680,1361,1362,1367,1372],{},[701,1363,1364],{},[434,1365,1366],{},"user.emailVerified",[701,1368,1369],{},[434,1370,1371],{},"session.user.emailVerified",[701,1373,1374],{},"Email verification status.",[680,1376,1377,1382,1387],{},[701,1378,1379],{},[434,1380,1381],{},"user.createdAt",[701,1383,1384],{},[434,1385,1386],{},"session.user.createdAt",[701,1388,1389],{},"Account creation date (ISO string).",[680,1391,1392,1396,1401],{},[701,1393,1394],{},[434,1395,741],{},[701,1397,1398],{},[434,1399,1400],{},"session.session.id",[701,1402,1403],{},"Session ID.",[680,1405,1406,1410,1415],{},[701,1407,1408],{},[434,1409,745],{},[701,1411,1412],{},[434,1413,1414],{},"session.session.expiresAt",[701,1416,1417],{},"Session expiry (ISO string).",[680,1419,1420,1424,1429],{},[701,1421,1422],{},[434,1423,748],{},[701,1425,1426],{},[434,1427,1428],{},"session.session.ipAddress",[701,1430,1431],{},"Client IP from the session.",[680,1433,1434,1438,1443],{},[701,1435,1436],{},[434,1437,751],{},[701,1439,1440],{},[434,1441,1442],{},"session.session.userAgent",[701,1444,1445],{},"User agent string from the session.",[680,1447,1448,1453,1458],{},[701,1449,1450],{},[434,1451,1452],{},"session.createdAt",[701,1454,1455],{},[434,1456,1457],{},"session.session.createdAt",[701,1459,1460],{},"Session creation date (ISO string).",[680,1462,1463,1468,1471],{},[701,1464,1465],{},[434,1466,1467],{},"auth.resolvedIn",[701,1469,1470],{},"Measured",[701,1472,1473],{},"Session resolution time in ms.",[680,1475,1476,1481,1484],{},[701,1477,1478],{},[434,1479,1480],{},"auth.identified",[701,1482,1483],{},"Computed",[701,1485,1486],{},"Whether the request was identified.",[1488,1489,1490],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":460,"searchDepth":498,"depth":498,"links":1492},[1493,1494,1495,1496],{"id":672,"depth":498,"text":259},{"id":879,"depth":498,"text":880},{"id":968,"depth":498,"text":969},{"id":1263,"depth":498,"text":1264},"The core building block — extract safe user fields, mask emails, and capture plugin data (organizations, roles, 2FA) from a Better Auth session.","md",[1500,1503],{"label":31,"icon":34,"to":280,"color":1501,"variant":1502},"neutral","subtle",{"label":288,"icon":291,"to":289,"color":1501,"variant":1502},{},{"title":283,"icon":286},{"title":426,"description":1497},"ktB0zgEcuDV1SnUMSWV1NGf9G4g5y_0GbwN1ACQNQfk",[1509,1511],{"title":31,"path":280,"stem":281,"description":1510,"icon":34,"children":-1},"Automatically identify users on every request. Every wide event includes who made the request — userId, user profile, and session metadata — with zero manual work.",{"title":288,"path":289,"stem":290,"description":1512,"icon":291,"children":-1},"Framework-agnostic factory with route filtering, session timing, and lifecycle hooks. Call it once at startup and reuse across requests.",1778361905251]