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