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