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