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