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