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