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