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