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