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