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