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