[{"data":1,"prerenderedAt":2904},["ShallowReactive",2],{"navigation_docs":3,"-use-cases-better-auth-overview":515,"-use-cases-better-auth-overview-surround":2899},[4,30,80,123,298,430,485],{"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],{"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,"children":127,"page":29},"Integrate","\u002Fintegrate","4.integrate",[128,132,210],{"title":36,"path":129,"stem":130,"icon":131},"\u002Fintegrate\u002Foverview","4.integrate\u002F0.overview","i-lucide-plug",{"title":133,"path":134,"stem":135,"children":136,"page":29},"Adapters","\u002Fintegrate\u002Fadapters","4.integrate\u002Fadapters",[137,140,180,190],{"title":36,"path":138,"stem":139,"icon":39},"\u002Fintegrate\u002Fadapters\u002Foverview","4.integrate\u002Fadapters\u002F01.overview",{"title":141,"path":142,"stem":143,"children":144,"page":29},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","4.integrate\u002Fadapters\u002Fcloud",[145,150,155,160,165,170,175],{"title":146,"path":147,"stem":148,"icon":149},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","4.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":151,"path":152,"stem":153,"icon":154},"OTLP","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fotlp","4.integrate\u002Fadapters\u002Fcloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":156,"path":157,"stem":158,"icon":159},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","4.integrate\u002Fadapters\u002Fcloud\u002F03.posthog","i-simple-icons-posthog",{"title":161,"path":162,"stem":163,"icon":164},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","4.integrate\u002Fadapters\u002Fcloud\u002F04.sentry","i-simple-icons-sentry",{"title":166,"path":167,"stem":168,"icon":169},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","4.integrate\u002Fadapters\u002Fcloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":171,"path":172,"stem":173,"icon":174},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","4.integrate\u002Fadapters\u002Fcloud\u002F06.datadog","i-simple-icons-datadog",{"title":176,"path":177,"stem":178,"icon":179},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fhyperdx","4.integrate\u002Fadapters\u002Fcloud\u002F07.hyperdx","i-custom-hyperdx",{"title":181,"path":182,"stem":183,"children":184,"page":29},"Cloud or Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fhybrid","4.integrate\u002Fadapters\u002Fhybrid",[185],{"title":186,"path":187,"stem":188,"icon":189},"Grafana Loki","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Floki","4.integrate\u002Fadapters\u002Fhybrid\u002F01.loki","i-simple-icons-grafana",{"title":191,"path":192,"stem":193,"children":194,"page":29},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","4.integrate\u002Fadapters\u002Fself-hosted",[195,200,205],{"title":196,"path":197,"stem":198,"icon":199},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","4.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":201,"path":202,"stem":203,"icon":204},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","4.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":206,"path":207,"stem":208,"icon":209},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","4.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":211,"path":212,"stem":213,"children":214,"page":29},"Frameworks","\u002Fintegrate\u002Fframeworks","4.integrate\u002Fframeworks",[215,219,224,229,234,239,244,249,254,259,264,269,274,279,283,288,293],{"title":36,"path":216,"stem":217,"icon":218},"\u002Fintegrate\u002Fframeworks\u002Foverview","4.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":220,"path":221,"stem":222,"icon":223},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","4.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":225,"path":226,"stem":227,"icon":228},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","4.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":230,"path":231,"stem":232,"icon":233},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","4.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":235,"path":236,"stem":237,"icon":238},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","4.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":240,"path":241,"stem":242,"icon":243},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","4.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":245,"path":246,"stem":247,"icon":248},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","4.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":250,"path":251,"stem":252,"icon":253},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","4.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":255,"path":256,"stem":257,"icon":258},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","4.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":260,"path":261,"stem":262,"icon":263},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","4.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":265,"path":266,"stem":267,"icon":268},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","4.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":270,"path":271,"stem":272,"icon":273},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","4.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":275,"path":276,"stem":277,"icon":278},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","4.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":280,"path":281,"stem":282,"icon":74},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","4.integrate\u002Fframeworks\u002F13.standalone",{"title":284,"path":285,"stem":286,"icon":287},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","4.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":289,"path":290,"stem":291,"icon":292},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","4.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":294,"path":295,"stem":296,"icon":297},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","4.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":299,"path":300,"stem":301,"children":302,"page":29},"Use Cases","\u002Fuse-cases","5.use-cases",[303,306,311,340,367,399,420,425],{"title":36,"path":304,"stem":305,"icon":102},"\u002Fuse-cases\u002Foverview","5.use-cases\u002F0.overview",{"title":307,"path":308,"stem":309,"icon":310},"Client Logging","\u002Fuse-cases\u002Fclient-logging","5.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":312,"icon":313,"path":314,"stem":315,"children":316,"page":29},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","5.use-cases\u002F2.ai-sdk",[317,320,325,330,335],{"title":36,"path":318,"stem":319,"icon":39},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","5.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":321,"path":322,"stem":323,"icon":324},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","5.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":326,"path":327,"stem":328,"icon":329},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","5.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":331,"path":332,"stem":333,"icon":334},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","5.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":336,"path":337,"stem":338,"icon":339},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","5.use-cases\u002F2.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":341,"icon":342,"path":343,"stem":344,"children":345,"page":29},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","5.use-cases\u002F3.better-auth",[346,349,354,359,363],{"title":36,"path":347,"stem":348,"icon":39},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","5.use-cases\u002F3.better-auth\u002F01.overview",{"title":350,"path":351,"stem":352,"icon":353},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","5.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":355,"path":356,"stem":357,"icon":358},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","5.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":360,"path":361,"stem":362,"icon":310},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","5.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":364,"path":365,"stem":366,"icon":107},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","5.use-cases\u002F3.better-auth\u002F05.performance",{"title":368,"icon":369,"path":370,"stem":371,"children":372,"page":29},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","5.use-cases\u002F4.audit",[373,376,381,386,391,395],{"title":36,"path":374,"stem":375,"icon":39},"\u002Fuse-cases\u002Faudit\u002Foverview","5.use-cases\u002F4.audit\u002F01.overview",{"title":377,"path":378,"stem":379,"icon":380},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","5.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":382,"path":383,"stem":384,"icon":385},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","5.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":387,"path":388,"stem":389,"icon":390},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","5.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":392,"path":393,"stem":394,"icon":369},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","5.use-cases\u002F4.audit\u002F05.compliance",{"title":396,"path":397,"stem":398,"icon":79},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","5.use-cases\u002F4.audit\u002F06.recipes",{"title":336,"icon":107,"path":400,"stem":401,"children":402,"page":29},"\u002Fuse-cases\u002Ftelemetry","5.use-cases\u002F4.telemetry",[403,406,411,416],{"title":36,"path":404,"stem":405,"icon":39},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","5.use-cases\u002F4.telemetry\u002F01.overview",{"title":407,"path":408,"stem":409,"icon":410},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","5.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":412,"path":413,"stem":414,"icon":415},"Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","5.use-cases\u002F4.telemetry\u002F03.ingest","i-lucide-server",{"title":417,"path":418,"stem":419,"icon":79},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","5.use-cases\u002F4.telemetry\u002F04.reference",{"title":421,"path":422,"stem":423,"icon":424},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":426,"path":427,"stem":428,"icon":429},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve","i-custom-eve",{"title":431,"path":432,"stem":433,"children":434,"page":29},"Extend","\u002Fextend","6.extend",[435,439,444,449,454,458,462,466,470,475,480],{"title":36,"path":436,"stem":437,"icon":438},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":440,"path":441,"stem":442,"icon":443},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":445,"path":446,"stem":447,"icon":448},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":450,"path":451,"stem":452,"icon":453},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":396,"path":455,"stem":456,"icon":457},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":459,"path":460,"stem":461,"icon":438},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":463,"path":464,"stem":465,"icon":424},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"title":467,"path":468,"stem":469,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","6.extend\u002F6.tail-sampling",{"title":471,"path":472,"stem":473,"icon":474},"Identity headers","\u002Fextend\u002Fidentity-headers","6.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":476,"path":477,"stem":478,"icon":479},"Custom drains","\u002Fextend\u002Fcustom-drains","6.extend\u002F8.custom-drains","i-lucide-share-2",{"title":481,"path":482,"stem":483,"icon":484},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":417,"path":486,"stem":487,"children":488,"page":29},"\u002Freference","7.reference",[489,494,497,502,506,511],{"title":490,"path":491,"stem":492,"icon":493},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":364,"path":495,"stem":496,"icon":107},"\u002Freference\u002Fperformance","7.reference\u002F2.performance",{"title":498,"path":499,"stem":500,"icon":501},"Vite Plugin","\u002Freference\u002Fvite-plugin","7.reference\u002F3.vite-plugin","i-custom-vite",{"title":503,"path":504,"stem":505,"icon":369},"Best Practices","\u002Freference\u002Fbest-practices","7.reference\u002F4.best-practices",{"title":507,"path":508,"stem":509,"icon":510},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":512,"path":513,"stem":514,"icon":424},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"id":516,"title":517,"body":518,"description":2886,"extension":2887,"links":2888,"meta":2895,"navigation":2896,"path":347,"seo":2897,"stem":348,"__hash__":2898},"docs\u002F5.use-cases\u002F3.better-auth\u002F01.overview.md","Better Auth Integration",{"type":519,"value":520,"toc":2879},"minimark",[521,533,538,567,638,680,683,686,2097,2100,2737,2741,2744,2759,2763,2791,2795,2875],[522,523,524,528,529,532],"p",{},[525,526,527],"code",{},"evlog\u002Fbetter-auth"," turns anonymous wide events into identified ones. Every request automatically includes who made it — no manual ",[525,530,531],{},"log.set({ user })"," needed.",[534,535,537],"h2",{"id":536},"prerequisites","Prerequisites",[522,539,540,541,547,548,552,553,556,557,560,561,566],{},"Use ",[542,543,341],"a",{"href":544,"rel":545},"https:\u002F\u002Fbetter-auth.com\u002F",[546],"nofollow"," as a ",[549,550,551],"strong",{},"direct dependency"," in your app. ",[525,554,555],{},"evlog"," does not bundle Better Auth. The integration is tested against Better Auth ",[525,558,559],{},">=1.6.9"," (same major as ",[542,562,565],{"href":563,"rel":564},"https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Fevlog\u002Ftree\u002Fmain\u002Fapps\u002Fplayground",[546],"the playground",").",[568,569,570,595,609,623],"code-group",{},[571,572,578],"pre",{"className":573,"code":574,"filename":575,"language":576,"meta":577,"style":577},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add better-auth\n","pnpm","bash","",[525,579,580],{"__ignoreMap":577},[581,582,585,588,592],"span",{"class":583,"line":584},"line",1,[581,586,575],{"class":587},"sBMFI",[581,589,591],{"class":590},"sfazB"," add",[581,593,594],{"class":590}," better-auth\n",[571,596,599],{"className":573,"code":597,"filename":598,"language":576,"meta":577,"style":577},"bun add better-auth\n","bun",[525,600,601],{"__ignoreMap":577},[581,602,603,605,607],{"class":583,"line":584},[581,604,598],{"class":587},[581,606,591],{"class":590},[581,608,594],{"class":590},[571,610,613],{"className":573,"code":611,"filename":612,"language":576,"meta":577,"style":577},"yarn add better-auth\n","yarn",[525,614,615],{"__ignoreMap":577},[581,616,617,619,621],{"class":583,"line":584},[581,618,612],{"class":587},[581,620,591],{"class":590},[581,622,594],{"class":590},[571,624,627],{"className":573,"code":625,"filename":626,"language":576,"meta":577,"style":577},"npm install better-auth\n","npm",[525,628,629],{"__ignoreMap":577},[581,630,631,633,636],{"class":583,"line":584},[581,632,626],{"class":587},[581,634,635],{"class":590}," install",[581,637,594],{"class":590},[639,640,643,646,668],"prompt",{":actions":641,"description":642,"icon":342},"[\"copy\",\"cursor\",\"claude\"]","Add Better Auth user identification",[522,644,645],{},"Add Better Auth user identification to my app with evlog.",[647,648,649,653,656,659,662,665],"ul",{},[650,651,652],"li",{},"Import createAuthMiddleware from 'evlog\u002Fbetter-auth'",[650,654,655],{},"Call createAuthMiddleware(auth) to get an identify function",[650,657,658],{},"Call identify(log, headers, path) in your middleware\u002Fhook to auto-identify users on every request",[650,660,661],{},"Safe by default — only extracts whitelisted fields, never logs passwords or tokens",[650,663,664],{},"Supports include\u002Fexclude route patterns, lifecycle hooks, and Better Auth plugin fields",[650,666,667],{},"Works with all frameworks: Nuxt, Next.js, Express, Hono, Fastify, NestJS, Elysia, standalone",[522,669,670,671,675,676],{},"Docs: ",[542,672,673],{"href":673,"rel":674},"https:\u002F\u002Fwww.evlog.dev\u002Fuse-cases\u002Fbetter-auth\u002Foverview",[546],"\nAdapters: ",[542,677,678],{"href":678,"rel":679},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fadapters\u002Foverview",[546],[534,681,25],{"id":682},"quick-start",[522,684,685],{},"One middleware, all requests identified:",[568,687,688,909,1139,1292,1462,1606,1763,1971],{},[571,689,694],{"className":690,"code":691,"filename":692,"language":693,"meta":577,"style":577},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createAuthMiddleware } from 'evlog\u002Fbetter-auth'\n\nconst identify = createAuthMiddleware(auth, {\n  exclude: ['\u002Fapi\u002Fauth\u002F**'],\n})\n\nexport default defineEventHandler(async (event) => {\n  if (!event.context.log) return\n  await identify(event.context.log, event.headers, event.path)\n})\n","server\u002Fmiddleware\u002Fauth-identify.ts (Nuxt)","typescript",[525,695,696,724,731,756,783,792,797,830,860,902],{"__ignoreMap":577},[581,697,698,702,706,710,713,716,719,721],{"class":583,"line":584},[581,699,701],{"class":700},"s7zQu","import",[581,703,705],{"class":704},"sMK4o"," {",[581,707,709],{"class":708},"sTEyZ"," createAuthMiddleware",[581,711,712],{"class":704}," }",[581,714,715],{"class":700}," from",[581,717,718],{"class":704}," '",[581,720,527],{"class":590},[581,722,723],{"class":704},"'\n",[581,725,727],{"class":583,"line":726},2,[581,728,730],{"emptyLinePlaceholder":729},true,"\n",[581,732,734,738,741,744,747,750,753],{"class":583,"line":733},3,[581,735,737],{"class":736},"spNyl","const",[581,739,740],{"class":708}," identify ",[581,742,743],{"class":704},"=",[581,745,709],{"class":746},"s2Zo4",[581,748,749],{"class":708},"(auth",[581,751,752],{"class":704},",",[581,754,755],{"class":704}," {\n",[581,757,759,763,766,769,772,775,777,780],{"class":583,"line":758},4,[581,760,762],{"class":761},"swJcz","  exclude",[581,764,765],{"class":704},":",[581,767,768],{"class":708}," [",[581,770,771],{"class":704},"'",[581,773,774],{"class":590},"\u002Fapi\u002Fauth\u002F**",[581,776,771],{"class":704},[581,778,779],{"class":708},"]",[581,781,782],{"class":704},",\n",[581,784,786,789],{"class":583,"line":785},5,[581,787,788],{"class":704},"}",[581,790,791],{"class":708},")\n",[581,793,795],{"class":583,"line":794},6,[581,796,730],{"emptyLinePlaceholder":729},[581,798,800,803,806,809,812,815,818,822,825,828],{"class":583,"line":799},7,[581,801,802],{"class":700},"export",[581,804,805],{"class":700}," default",[581,807,808],{"class":746}," defineEventHandler",[581,810,811],{"class":708},"(",[581,813,814],{"class":736},"async",[581,816,817],{"class":704}," (",[581,819,821],{"class":820},"sHdIc","event",[581,823,824],{"class":704},")",[581,826,827],{"class":736}," =>",[581,829,755],{"class":704},[581,831,833,836,838,841,843,846,849,851,854,857],{"class":583,"line":832},8,[581,834,835],{"class":700},"  if",[581,837,817],{"class":761},[581,839,840],{"class":704},"!",[581,842,821],{"class":708},[581,844,845],{"class":704},".",[581,847,848],{"class":708},"context",[581,850,845],{"class":704},[581,852,853],{"class":708},"log",[581,855,856],{"class":761},") ",[581,858,859],{"class":700},"return\n",[581,861,863,866,869,871,873,875,877,879,881,883,886,888,891,893,895,897,900],{"class":583,"line":862},9,[581,864,865],{"class":700},"  await",[581,867,868],{"class":746}," identify",[581,870,811],{"class":761},[581,872,821],{"class":708},[581,874,845],{"class":704},[581,876,848],{"class":708},[581,878,845],{"class":704},[581,880,853],{"class":708},[581,882,752],{"class":704},[581,884,885],{"class":708}," event",[581,887,845],{"class":704},[581,889,890],{"class":708},"headers",[581,892,752],{"class":704},[581,894,885],{"class":708},[581,896,845],{"class":704},[581,898,899],{"class":708},"path",[581,901,791],{"class":761},[581,903,905,907],{"class":583,"line":904},10,[581,906,788],{"class":704},[581,908,791],{"class":708},[571,910,913],{"className":690,"code":911,"filename":912,"language":693,"meta":577,"style":577},"import { withEvlog, useLogger } from '@\u002Flib\u002Fevlog'\nimport { createAuthMiddleware } from 'evlog\u002Fbetter-auth'\nimport { auth } from '@\u002Flib\u002Fauth'\n\nconst identify = createAuthMiddleware(auth)\n\nexport const POST = withEvlog(async (request: Request) => {\n  const log = useLogger()\n  await identify(log, request.headers)\n  log.set({ action: 'checkout' })\n  return Response.json({ success: true })\n})\n","app\u002Fapi\u002Fcheckout\u002Froute.ts (Next.js)",[525,914,915,940,958,978,982,995,999,1033,1049,1070,1101,1132],{"__ignoreMap":577},[581,916,917,919,921,924,926,929,931,933,935,938],{"class":583,"line":584},[581,918,701],{"class":700},[581,920,705],{"class":704},[581,922,923],{"class":708}," withEvlog",[581,925,752],{"class":704},[581,927,928],{"class":708}," useLogger",[581,930,712],{"class":704},[581,932,715],{"class":700},[581,934,718],{"class":704},[581,936,937],{"class":590},"@\u002Flib\u002Fevlog",[581,939,723],{"class":704},[581,941,942,944,946,948,950,952,954,956],{"class":583,"line":726},[581,943,701],{"class":700},[581,945,705],{"class":704},[581,947,709],{"class":708},[581,949,712],{"class":704},[581,951,715],{"class":700},[581,953,718],{"class":704},[581,955,527],{"class":590},[581,957,723],{"class":704},[581,959,960,962,964,967,969,971,973,976],{"class":583,"line":733},[581,961,701],{"class":700},[581,963,705],{"class":704},[581,965,966],{"class":708}," auth",[581,968,712],{"class":704},[581,970,715],{"class":700},[581,972,718],{"class":704},[581,974,975],{"class":590},"@\u002Flib\u002Fauth",[581,977,723],{"class":704},[581,979,980],{"class":583,"line":758},[581,981,730],{"emptyLinePlaceholder":729},[581,983,984,986,988,990,992],{"class":583,"line":785},[581,985,737],{"class":736},[581,987,740],{"class":708},[581,989,743],{"class":704},[581,991,709],{"class":746},[581,993,994],{"class":708},"(auth)\n",[581,996,997],{"class":583,"line":794},[581,998,730],{"emptyLinePlaceholder":729},[581,1000,1001,1003,1006,1009,1011,1013,1015,1017,1019,1022,1024,1027,1029,1031],{"class":583,"line":799},[581,1002,802],{"class":700},[581,1004,1005],{"class":736}," const",[581,1007,1008],{"class":708}," POST ",[581,1010,743],{"class":704},[581,1012,923],{"class":746},[581,1014,811],{"class":708},[581,1016,814],{"class":736},[581,1018,817],{"class":704},[581,1020,1021],{"class":820},"request",[581,1023,765],{"class":704},[581,1025,1026],{"class":587}," Request",[581,1028,824],{"class":704},[581,1030,827],{"class":736},[581,1032,755],{"class":704},[581,1034,1035,1038,1041,1044,1046],{"class":583,"line":832},[581,1036,1037],{"class":736},"  const",[581,1039,1040],{"class":708}," log",[581,1042,1043],{"class":704}," =",[581,1045,928],{"class":746},[581,1047,1048],{"class":761},"()\n",[581,1050,1051,1053,1055,1057,1059,1061,1064,1066,1068],{"class":583,"line":862},[581,1052,865],{"class":700},[581,1054,868],{"class":746},[581,1056,811],{"class":761},[581,1058,853],{"class":708},[581,1060,752],{"class":704},[581,1062,1063],{"class":708}," request",[581,1065,845],{"class":704},[581,1067,890],{"class":708},[581,1069,791],{"class":761},[581,1071,1072,1075,1077,1080,1082,1085,1088,1090,1092,1095,1097,1099],{"class":583,"line":904},[581,1073,1074],{"class":708},"  log",[581,1076,845],{"class":704},[581,1078,1079],{"class":746},"set",[581,1081,811],{"class":761},[581,1083,1084],{"class":704},"{",[581,1086,1087],{"class":761}," action",[581,1089,765],{"class":704},[581,1091,718],{"class":704},[581,1093,1094],{"class":590},"checkout",[581,1096,771],{"class":704},[581,1098,712],{"class":704},[581,1100,791],{"class":761},[581,1102,1104,1107,1110,1112,1115,1117,1119,1122,1124,1128,1130],{"class":583,"line":1103},11,[581,1105,1106],{"class":700},"  return",[581,1108,1109],{"class":708}," Response",[581,1111,845],{"class":704},[581,1113,1114],{"class":746},"json",[581,1116,811],{"class":761},[581,1118,1084],{"class":704},[581,1120,1121],{"class":761}," success",[581,1123,765],{"class":704},[581,1125,1127],{"class":1126},"sfNiH"," true",[581,1129,712],{"class":704},[581,1131,791],{"class":761},[581,1133,1135,1137],{"class":583,"line":1134},12,[581,1136,788],{"class":704},[581,1138,791],{"class":708},[571,1140,1143],{"className":690,"code":1141,"filename":1142,"language":693,"meta":577,"style":577},"import { createAuthMiddleware } from 'evlog\u002Fbetter-auth'\n\nconst identify = createAuthMiddleware(auth, {\n  exclude: ['\u002Fapi\u002Fauth\u002F**'],\n})\n\napp.use(async (req, res, next) => {\n  await identify(req.log, req.headers, req.path)\n  next()\n})\n","src\u002Findex.ts (Express)",[525,1144,1145,1163,1167,1183,1201,1207,1211,1246,1279,1286],{"__ignoreMap":577},[581,1146,1147,1149,1151,1153,1155,1157,1159,1161],{"class":583,"line":584},[581,1148,701],{"class":700},[581,1150,705],{"class":704},[581,1152,709],{"class":708},[581,1154,712],{"class":704},[581,1156,715],{"class":700},[581,1158,718],{"class":704},[581,1160,527],{"class":590},[581,1162,723],{"class":704},[581,1164,1165],{"class":583,"line":726},[581,1166,730],{"emptyLinePlaceholder":729},[581,1168,1169,1171,1173,1175,1177,1179,1181],{"class":583,"line":733},[581,1170,737],{"class":736},[581,1172,740],{"class":708},[581,1174,743],{"class":704},[581,1176,709],{"class":746},[581,1178,749],{"class":708},[581,1180,752],{"class":704},[581,1182,755],{"class":704},[581,1184,1185,1187,1189,1191,1193,1195,1197,1199],{"class":583,"line":758},[581,1186,762],{"class":761},[581,1188,765],{"class":704},[581,1190,768],{"class":708},[581,1192,771],{"class":704},[581,1194,774],{"class":590},[581,1196,771],{"class":704},[581,1198,779],{"class":708},[581,1200,782],{"class":704},[581,1202,1203,1205],{"class":583,"line":785},[581,1204,788],{"class":704},[581,1206,791],{"class":708},[581,1208,1209],{"class":583,"line":794},[581,1210,730],{"emptyLinePlaceholder":729},[581,1212,1213,1216,1218,1221,1223,1225,1227,1230,1232,1235,1237,1240,1242,1244],{"class":583,"line":799},[581,1214,1215],{"class":708},"app",[581,1217,845],{"class":704},[581,1219,1220],{"class":746},"use",[581,1222,811],{"class":708},[581,1224,814],{"class":736},[581,1226,817],{"class":704},[581,1228,1229],{"class":820},"req",[581,1231,752],{"class":704},[581,1233,1234],{"class":820}," res",[581,1236,752],{"class":704},[581,1238,1239],{"class":820}," next",[581,1241,824],{"class":704},[581,1243,827],{"class":736},[581,1245,755],{"class":704},[581,1247,1248,1250,1252,1254,1256,1258,1260,1262,1265,1267,1269,1271,1273,1275,1277],{"class":583,"line":832},[581,1249,865],{"class":700},[581,1251,868],{"class":746},[581,1253,811],{"class":761},[581,1255,1229],{"class":708},[581,1257,845],{"class":704},[581,1259,853],{"class":708},[581,1261,752],{"class":704},[581,1263,1264],{"class":708}," req",[581,1266,845],{"class":704},[581,1268,890],{"class":708},[581,1270,752],{"class":704},[581,1272,1264],{"class":708},[581,1274,845],{"class":704},[581,1276,899],{"class":708},[581,1278,791],{"class":761},[581,1280,1281,1284],{"class":583,"line":862},[581,1282,1283],{"class":746},"  next",[581,1285,1048],{"class":761},[581,1287,1288,1290],{"class":583,"line":904},[581,1289,788],{"class":704},[581,1291,791],{"class":708},[571,1293,1296],{"className":690,"code":1294,"filename":1295,"language":693,"meta":577,"style":577},"import { createAuthMiddleware } from 'evlog\u002Fbetter-auth'\n\nconst identify = createAuthMiddleware(auth, {\n  exclude: ['\u002Fapi\u002Fauth\u002F**'],\n})\n\napp.use(async (c, next) => {\n  await identify(c.get('log'), c.req.raw.headers, c.req.path)\n  await next()\n})\n","src\u002Findex.ts (Hono)",[525,1297,1298,1316,1320,1336,1354,1360,1364,1391,1448,1456],{"__ignoreMap":577},[581,1299,1300,1302,1304,1306,1308,1310,1312,1314],{"class":583,"line":584},[581,1301,701],{"class":700},[581,1303,705],{"class":704},[581,1305,709],{"class":708},[581,1307,712],{"class":704},[581,1309,715],{"class":700},[581,1311,718],{"class":704},[581,1313,527],{"class":590},[581,1315,723],{"class":704},[581,1317,1318],{"class":583,"line":726},[581,1319,730],{"emptyLinePlaceholder":729},[581,1321,1322,1324,1326,1328,1330,1332,1334],{"class":583,"line":733},[581,1323,737],{"class":736},[581,1325,740],{"class":708},[581,1327,743],{"class":704},[581,1329,709],{"class":746},[581,1331,749],{"class":708},[581,1333,752],{"class":704},[581,1335,755],{"class":704},[581,1337,1338,1340,1342,1344,1346,1348,1350,1352],{"class":583,"line":758},[581,1339,762],{"class":761},[581,1341,765],{"class":704},[581,1343,768],{"class":708},[581,1345,771],{"class":704},[581,1347,774],{"class":590},[581,1349,771],{"class":704},[581,1351,779],{"class":708},[581,1353,782],{"class":704},[581,1355,1356,1358],{"class":583,"line":785},[581,1357,788],{"class":704},[581,1359,791],{"class":708},[581,1361,1362],{"class":583,"line":794},[581,1363,730],{"emptyLinePlaceholder":729},[581,1365,1366,1368,1370,1372,1374,1376,1378,1381,1383,1385,1387,1389],{"class":583,"line":799},[581,1367,1215],{"class":708},[581,1369,845],{"class":704},[581,1371,1220],{"class":746},[581,1373,811],{"class":708},[581,1375,814],{"class":736},[581,1377,817],{"class":704},[581,1379,1380],{"class":820},"c",[581,1382,752],{"class":704},[581,1384,1239],{"class":820},[581,1386,824],{"class":704},[581,1388,827],{"class":736},[581,1390,755],{"class":704},[581,1392,1393,1395,1397,1399,1401,1403,1406,1408,1410,1412,1414,1416,1418,1421,1423,1425,1427,1430,1432,1434,1436,1438,1440,1442,1444,1446],{"class":583,"line":832},[581,1394,865],{"class":700},[581,1396,868],{"class":746},[581,1398,811],{"class":761},[581,1400,1380],{"class":708},[581,1402,845],{"class":704},[581,1404,1405],{"class":746},"get",[581,1407,811],{"class":761},[581,1409,771],{"class":704},[581,1411,853],{"class":590},[581,1413,771],{"class":704},[581,1415,824],{"class":761},[581,1417,752],{"class":704},[581,1419,1420],{"class":708}," c",[581,1422,845],{"class":704},[581,1424,1229],{"class":708},[581,1426,845],{"class":704},[581,1428,1429],{"class":708},"raw",[581,1431,845],{"class":704},[581,1433,890],{"class":708},[581,1435,752],{"class":704},[581,1437,1420],{"class":708},[581,1439,845],{"class":704},[581,1441,1229],{"class":708},[581,1443,845],{"class":704},[581,1445,899],{"class":708},[581,1447,791],{"class":761},[581,1449,1450,1452,1454],{"class":583,"line":862},[581,1451,865],{"class":700},[581,1453,1239],{"class":746},[581,1455,1048],{"class":761},[581,1457,1458,1460],{"class":583,"line":904},[581,1459,788],{"class":704},[581,1461,791],{"class":708},[571,1463,1466],{"className":690,"code":1464,"filename":1465,"language":693,"meta":577,"style":577},"import { createAuthMiddleware } from 'evlog\u002Fbetter-auth'\n\nconst identify = createAuthMiddleware(auth, {\n  exclude: ['\u002Fapi\u002Fauth\u002F**'],\n})\n\napp.addHook('onRequest', async (request) => {\n  await identify(request.log, request.headers, request.url)\n})\n","src\u002Findex.ts (Fastify)",[525,1467,1468,1486,1490,1506,1524,1530,1534,1567,1600],{"__ignoreMap":577},[581,1469,1470,1472,1474,1476,1478,1480,1482,1484],{"class":583,"line":584},[581,1471,701],{"class":700},[581,1473,705],{"class":704},[581,1475,709],{"class":708},[581,1477,712],{"class":704},[581,1479,715],{"class":700},[581,1481,718],{"class":704},[581,1483,527],{"class":590},[581,1485,723],{"class":704},[581,1487,1488],{"class":583,"line":726},[581,1489,730],{"emptyLinePlaceholder":729},[581,1491,1492,1494,1496,1498,1500,1502,1504],{"class":583,"line":733},[581,1493,737],{"class":736},[581,1495,740],{"class":708},[581,1497,743],{"class":704},[581,1499,709],{"class":746},[581,1501,749],{"class":708},[581,1503,752],{"class":704},[581,1505,755],{"class":704},[581,1507,1508,1510,1512,1514,1516,1518,1520,1522],{"class":583,"line":758},[581,1509,762],{"class":761},[581,1511,765],{"class":704},[581,1513,768],{"class":708},[581,1515,771],{"class":704},[581,1517,774],{"class":590},[581,1519,771],{"class":704},[581,1521,779],{"class":708},[581,1523,782],{"class":704},[581,1525,1526,1528],{"class":583,"line":785},[581,1527,788],{"class":704},[581,1529,791],{"class":708},[581,1531,1532],{"class":583,"line":794},[581,1533,730],{"emptyLinePlaceholder":729},[581,1535,1536,1538,1540,1543,1545,1547,1550,1552,1554,1557,1559,1561,1563,1565],{"class":583,"line":799},[581,1537,1215],{"class":708},[581,1539,845],{"class":704},[581,1541,1542],{"class":746},"addHook",[581,1544,811],{"class":708},[581,1546,771],{"class":704},[581,1548,1549],{"class":590},"onRequest",[581,1551,771],{"class":704},[581,1553,752],{"class":704},[581,1555,1556],{"class":736}," async",[581,1558,817],{"class":704},[581,1560,1021],{"class":820},[581,1562,824],{"class":704},[581,1564,827],{"class":736},[581,1566,755],{"class":704},[581,1568,1569,1571,1573,1575,1577,1579,1581,1583,1585,1587,1589,1591,1593,1595,1598],{"class":583,"line":832},[581,1570,865],{"class":700},[581,1572,868],{"class":746},[581,1574,811],{"class":761},[581,1576,1021],{"class":708},[581,1578,845],{"class":704},[581,1580,853],{"class":708},[581,1582,752],{"class":704},[581,1584,1063],{"class":708},[581,1586,845],{"class":704},[581,1588,890],{"class":708},[581,1590,752],{"class":704},[581,1592,1063],{"class":708},[581,1594,845],{"class":704},[581,1596,1597],{"class":708},"url",[581,1599,791],{"class":761},[581,1601,1602,1604],{"class":583,"line":862},[581,1603,788],{"class":704},[581,1605,791],{"class":708},[571,1607,1610],{"className":690,"code":1608,"filename":1609,"language":693,"meta":577,"style":577},"import { createAuthMiddleware } from 'evlog\u002Fbetter-auth'\n\nconst identify = createAuthMiddleware(auth, {\n  exclude: ['\u002Fapi\u002Fauth\u002F**'],\n})\n\napp.derive(async ({ log, request }) => {\n  await identify(log, request.headers, new URL(request.url).pathname)\n  return {}\n})\n","src\u002Findex.ts (Elysia)",[525,1611,1612,1630,1634,1650,1668,1674,1678,1707,1750,1757],{"__ignoreMap":577},[581,1613,1614,1616,1618,1620,1622,1624,1626,1628],{"class":583,"line":584},[581,1615,701],{"class":700},[581,1617,705],{"class":704},[581,1619,709],{"class":708},[581,1621,712],{"class":704},[581,1623,715],{"class":700},[581,1625,718],{"class":704},[581,1627,527],{"class":590},[581,1629,723],{"class":704},[581,1631,1632],{"class":583,"line":726},[581,1633,730],{"emptyLinePlaceholder":729},[581,1635,1636,1638,1640,1642,1644,1646,1648],{"class":583,"line":733},[581,1637,737],{"class":736},[581,1639,740],{"class":708},[581,1641,743],{"class":704},[581,1643,709],{"class":746},[581,1645,749],{"class":708},[581,1647,752],{"class":704},[581,1649,755],{"class":704},[581,1651,1652,1654,1656,1658,1660,1662,1664,1666],{"class":583,"line":758},[581,1653,762],{"class":761},[581,1655,765],{"class":704},[581,1657,768],{"class":708},[581,1659,771],{"class":704},[581,1661,774],{"class":590},[581,1663,771],{"class":704},[581,1665,779],{"class":708},[581,1667,782],{"class":704},[581,1669,1670,1672],{"class":583,"line":785},[581,1671,788],{"class":704},[581,1673,791],{"class":708},[581,1675,1676],{"class":583,"line":794},[581,1677,730],{"emptyLinePlaceholder":729},[581,1679,1680,1682,1684,1687,1689,1691,1694,1696,1698,1700,1703,1705],{"class":583,"line":799},[581,1681,1215],{"class":708},[581,1683,845],{"class":704},[581,1685,1686],{"class":746},"derive",[581,1688,811],{"class":708},[581,1690,814],{"class":736},[581,1692,1693],{"class":704}," ({",[581,1695,1040],{"class":820},[581,1697,752],{"class":704},[581,1699,1063],{"class":820},[581,1701,1702],{"class":704}," })",[581,1704,827],{"class":736},[581,1706,755],{"class":704},[581,1708,1709,1711,1713,1715,1717,1719,1721,1723,1725,1727,1730,1733,1735,1737,1739,1741,1743,1745,1748],{"class":583,"line":832},[581,1710,865],{"class":700},[581,1712,868],{"class":746},[581,1714,811],{"class":761},[581,1716,853],{"class":708},[581,1718,752],{"class":704},[581,1720,1063],{"class":708},[581,1722,845],{"class":704},[581,1724,890],{"class":708},[581,1726,752],{"class":704},[581,1728,1729],{"class":704}," new",[581,1731,1732],{"class":746}," URL",[581,1734,811],{"class":761},[581,1736,1021],{"class":708},[581,1738,845],{"class":704},[581,1740,1597],{"class":708},[581,1742,824],{"class":761},[581,1744,845],{"class":704},[581,1746,1747],{"class":708},"pathname",[581,1749,791],{"class":761},[581,1751,1752,1754],{"class":583,"line":862},[581,1753,1106],{"class":700},[581,1755,1756],{"class":704}," {}\n",[581,1758,1759,1761],{"class":583,"line":904},[581,1760,788],{"class":704},[581,1762,791],{"class":708},[571,1764,1767],{"className":690,"code":1765,"filename":1766,"language":693,"meta":577,"style":577},"import { createAuthMiddleware } from 'evlog\u002Fbetter-auth'\nimport { useLogger } from 'evlog\u002Fnestjs'\n\nconst identify = createAuthMiddleware(auth, {\n  exclude: ['\u002Fapi\u002Fauth\u002F**'],\n})\n\n@Injectable()\nexport class AuthIdentifyMiddleware implements NestMiddleware {\n  async use(req: Request, res: Response, next: NextFunction) {\n    await identify(useLogger(), req.headers, req.path)\n    next()\n  }\n}\n","src\u002Fauth-identify.middleware.ts (NestJS)",[525,1768,1769,1787,1806,1810,1826,1844,1850,1854,1864,1882,1919,1952,1959,1965],{"__ignoreMap":577},[581,1770,1771,1773,1775,1777,1779,1781,1783,1785],{"class":583,"line":584},[581,1772,701],{"class":700},[581,1774,705],{"class":704},[581,1776,709],{"class":708},[581,1778,712],{"class":704},[581,1780,715],{"class":700},[581,1782,718],{"class":704},[581,1784,527],{"class":590},[581,1786,723],{"class":704},[581,1788,1789,1791,1793,1795,1797,1799,1801,1804],{"class":583,"line":726},[581,1790,701],{"class":700},[581,1792,705],{"class":704},[581,1794,928],{"class":708},[581,1796,712],{"class":704},[581,1798,715],{"class":700},[581,1800,718],{"class":704},[581,1802,1803],{"class":590},"evlog\u002Fnestjs",[581,1805,723],{"class":704},[581,1807,1808],{"class":583,"line":733},[581,1809,730],{"emptyLinePlaceholder":729},[581,1811,1812,1814,1816,1818,1820,1822,1824],{"class":583,"line":758},[581,1813,737],{"class":736},[581,1815,740],{"class":708},[581,1817,743],{"class":704},[581,1819,709],{"class":746},[581,1821,749],{"class":708},[581,1823,752],{"class":704},[581,1825,755],{"class":704},[581,1827,1828,1830,1832,1834,1836,1838,1840,1842],{"class":583,"line":785},[581,1829,762],{"class":761},[581,1831,765],{"class":704},[581,1833,768],{"class":708},[581,1835,771],{"class":704},[581,1837,774],{"class":590},[581,1839,771],{"class":704},[581,1841,779],{"class":708},[581,1843,782],{"class":704},[581,1845,1846,1848],{"class":583,"line":794},[581,1847,788],{"class":704},[581,1849,791],{"class":708},[581,1851,1852],{"class":583,"line":799},[581,1853,730],{"emptyLinePlaceholder":729},[581,1855,1856,1859,1862],{"class":583,"line":832},[581,1857,1858],{"class":704},"@",[581,1860,1861],{"class":746},"Injectable",[581,1863,1048],{"class":708},[581,1865,1866,1868,1871,1874,1877,1880],{"class":583,"line":862},[581,1867,802],{"class":700},[581,1869,1870],{"class":736}," class",[581,1872,1873],{"class":587}," AuthIdentifyMiddleware",[581,1875,1876],{"class":736}," implements",[581,1878,1879],{"class":587}," NestMiddleware",[581,1881,755],{"class":704},[581,1883,1884,1887,1890,1892,1894,1896,1898,1900,1902,1904,1906,1908,1910,1912,1915,1917],{"class":583,"line":904},[581,1885,1886],{"class":736},"  async",[581,1888,1889],{"class":761}," use",[581,1891,811],{"class":704},[581,1893,1229],{"class":820},[581,1895,765],{"class":704},[581,1897,1026],{"class":587},[581,1899,752],{"class":704},[581,1901,1234],{"class":820},[581,1903,765],{"class":704},[581,1905,1109],{"class":587},[581,1907,752],{"class":704},[581,1909,1239],{"class":820},[581,1911,765],{"class":704},[581,1913,1914],{"class":587}," NextFunction",[581,1916,824],{"class":704},[581,1918,755],{"class":704},[581,1920,1921,1924,1926,1928,1931,1934,1936,1938,1940,1942,1944,1946,1948,1950],{"class":583,"line":1103},[581,1922,1923],{"class":700},"    await",[581,1925,868],{"class":746},[581,1927,811],{"class":761},[581,1929,1930],{"class":746},"useLogger",[581,1932,1933],{"class":761},"()",[581,1935,752],{"class":704},[581,1937,1264],{"class":708},[581,1939,845],{"class":704},[581,1941,890],{"class":708},[581,1943,752],{"class":704},[581,1945,1264],{"class":708},[581,1947,845],{"class":704},[581,1949,899],{"class":708},[581,1951,791],{"class":761},[581,1953,1954,1957],{"class":583,"line":1134},[581,1955,1956],{"class":746},"    next",[581,1958,1048],{"class":761},[581,1960,1962],{"class":583,"line":1961},13,[581,1963,1964],{"class":704},"  }\n",[581,1966,1968],{"class":583,"line":1967},14,[581,1969,1970],{"class":704},"}\n",[571,1972,1975],{"className":690,"code":1973,"filename":1974,"language":693,"meta":577,"style":577},"import { identifyUser } from 'evlog\u002Fbetter-auth'\nimport { createLogger } from 'evlog'\n\nconst log = createLogger()\nconst session = await auth.api.getSession({ headers })\nif (session) identifyUser(log, session)\nlog.emit()\n","scripts\u002Fsync-job.ts (Standalone)",[525,1976,1977,1996,2015,2019,2032,2067,2086],{"__ignoreMap":577},[581,1978,1979,1981,1983,1986,1988,1990,1992,1994],{"class":583,"line":584},[581,1980,701],{"class":700},[581,1982,705],{"class":704},[581,1984,1985],{"class":708}," identifyUser",[581,1987,712],{"class":704},[581,1989,715],{"class":700},[581,1991,718],{"class":704},[581,1993,527],{"class":590},[581,1995,723],{"class":704},[581,1997,1998,2000,2002,2005,2007,2009,2011,2013],{"class":583,"line":726},[581,1999,701],{"class":700},[581,2001,705],{"class":704},[581,2003,2004],{"class":708}," createLogger",[581,2006,712],{"class":704},[581,2008,715],{"class":700},[581,2010,718],{"class":704},[581,2012,555],{"class":590},[581,2014,723],{"class":704},[581,2016,2017],{"class":583,"line":733},[581,2018,730],{"emptyLinePlaceholder":729},[581,2020,2021,2023,2026,2028,2030],{"class":583,"line":758},[581,2022,737],{"class":736},[581,2024,2025],{"class":708}," log ",[581,2027,743],{"class":704},[581,2029,2004],{"class":746},[581,2031,1048],{"class":708},[581,2033,2034,2036,2039,2041,2044,2046,2048,2051,2053,2056,2058,2060,2063,2065],{"class":583,"line":785},[581,2035,737],{"class":736},[581,2037,2038],{"class":708}," session ",[581,2040,743],{"class":704},[581,2042,2043],{"class":700}," await",[581,2045,966],{"class":708},[581,2047,845],{"class":704},[581,2049,2050],{"class":708},"api",[581,2052,845],{"class":704},[581,2054,2055],{"class":746},"getSession",[581,2057,811],{"class":708},[581,2059,1084],{"class":704},[581,2061,2062],{"class":708}," headers ",[581,2064,788],{"class":704},[581,2066,791],{"class":708},[581,2068,2069,2072,2075,2078,2081,2083],{"class":583,"line":794},[581,2070,2071],{"class":700},"if",[581,2073,2074],{"class":708}," (session) ",[581,2076,2077],{"class":746},"identifyUser",[581,2079,2080],{"class":708},"(log",[581,2082,752],{"class":704},[581,2084,2085],{"class":708}," session)\n",[581,2087,2088,2090,2092,2095],{"class":583,"line":799},[581,2089,853],{"class":708},[581,2091,845],{"class":704},[581,2093,2094],{"class":746},"emit",[581,2096,1048],{"class":708},[522,2098,2099],{},"Your wide event now includes the user:",[568,2101,2102,2279],{},[571,2103,2107],{"className":2104,"code":2105,"filename":2106,"language":1114,"meta":577,"style":577},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"level\": \"info\",\n  \"method\": \"POST\",\n  \"path\": \"\u002Fapi\u002Fcheckout\",\n  \"status\": 200,\n  \"duration\": \"120ms\",\n  \"requestId\": \"a5669202-7765-4f59-b6f0-b9f40ce71599\",\n  \"cart\": { \"items\": 3, \"total\": 9999 }\n}\n","Before — anonymous",[525,2108,2109,2114,2137,2157,2176,2193,2213,2233,2275],{"__ignoreMap":577},[581,2110,2111],{"class":583,"line":584},[581,2112,2113],{"class":704},"{\n",[581,2115,2116,2119,2122,2125,2127,2130,2133,2135],{"class":583,"line":726},[581,2117,2118],{"class":704},"  \"",[581,2120,2121],{"class":736},"level",[581,2123,2124],{"class":704},"\"",[581,2126,765],{"class":704},[581,2128,2129],{"class":704}," \"",[581,2131,2132],{"class":590},"info",[581,2134,2124],{"class":704},[581,2136,782],{"class":704},[581,2138,2139,2141,2144,2146,2148,2150,2153,2155],{"class":583,"line":733},[581,2140,2118],{"class":704},[581,2142,2143],{"class":736},"method",[581,2145,2124],{"class":704},[581,2147,765],{"class":704},[581,2149,2129],{"class":704},[581,2151,2152],{"class":590},"POST",[581,2154,2124],{"class":704},[581,2156,782],{"class":704},[581,2158,2159,2161,2163,2165,2167,2169,2172,2174],{"class":583,"line":758},[581,2160,2118],{"class":704},[581,2162,899],{"class":736},[581,2164,2124],{"class":704},[581,2166,765],{"class":704},[581,2168,2129],{"class":704},[581,2170,2171],{"class":590},"\u002Fapi\u002Fcheckout",[581,2173,2124],{"class":704},[581,2175,782],{"class":704},[581,2177,2178,2180,2183,2185,2187,2191],{"class":583,"line":785},[581,2179,2118],{"class":704},[581,2181,2182],{"class":736},"status",[581,2184,2124],{"class":704},[581,2186,765],{"class":704},[581,2188,2190],{"class":2189},"sbssI"," 200",[581,2192,782],{"class":704},[581,2194,2195,2197,2200,2202,2204,2206,2209,2211],{"class":583,"line":794},[581,2196,2118],{"class":704},[581,2198,2199],{"class":736},"duration",[581,2201,2124],{"class":704},[581,2203,765],{"class":704},[581,2205,2129],{"class":704},[581,2207,2208],{"class":590},"120ms",[581,2210,2124],{"class":704},[581,2212,782],{"class":704},[581,2214,2215,2217,2220,2222,2224,2226,2229,2231],{"class":583,"line":799},[581,2216,2118],{"class":704},[581,2218,2219],{"class":736},"requestId",[581,2221,2124],{"class":704},[581,2223,765],{"class":704},[581,2225,2129],{"class":704},[581,2227,2228],{"class":590},"a5669202-7765-4f59-b6f0-b9f40ce71599",[581,2230,2124],{"class":704},[581,2232,782],{"class":704},[581,2234,2235,2237,2240,2242,2244,2246,2248,2251,2253,2255,2258,2260,2262,2265,2267,2269,2272],{"class":583,"line":832},[581,2236,2118],{"class":704},[581,2238,2239],{"class":736},"cart",[581,2241,2124],{"class":704},[581,2243,765],{"class":704},[581,2245,705],{"class":704},[581,2247,2129],{"class":704},[581,2249,2250],{"class":587},"items",[581,2252,2124],{"class":704},[581,2254,765],{"class":704},[581,2256,2257],{"class":2189}," 3",[581,2259,752],{"class":704},[581,2261,2129],{"class":704},[581,2263,2264],{"class":587},"total",[581,2266,2124],{"class":704},[581,2268,765],{"class":704},[581,2270,2271],{"class":2189}," 9999",[581,2273,2274],{"class":704}," }\n",[581,2276,2277],{"class":583,"line":862},[581,2278,1970],{"class":704},[571,2280,2283],{"className":2104,"code":2281,"filename":2282,"language":1114,"meta":577,"style":577},"{\n  \"level\": \"info\",\n  \"method\": \"POST\",\n  \"path\": \"\u002Fapi\u002Fcheckout\",\n  \"status\": 200,\n  \"duration\": \"120ms\",\n  \"requestId\": \"a5669202-7765-4f59-b6f0-b9f40ce71599\",\n  \"userId\": \"QBX9tPjJQExWawAbNll75\",\n  \"user\": {\n    \"id\": \"QBX9tPjJQExWawAbNll75\",\n    \"name\": \"Hugo Richard\",\n    \"email\": \"hugo@example.com\",\n    \"emailVerified\": true,\n    \"createdAt\": \"2024-01-15T10:00:00.000Z\"\n  },\n  \"session\": {\n    \"id\": \"Xhmh6TxKJQrVKFX0Y0II\",\n    \"expiresAt\": \"2024-01-22T10:00:00.000Z\",\n    \"ipAddress\": \"192.168.1.42\",\n    \"userAgent\": \"Mozilla\u002F5.0 (Macintosh; Intel Mac OS X 10_15_7)\",\n    \"createdAt\": \"2024-01-15T10:00:00.000Z\"\n  },\n  \"auth\": {\n    \"resolvedIn\": 12,\n    \"identified\": true\n  },\n  \"cart\": { \"items\": 3, \"total\": 9999 }\n}\n","After — identified",[525,2284,2285,2289,2307,2325,2343,2357,2375,2393,2413,2426,2446,2466,2486,2500,2519,2525,2539,2559,2580,2601,2622,2639,2644,2658,2675,2690,2695,2732],{"__ignoreMap":577},[581,2286,2287],{"class":583,"line":584},[581,2288,2113],{"class":704},[581,2290,2291,2293,2295,2297,2299,2301,2303,2305],{"class":583,"line":726},[581,2292,2118],{"class":704},[581,2294,2121],{"class":736},[581,2296,2124],{"class":704},[581,2298,765],{"class":704},[581,2300,2129],{"class":704},[581,2302,2132],{"class":590},[581,2304,2124],{"class":704},[581,2306,782],{"class":704},[581,2308,2309,2311,2313,2315,2317,2319,2321,2323],{"class":583,"line":733},[581,2310,2118],{"class":704},[581,2312,2143],{"class":736},[581,2314,2124],{"class":704},[581,2316,765],{"class":704},[581,2318,2129],{"class":704},[581,2320,2152],{"class":590},[581,2322,2124],{"class":704},[581,2324,782],{"class":704},[581,2326,2327,2329,2331,2333,2335,2337,2339,2341],{"class":583,"line":758},[581,2328,2118],{"class":704},[581,2330,899],{"class":736},[581,2332,2124],{"class":704},[581,2334,765],{"class":704},[581,2336,2129],{"class":704},[581,2338,2171],{"class":590},[581,2340,2124],{"class":704},[581,2342,782],{"class":704},[581,2344,2345,2347,2349,2351,2353,2355],{"class":583,"line":785},[581,2346,2118],{"class":704},[581,2348,2182],{"class":736},[581,2350,2124],{"class":704},[581,2352,765],{"class":704},[581,2354,2190],{"class":2189},[581,2356,782],{"class":704},[581,2358,2359,2361,2363,2365,2367,2369,2371,2373],{"class":583,"line":794},[581,2360,2118],{"class":704},[581,2362,2199],{"class":736},[581,2364,2124],{"class":704},[581,2366,765],{"class":704},[581,2368,2129],{"class":704},[581,2370,2208],{"class":590},[581,2372,2124],{"class":704},[581,2374,782],{"class":704},[581,2376,2377,2379,2381,2383,2385,2387,2389,2391],{"class":583,"line":799},[581,2378,2118],{"class":704},[581,2380,2219],{"class":736},[581,2382,2124],{"class":704},[581,2384,765],{"class":704},[581,2386,2129],{"class":704},[581,2388,2228],{"class":590},[581,2390,2124],{"class":704},[581,2392,782],{"class":704},[581,2394,2395,2397,2400,2402,2404,2406,2409,2411],{"class":583,"line":832},[581,2396,2118],{"class":704},[581,2398,2399],{"class":736},"userId",[581,2401,2124],{"class":704},[581,2403,765],{"class":704},[581,2405,2129],{"class":704},[581,2407,2408],{"class":590},"QBX9tPjJQExWawAbNll75",[581,2410,2124],{"class":704},[581,2412,782],{"class":704},[581,2414,2415,2417,2420,2422,2424],{"class":583,"line":862},[581,2416,2118],{"class":704},[581,2418,2419],{"class":736},"user",[581,2421,2124],{"class":704},[581,2423,765],{"class":704},[581,2425,755],{"class":704},[581,2427,2428,2431,2434,2436,2438,2440,2442,2444],{"class":583,"line":904},[581,2429,2430],{"class":704},"    \"",[581,2432,2433],{"class":587},"id",[581,2435,2124],{"class":704},[581,2437,765],{"class":704},[581,2439,2129],{"class":704},[581,2441,2408],{"class":590},[581,2443,2124],{"class":704},[581,2445,782],{"class":704},[581,2447,2448,2450,2453,2455,2457,2459,2462,2464],{"class":583,"line":1103},[581,2449,2430],{"class":704},[581,2451,2452],{"class":587},"name",[581,2454,2124],{"class":704},[581,2456,765],{"class":704},[581,2458,2129],{"class":704},[581,2460,2461],{"class":590},"Hugo Richard",[581,2463,2124],{"class":704},[581,2465,782],{"class":704},[581,2467,2468,2470,2473,2475,2477,2479,2482,2484],{"class":583,"line":1134},[581,2469,2430],{"class":704},[581,2471,2472],{"class":587},"email",[581,2474,2124],{"class":704},[581,2476,765],{"class":704},[581,2478,2129],{"class":704},[581,2480,2481],{"class":590},"hugo@example.com",[581,2483,2124],{"class":704},[581,2485,782],{"class":704},[581,2487,2488,2490,2493,2495,2497],{"class":583,"line":1961},[581,2489,2430],{"class":704},[581,2491,2492],{"class":587},"emailVerified",[581,2494,2124],{"class":704},[581,2496,765],{"class":704},[581,2498,2499],{"class":704}," true,\n",[581,2501,2502,2504,2507,2509,2511,2513,2516],{"class":583,"line":1967},[581,2503,2430],{"class":704},[581,2505,2506],{"class":587},"createdAt",[581,2508,2124],{"class":704},[581,2510,765],{"class":704},[581,2512,2129],{"class":704},[581,2514,2515],{"class":590},"2024-01-15T10:00:00.000Z",[581,2517,2518],{"class":704},"\"\n",[581,2520,2522],{"class":583,"line":2521},15,[581,2523,2524],{"class":704},"  },\n",[581,2526,2528,2530,2533,2535,2537],{"class":583,"line":2527},16,[581,2529,2118],{"class":704},[581,2531,2532],{"class":736},"session",[581,2534,2124],{"class":704},[581,2536,765],{"class":704},[581,2538,755],{"class":704},[581,2540,2542,2544,2546,2548,2550,2552,2555,2557],{"class":583,"line":2541},17,[581,2543,2430],{"class":704},[581,2545,2433],{"class":587},[581,2547,2124],{"class":704},[581,2549,765],{"class":704},[581,2551,2129],{"class":704},[581,2553,2554],{"class":590},"Xhmh6TxKJQrVKFX0Y0II",[581,2556,2124],{"class":704},[581,2558,782],{"class":704},[581,2560,2562,2564,2567,2569,2571,2573,2576,2578],{"class":583,"line":2561},18,[581,2563,2430],{"class":704},[581,2565,2566],{"class":587},"expiresAt",[581,2568,2124],{"class":704},[581,2570,765],{"class":704},[581,2572,2129],{"class":704},[581,2574,2575],{"class":590},"2024-01-22T10:00:00.000Z",[581,2577,2124],{"class":704},[581,2579,782],{"class":704},[581,2581,2583,2585,2588,2590,2592,2594,2597,2599],{"class":583,"line":2582},19,[581,2584,2430],{"class":704},[581,2586,2587],{"class":587},"ipAddress",[581,2589,2124],{"class":704},[581,2591,765],{"class":704},[581,2593,2129],{"class":704},[581,2595,2596],{"class":590},"192.168.1.42",[581,2598,2124],{"class":704},[581,2600,782],{"class":704},[581,2602,2604,2606,2609,2611,2613,2615,2618,2620],{"class":583,"line":2603},20,[581,2605,2430],{"class":704},[581,2607,2608],{"class":587},"userAgent",[581,2610,2124],{"class":704},[581,2612,765],{"class":704},[581,2614,2129],{"class":704},[581,2616,2617],{"class":590},"Mozilla\u002F5.0 (Macintosh; Intel Mac OS X 10_15_7)",[581,2619,2124],{"class":704},[581,2621,782],{"class":704},[581,2623,2625,2627,2629,2631,2633,2635,2637],{"class":583,"line":2624},21,[581,2626,2430],{"class":704},[581,2628,2506],{"class":587},[581,2630,2124],{"class":704},[581,2632,765],{"class":704},[581,2634,2129],{"class":704},[581,2636,2515],{"class":590},[581,2638,2518],{"class":704},[581,2640,2642],{"class":583,"line":2641},22,[581,2643,2524],{"class":704},[581,2645,2647,2649,2652,2654,2656],{"class":583,"line":2646},23,[581,2648,2118],{"class":704},[581,2650,2651],{"class":736},"auth",[581,2653,2124],{"class":704},[581,2655,765],{"class":704},[581,2657,755],{"class":704},[581,2659,2661,2663,2666,2668,2670,2673],{"class":583,"line":2660},24,[581,2662,2430],{"class":704},[581,2664,2665],{"class":587},"resolvedIn",[581,2667,2124],{"class":704},[581,2669,765],{"class":704},[581,2671,2672],{"class":2189}," 12",[581,2674,782],{"class":704},[581,2676,2678,2680,2683,2685,2687],{"class":583,"line":2677},25,[581,2679,2430],{"class":704},[581,2681,2682],{"class":587},"identified",[581,2684,2124],{"class":704},[581,2686,765],{"class":704},[581,2688,2689],{"class":704}," true\n",[581,2691,2693],{"class":583,"line":2692},26,[581,2694,2524],{"class":704},[581,2696,2698,2700,2702,2704,2706,2708,2710,2712,2714,2716,2718,2720,2722,2724,2726,2728,2730],{"class":583,"line":2697},27,[581,2699,2118],{"class":704},[581,2701,2239],{"class":736},[581,2703,2124],{"class":704},[581,2705,765],{"class":704},[581,2707,705],{"class":704},[581,2709,2129],{"class":704},[581,2711,2250],{"class":587},[581,2713,2124],{"class":704},[581,2715,765],{"class":704},[581,2717,2257],{"class":2189},[581,2719,752],{"class":704},[581,2721,2129],{"class":704},[581,2723,2264],{"class":587},[581,2725,2124],{"class":704},[581,2727,765],{"class":704},[581,2729,2271],{"class":2189},[581,2731,2274],{"class":704},[581,2733,2735],{"class":583,"line":2734},28,[581,2736,1970],{"class":704},[534,2738,2740],{"id":2739},"how-it-works","How It Works",[2742,2743],"better-auth-identify",{},[522,2745,2746,2747,2750,2751,2754,2755,2758],{},"The integration resolves the Better Auth session from request cookies, extracts a safe whitelist of user and session fields, sets them on the logger, then fires the ",[525,2748,2749],{},"onIdentify"," (or ",[525,2752,2753],{},"onAnonymous",") hook. Auth routes are skipped by default. Resolution timing is captured on ",[525,2756,2757],{},"auth.resolvedIn",", so you can chart auth latency alongside the rest of the wide event.",[534,2760,2762],{"id":2761},"where-to-next","Where to next",[2764,2765,2766,2770,2781,2788],"card-group",{},[2767,2768,2769],"card",{"icon":353,"title":350,"to":351},"The core building block — extract safe fields, mask emails, capture plugin data (organizations, roles, 2FA).",[2767,2771,2772,2773,2776,2777,2780],{"icon":358,"title":355,"to":356},"Filter routes with ",[525,2774,2775],{},"include","\u002F",[525,2778,2779],{},"exclude",", react to identification with lifecycle hooks, and tune behaviour per app.",[2767,2782,2783,2784,2787],{"icon":310,"title":360,"to":361},"Mirror the user identity into client-side logs with ",[525,2785,2786],{},"setIdentity"," and the Better Auth client.",[2767,2789,2790],{"icon":107,"title":364,"to":365},"Watch session resolution time, enable session caching, and combine with the AI SDK integration.",[534,2792,2794],{"id":2793},"public-api","Public API",[2796,2797,2798,2811],"table",{},[2799,2800,2801],"thead",{},[2802,2803,2804,2808],"tr",{},[2805,2806,2807],"th",{},"Export",[2805,2809,2810],{},"Description",[2812,2813,2814,2829,2843,2859],"tbody",{},[2802,2815,2816,2822],{},[2817,2818,2819],"td",{},[525,2820,2821],{},"identifyUser(log, session)",[2817,2823,2824,2825,2828],{},"Core helper — extracts safe fields from a session and sets them on the logger. Returns ",[525,2826,2827],{},"true"," if identified.",[2802,2830,2831,2836],{},[2817,2832,2833],{},[525,2834,2835],{},"createAuthMiddleware(auth)",[2817,2837,2838,2839,2842],{},"Returns an async ",[525,2840,2841],{},"(log, headers, path?) => Promise\u003Cboolean>"," function with route filtering, timing, and hooks.",[2802,2844,2845,2850],{},[2817,2846,2847],{},[525,2848,2849],{},"createAuthIdentifier(auth)",[2817,2851,2852,2853,2855,2856,845],{},"Nitro ",[525,2854,1021],{}," hook factory for standalone Nitro apps. See ",[542,2857,364],{"href":2858},"\u002Fuse-cases\u002Fbetter-auth\u002Fperformance#standalone-nitro",[2802,2860,2861,2866],{},[2817,2862,2863],{},[525,2864,2865],{},"maskEmail(email)",[2817,2867,2868,2869,2871,2872,845],{},"Mask an email: ",[525,2870,2481],{}," → ",[525,2873,2874],{},"h***@example.com",[2876,2877,2878],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .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 .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 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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":577,"searchDepth":726,"depth":726,"links":2880},[2881,2882,2883,2884,2885],{"id":536,"depth":726,"text":537},{"id":682,"depth":726,"text":25},{"id":2739,"depth":726,"text":2740},{"id":2761,"depth":726,"text":2762},{"id":2793,"depth":726,"text":2794},"Automatically identify users on every request. Every wide event includes who made the request — userId, user profile, and session metadata — with zero manual work.","md",[2889,2892,2893,2894],{"label":350,"icon":353,"to":351,"color":2890,"variant":2891},"neutral","subtle",{"label":355,"icon":358,"to":356,"color":2890,"variant":2891},{"label":360,"icon":310,"to":361,"color":2890,"variant":2891},{"label":364,"icon":107,"to":365,"color":2890,"variant":2891},{},{"title":36,"icon":39},{"title":517,"description":2886},"j0pMaXE3dam_7zNQTpJ6fJpC_0GeqnWpbDS1DHEXEyY",[2900,2902],{"title":336,"path":337,"stem":338,"description":2901,"icon":339,"children":-1},"Add tool execution timing and total wall time with createEvlogIntegration. Compose with other middleware like supermemory or guardrails.",{"title":350,"path":351,"stem":352,"description":2903,"icon":353,"children":-1},"The core building block — extract safe user fields, mask emails, and capture plugin data (organizations, roles, 2FA) from a Better Auth session.",1785610605821]