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