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