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