[{"data":1,"prerenderedAt":4993},["ShallowReactive",2],{"navigation_docs":3,"-logging-better-auth":308,"-logging-better-auth-surround":4988},[4,35,80,124,212,292],{"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,75],{"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},"Client Logging","\u002Flogging\u002Fclient-logging","2.logging\u002F4.client-logging","i-lucide-monitor",{"title":66,"path":67,"stem":68,"icon":69},"AI SDK Integration","\u002Flogging\u002Fai-sdk","2.logging\u002F5.ai-sdk","i-simple-icons-vercel",{"title":71,"path":72,"stem":73,"icon":74},"Better Auth Integration","\u002Flogging\u002Fbetter-auth","2.logging\u002F6.better-auth","i-simple-icons-betterauth",{"title":76,"path":77,"stem":78,"icon":79},"Audit Logs","\u002Flogging\u002Faudit","2.logging\u002F7.audit","i-lucide-shield-check",{"title":81,"path":82,"stem":83,"children":84,"page":34},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[85,90,95,100,105,109,114,119],{"title":86,"path":87,"stem":88,"icon":89},"Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":91,"path":92,"stem":93,"icon":94},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F1.configuration","i-lucide-settings",{"title":96,"path":97,"stem":98,"icon":99},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F2.sampling","i-lucide-filter",{"title":101,"path":102,"stem":103,"icon":104},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F3.typed-fields","i-simple-icons-typescript",{"title":106,"path":107,"stem":108,"icon":79},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F4.best-practices",{"title":110,"path":111,"stem":112,"icon":113},"Performance","\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F5.performance","i-lucide-gauge",{"title":115,"path":116,"stem":117,"icon":118},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F6.vite-plugin","i-custom-vite",{"title":120,"path":121,"stem":122,"icon":123},"Auto-Redaction","\u002Fcore-concepts\u002Fredaction","3.core-concepts\u002F7.redaction","i-lucide-eye-off",{"title":125,"path":126,"stem":127,"children":128,"page":34},"Frameworks","\u002Fframeworks","4.frameworks",[129,133,138,143,148,153,158,163,168,173,178,183,188,193,197,202,207],{"title":41,"path":130,"stem":131,"icon":132},"\u002Fframeworks\u002Foverview","4.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":134,"path":135,"stem":136,"icon":137},"Nuxt","\u002Fframeworks\u002Fnuxt","4.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":139,"path":140,"stem":141,"icon":142},"Next.js","\u002Fframeworks\u002Fnextjs","4.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":144,"path":145,"stem":146,"icon":147},"SvelteKit","\u002Fframeworks\u002Fsveltekit","4.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":149,"path":150,"stem":151,"icon":152},"Nitro","\u002Fframeworks\u002Fnitro","4.frameworks\u002F04.nitro","i-custom-nitro",{"title":154,"path":155,"stem":156,"icon":157},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","4.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":159,"path":160,"stem":161,"icon":162},"NestJS","\u002Fframeworks\u002Fnestjs","4.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":164,"path":165,"stem":166,"icon":167},"Express","\u002Fframeworks\u002Fexpress","4.frameworks\u002F07.express","i-simple-icons-express",{"title":169,"path":170,"stem":171,"icon":172},"Hono","\u002Fframeworks\u002Fhono","4.frameworks\u002F08.hono","i-simple-icons-hono",{"title":174,"path":175,"stem":176,"icon":177},"Fastify","\u002Fframeworks\u002Ffastify","4.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":179,"path":180,"stem":181,"icon":182},"Elysia","\u002Fframeworks\u002Felysia","4.frameworks\u002F10.elysia","i-custom-elysia",{"title":184,"path":185,"stem":186,"icon":187},"React Router","\u002Fframeworks\u002Freact-router","4.frameworks\u002F11.react-router","i-custom-reactrouter",{"title":189,"path":190,"stem":191,"icon":192},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","4.frameworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":194,"path":195,"stem":196,"icon":104},"Standalone","\u002Fframeworks\u002Fstandalone","4.frameworks\u002F13.standalone",{"title":198,"path":199,"stem":200,"icon":201},"Astro","\u002Fframeworks\u002Fastro","4.frameworks\u002F14.astro","i-simple-icons-astro",{"title":203,"path":204,"stem":205,"icon":206},"AWS Lambda","\u002Fframeworks\u002Faws-lambda","4.frameworks\u002F16.aws-lambda","i-custom-lambda",{"title":208,"path":209,"stem":210,"icon":211},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","4.frameworks\u002F17.custom-integration","i-lucide-puzzle",{"title":213,"path":214,"stem":215,"children":216,"page":34},"Adapters","\u002Fadapters","6.adapters",[217,257,272],{"title":218,"path":219,"stem":220,"children":221,"page":34},"Cloud destinations","\u002Fadapters\u002Fcloud","6.adapters\u002F02.cloud",[222,227,232,237,242,247,252],{"title":223,"path":224,"stem":225,"icon":226},"Axiom","\u002Fadapters\u002Fcloud\u002Faxiom","6.adapters\u002F02.cloud\u002F01.axiom","i-custom-axiom",{"title":228,"path":229,"stem":230,"icon":231},"OTLP","\u002Fadapters\u002Fcloud\u002Fotlp","6.adapters\u002F02.cloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":233,"path":234,"stem":235,"icon":236},"PostHog","\u002Fadapters\u002Fcloud\u002Fposthog","6.adapters\u002F02.cloud\u002F03.posthog","i-simple-icons-posthog",{"title":238,"path":239,"stem":240,"icon":241},"Sentry","\u002Fadapters\u002Fcloud\u002Fsentry","6.adapters\u002F02.cloud\u002F04.sentry","i-simple-icons-sentry",{"title":243,"path":244,"stem":245,"icon":246},"Better Stack","\u002Fadapters\u002Fcloud\u002Fbetter-stack","6.adapters\u002F02.cloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":248,"path":249,"stem":250,"icon":251},"Datadog","\u002Fadapters\u002Fcloud\u002Fdatadog","6.adapters\u002F02.cloud\u002F06.datadog","i-simple-icons-datadog",{"title":253,"path":254,"stem":255,"icon":256},"HyperDX","\u002Fadapters\u002Fcloud\u002Fhyperdx","6.adapters\u002F02.cloud\u002F07.hyperdx","i-custom-hyperdx",{"title":258,"path":259,"stem":260,"children":261,"page":34},"Self-hosted","\u002Fadapters\u002Fself-hosted","6.adapters\u002F03.self-hosted",[262,267],{"title":263,"path":264,"stem":265,"icon":266},"File System","\u002Fadapters\u002Fself-hosted\u002Ffs","6.adapters\u002F03.self-hosted\u002F01.fs","i-lucide-hard-drive",{"title":268,"path":269,"stem":270,"icon":271},"NuxtHub","\u002Fadapters\u002Fself-hosted\u002Fnuxthub","6.adapters\u002F03.self-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":273,"path":274,"stem":275,"children":276,"page":34},"Building blocks","\u002Fadapters\u002Fbuilding-blocks","6.adapters\u002F04.building-blocks",[277,282,287],{"title":278,"path":279,"stem":280,"icon":281},"Pipeline","\u002Fadapters\u002Fbuilding-blocks\u002Fpipeline","6.adapters\u002F04.building-blocks\u002F01.pipeline","i-lucide-workflow",{"title":283,"path":284,"stem":285,"icon":286},"HTTP","\u002Fadapters\u002Fbuilding-blocks\u002Fhttp","6.adapters\u002F04.building-blocks\u002F02.http","i-lucide-globe",{"title":288,"path":289,"stem":290,"icon":291},"Custom Adapters","\u002Fadapters\u002Fbuilding-blocks\u002Fcustom","6.adapters\u002F04.building-blocks\u002F03.custom","i-lucide-code",{"title":293,"path":294,"stem":295,"children":296,"page":34},"Enrichers","\u002Fenrichers","7.enrichers",[297,300,304],{"title":41,"path":298,"stem":299,"icon":28},"\u002Fenrichers\u002Foverview","7.enrichers\u002F1.overview",{"title":301,"path":302,"stem":303,"icon":211},"Built-in","\u002Fenrichers\u002Fbuilt-in","7.enrichers\u002F2.built-in",{"title":305,"path":306,"stem":307,"icon":291},"Custom","\u002Fenrichers\u002Fcustom","7.enrichers\u002F3.custom",{"id":309,"title":71,"body":310,"description":4975,"extension":4976,"links":4977,"meta":4984,"navigation":4985,"path":72,"seo":4986,"stem":73,"__hash__":4987},"docs\u002F2.logging\u002F6.better-auth.md",{"type":311,"value":312,"toc":4957},"minimark",[313,325,330,360,431,473,476,479,1890,1893,2530,2534,2537,2554,2605,2680,2683,2701,2848,2851,2856,2965,3040,3042,3047,3165,3168,3309,3313,3319,3425,3434,3437,3443,3530,3534,3539,3696,3700,3706,3719,3864,3867,3877,3904,3972,3981,3985,3992,4190,4193,4231,4234,4340,4344,4565,4569,4576,4950,4953],[314,315,316,320,321,324],"p",{},[317,318,319],"code",{},"evlog\u002Fbetter-auth"," turns anonymous wide events into identified ones. Every request automatically includes who made it — no manual ",[317,322,323],{},"log.set({ user })"," needed.",[326,327,329],"h2",{"id":328},"prerequisites","Prerequisites",[314,331,332,333,340,341,345,346,349,350,353,354,359],{},"Use ",[334,335,339],"a",{"href":336,"rel":337},"https:\u002F\u002Fbetter-auth.com\u002F",[338],"nofollow","Better Auth"," as a ",[342,343,344],"strong",{},"direct dependency"," in your app. ",[317,347,348],{},"evlog"," does not bundle Better Auth. The integration is tested against Better Auth ",[317,351,352],{},">=1.6.9"," (same major as ",[334,355,358],{"href":356,"rel":357},"https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Fevlog\u002Ftree\u002Fmain\u002Fapps\u002Fplayground",[338],"the playground",").",[361,362,363,388,402,416],"code-group",{},[364,365,371],"pre",{"className":366,"code":367,"filename":368,"language":369,"meta":370,"style":370},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add better-auth\n","pnpm","bash","",[317,372,373],{"__ignoreMap":370},[374,375,378,381,385],"span",{"class":376,"line":377},"line",1,[374,379,368],{"class":380},"sBMFI",[374,382,384],{"class":383},"sfazB"," add",[374,386,387],{"class":383}," better-auth\n",[364,389,392],{"className":366,"code":390,"filename":391,"language":369,"meta":370,"style":370},"bun add better-auth\n","bun",[317,393,394],{"__ignoreMap":370},[374,395,396,398,400],{"class":376,"line":377},[374,397,391],{"class":380},[374,399,384],{"class":383},[374,401,387],{"class":383},[364,403,406],{"className":366,"code":404,"filename":405,"language":369,"meta":370,"style":370},"yarn add better-auth\n","yarn",[317,407,408],{"__ignoreMap":370},[374,409,410,412,414],{"class":376,"line":377},[374,411,405],{"class":380},[374,413,384],{"class":383},[374,415,387],{"class":383},[364,417,420],{"className":366,"code":418,"filename":419,"language":369,"meta":370,"style":370},"npm install better-auth\n","npm",[317,421,422],{"__ignoreMap":370},[374,423,424,426,429],{"class":376,"line":377},[374,425,419],{"class":380},[374,427,428],{"class":383}," install",[374,430,387],{"class":383},[432,433,436,439,461],"prompt",{":actions":434,"description":435,"icon":74},"[\"copy\",\"cursor\",\"windsurf\"]","Add Better Auth user identification",[314,437,438],{},"Add Better Auth user identification to my app with evlog.",[440,441,442,446,449,452,455,458],"ul",{},[443,444,445],"li",{},"Import createAuthMiddleware from 'evlog\u002Fbetter-auth'",[443,447,448],{},"Call createAuthMiddleware(auth) to get an identify function",[443,450,451],{},"Call identify(log, headers, path) in your middleware\u002Fhook to auto-identify users on every request",[443,453,454],{},"Safe by default — only extracts whitelisted fields, never logs passwords or tokens",[443,456,457],{},"Supports include\u002Fexclude route patterns, lifecycle hooks, and Better Auth plugin fields",[443,459,460],{},"Works with all frameworks: Nuxt, Next.js, Express, Hono, Fastify, NestJS, Elysia, standalone",[314,462,463,464,468,469],{},"Docs: ",[334,465,466],{"href":466,"rel":467},"https:\u002F\u002Fwww.evlog.dev\u002Flogging\u002Fbetter-auth",[338],"\nAdapters: ",[334,470,471],{"href":471,"rel":472},"https:\u002F\u002Fwww.evlog.dev\u002Fadapters",[338],[326,474,20],{"id":475},"quick-start",[314,477,478],{},"One middleware, all requests identified:",[361,480,481,702,932,1085,1255,1399,1556,1764],{},[364,482,487],{"className":483,"code":484,"filename":485,"language":486,"meta":370,"style":370},"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",[317,488,489,517,524,549,576,585,590,623,653,695],{"__ignoreMap":370},[374,490,491,495,499,503,506,509,512,514],{"class":376,"line":377},[374,492,494],{"class":493},"s7zQu","import",[374,496,498],{"class":497},"sMK4o"," {",[374,500,502],{"class":501},"sTEyZ"," createAuthMiddleware",[374,504,505],{"class":497}," }",[374,507,508],{"class":493}," from",[374,510,511],{"class":497}," '",[374,513,319],{"class":383},[374,515,516],{"class":497},"'\n",[374,518,520],{"class":376,"line":519},2,[374,521,523],{"emptyLinePlaceholder":522},true,"\n",[374,525,527,531,534,537,540,543,546],{"class":376,"line":526},3,[374,528,530],{"class":529},"spNyl","const",[374,532,533],{"class":501}," identify ",[374,535,536],{"class":497},"=",[374,538,502],{"class":539},"s2Zo4",[374,541,542],{"class":501},"(auth",[374,544,545],{"class":497},",",[374,547,548],{"class":497}," {\n",[374,550,552,556,559,562,565,568,570,573],{"class":376,"line":551},4,[374,553,555],{"class":554},"swJcz","  exclude",[374,557,558],{"class":497},":",[374,560,561],{"class":501}," [",[374,563,564],{"class":497},"'",[374,566,567],{"class":383},"\u002Fapi\u002Fauth\u002F**",[374,569,564],{"class":497},[374,571,572],{"class":501},"]",[374,574,575],{"class":497},",\n",[374,577,579,582],{"class":376,"line":578},5,[374,580,581],{"class":497},"}",[374,583,584],{"class":501},")\n",[374,586,588],{"class":376,"line":587},6,[374,589,523],{"emptyLinePlaceholder":522},[374,591,593,596,599,602,605,608,611,615,618,621],{"class":376,"line":592},7,[374,594,595],{"class":493},"export",[374,597,598],{"class":493}," default",[374,600,601],{"class":539}," defineEventHandler",[374,603,604],{"class":501},"(",[374,606,607],{"class":529},"async",[374,609,610],{"class":497}," (",[374,612,614],{"class":613},"sHdIc","event",[374,616,617],{"class":497},")",[374,619,620],{"class":529}," =>",[374,622,548],{"class":497},[374,624,626,629,631,634,636,639,642,644,647,650],{"class":376,"line":625},8,[374,627,628],{"class":493},"  if",[374,630,610],{"class":554},[374,632,633],{"class":497},"!",[374,635,614],{"class":501},[374,637,638],{"class":497},".",[374,640,641],{"class":501},"context",[374,643,638],{"class":497},[374,645,646],{"class":501},"log",[374,648,649],{"class":554},") ",[374,651,652],{"class":493},"return\n",[374,654,656,659,662,664,666,668,670,672,674,676,679,681,684,686,688,690,693],{"class":376,"line":655},9,[374,657,658],{"class":493},"  await",[374,660,661],{"class":539}," identify",[374,663,604],{"class":554},[374,665,614],{"class":501},[374,667,638],{"class":497},[374,669,641],{"class":501},[374,671,638],{"class":497},[374,673,646],{"class":501},[374,675,545],{"class":497},[374,677,678],{"class":501}," event",[374,680,638],{"class":497},[374,682,683],{"class":501},"headers",[374,685,545],{"class":497},[374,687,678],{"class":501},[374,689,638],{"class":497},[374,691,692],{"class":501},"path",[374,694,584],{"class":554},[374,696,698,700],{"class":376,"line":697},10,[374,699,581],{"class":497},[374,701,584],{"class":501},[364,703,706],{"className":483,"code":704,"filename":705,"language":486,"meta":370,"style":370},"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)",[317,707,708,733,751,771,775,788,792,826,842,863,894,925],{"__ignoreMap":370},[374,709,710,712,714,717,719,722,724,726,728,731],{"class":376,"line":377},[374,711,494],{"class":493},[374,713,498],{"class":497},[374,715,716],{"class":501}," withEvlog",[374,718,545],{"class":497},[374,720,721],{"class":501}," useLogger",[374,723,505],{"class":497},[374,725,508],{"class":493},[374,727,511],{"class":497},[374,729,730],{"class":383},"@\u002Flib\u002Fevlog",[374,732,516],{"class":497},[374,734,735,737,739,741,743,745,747,749],{"class":376,"line":519},[374,736,494],{"class":493},[374,738,498],{"class":497},[374,740,502],{"class":501},[374,742,505],{"class":497},[374,744,508],{"class":493},[374,746,511],{"class":497},[374,748,319],{"class":383},[374,750,516],{"class":497},[374,752,753,755,757,760,762,764,766,769],{"class":376,"line":526},[374,754,494],{"class":493},[374,756,498],{"class":497},[374,758,759],{"class":501}," auth",[374,761,505],{"class":497},[374,763,508],{"class":493},[374,765,511],{"class":497},[374,767,768],{"class":383},"@\u002Flib\u002Fauth",[374,770,516],{"class":497},[374,772,773],{"class":376,"line":551},[374,774,523],{"emptyLinePlaceholder":522},[374,776,777,779,781,783,785],{"class":376,"line":578},[374,778,530],{"class":529},[374,780,533],{"class":501},[374,782,536],{"class":497},[374,784,502],{"class":539},[374,786,787],{"class":501},"(auth)\n",[374,789,790],{"class":376,"line":587},[374,791,523],{"emptyLinePlaceholder":522},[374,793,794,796,799,802,804,806,808,810,812,815,817,820,822,824],{"class":376,"line":592},[374,795,595],{"class":493},[374,797,798],{"class":529}," const",[374,800,801],{"class":501}," POST ",[374,803,536],{"class":497},[374,805,716],{"class":539},[374,807,604],{"class":501},[374,809,607],{"class":529},[374,811,610],{"class":497},[374,813,814],{"class":613},"request",[374,816,558],{"class":497},[374,818,819],{"class":380}," Request",[374,821,617],{"class":497},[374,823,620],{"class":529},[374,825,548],{"class":497},[374,827,828,831,834,837,839],{"class":376,"line":625},[374,829,830],{"class":529},"  const",[374,832,833],{"class":501}," log",[374,835,836],{"class":497}," =",[374,838,721],{"class":539},[374,840,841],{"class":554},"()\n",[374,843,844,846,848,850,852,854,857,859,861],{"class":376,"line":655},[374,845,658],{"class":493},[374,847,661],{"class":539},[374,849,604],{"class":554},[374,851,646],{"class":501},[374,853,545],{"class":497},[374,855,856],{"class":501}," request",[374,858,638],{"class":497},[374,860,683],{"class":501},[374,862,584],{"class":554},[374,864,865,868,870,873,875,878,881,883,885,888,890,892],{"class":376,"line":697},[374,866,867],{"class":501},"  log",[374,869,638],{"class":497},[374,871,872],{"class":539},"set",[374,874,604],{"class":554},[374,876,877],{"class":497},"{",[374,879,880],{"class":554}," action",[374,882,558],{"class":497},[374,884,511],{"class":497},[374,886,887],{"class":383},"checkout",[374,889,564],{"class":497},[374,891,505],{"class":497},[374,893,584],{"class":554},[374,895,897,900,903,905,908,910,912,915,917,921,923],{"class":376,"line":896},11,[374,898,899],{"class":493},"  return",[374,901,902],{"class":501}," Response",[374,904,638],{"class":497},[374,906,907],{"class":539},"json",[374,909,604],{"class":554},[374,911,877],{"class":497},[374,913,914],{"class":554}," success",[374,916,558],{"class":497},[374,918,920],{"class":919},"sfNiH"," true",[374,922,505],{"class":497},[374,924,584],{"class":554},[374,926,928,930],{"class":376,"line":927},12,[374,929,581],{"class":497},[374,931,584],{"class":501},[364,933,936],{"className":483,"code":934,"filename":935,"language":486,"meta":370,"style":370},"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)",[317,937,938,956,960,976,994,1000,1004,1039,1072,1079],{"__ignoreMap":370},[374,939,940,942,944,946,948,950,952,954],{"class":376,"line":377},[374,941,494],{"class":493},[374,943,498],{"class":497},[374,945,502],{"class":501},[374,947,505],{"class":497},[374,949,508],{"class":493},[374,951,511],{"class":497},[374,953,319],{"class":383},[374,955,516],{"class":497},[374,957,958],{"class":376,"line":519},[374,959,523],{"emptyLinePlaceholder":522},[374,961,962,964,966,968,970,972,974],{"class":376,"line":526},[374,963,530],{"class":529},[374,965,533],{"class":501},[374,967,536],{"class":497},[374,969,502],{"class":539},[374,971,542],{"class":501},[374,973,545],{"class":497},[374,975,548],{"class":497},[374,977,978,980,982,984,986,988,990,992],{"class":376,"line":551},[374,979,555],{"class":554},[374,981,558],{"class":497},[374,983,561],{"class":501},[374,985,564],{"class":497},[374,987,567],{"class":383},[374,989,564],{"class":497},[374,991,572],{"class":501},[374,993,575],{"class":497},[374,995,996,998],{"class":376,"line":578},[374,997,581],{"class":497},[374,999,584],{"class":501},[374,1001,1002],{"class":376,"line":587},[374,1003,523],{"emptyLinePlaceholder":522},[374,1005,1006,1009,1011,1014,1016,1018,1020,1023,1025,1028,1030,1033,1035,1037],{"class":376,"line":592},[374,1007,1008],{"class":501},"app",[374,1010,638],{"class":497},[374,1012,1013],{"class":539},"use",[374,1015,604],{"class":501},[374,1017,607],{"class":529},[374,1019,610],{"class":497},[374,1021,1022],{"class":613},"req",[374,1024,545],{"class":497},[374,1026,1027],{"class":613}," res",[374,1029,545],{"class":497},[374,1031,1032],{"class":613}," next",[374,1034,617],{"class":497},[374,1036,620],{"class":529},[374,1038,548],{"class":497},[374,1040,1041,1043,1045,1047,1049,1051,1053,1055,1058,1060,1062,1064,1066,1068,1070],{"class":376,"line":625},[374,1042,658],{"class":493},[374,1044,661],{"class":539},[374,1046,604],{"class":554},[374,1048,1022],{"class":501},[374,1050,638],{"class":497},[374,1052,646],{"class":501},[374,1054,545],{"class":497},[374,1056,1057],{"class":501}," req",[374,1059,638],{"class":497},[374,1061,683],{"class":501},[374,1063,545],{"class":497},[374,1065,1057],{"class":501},[374,1067,638],{"class":497},[374,1069,692],{"class":501},[374,1071,584],{"class":554},[374,1073,1074,1077],{"class":376,"line":655},[374,1075,1076],{"class":539},"  next",[374,1078,841],{"class":554},[374,1080,1081,1083],{"class":376,"line":697},[374,1082,581],{"class":497},[374,1084,584],{"class":501},[364,1086,1089],{"className":483,"code":1087,"filename":1088,"language":486,"meta":370,"style":370},"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)",[317,1090,1091,1109,1113,1129,1147,1153,1157,1184,1241,1249],{"__ignoreMap":370},[374,1092,1093,1095,1097,1099,1101,1103,1105,1107],{"class":376,"line":377},[374,1094,494],{"class":493},[374,1096,498],{"class":497},[374,1098,502],{"class":501},[374,1100,505],{"class":497},[374,1102,508],{"class":493},[374,1104,511],{"class":497},[374,1106,319],{"class":383},[374,1108,516],{"class":497},[374,1110,1111],{"class":376,"line":519},[374,1112,523],{"emptyLinePlaceholder":522},[374,1114,1115,1117,1119,1121,1123,1125,1127],{"class":376,"line":526},[374,1116,530],{"class":529},[374,1118,533],{"class":501},[374,1120,536],{"class":497},[374,1122,502],{"class":539},[374,1124,542],{"class":501},[374,1126,545],{"class":497},[374,1128,548],{"class":497},[374,1130,1131,1133,1135,1137,1139,1141,1143,1145],{"class":376,"line":551},[374,1132,555],{"class":554},[374,1134,558],{"class":497},[374,1136,561],{"class":501},[374,1138,564],{"class":497},[374,1140,567],{"class":383},[374,1142,564],{"class":497},[374,1144,572],{"class":501},[374,1146,575],{"class":497},[374,1148,1149,1151],{"class":376,"line":578},[374,1150,581],{"class":497},[374,1152,584],{"class":501},[374,1154,1155],{"class":376,"line":587},[374,1156,523],{"emptyLinePlaceholder":522},[374,1158,1159,1161,1163,1165,1167,1169,1171,1174,1176,1178,1180,1182],{"class":376,"line":592},[374,1160,1008],{"class":501},[374,1162,638],{"class":497},[374,1164,1013],{"class":539},[374,1166,604],{"class":501},[374,1168,607],{"class":529},[374,1170,610],{"class":497},[374,1172,1173],{"class":613},"c",[374,1175,545],{"class":497},[374,1177,1032],{"class":613},[374,1179,617],{"class":497},[374,1181,620],{"class":529},[374,1183,548],{"class":497},[374,1185,1186,1188,1190,1192,1194,1196,1199,1201,1203,1205,1207,1209,1211,1214,1216,1218,1220,1223,1225,1227,1229,1231,1233,1235,1237,1239],{"class":376,"line":625},[374,1187,658],{"class":493},[374,1189,661],{"class":539},[374,1191,604],{"class":554},[374,1193,1173],{"class":501},[374,1195,638],{"class":497},[374,1197,1198],{"class":539},"get",[374,1200,604],{"class":554},[374,1202,564],{"class":497},[374,1204,646],{"class":383},[374,1206,564],{"class":497},[374,1208,617],{"class":554},[374,1210,545],{"class":497},[374,1212,1213],{"class":501}," c",[374,1215,638],{"class":497},[374,1217,1022],{"class":501},[374,1219,638],{"class":497},[374,1221,1222],{"class":501},"raw",[374,1224,638],{"class":497},[374,1226,683],{"class":501},[374,1228,545],{"class":497},[374,1230,1213],{"class":501},[374,1232,638],{"class":497},[374,1234,1022],{"class":501},[374,1236,638],{"class":497},[374,1238,692],{"class":501},[374,1240,584],{"class":554},[374,1242,1243,1245,1247],{"class":376,"line":655},[374,1244,658],{"class":493},[374,1246,1032],{"class":539},[374,1248,841],{"class":554},[374,1250,1251,1253],{"class":376,"line":697},[374,1252,581],{"class":497},[374,1254,584],{"class":501},[364,1256,1259],{"className":483,"code":1257,"filename":1258,"language":486,"meta":370,"style":370},"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)",[317,1260,1261,1279,1283,1299,1317,1323,1327,1360,1393],{"__ignoreMap":370},[374,1262,1263,1265,1267,1269,1271,1273,1275,1277],{"class":376,"line":377},[374,1264,494],{"class":493},[374,1266,498],{"class":497},[374,1268,502],{"class":501},[374,1270,505],{"class":497},[374,1272,508],{"class":493},[374,1274,511],{"class":497},[374,1276,319],{"class":383},[374,1278,516],{"class":497},[374,1280,1281],{"class":376,"line":519},[374,1282,523],{"emptyLinePlaceholder":522},[374,1284,1285,1287,1289,1291,1293,1295,1297],{"class":376,"line":526},[374,1286,530],{"class":529},[374,1288,533],{"class":501},[374,1290,536],{"class":497},[374,1292,502],{"class":539},[374,1294,542],{"class":501},[374,1296,545],{"class":497},[374,1298,548],{"class":497},[374,1300,1301,1303,1305,1307,1309,1311,1313,1315],{"class":376,"line":551},[374,1302,555],{"class":554},[374,1304,558],{"class":497},[374,1306,561],{"class":501},[374,1308,564],{"class":497},[374,1310,567],{"class":383},[374,1312,564],{"class":497},[374,1314,572],{"class":501},[374,1316,575],{"class":497},[374,1318,1319,1321],{"class":376,"line":578},[374,1320,581],{"class":497},[374,1322,584],{"class":501},[374,1324,1325],{"class":376,"line":587},[374,1326,523],{"emptyLinePlaceholder":522},[374,1328,1329,1331,1333,1336,1338,1340,1343,1345,1347,1350,1352,1354,1356,1358],{"class":376,"line":592},[374,1330,1008],{"class":501},[374,1332,638],{"class":497},[374,1334,1335],{"class":539},"addHook",[374,1337,604],{"class":501},[374,1339,564],{"class":497},[374,1341,1342],{"class":383},"onRequest",[374,1344,564],{"class":497},[374,1346,545],{"class":497},[374,1348,1349],{"class":529}," async",[374,1351,610],{"class":497},[374,1353,814],{"class":613},[374,1355,617],{"class":497},[374,1357,620],{"class":529},[374,1359,548],{"class":497},[374,1361,1362,1364,1366,1368,1370,1372,1374,1376,1378,1380,1382,1384,1386,1388,1391],{"class":376,"line":625},[374,1363,658],{"class":493},[374,1365,661],{"class":539},[374,1367,604],{"class":554},[374,1369,814],{"class":501},[374,1371,638],{"class":497},[374,1373,646],{"class":501},[374,1375,545],{"class":497},[374,1377,856],{"class":501},[374,1379,638],{"class":497},[374,1381,683],{"class":501},[374,1383,545],{"class":497},[374,1385,856],{"class":501},[374,1387,638],{"class":497},[374,1389,1390],{"class":501},"url",[374,1392,584],{"class":554},[374,1394,1395,1397],{"class":376,"line":655},[374,1396,581],{"class":497},[374,1398,584],{"class":501},[364,1400,1403],{"className":483,"code":1401,"filename":1402,"language":486,"meta":370,"style":370},"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)",[317,1404,1405,1423,1427,1443,1461,1467,1471,1500,1543,1550],{"__ignoreMap":370},[374,1406,1407,1409,1411,1413,1415,1417,1419,1421],{"class":376,"line":377},[374,1408,494],{"class":493},[374,1410,498],{"class":497},[374,1412,502],{"class":501},[374,1414,505],{"class":497},[374,1416,508],{"class":493},[374,1418,511],{"class":497},[374,1420,319],{"class":383},[374,1422,516],{"class":497},[374,1424,1425],{"class":376,"line":519},[374,1426,523],{"emptyLinePlaceholder":522},[374,1428,1429,1431,1433,1435,1437,1439,1441],{"class":376,"line":526},[374,1430,530],{"class":529},[374,1432,533],{"class":501},[374,1434,536],{"class":497},[374,1436,502],{"class":539},[374,1438,542],{"class":501},[374,1440,545],{"class":497},[374,1442,548],{"class":497},[374,1444,1445,1447,1449,1451,1453,1455,1457,1459],{"class":376,"line":551},[374,1446,555],{"class":554},[374,1448,558],{"class":497},[374,1450,561],{"class":501},[374,1452,564],{"class":497},[374,1454,567],{"class":383},[374,1456,564],{"class":497},[374,1458,572],{"class":501},[374,1460,575],{"class":497},[374,1462,1463,1465],{"class":376,"line":578},[374,1464,581],{"class":497},[374,1466,584],{"class":501},[374,1468,1469],{"class":376,"line":587},[374,1470,523],{"emptyLinePlaceholder":522},[374,1472,1473,1475,1477,1480,1482,1484,1487,1489,1491,1493,1496,1498],{"class":376,"line":592},[374,1474,1008],{"class":501},[374,1476,638],{"class":497},[374,1478,1479],{"class":539},"derive",[374,1481,604],{"class":501},[374,1483,607],{"class":529},[374,1485,1486],{"class":497}," ({",[374,1488,833],{"class":613},[374,1490,545],{"class":497},[374,1492,856],{"class":613},[374,1494,1495],{"class":497}," })",[374,1497,620],{"class":529},[374,1499,548],{"class":497},[374,1501,1502,1504,1506,1508,1510,1512,1514,1516,1518,1520,1523,1526,1528,1530,1532,1534,1536,1538,1541],{"class":376,"line":625},[374,1503,658],{"class":493},[374,1505,661],{"class":539},[374,1507,604],{"class":554},[374,1509,646],{"class":501},[374,1511,545],{"class":497},[374,1513,856],{"class":501},[374,1515,638],{"class":497},[374,1517,683],{"class":501},[374,1519,545],{"class":497},[374,1521,1522],{"class":497}," new",[374,1524,1525],{"class":539}," URL",[374,1527,604],{"class":554},[374,1529,814],{"class":501},[374,1531,638],{"class":497},[374,1533,1390],{"class":501},[374,1535,617],{"class":554},[374,1537,638],{"class":497},[374,1539,1540],{"class":501},"pathname",[374,1542,584],{"class":554},[374,1544,1545,1547],{"class":376,"line":655},[374,1546,899],{"class":493},[374,1548,1549],{"class":497}," {}\n",[374,1551,1552,1554],{"class":376,"line":697},[374,1553,581],{"class":497},[374,1555,584],{"class":501},[364,1557,1560],{"className":483,"code":1558,"filename":1559,"language":486,"meta":370,"style":370},"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)",[317,1561,1562,1580,1599,1603,1619,1637,1643,1647,1657,1675,1712,1745,1752,1758],{"__ignoreMap":370},[374,1563,1564,1566,1568,1570,1572,1574,1576,1578],{"class":376,"line":377},[374,1565,494],{"class":493},[374,1567,498],{"class":497},[374,1569,502],{"class":501},[374,1571,505],{"class":497},[374,1573,508],{"class":493},[374,1575,511],{"class":497},[374,1577,319],{"class":383},[374,1579,516],{"class":497},[374,1581,1582,1584,1586,1588,1590,1592,1594,1597],{"class":376,"line":519},[374,1583,494],{"class":493},[374,1585,498],{"class":497},[374,1587,721],{"class":501},[374,1589,505],{"class":497},[374,1591,508],{"class":493},[374,1593,511],{"class":497},[374,1595,1596],{"class":383},"evlog\u002Fnestjs",[374,1598,516],{"class":497},[374,1600,1601],{"class":376,"line":526},[374,1602,523],{"emptyLinePlaceholder":522},[374,1604,1605,1607,1609,1611,1613,1615,1617],{"class":376,"line":551},[374,1606,530],{"class":529},[374,1608,533],{"class":501},[374,1610,536],{"class":497},[374,1612,502],{"class":539},[374,1614,542],{"class":501},[374,1616,545],{"class":497},[374,1618,548],{"class":497},[374,1620,1621,1623,1625,1627,1629,1631,1633,1635],{"class":376,"line":578},[374,1622,555],{"class":554},[374,1624,558],{"class":497},[374,1626,561],{"class":501},[374,1628,564],{"class":497},[374,1630,567],{"class":383},[374,1632,564],{"class":497},[374,1634,572],{"class":501},[374,1636,575],{"class":497},[374,1638,1639,1641],{"class":376,"line":587},[374,1640,581],{"class":497},[374,1642,584],{"class":501},[374,1644,1645],{"class":376,"line":592},[374,1646,523],{"emptyLinePlaceholder":522},[374,1648,1649,1652,1655],{"class":376,"line":625},[374,1650,1651],{"class":497},"@",[374,1653,1654],{"class":539},"Injectable",[374,1656,841],{"class":501},[374,1658,1659,1661,1664,1667,1670,1673],{"class":376,"line":655},[374,1660,595],{"class":493},[374,1662,1663],{"class":529}," class",[374,1665,1666],{"class":380}," AuthIdentifyMiddleware",[374,1668,1669],{"class":529}," implements",[374,1671,1672],{"class":380}," NestMiddleware",[374,1674,548],{"class":497},[374,1676,1677,1680,1683,1685,1687,1689,1691,1693,1695,1697,1699,1701,1703,1705,1708,1710],{"class":376,"line":697},[374,1678,1679],{"class":529},"  async",[374,1681,1682],{"class":554}," use",[374,1684,604],{"class":497},[374,1686,1022],{"class":613},[374,1688,558],{"class":497},[374,1690,819],{"class":380},[374,1692,545],{"class":497},[374,1694,1027],{"class":613},[374,1696,558],{"class":497},[374,1698,902],{"class":380},[374,1700,545],{"class":497},[374,1702,1032],{"class":613},[374,1704,558],{"class":497},[374,1706,1707],{"class":380}," NextFunction",[374,1709,617],{"class":497},[374,1711,548],{"class":497},[374,1713,1714,1717,1719,1721,1724,1727,1729,1731,1733,1735,1737,1739,1741,1743],{"class":376,"line":896},[374,1715,1716],{"class":493},"    await",[374,1718,661],{"class":539},[374,1720,604],{"class":554},[374,1722,1723],{"class":539},"useLogger",[374,1725,1726],{"class":554},"()",[374,1728,545],{"class":497},[374,1730,1057],{"class":501},[374,1732,638],{"class":497},[374,1734,683],{"class":501},[374,1736,545],{"class":497},[374,1738,1057],{"class":501},[374,1740,638],{"class":497},[374,1742,692],{"class":501},[374,1744,584],{"class":554},[374,1746,1747,1750],{"class":376,"line":927},[374,1748,1749],{"class":539},"    next",[374,1751,841],{"class":554},[374,1753,1755],{"class":376,"line":1754},13,[374,1756,1757],{"class":497},"  }\n",[374,1759,1761],{"class":376,"line":1760},14,[374,1762,1763],{"class":497},"}\n",[364,1765,1768],{"className":483,"code":1766,"filename":1767,"language":486,"meta":370,"style":370},"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)",[317,1769,1770,1789,1808,1812,1825,1860,1879],{"__ignoreMap":370},[374,1771,1772,1774,1776,1779,1781,1783,1785,1787],{"class":376,"line":377},[374,1773,494],{"class":493},[374,1775,498],{"class":497},[374,1777,1778],{"class":501}," identifyUser",[374,1780,505],{"class":497},[374,1782,508],{"class":493},[374,1784,511],{"class":497},[374,1786,319],{"class":383},[374,1788,516],{"class":497},[374,1790,1791,1793,1795,1798,1800,1802,1804,1806],{"class":376,"line":519},[374,1792,494],{"class":493},[374,1794,498],{"class":497},[374,1796,1797],{"class":501}," createLogger",[374,1799,505],{"class":497},[374,1801,508],{"class":493},[374,1803,511],{"class":497},[374,1805,348],{"class":383},[374,1807,516],{"class":497},[374,1809,1810],{"class":376,"line":526},[374,1811,523],{"emptyLinePlaceholder":522},[374,1813,1814,1816,1819,1821,1823],{"class":376,"line":551},[374,1815,530],{"class":529},[374,1817,1818],{"class":501}," log ",[374,1820,536],{"class":497},[374,1822,1797],{"class":539},[374,1824,841],{"class":501},[374,1826,1827,1829,1832,1834,1837,1839,1841,1844,1846,1849,1851,1853,1856,1858],{"class":376,"line":578},[374,1828,530],{"class":529},[374,1830,1831],{"class":501}," session ",[374,1833,536],{"class":497},[374,1835,1836],{"class":493}," await",[374,1838,759],{"class":501},[374,1840,638],{"class":497},[374,1842,1843],{"class":501},"api",[374,1845,638],{"class":497},[374,1847,1848],{"class":539},"getSession",[374,1850,604],{"class":501},[374,1852,877],{"class":497},[374,1854,1855],{"class":501}," headers ",[374,1857,581],{"class":497},[374,1859,584],{"class":501},[374,1861,1862,1865,1868,1871,1874,1876],{"class":376,"line":587},[374,1863,1864],{"class":493},"if",[374,1866,1867],{"class":501}," (session) ",[374,1869,1870],{"class":539},"identifyUser",[374,1872,1873],{"class":501},"(log",[374,1875,545],{"class":497},[374,1877,1878],{"class":501}," session)\n",[374,1880,1881,1883,1885,1888],{"class":376,"line":592},[374,1882,646],{"class":501},[374,1884,638],{"class":497},[374,1886,1887],{"class":539},"emit",[374,1889,841],{"class":501},[314,1891,1892],{},"Your wide event now includes the user:",[361,1894,1895,2072],{},[364,1896,1900],{"className":1897,"code":1898,"filename":1899,"language":907,"meta":370,"style":370},"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",[317,1901,1902,1907,1930,1950,1969,1986,2006,2026,2068],{"__ignoreMap":370},[374,1903,1904],{"class":376,"line":377},[374,1905,1906],{"class":497},"{\n",[374,1908,1909,1912,1915,1918,1920,1923,1926,1928],{"class":376,"line":519},[374,1910,1911],{"class":497},"  \"",[374,1913,1914],{"class":529},"level",[374,1916,1917],{"class":497},"\"",[374,1919,558],{"class":497},[374,1921,1922],{"class":497}," \"",[374,1924,1925],{"class":383},"info",[374,1927,1917],{"class":497},[374,1929,575],{"class":497},[374,1931,1932,1934,1937,1939,1941,1943,1946,1948],{"class":376,"line":526},[374,1933,1911],{"class":497},[374,1935,1936],{"class":529},"method",[374,1938,1917],{"class":497},[374,1940,558],{"class":497},[374,1942,1922],{"class":497},[374,1944,1945],{"class":383},"POST",[374,1947,1917],{"class":497},[374,1949,575],{"class":497},[374,1951,1952,1954,1956,1958,1960,1962,1965,1967],{"class":376,"line":551},[374,1953,1911],{"class":497},[374,1955,692],{"class":529},[374,1957,1917],{"class":497},[374,1959,558],{"class":497},[374,1961,1922],{"class":497},[374,1963,1964],{"class":383},"\u002Fapi\u002Fcheckout",[374,1966,1917],{"class":497},[374,1968,575],{"class":497},[374,1970,1971,1973,1976,1978,1980,1984],{"class":376,"line":578},[374,1972,1911],{"class":497},[374,1974,1975],{"class":529},"status",[374,1977,1917],{"class":497},[374,1979,558],{"class":497},[374,1981,1983],{"class":1982},"sbssI"," 200",[374,1985,575],{"class":497},[374,1987,1988,1990,1993,1995,1997,1999,2002,2004],{"class":376,"line":587},[374,1989,1911],{"class":497},[374,1991,1992],{"class":529},"duration",[374,1994,1917],{"class":497},[374,1996,558],{"class":497},[374,1998,1922],{"class":497},[374,2000,2001],{"class":383},"120ms",[374,2003,1917],{"class":497},[374,2005,575],{"class":497},[374,2007,2008,2010,2013,2015,2017,2019,2022,2024],{"class":376,"line":592},[374,2009,1911],{"class":497},[374,2011,2012],{"class":529},"requestId",[374,2014,1917],{"class":497},[374,2016,558],{"class":497},[374,2018,1922],{"class":497},[374,2020,2021],{"class":383},"a5669202-7765-4f59-b6f0-b9f40ce71599",[374,2023,1917],{"class":497},[374,2025,575],{"class":497},[374,2027,2028,2030,2033,2035,2037,2039,2041,2044,2046,2048,2051,2053,2055,2058,2060,2062,2065],{"class":376,"line":625},[374,2029,1911],{"class":497},[374,2031,2032],{"class":529},"cart",[374,2034,1917],{"class":497},[374,2036,558],{"class":497},[374,2038,498],{"class":497},[374,2040,1922],{"class":497},[374,2042,2043],{"class":380},"items",[374,2045,1917],{"class":497},[374,2047,558],{"class":497},[374,2049,2050],{"class":1982}," 3",[374,2052,545],{"class":497},[374,2054,1922],{"class":497},[374,2056,2057],{"class":380},"total",[374,2059,1917],{"class":497},[374,2061,558],{"class":497},[374,2063,2064],{"class":1982}," 9999",[374,2066,2067],{"class":497}," }\n",[374,2069,2070],{"class":376,"line":655},[374,2071,1763],{"class":497},[364,2073,2076],{"className":1897,"code":2074,"filename":2075,"language":907,"meta":370,"style":370},"{\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",[317,2077,2078,2082,2100,2118,2136,2150,2168,2186,2206,2219,2239,2259,2279,2293,2312,2318,2332,2352,2373,2394,2415,2432,2437,2451,2468,2483,2488,2525],{"__ignoreMap":370},[374,2079,2080],{"class":376,"line":377},[374,2081,1906],{"class":497},[374,2083,2084,2086,2088,2090,2092,2094,2096,2098],{"class":376,"line":519},[374,2085,1911],{"class":497},[374,2087,1914],{"class":529},[374,2089,1917],{"class":497},[374,2091,558],{"class":497},[374,2093,1922],{"class":497},[374,2095,1925],{"class":383},[374,2097,1917],{"class":497},[374,2099,575],{"class":497},[374,2101,2102,2104,2106,2108,2110,2112,2114,2116],{"class":376,"line":526},[374,2103,1911],{"class":497},[374,2105,1936],{"class":529},[374,2107,1917],{"class":497},[374,2109,558],{"class":497},[374,2111,1922],{"class":497},[374,2113,1945],{"class":383},[374,2115,1917],{"class":497},[374,2117,575],{"class":497},[374,2119,2120,2122,2124,2126,2128,2130,2132,2134],{"class":376,"line":551},[374,2121,1911],{"class":497},[374,2123,692],{"class":529},[374,2125,1917],{"class":497},[374,2127,558],{"class":497},[374,2129,1922],{"class":497},[374,2131,1964],{"class":383},[374,2133,1917],{"class":497},[374,2135,575],{"class":497},[374,2137,2138,2140,2142,2144,2146,2148],{"class":376,"line":578},[374,2139,1911],{"class":497},[374,2141,1975],{"class":529},[374,2143,1917],{"class":497},[374,2145,558],{"class":497},[374,2147,1983],{"class":1982},[374,2149,575],{"class":497},[374,2151,2152,2154,2156,2158,2160,2162,2164,2166],{"class":376,"line":587},[374,2153,1911],{"class":497},[374,2155,1992],{"class":529},[374,2157,1917],{"class":497},[374,2159,558],{"class":497},[374,2161,1922],{"class":497},[374,2163,2001],{"class":383},[374,2165,1917],{"class":497},[374,2167,575],{"class":497},[374,2169,2170,2172,2174,2176,2178,2180,2182,2184],{"class":376,"line":592},[374,2171,1911],{"class":497},[374,2173,2012],{"class":529},[374,2175,1917],{"class":497},[374,2177,558],{"class":497},[374,2179,1922],{"class":497},[374,2181,2021],{"class":383},[374,2183,1917],{"class":497},[374,2185,575],{"class":497},[374,2187,2188,2190,2193,2195,2197,2199,2202,2204],{"class":376,"line":625},[374,2189,1911],{"class":497},[374,2191,2192],{"class":529},"userId",[374,2194,1917],{"class":497},[374,2196,558],{"class":497},[374,2198,1922],{"class":497},[374,2200,2201],{"class":383},"QBX9tPjJQExWawAbNll75",[374,2203,1917],{"class":497},[374,2205,575],{"class":497},[374,2207,2208,2210,2213,2215,2217],{"class":376,"line":655},[374,2209,1911],{"class":497},[374,2211,2212],{"class":529},"user",[374,2214,1917],{"class":497},[374,2216,558],{"class":497},[374,2218,548],{"class":497},[374,2220,2221,2224,2227,2229,2231,2233,2235,2237],{"class":376,"line":697},[374,2222,2223],{"class":497},"    \"",[374,2225,2226],{"class":380},"id",[374,2228,1917],{"class":497},[374,2230,558],{"class":497},[374,2232,1922],{"class":497},[374,2234,2201],{"class":383},[374,2236,1917],{"class":497},[374,2238,575],{"class":497},[374,2240,2241,2243,2246,2248,2250,2252,2255,2257],{"class":376,"line":896},[374,2242,2223],{"class":497},[374,2244,2245],{"class":380},"name",[374,2247,1917],{"class":497},[374,2249,558],{"class":497},[374,2251,1922],{"class":497},[374,2253,2254],{"class":383},"Hugo Richard",[374,2256,1917],{"class":497},[374,2258,575],{"class":497},[374,2260,2261,2263,2266,2268,2270,2272,2275,2277],{"class":376,"line":927},[374,2262,2223],{"class":497},[374,2264,2265],{"class":380},"email",[374,2267,1917],{"class":497},[374,2269,558],{"class":497},[374,2271,1922],{"class":497},[374,2273,2274],{"class":383},"hugo@example.com",[374,2276,1917],{"class":497},[374,2278,575],{"class":497},[374,2280,2281,2283,2286,2288,2290],{"class":376,"line":1754},[374,2282,2223],{"class":497},[374,2284,2285],{"class":380},"emailVerified",[374,2287,1917],{"class":497},[374,2289,558],{"class":497},[374,2291,2292],{"class":497}," true,\n",[374,2294,2295,2297,2300,2302,2304,2306,2309],{"class":376,"line":1760},[374,2296,2223],{"class":497},[374,2298,2299],{"class":380},"createdAt",[374,2301,1917],{"class":497},[374,2303,558],{"class":497},[374,2305,1922],{"class":497},[374,2307,2308],{"class":383},"2024-01-15T10:00:00.000Z",[374,2310,2311],{"class":497},"\"\n",[374,2313,2315],{"class":376,"line":2314},15,[374,2316,2317],{"class":497},"  },\n",[374,2319,2321,2323,2326,2328,2330],{"class":376,"line":2320},16,[374,2322,1911],{"class":497},[374,2324,2325],{"class":529},"session",[374,2327,1917],{"class":497},[374,2329,558],{"class":497},[374,2331,548],{"class":497},[374,2333,2335,2337,2339,2341,2343,2345,2348,2350],{"class":376,"line":2334},17,[374,2336,2223],{"class":497},[374,2338,2226],{"class":380},[374,2340,1917],{"class":497},[374,2342,558],{"class":497},[374,2344,1922],{"class":497},[374,2346,2347],{"class":383},"Xhmh6TxKJQrVKFX0Y0II",[374,2349,1917],{"class":497},[374,2351,575],{"class":497},[374,2353,2355,2357,2360,2362,2364,2366,2369,2371],{"class":376,"line":2354},18,[374,2356,2223],{"class":497},[374,2358,2359],{"class":380},"expiresAt",[374,2361,1917],{"class":497},[374,2363,558],{"class":497},[374,2365,1922],{"class":497},[374,2367,2368],{"class":383},"2024-01-22T10:00:00.000Z",[374,2370,1917],{"class":497},[374,2372,575],{"class":497},[374,2374,2376,2378,2381,2383,2385,2387,2390,2392],{"class":376,"line":2375},19,[374,2377,2223],{"class":497},[374,2379,2380],{"class":380},"ipAddress",[374,2382,1917],{"class":497},[374,2384,558],{"class":497},[374,2386,1922],{"class":497},[374,2388,2389],{"class":383},"192.168.1.42",[374,2391,1917],{"class":497},[374,2393,575],{"class":497},[374,2395,2397,2399,2402,2404,2406,2408,2411,2413],{"class":376,"line":2396},20,[374,2398,2223],{"class":497},[374,2400,2401],{"class":380},"userAgent",[374,2403,1917],{"class":497},[374,2405,558],{"class":497},[374,2407,1922],{"class":497},[374,2409,2410],{"class":383},"Mozilla\u002F5.0 (Macintosh; Intel Mac OS X 10_15_7)",[374,2412,1917],{"class":497},[374,2414,575],{"class":497},[374,2416,2418,2420,2422,2424,2426,2428,2430],{"class":376,"line":2417},21,[374,2419,2223],{"class":497},[374,2421,2299],{"class":380},[374,2423,1917],{"class":497},[374,2425,558],{"class":497},[374,2427,1922],{"class":497},[374,2429,2308],{"class":383},[374,2431,2311],{"class":497},[374,2433,2435],{"class":376,"line":2434},22,[374,2436,2317],{"class":497},[374,2438,2440,2442,2445,2447,2449],{"class":376,"line":2439},23,[374,2441,1911],{"class":497},[374,2443,2444],{"class":529},"auth",[374,2446,1917],{"class":497},[374,2448,558],{"class":497},[374,2450,548],{"class":497},[374,2452,2454,2456,2459,2461,2463,2466],{"class":376,"line":2453},24,[374,2455,2223],{"class":497},[374,2457,2458],{"class":380},"resolvedIn",[374,2460,1917],{"class":497},[374,2462,558],{"class":497},[374,2464,2465],{"class":1982}," 12",[374,2467,575],{"class":497},[374,2469,2471,2473,2476,2478,2480],{"class":376,"line":2470},25,[374,2472,2223],{"class":497},[374,2474,2475],{"class":380},"identified",[374,2477,1917],{"class":497},[374,2479,558],{"class":497},[374,2481,2482],{"class":497}," true\n",[374,2484,2486],{"class":376,"line":2485},26,[374,2487,2317],{"class":497},[374,2489,2491,2493,2495,2497,2499,2501,2503,2505,2507,2509,2511,2513,2515,2517,2519,2521,2523],{"class":376,"line":2490},27,[374,2492,1911],{"class":497},[374,2494,2032],{"class":529},[374,2496,1917],{"class":497},[374,2498,558],{"class":497},[374,2500,498],{"class":497},[374,2502,1922],{"class":497},[374,2504,2043],{"class":380},[374,2506,1917],{"class":497},[374,2508,558],{"class":497},[374,2510,2050],{"class":1982},[374,2512,545],{"class":497},[374,2514,1922],{"class":497},[374,2516,2057],{"class":380},[374,2518,1917],{"class":497},[374,2520,558],{"class":497},[374,2522,2064],{"class":1982},[374,2524,2067],{"class":497},[374,2526,2528],{"class":376,"line":2527},28,[374,2529,1763],{"class":497},[326,2531,2533],{"id":2532},"how-it-works","How It Works",[314,2535,2536],{},"The integration resolves the Better Auth session from request cookies, extracts safe user and session fields, and sets them on the logger. Auth routes are skipped by default.",[314,2538,2539,2542,2543,2542,2546,2542,2548,2542,2551],{},[317,2540,2541],{},"Request"," → ",[317,2544,2545],{},"Middleware",[317,2547,339],{},[317,2549,2550],{},"Logger",[317,2552,2553],{},"Drain",[2555,2556,2557,2560,2571,2577,2592,2602],"ol",{},[443,2558,2559],{},"Incoming request hits your middleware",[443,2561,2562,2563,2566,2567,2570],{},"Middleware checks ",[317,2564,2565],{},"include","\u002F",[317,2568,2569],{},"exclude"," patterns — skips if route doesn't match",[443,2572,2573,2576],{},[317,2574,2575],{},"getSession(headers)"," resolves the session via Better Auth (timing is captured)",[443,2578,2579,2582,2583,2585,2586,2588,2589,2591],{},[317,2580,2581],{},"identifyUser(log, session)"," sets ",[317,2584,2192],{},", ",[317,2587,2212],{},", and ",[317,2590,2325],{}," on the logger",[443,2593,2594,2597,2598,2601],{},[317,2595,2596],{},"onIdentify"," or ",[317,2599,2600],{},"onAnonymous"," hook fires based on session result",[443,2603,2604],{},"At request end, the wide event is emitted with full user context to your drain",[2606,2607,2608,2621],"table",{},[2609,2610,2611],"thead",{},[2612,2613,2614,2618],"tr",{},[2615,2616,2617],"th",{},"Export",[2615,2619,2620],{},"Description",[2622,2623,2624,2638,2652,2665],"tbody",{},[2612,2625,2626,2631],{},[2627,2628,2629],"td",{},[317,2630,2581],{},[2627,2632,2633,2634,2637],{},"Core helper — extracts safe fields from a session and sets them on the logger. Returns ",[317,2635,2636],{},"true"," if identified",[2612,2639,2640,2645],{},[2627,2641,2642],{},[317,2643,2644],{},"createAuthMiddleware(auth)",[2627,2646,2647,2648,2651],{},"Returns an async ",[317,2649,2650],{},"(log, headers, path?) => Promise\u003Cboolean>"," function with route filtering, timing, and hooks",[2612,2653,2654,2659],{},[2627,2655,2656],{},[317,2657,2658],{},"createAuthIdentifier(auth)",[2627,2660,2661,2662,2664],{},"Nitro ",[317,2663,814],{}," hook factory for standalone Nitro apps",[2612,2666,2667,2672],{},[2627,2668,2669],{},[317,2670,2671],{},"maskEmail(email)",[2627,2673,2674,2675,2542,2677],{},"Mask an email: ",[317,2676,2274],{},[317,2678,2679],{},"h***@example.com",[326,2681,1870],{"id":2682},"identifyuser",[314,2684,2685,2686,2689,2690,2693,2694,2696,2697,2700],{},"The core building block. Takes a ",[317,2687,2688],{},"RequestLogger"," and a Better Auth session, extracts safe fields, and calls ",[317,2691,2692],{},"log.set()",". Returns ",[317,2695,2636],{}," if the user was identified, ",[317,2698,2699],{},"false"," otherwise:",[364,2702,2705],{"className":483,"code":2703,"filename":2704,"language":486,"meta":370,"style":370},"import { identifyUser } from 'evlog\u002Fbetter-auth'\n\nconst session = await auth.api.getSession({ headers: event.headers })\nif (session) {\n  const identified = identifyUser(log, session)\n  if (identified) {\n    log.set({ subscription: 'premium' })\n  }\n}\n","server\u002Fapi\u002Fcheckout.post.ts",[317,2706,2707,2725,2729,2769,2777,2799,2811,2840,2844],{"__ignoreMap":370},[374,2708,2709,2711,2713,2715,2717,2719,2721,2723],{"class":376,"line":377},[374,2710,494],{"class":493},[374,2712,498],{"class":497},[374,2714,1778],{"class":501},[374,2716,505],{"class":497},[374,2718,508],{"class":493},[374,2720,511],{"class":497},[374,2722,319],{"class":383},[374,2724,516],{"class":497},[374,2726,2727],{"class":376,"line":519},[374,2728,523],{"emptyLinePlaceholder":522},[374,2730,2731,2733,2735,2737,2739,2741,2743,2745,2747,2749,2751,2753,2756,2758,2760,2762,2765,2767],{"class":376,"line":526},[374,2732,530],{"class":529},[374,2734,1831],{"class":501},[374,2736,536],{"class":497},[374,2738,1836],{"class":493},[374,2740,759],{"class":501},[374,2742,638],{"class":497},[374,2744,1843],{"class":501},[374,2746,638],{"class":497},[374,2748,1848],{"class":539},[374,2750,604],{"class":501},[374,2752,877],{"class":497},[374,2754,2755],{"class":554}," headers",[374,2757,558],{"class":497},[374,2759,678],{"class":501},[374,2761,638],{"class":497},[374,2763,2764],{"class":501},"headers ",[374,2766,581],{"class":497},[374,2768,584],{"class":501},[374,2770,2771,2773,2775],{"class":376,"line":551},[374,2772,1864],{"class":493},[374,2774,1867],{"class":501},[374,2776,1906],{"class":497},[374,2778,2779,2781,2784,2786,2788,2790,2792,2794,2797],{"class":376,"line":578},[374,2780,830],{"class":529},[374,2782,2783],{"class":501}," identified",[374,2785,836],{"class":497},[374,2787,1778],{"class":539},[374,2789,604],{"class":554},[374,2791,646],{"class":501},[374,2793,545],{"class":497},[374,2795,2796],{"class":501}," session",[374,2798,584],{"class":554},[374,2800,2801,2803,2805,2807,2809],{"class":376,"line":587},[374,2802,628],{"class":493},[374,2804,610],{"class":554},[374,2806,2475],{"class":501},[374,2808,649],{"class":554},[374,2810,1906],{"class":497},[374,2812,2813,2816,2818,2820,2822,2824,2827,2829,2831,2834,2836,2838],{"class":376,"line":592},[374,2814,2815],{"class":501},"    log",[374,2817,638],{"class":497},[374,2819,872],{"class":539},[374,2821,604],{"class":554},[374,2823,877],{"class":497},[374,2825,2826],{"class":554}," subscription",[374,2828,558],{"class":497},[374,2830,511],{"class":497},[374,2832,2833],{"class":383},"premium",[374,2835,564],{"class":497},[374,2837,505],{"class":497},[374,2839,584],{"class":554},[374,2841,2842],{"class":376,"line":625},[374,2843,1757],{"class":497},[374,2845,2846],{"class":376,"line":655},[374,2847,1763],{"class":497},[314,2849,2850],{},"Safe by default — only extracts whitelisted fields. Passwords, tokens, and secrets are never included.",[2852,2853,2855],"h3",{"id":2854},"options","Options",[2606,2857,2858,2873],{},[2609,2859,2860],{},[2612,2861,2862,2865,2868,2871],{},[2615,2863,2864],{},"Option",[2615,2866,2867],{},"Type",[2615,2869,2870],{},"Default",[2615,2872,2620],{},[2622,2874,2875,2896,2925,2945],{},[2612,2876,2877,2882,2887,2891],{},[2627,2878,2879],{},[317,2880,2881],{},"maskEmail",[2627,2883,2884],{},[317,2885,2886],{},"boolean",[2627,2888,2889],{},[317,2890,2699],{},[2627,2892,2893,2894],{},"Mask emails as ",[317,2895,2679],{},[2612,2897,2898,2902,2906,2910],{},[2627,2899,2900],{},[317,2901,2325],{},[2627,2903,2904],{},[317,2905,2886],{},[2627,2907,2908],{},[317,2909,2636],{},[2627,2911,2912,2913,2585,2916,2585,2919,2585,2922,617],{},"Include session metadata (",[317,2914,2915],{},"session.id",[317,2917,2918],{},"session.expiresAt",[317,2920,2921],{},"session.ipAddress",[317,2923,2924],{},"session.userAgent",[2612,2926,2927,2932,2937,2942],{},[2627,2928,2929],{},[317,2930,2931],{},"fields",[2627,2933,2934],{},[317,2935,2936],{},"string[]",[2627,2938,2939],{},[317,2940,2941],{},"['id', 'name', 'email', 'image', 'emailVerified', 'createdAt']",[2627,2943,2944],{},"User fields to extract",[2612,2946,2947,2952,2957,2962],{},[2627,2948,2949],{},[317,2950,2951],{},"extend",[2627,2953,2954],{},[317,2955,2956],{},"(session) => Record\u003Cstring, unknown>",[2627,2958,2959],{},[317,2960,2961],{},"undefined",[2627,2963,2964],{},"Add custom fields from Better Auth plugins (organizations, roles, etc.)",[364,2966,2968],{"className":483,"code":2967,"filename":2704,"language":486,"meta":370,"style":370},"identifyUser(log, session, {\n  maskEmail: true,\n  fields: ['id', 'name'],\n  session: false,\n})\n",[317,2969,2970,2984,2995,3022,3034],{"__ignoreMap":370},[374,2971,2972,2974,2976,2978,2980,2982],{"class":376,"line":377},[374,2973,1870],{"class":539},[374,2975,1873],{"class":501},[374,2977,545],{"class":497},[374,2979,2796],{"class":501},[374,2981,545],{"class":497},[374,2983,548],{"class":497},[374,2985,2986,2989,2991,2993],{"class":376,"line":519},[374,2987,2988],{"class":554},"  maskEmail",[374,2990,558],{"class":497},[374,2992,920],{"class":919},[374,2994,575],{"class":497},[374,2996,2997,3000,3002,3004,3006,3008,3010,3012,3014,3016,3018,3020],{"class":376,"line":526},[374,2998,2999],{"class":554},"  fields",[374,3001,558],{"class":497},[374,3003,561],{"class":501},[374,3005,564],{"class":497},[374,3007,2226],{"class":383},[374,3009,564],{"class":497},[374,3011,545],{"class":497},[374,3013,511],{"class":497},[374,3015,2245],{"class":383},[374,3017,564],{"class":497},[374,3019,572],{"class":501},[374,3021,575],{"class":497},[374,3023,3024,3027,3029,3032],{"class":376,"line":551},[374,3025,3026],{"class":554},"  session",[374,3028,558],{"class":497},[374,3030,3031],{"class":919}," false",[374,3033,575],{"class":497},[374,3035,3036,3038],{"class":376,"line":578},[374,3037,581],{"class":497},[374,3039,584],{"class":501},[2852,3041,2951],{"id":2951},[314,3043,332,3044,3046],{},[317,3045,2951],{}," to capture fields added by Better Auth plugins (organizations, 2FA, roles, etc.):",[364,3048,3051],{"className":483,"code":3049,"filename":3050,"language":486,"meta":370,"style":370},"import { createAuthMiddleware } from 'evlog\u002Fbetter-auth'\n\nconst identify = createAuthMiddleware(auth, {\n  extend: (session) => ({\n    organization: session.user.activeOrganization,\n    role: session.user.role,\n  }),\n})\n","server\u002Fmiddleware\u002Fauth-identify.ts",[317,3052,3053,3071,3075,3091,3110,3130,3150,3159],{"__ignoreMap":370},[374,3054,3055,3057,3059,3061,3063,3065,3067,3069],{"class":376,"line":377},[374,3056,494],{"class":493},[374,3058,498],{"class":497},[374,3060,502],{"class":501},[374,3062,505],{"class":497},[374,3064,508],{"class":493},[374,3066,511],{"class":497},[374,3068,319],{"class":383},[374,3070,516],{"class":497},[374,3072,3073],{"class":376,"line":519},[374,3074,523],{"emptyLinePlaceholder":522},[374,3076,3077,3079,3081,3083,3085,3087,3089],{"class":376,"line":526},[374,3078,530],{"class":529},[374,3080,533],{"class":501},[374,3082,536],{"class":497},[374,3084,502],{"class":539},[374,3086,542],{"class":501},[374,3088,545],{"class":497},[374,3090,548],{"class":497},[374,3092,3093,3096,3098,3100,3102,3104,3106,3108],{"class":376,"line":551},[374,3094,3095],{"class":539},"  extend",[374,3097,558],{"class":497},[374,3099,610],{"class":497},[374,3101,2325],{"class":613},[374,3103,617],{"class":497},[374,3105,620],{"class":529},[374,3107,610],{"class":501},[374,3109,1906],{"class":497},[374,3111,3112,3115,3117,3119,3121,3123,3125,3128],{"class":376,"line":578},[374,3113,3114],{"class":554},"    organization",[374,3116,558],{"class":497},[374,3118,2796],{"class":501},[374,3120,638],{"class":497},[374,3122,2212],{"class":501},[374,3124,638],{"class":497},[374,3126,3127],{"class":501},"activeOrganization",[374,3129,575],{"class":497},[374,3131,3132,3135,3137,3139,3141,3143,3145,3148],{"class":376,"line":587},[374,3133,3134],{"class":554},"    role",[374,3136,558],{"class":497},[374,3138,2796],{"class":501},[374,3140,638],{"class":497},[374,3142,2212],{"class":501},[374,3144,638],{"class":497},[374,3146,3147],{"class":501},"role",[374,3149,575],{"class":497},[374,3151,3152,3155,3157],{"class":376,"line":592},[374,3153,3154],{"class":497},"  }",[374,3156,617],{"class":501},[374,3158,575],{"class":497},[374,3160,3161,3163],{"class":376,"line":625},[374,3162,581],{"class":497},[374,3164,584],{"class":501},[314,3166,3167],{},"Wide event with plugin fields:",[364,3169,3172],{"className":1897,"code":3170,"filename":3171,"language":907,"meta":370,"style":370},"{\n  \"userId\": \"QBX9tPjJQExWawAbNll75\",\n  \"user\": { \"id\": \"QBX9tPjJQExWawAbNll75\", \"name\": \"Hugo Richard\" },\n  \"organization\": { \"id\": \"org_42\", \"name\": \"Acme\" },\n  \"role\": \"admin\"\n}\n","Wide Event",[317,3173,3174,3178,3196,3241,3288,3305],{"__ignoreMap":370},[374,3175,3176],{"class":376,"line":377},[374,3177,1906],{"class":497},[374,3179,3180,3182,3184,3186,3188,3190,3192,3194],{"class":376,"line":519},[374,3181,1911],{"class":497},[374,3183,2192],{"class":529},[374,3185,1917],{"class":497},[374,3187,558],{"class":497},[374,3189,1922],{"class":497},[374,3191,2201],{"class":383},[374,3193,1917],{"class":497},[374,3195,575],{"class":497},[374,3197,3198,3200,3202,3204,3206,3208,3210,3212,3214,3216,3218,3220,3222,3224,3226,3228,3230,3232,3234,3236,3238],{"class":376,"line":526},[374,3199,1911],{"class":497},[374,3201,2212],{"class":529},[374,3203,1917],{"class":497},[374,3205,558],{"class":497},[374,3207,498],{"class":497},[374,3209,1922],{"class":497},[374,3211,2226],{"class":380},[374,3213,1917],{"class":497},[374,3215,558],{"class":497},[374,3217,1922],{"class":497},[374,3219,2201],{"class":383},[374,3221,1917],{"class":497},[374,3223,545],{"class":497},[374,3225,1922],{"class":497},[374,3227,2245],{"class":380},[374,3229,1917],{"class":497},[374,3231,558],{"class":497},[374,3233,1922],{"class":497},[374,3235,2254],{"class":383},[374,3237,1917],{"class":497},[374,3239,3240],{"class":497}," },\n",[374,3242,3243,3245,3248,3250,3252,3254,3256,3258,3260,3262,3264,3267,3269,3271,3273,3275,3277,3279,3281,3284,3286],{"class":376,"line":551},[374,3244,1911],{"class":497},[374,3246,3247],{"class":529},"organization",[374,3249,1917],{"class":497},[374,3251,558],{"class":497},[374,3253,498],{"class":497},[374,3255,1922],{"class":497},[374,3257,2226],{"class":380},[374,3259,1917],{"class":497},[374,3261,558],{"class":497},[374,3263,1922],{"class":497},[374,3265,3266],{"class":383},"org_42",[374,3268,1917],{"class":497},[374,3270,545],{"class":497},[374,3272,1922],{"class":497},[374,3274,2245],{"class":380},[374,3276,1917],{"class":497},[374,3278,558],{"class":497},[374,3280,1922],{"class":497},[374,3282,3283],{"class":383},"Acme",[374,3285,1917],{"class":497},[374,3287,3240],{"class":497},[374,3289,3290,3292,3294,3296,3298,3300,3303],{"class":376,"line":578},[374,3291,1911],{"class":497},[374,3293,3147],{"class":529},[374,3295,1917],{"class":497},[374,3297,558],{"class":497},[374,3299,1922],{"class":497},[374,3301,3302],{"class":383},"admin",[374,3304,2311],{"class":497},[374,3306,3307],{"class":376,"line":587},[374,3308,1763],{"class":497},[326,3310,3312],{"id":3311},"createauthmiddleware","createAuthMiddleware",[314,3314,3315,3316,3318],{},"Framework-agnostic factory. Call it once at startup, then use the returned function in your middleware. The third argument ",[317,3317,692],{}," enables built-in route filtering:",[364,3320,3322],{"className":483,"code":3321,"filename":3050,"language":486,"meta":370,"style":370},"import { createAuthMiddleware } from 'evlog\u002Fbetter-auth'\n\nconst identify = createAuthMiddleware(auth, {\n  exclude: ['\u002Fapi\u002Fauth\u002F**', '\u002Fapi\u002Fpublic\u002F**'],\n  include: ['\u002Fapi\u002F**'],\n  maskEmail: true,\n})\n",[317,3323,3324,3342,3346,3362,3389,3409,3419],{"__ignoreMap":370},[374,3325,3326,3328,3330,3332,3334,3336,3338,3340],{"class":376,"line":377},[374,3327,494],{"class":493},[374,3329,498],{"class":497},[374,3331,502],{"class":501},[374,3333,505],{"class":497},[374,3335,508],{"class":493},[374,3337,511],{"class":497},[374,3339,319],{"class":383},[374,3341,516],{"class":497},[374,3343,3344],{"class":376,"line":519},[374,3345,523],{"emptyLinePlaceholder":522},[374,3347,3348,3350,3352,3354,3356,3358,3360],{"class":376,"line":526},[374,3349,530],{"class":529},[374,3351,533],{"class":501},[374,3353,536],{"class":497},[374,3355,502],{"class":539},[374,3357,542],{"class":501},[374,3359,545],{"class":497},[374,3361,548],{"class":497},[374,3363,3364,3366,3368,3370,3372,3374,3376,3378,3380,3383,3385,3387],{"class":376,"line":551},[374,3365,555],{"class":554},[374,3367,558],{"class":497},[374,3369,561],{"class":501},[374,3371,564],{"class":497},[374,3373,567],{"class":383},[374,3375,564],{"class":497},[374,3377,545],{"class":497},[374,3379,511],{"class":497},[374,3381,3382],{"class":383},"\u002Fapi\u002Fpublic\u002F**",[374,3384,564],{"class":497},[374,3386,572],{"class":501},[374,3388,575],{"class":497},[374,3390,3391,3394,3396,3398,3400,3403,3405,3407],{"class":376,"line":578},[374,3392,3393],{"class":554},"  include",[374,3395,558],{"class":497},[374,3397,561],{"class":501},[374,3399,564],{"class":497},[374,3401,3402],{"class":383},"\u002Fapi\u002F**",[374,3404,564],{"class":497},[374,3406,572],{"class":501},[374,3408,575],{"class":497},[374,3410,3411,3413,3415,3417],{"class":376,"line":587},[374,3412,2988],{"class":554},[374,3414,558],{"class":497},[374,3416,920],{"class":919},[374,3418,575],{"class":497},[374,3420,3421,3423],{"class":376,"line":592},[374,3422,581],{"class":497},[374,3424,584],{"class":501},[314,3426,3427,3428,3430,3431,3433],{},"The function signature is ",[317,3429,2650],{},". It resolves the session, calls ",[317,3432,1870],{},", captures timing, fires lifecycle hooks, and silently catches errors so session resolution never breaks a request.",[2852,3435,2855],{"id":3436},"options-1",[314,3438,3439,3440,3442],{},"Inherits all ",[317,3441,1870],{}," options, plus:",[2606,3444,3445,3457],{},[2609,3446,3447],{},[2612,3448,3449,3451,3453,3455],{},[2615,3450,2864],{},[2615,3452,2867],{},[2615,3454,2870],{},[2615,3456,2620],{},[2622,3458,3459,3477,3494,3512],{},[2612,3460,3461,3465,3469,3474],{},[2627,3462,3463],{},[317,3464,2569],{},[2627,3466,3467],{},[317,3468,2936],{},[2627,3470,3471],{},[317,3472,3473],{},"['\u002Fapi\u002Fauth\u002F**']",[2627,3475,3476],{},"Route patterns to skip (glob)",[2612,3478,3479,3483,3487,3491],{},[2627,3480,3481],{},[317,3482,2565],{},[2627,3484,3485],{},[317,3486,2936],{},[2627,3488,3489],{},[317,3490,2961],{},[2627,3492,3493],{},"If set, only matching routes are resolved",[2612,3495,3496,3500,3505,3509],{},[2627,3497,3498],{},[317,3499,2596],{},[2627,3501,3502],{},[317,3503,3504],{},"(log, session) => void",[2627,3506,3507],{},[317,3508,2961],{},[2627,3510,3511],{},"Called after successful identification",[2612,3513,3514,3518,3523,3527],{},[2627,3515,3516],{},[317,3517,2600],{},[2627,3519,3520],{},[317,3521,3522],{},"(log) => void",[2627,3524,3525],{},[317,3526,2961],{},[2627,3528,3529],{},"Called when no session is found",[2852,3531,3533],{"id":3532},"lifecycle-hooks","Lifecycle Hooks",[314,3535,332,3536,3538],{},[317,3537,2596],{}," to react to user identification — for example, force-keep logs for premium users via tail sampling:",[364,3540,3542],{"className":483,"code":3541,"filename":3050,"language":486,"meta":370,"style":370},"const identify = createAuthMiddleware(auth, {\n  onIdentify: (log, session) => {\n    if (session.user.plan === 'enterprise') {\n      log.set({ _forceKeep: true })\n    }\n  },\n  onAnonymous: (log) => {\n    log.set({ anonymous: true })\n  },\n})\n",[317,3543,3544,3560,3581,3613,3637,3642,3646,3663,3686,3690],{"__ignoreMap":370},[374,3545,3546,3548,3550,3552,3554,3556,3558],{"class":376,"line":377},[374,3547,530],{"class":529},[374,3549,533],{"class":501},[374,3551,536],{"class":497},[374,3553,502],{"class":539},[374,3555,542],{"class":501},[374,3557,545],{"class":497},[374,3559,548],{"class":497},[374,3561,3562,3565,3567,3569,3571,3573,3575,3577,3579],{"class":376,"line":519},[374,3563,3564],{"class":539},"  onIdentify",[374,3566,558],{"class":497},[374,3568,610],{"class":497},[374,3570,646],{"class":613},[374,3572,545],{"class":497},[374,3574,2796],{"class":613},[374,3576,617],{"class":497},[374,3578,620],{"class":529},[374,3580,548],{"class":497},[374,3582,3583,3586,3588,3590,3592,3594,3596,3599,3602,3604,3607,3609,3611],{"class":376,"line":526},[374,3584,3585],{"class":493},"    if",[374,3587,610],{"class":554},[374,3589,2325],{"class":501},[374,3591,638],{"class":497},[374,3593,2212],{"class":501},[374,3595,638],{"class":497},[374,3597,3598],{"class":501},"plan",[374,3600,3601],{"class":497}," ===",[374,3603,511],{"class":497},[374,3605,3606],{"class":383},"enterprise",[374,3608,564],{"class":497},[374,3610,649],{"class":554},[374,3612,1906],{"class":497},[374,3614,3615,3618,3620,3622,3624,3626,3629,3631,3633,3635],{"class":376,"line":551},[374,3616,3617],{"class":501},"      log",[374,3619,638],{"class":497},[374,3621,872],{"class":539},[374,3623,604],{"class":554},[374,3625,877],{"class":497},[374,3627,3628],{"class":554}," _forceKeep",[374,3630,558],{"class":497},[374,3632,920],{"class":919},[374,3634,505],{"class":497},[374,3636,584],{"class":554},[374,3638,3639],{"class":376,"line":578},[374,3640,3641],{"class":497},"    }\n",[374,3643,3644],{"class":376,"line":587},[374,3645,2317],{"class":497},[374,3647,3648,3651,3653,3655,3657,3659,3661],{"class":376,"line":592},[374,3649,3650],{"class":539},"  onAnonymous",[374,3652,558],{"class":497},[374,3654,610],{"class":497},[374,3656,646],{"class":613},[374,3658,617],{"class":497},[374,3660,620],{"class":529},[374,3662,548],{"class":497},[374,3664,3665,3667,3669,3671,3673,3675,3678,3680,3682,3684],{"class":376,"line":625},[374,3666,2815],{"class":501},[374,3668,638],{"class":497},[374,3670,872],{"class":539},[374,3672,604],{"class":554},[374,3674,877],{"class":497},[374,3676,3677],{"class":554}," anonymous",[374,3679,558],{"class":497},[374,3681,920],{"class":919},[374,3683,505],{"class":497},[374,3685,584],{"class":554},[374,3687,3688],{"class":376,"line":655},[374,3689,2317],{"class":497},[374,3691,3692,3694],{"class":376,"line":697},[374,3693,581],{"class":497},[374,3695,584],{"class":501},[326,3697,3699],{"id":3698},"createauthidentifier-standalone-nitro","createAuthIdentifier (Standalone Nitro)",[314,3701,3702,3703,3705],{},"A factory that creates a Nitro ",[317,3704,814],{}," hook. Designed for standalone Nitro apps where the evlog Nitro module handles hook ordering.",[3707,3708,3709,3710,3712,3713,3715,3716,3718],"note",{},"For ",[342,3711,134],{},", use ",[317,3714,3312],{}," in a server middleware instead — Nitro plugin hook ordering can cause the logger to not be available yet in the ",[317,3717,814],{}," hook.",[364,3720,3723],{"className":483,"code":3721,"filename":3722,"language":486,"meta":370,"style":370},"import { createAuthIdentifier } from 'evlog\u002Fbetter-auth'\nimport { auth } from '.\u002Flib\u002Fauth'\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('request', createAuthIdentifier(auth, {\n    exclude: ['\u002Fapi\u002Fauth\u002F**', '\u002Fapi\u002Fpublic\u002F**'],\n  }))\n})\n","server\u002Fplugins\u002Fevlog-auth.ts",[317,3724,3725,3744,3763,3767,3789,3824,3851,3858],{"__ignoreMap":370},[374,3726,3727,3729,3731,3734,3736,3738,3740,3742],{"class":376,"line":377},[374,3728,494],{"class":493},[374,3730,498],{"class":497},[374,3732,3733],{"class":501}," createAuthIdentifier",[374,3735,505],{"class":497},[374,3737,508],{"class":493},[374,3739,511],{"class":497},[374,3741,319],{"class":383},[374,3743,516],{"class":497},[374,3745,3746,3748,3750,3752,3754,3756,3758,3761],{"class":376,"line":519},[374,3747,494],{"class":493},[374,3749,498],{"class":497},[374,3751,759],{"class":501},[374,3753,505],{"class":497},[374,3755,508],{"class":493},[374,3757,511],{"class":497},[374,3759,3760],{"class":383},".\u002Flib\u002Fauth",[374,3762,516],{"class":497},[374,3764,3765],{"class":376,"line":526},[374,3766,523],{"emptyLinePlaceholder":522},[374,3768,3769,3771,3773,3776,3778,3780,3783,3785,3787],{"class":376,"line":551},[374,3770,595],{"class":493},[374,3772,598],{"class":493},[374,3774,3775],{"class":539}," defineNitroPlugin",[374,3777,604],{"class":501},[374,3779,604],{"class":497},[374,3781,3782],{"class":613},"nitroApp",[374,3784,617],{"class":497},[374,3786,620],{"class":529},[374,3788,548],{"class":497},[374,3790,3791,3794,3796,3799,3801,3804,3806,3808,3810,3812,3814,3816,3818,3820,3822],{"class":376,"line":578},[374,3792,3793],{"class":501},"  nitroApp",[374,3795,638],{"class":497},[374,3797,3798],{"class":501},"hooks",[374,3800,638],{"class":497},[374,3802,3803],{"class":539},"hook",[374,3805,604],{"class":554},[374,3807,564],{"class":497},[374,3809,814],{"class":383},[374,3811,564],{"class":497},[374,3813,545],{"class":497},[374,3815,3733],{"class":539},[374,3817,604],{"class":554},[374,3819,2444],{"class":501},[374,3821,545],{"class":497},[374,3823,548],{"class":497},[374,3825,3826,3829,3831,3833,3835,3837,3839,3841,3843,3845,3847,3849],{"class":376,"line":587},[374,3827,3828],{"class":554},"    exclude",[374,3830,558],{"class":497},[374,3832,561],{"class":554},[374,3834,564],{"class":497},[374,3836,567],{"class":383},[374,3838,564],{"class":497},[374,3840,545],{"class":497},[374,3842,511],{"class":497},[374,3844,3382],{"class":383},[374,3846,564],{"class":497},[374,3848,572],{"class":554},[374,3850,575],{"class":497},[374,3852,3853,3855],{"class":376,"line":592},[374,3854,3154],{"class":497},[374,3856,3857],{"class":554},"))\n",[374,3859,3860,3862],{"class":376,"line":625},[374,3861,581],{"class":497},[374,3863,584],{"class":501},[326,3865,110],{"id":3866},"performance",[314,3868,3869,3872,3873,3876],{},[317,3870,3871],{},"getSession()"," costs a database query on every request. The ",[317,3874,3875],{},"auth.resolvedIn"," field in your wide event tells you exactly how long each resolution takes. For high-traffic apps:",[2555,3878,3879,3890,3897],{},[443,3880,3881,3889],{},[342,3882,3883,3884],{},"Enable ",[334,3885,3888],{"href":3886,"rel":3887},"https:\u002F\u002Fwww.better-auth.com\u002Fdocs\u002Fconcepts\u002Fsession-caching",[338],"session caching"," in Better Auth to avoid hitting the database on every request",[443,3891,3892,3896],{},[342,3893,332,3894],{},[317,3895,2569],{}," to skip public routes that don't need user context",[443,3898,3899,3903],{},[342,3900,332,3901],{},[317,3902,2565],{}," to limit resolution to specific route patterns",[364,3905,3908],{"className":1897,"code":3906,"filename":3907,"language":907,"meta":370,"style":370},"{\n  \"auth\": { \"resolvedIn\": 245, \"identified\": true },\n  \"duration\": \"312ms\"\n}\n","Wide Event — slow session resolution",[317,3909,3910,3914,3951,3968],{"__ignoreMap":370},[374,3911,3912],{"class":376,"line":377},[374,3913,1906],{"class":497},[374,3915,3916,3918,3920,3922,3924,3926,3928,3930,3932,3934,3937,3939,3941,3943,3945,3947,3949],{"class":376,"line":519},[374,3917,1911],{"class":497},[374,3919,2444],{"class":529},[374,3921,1917],{"class":497},[374,3923,558],{"class":497},[374,3925,498],{"class":497},[374,3927,1922],{"class":497},[374,3929,2458],{"class":380},[374,3931,1917],{"class":497},[374,3933,558],{"class":497},[374,3935,3936],{"class":1982}," 245",[374,3938,545],{"class":497},[374,3940,1922],{"class":497},[374,3942,2475],{"class":380},[374,3944,1917],{"class":497},[374,3946,558],{"class":497},[374,3948,920],{"class":497},[374,3950,3240],{"class":497},[374,3952,3953,3955,3957,3959,3961,3963,3966],{"class":376,"line":526},[374,3954,1911],{"class":497},[374,3956,1992],{"class":529},[374,3958,1917],{"class":497},[374,3960,558],{"class":497},[374,3962,1922],{"class":497},[374,3964,3965],{"class":383},"312ms",[374,3967,2311],{"class":497},[374,3969,3970],{"class":376,"line":551},[374,3971,1763],{"class":497},[314,3973,3974,3975,3977,3978,3980],{},"When ",[317,3976,3875],{}," is high relative to ",[317,3979,1992],{},", enable session caching in Better Auth.",[326,3982,3984],{"id":3983},"client-identity-sync","Client Identity Sync",[314,3986,3987,3988,3991],{},"On the client side, watch the Better Auth session and call ",[317,3989,3990],{},"setIdentity()"," to include user context in client-side logs:",[364,3993,3996],{"className":483,"code":3994,"filename":3995,"language":486,"meta":370,"style":370},"import { authClient } from '~\u002Flib\u002Fauth-client'\n\nexport function useAuthIdentity() {\n  const session = authClient.useSession()\n\n  watch(() => session.value?.data?.user, (user) => {\n    if (user) {\n      setIdentity({ userId: user.id, userName: user.name })\n    } else {\n      clearIdentity()\n    }\n  }, { immediate: true })\n}\n","composables\u002FuseAuthIdentity.ts",[317,3997,3998,4018,4022,4036,4053,4057,4097,4109,4147,4157,4164,4168,4186],{"__ignoreMap":370},[374,3999,4000,4002,4004,4007,4009,4011,4013,4016],{"class":376,"line":377},[374,4001,494],{"class":493},[374,4003,498],{"class":497},[374,4005,4006],{"class":501}," authClient",[374,4008,505],{"class":497},[374,4010,508],{"class":493},[374,4012,511],{"class":497},[374,4014,4015],{"class":383},"~\u002Flib\u002Fauth-client",[374,4017,516],{"class":497},[374,4019,4020],{"class":376,"line":519},[374,4021,523],{"emptyLinePlaceholder":522},[374,4023,4024,4026,4029,4032,4034],{"class":376,"line":526},[374,4025,595],{"class":493},[374,4027,4028],{"class":529}," function",[374,4030,4031],{"class":539}," useAuthIdentity",[374,4033,1726],{"class":497},[374,4035,548],{"class":497},[374,4037,4038,4040,4042,4044,4046,4048,4051],{"class":376,"line":551},[374,4039,830],{"class":529},[374,4041,2796],{"class":501},[374,4043,836],{"class":497},[374,4045,4006],{"class":501},[374,4047,638],{"class":497},[374,4049,4050],{"class":539},"useSession",[374,4052,841],{"class":554},[374,4054,4055],{"class":376,"line":578},[374,4056,523],{"emptyLinePlaceholder":522},[374,4058,4059,4062,4064,4066,4068,4070,4072,4075,4078,4081,4083,4085,4087,4089,4091,4093,4095],{"class":376,"line":587},[374,4060,4061],{"class":539},"  watch",[374,4063,604],{"class":554},[374,4065,1726],{"class":497},[374,4067,620],{"class":529},[374,4069,2796],{"class":501},[374,4071,638],{"class":497},[374,4073,4074],{"class":501},"value",[374,4076,4077],{"class":497},"?.",[374,4079,4080],{"class":501},"data",[374,4082,4077],{"class":497},[374,4084,2212],{"class":501},[374,4086,545],{"class":497},[374,4088,610],{"class":497},[374,4090,2212],{"class":613},[374,4092,617],{"class":497},[374,4094,620],{"class":529},[374,4096,548],{"class":497},[374,4098,4099,4101,4103,4105,4107],{"class":376,"line":592},[374,4100,3585],{"class":493},[374,4102,610],{"class":554},[374,4104,2212],{"class":501},[374,4106,649],{"class":554},[374,4108,1906],{"class":497},[374,4110,4111,4114,4116,4118,4121,4123,4126,4128,4130,4132,4135,4137,4139,4141,4143,4145],{"class":376,"line":625},[374,4112,4113],{"class":539},"      setIdentity",[374,4115,604],{"class":554},[374,4117,877],{"class":497},[374,4119,4120],{"class":554}," userId",[374,4122,558],{"class":497},[374,4124,4125],{"class":501}," user",[374,4127,638],{"class":497},[374,4129,2226],{"class":501},[374,4131,545],{"class":497},[374,4133,4134],{"class":554}," userName",[374,4136,558],{"class":497},[374,4138,4125],{"class":501},[374,4140,638],{"class":497},[374,4142,2245],{"class":501},[374,4144,505],{"class":497},[374,4146,584],{"class":554},[374,4148,4149,4152,4155],{"class":376,"line":655},[374,4150,4151],{"class":497},"    }",[374,4153,4154],{"class":493}," else",[374,4156,548],{"class":497},[374,4158,4159,4162],{"class":376,"line":697},[374,4160,4161],{"class":539},"      clearIdentity",[374,4163,841],{"class":554},[374,4165,4166],{"class":376,"line":896},[374,4167,3641],{"class":497},[374,4169,4170,4173,4175,4178,4180,4182,4184],{"class":376,"line":927},[374,4171,4172],{"class":497},"  },",[374,4174,498],{"class":497},[374,4176,4177],{"class":554}," immediate",[374,4179,558],{"class":497},[374,4181,920],{"class":919},[374,4183,505],{"class":497},[374,4185,584],{"class":554},[374,4187,4188],{"class":376,"line":1754},[374,4189,1763],{"class":497},[314,4191,4192],{},"Call it once in your root layout:",[364,4194,4199],{"className":4195,"code":4196,"filename":4197,"language":4198,"meta":370,"style":370},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup>\nuseAuthIdentity()\n\u003C\u002Fscript>\n","app.vue","vue",[317,4200,4201,4215,4222],{"__ignoreMap":370},[374,4202,4203,4206,4209,4212],{"class":376,"line":377},[374,4204,4205],{"class":497},"\u003C",[374,4207,4208],{"class":554},"script",[374,4210,4211],{"class":529}," setup",[374,4213,4214],{"class":497},">\n",[374,4216,4217,4220],{"class":376,"line":519},[374,4218,4219],{"class":539},"useAuthIdentity",[374,4221,841],{"class":501},[374,4223,4224,4227,4229],{"class":376,"line":526},[374,4225,4226],{"class":497},"\u003C\u002F",[374,4228,4208],{"class":554},[374,4230,4214],{"class":497},[314,4232,4233],{},"Client-side logs now include the user identity:",[364,4235,4238],{"className":1897,"code":4236,"filename":4237,"language":907,"meta":370,"style":370},"{\n  \"level\": \"info\",\n  \"tag\": \"checkout\",\n  \"message\": \"User clicked checkout\",\n  \"userId\": \"QBX9tPjJQExWawAbNll75\",\n  \"userName\": \"Hugo Richard\"\n}\n","Client Log",[317,4239,4240,4244,4262,4281,4301,4319,4336],{"__ignoreMap":370},[374,4241,4242],{"class":376,"line":377},[374,4243,1906],{"class":497},[374,4245,4246,4248,4250,4252,4254,4256,4258,4260],{"class":376,"line":519},[374,4247,1911],{"class":497},[374,4249,1914],{"class":529},[374,4251,1917],{"class":497},[374,4253,558],{"class":497},[374,4255,1922],{"class":497},[374,4257,1925],{"class":383},[374,4259,1917],{"class":497},[374,4261,575],{"class":497},[374,4263,4264,4266,4269,4271,4273,4275,4277,4279],{"class":376,"line":526},[374,4265,1911],{"class":497},[374,4267,4268],{"class":529},"tag",[374,4270,1917],{"class":497},[374,4272,558],{"class":497},[374,4274,1922],{"class":497},[374,4276,887],{"class":383},[374,4278,1917],{"class":497},[374,4280,575],{"class":497},[374,4282,4283,4285,4288,4290,4292,4294,4297,4299],{"class":376,"line":551},[374,4284,1911],{"class":497},[374,4286,4287],{"class":529},"message",[374,4289,1917],{"class":497},[374,4291,558],{"class":497},[374,4293,1922],{"class":497},[374,4295,4296],{"class":383},"User clicked checkout",[374,4298,1917],{"class":497},[374,4300,575],{"class":497},[374,4302,4303,4305,4307,4309,4311,4313,4315,4317],{"class":376,"line":578},[374,4304,1911],{"class":497},[374,4306,2192],{"class":529},[374,4308,1917],{"class":497},[374,4310,558],{"class":497},[374,4312,1922],{"class":497},[374,4314,2201],{"class":383},[374,4316,1917],{"class":497},[374,4318,575],{"class":497},[374,4320,4321,4323,4326,4328,4330,4332,4334],{"class":376,"line":587},[374,4322,1911],{"class":497},[374,4324,4325],{"class":529},"userName",[374,4327,1917],{"class":497},[374,4329,558],{"class":497},[374,4331,1922],{"class":497},[374,4333,2254],{"class":383},[374,4335,2311],{"class":497},[374,4337,4338],{"class":376,"line":592},[374,4339,1763],{"class":497},[326,4341,4343],{"id":4342},"wide-event-fields","Wide Event Fields",[2606,4345,4346,4358],{},[2609,4347,4348],{},[2612,4349,4350,4353,4356],{},[2615,4351,4352],{},"Field",[2615,4354,4355],{},"Source",[2615,4357,2620],{},[2622,4359,4360,4377,4391,4406,4424,4439,4454,4469,4483,4497,4511,4525,4540,4552],{},[2612,4361,4362,4366,4371],{},[2627,4363,4364],{},[317,4365,2192],{},[2627,4367,4368],{},[317,4369,4370],{},"session.user.id",[2627,4372,4373,4374,617],{},"Top-level user ID (used by PostHog adapter as ",[317,4375,4376],{},"distinct_id",[2612,4378,4379,4384,4388],{},[2627,4380,4381],{},[317,4382,4383],{},"user.id",[2627,4385,4386],{},[317,4387,4370],{},[2627,4389,4390],{},"User ID",[2612,4392,4393,4398,4403],{},[2627,4394,4395],{},[317,4396,4397],{},"user.name",[2627,4399,4400],{},[317,4401,4402],{},"session.user.name",[2627,4404,4405],{},"Display name",[2612,4407,4408,4413,4418],{},[2627,4409,4410],{},[317,4411,4412],{},"user.email",[2627,4414,4415],{},[317,4416,4417],{},"session.user.email",[2627,4419,4420,4421,617],{},"Email (maskable with ",[317,4422,4423],{},"maskEmail: true",[2612,4425,4426,4431,4436],{},[2627,4427,4428],{},[317,4429,4430],{},"user.image",[2627,4432,4433],{},[317,4434,4435],{},"session.user.image",[2627,4437,4438],{},"Avatar URL",[2612,4440,4441,4446,4451],{},[2627,4442,4443],{},[317,4444,4445],{},"user.emailVerified",[2627,4447,4448],{},[317,4449,4450],{},"session.user.emailVerified",[2627,4452,4453],{},"Email verification status",[2612,4455,4456,4461,4466],{},[2627,4457,4458],{},[317,4459,4460],{},"user.createdAt",[2627,4462,4463],{},[317,4464,4465],{},"session.user.createdAt",[2627,4467,4468],{},"Account creation date (ISO string)",[2612,4470,4471,4475,4480],{},[2627,4472,4473],{},[317,4474,2915],{},[2627,4476,4477],{},[317,4478,4479],{},"session.session.id",[2627,4481,4482],{},"Session ID",[2612,4484,4485,4489,4494],{},[2627,4486,4487],{},[317,4488,2918],{},[2627,4490,4491],{},[317,4492,4493],{},"session.session.expiresAt",[2627,4495,4496],{},"Session expiry (ISO string)",[2612,4498,4499,4503,4508],{},[2627,4500,4501],{},[317,4502,2921],{},[2627,4504,4505],{},[317,4506,4507],{},"session.session.ipAddress",[2627,4509,4510],{},"Client IP from the session",[2612,4512,4513,4517,4522],{},[2627,4514,4515],{},[317,4516,2924],{},[2627,4518,4519],{},[317,4520,4521],{},"session.session.userAgent",[2627,4523,4524],{},"User agent string from the session",[2612,4526,4527,4532,4537],{},[2627,4528,4529],{},[317,4530,4531],{},"session.createdAt",[2627,4533,4534],{},[317,4535,4536],{},"session.session.createdAt",[2627,4538,4539],{},"Session creation date (ISO string)",[2612,4541,4542,4546,4549],{},[2627,4543,4544],{},[317,4545,3875],{},[2627,4547,4548],{},"Measured",[2627,4550,4551],{},"Session resolution time in ms",[2612,4553,4554,4559,4562],{},[2627,4555,4556],{},[317,4557,4558],{},"auth.identified",[2627,4560,4561],{},"Computed",[2627,4563,4564],{},"Whether the request was identified",[326,4566,4568],{"id":4567},"works-with-the-ai-sdk","Works With the AI SDK",[314,4570,4571,4572,4575],{},"When combined with ",[317,4573,4574],{},"evlog\u002Fai",", your wide events include both user identity and AI metrics in a single event:",[364,4577,4580],{"className":1897,"code":4578,"filename":4579,"language":907,"meta":370,"style":370},"{\n  \"method\": \"POST\",\n  \"path\": \"\u002Fapi\u002Fchat\",\n  \"status\": 200,\n  \"duration\": \"4.5s\",\n  \"userId\": \"QBX9tPjJQExWawAbNll75\",\n  \"user\": {\n    \"id\": \"QBX9tPjJQExWawAbNll75\",\n    \"name\": \"Hugo Richard\",\n    \"email\": \"hugo@example.com\"\n  },\n  \"auth\": { \"resolvedIn\": 8, \"identified\": true },\n  \"ai\": {\n    \"calls\": 1,\n    \"model\": \"claude-sonnet-4.6\",\n    \"provider\": \"anthropic\",\n    \"inputTokens\": 3312,\n    \"outputTokens\": 814,\n    \"totalTokens\": 4126,\n    \"msToFirstChunk\": 234,\n    \"msToFinish\": 4500,\n    \"tokensPerSecond\": 180\n  }\n}\n","Wide Event — AI + User",[317,4581,4582,4586,4604,4623,4637,4656,4674,4686,4704,4722,4738,4742,4779,4792,4808,4828,4848,4864,4880,4896,4912,4928,4942,4946],{"__ignoreMap":370},[374,4583,4584],{"class":376,"line":377},[374,4585,1906],{"class":497},[374,4587,4588,4590,4592,4594,4596,4598,4600,4602],{"class":376,"line":519},[374,4589,1911],{"class":497},[374,4591,1936],{"class":529},[374,4593,1917],{"class":497},[374,4595,558],{"class":497},[374,4597,1922],{"class":497},[374,4599,1945],{"class":383},[374,4601,1917],{"class":497},[374,4603,575],{"class":497},[374,4605,4606,4608,4610,4612,4614,4616,4619,4621],{"class":376,"line":526},[374,4607,1911],{"class":497},[374,4609,692],{"class":529},[374,4611,1917],{"class":497},[374,4613,558],{"class":497},[374,4615,1922],{"class":497},[374,4617,4618],{"class":383},"\u002Fapi\u002Fchat",[374,4620,1917],{"class":497},[374,4622,575],{"class":497},[374,4624,4625,4627,4629,4631,4633,4635],{"class":376,"line":551},[374,4626,1911],{"class":497},[374,4628,1975],{"class":529},[374,4630,1917],{"class":497},[374,4632,558],{"class":497},[374,4634,1983],{"class":1982},[374,4636,575],{"class":497},[374,4638,4639,4641,4643,4645,4647,4649,4652,4654],{"class":376,"line":578},[374,4640,1911],{"class":497},[374,4642,1992],{"class":529},[374,4644,1917],{"class":497},[374,4646,558],{"class":497},[374,4648,1922],{"class":497},[374,4650,4651],{"class":383},"4.5s",[374,4653,1917],{"class":497},[374,4655,575],{"class":497},[374,4657,4658,4660,4662,4664,4666,4668,4670,4672],{"class":376,"line":587},[374,4659,1911],{"class":497},[374,4661,2192],{"class":529},[374,4663,1917],{"class":497},[374,4665,558],{"class":497},[374,4667,1922],{"class":497},[374,4669,2201],{"class":383},[374,4671,1917],{"class":497},[374,4673,575],{"class":497},[374,4675,4676,4678,4680,4682,4684],{"class":376,"line":592},[374,4677,1911],{"class":497},[374,4679,2212],{"class":529},[374,4681,1917],{"class":497},[374,4683,558],{"class":497},[374,4685,548],{"class":497},[374,4687,4688,4690,4692,4694,4696,4698,4700,4702],{"class":376,"line":625},[374,4689,2223],{"class":497},[374,4691,2226],{"class":380},[374,4693,1917],{"class":497},[374,4695,558],{"class":497},[374,4697,1922],{"class":497},[374,4699,2201],{"class":383},[374,4701,1917],{"class":497},[374,4703,575],{"class":497},[374,4705,4706,4708,4710,4712,4714,4716,4718,4720],{"class":376,"line":655},[374,4707,2223],{"class":497},[374,4709,2245],{"class":380},[374,4711,1917],{"class":497},[374,4713,558],{"class":497},[374,4715,1922],{"class":497},[374,4717,2254],{"class":383},[374,4719,1917],{"class":497},[374,4721,575],{"class":497},[374,4723,4724,4726,4728,4730,4732,4734,4736],{"class":376,"line":697},[374,4725,2223],{"class":497},[374,4727,2265],{"class":380},[374,4729,1917],{"class":497},[374,4731,558],{"class":497},[374,4733,1922],{"class":497},[374,4735,2274],{"class":383},[374,4737,2311],{"class":497},[374,4739,4740],{"class":376,"line":896},[374,4741,2317],{"class":497},[374,4743,4744,4746,4748,4750,4752,4754,4756,4758,4760,4762,4765,4767,4769,4771,4773,4775,4777],{"class":376,"line":927},[374,4745,1911],{"class":497},[374,4747,2444],{"class":529},[374,4749,1917],{"class":497},[374,4751,558],{"class":497},[374,4753,498],{"class":497},[374,4755,1922],{"class":497},[374,4757,2458],{"class":380},[374,4759,1917],{"class":497},[374,4761,558],{"class":497},[374,4763,4764],{"class":1982}," 8",[374,4766,545],{"class":497},[374,4768,1922],{"class":497},[374,4770,2475],{"class":380},[374,4772,1917],{"class":497},[374,4774,558],{"class":497},[374,4776,920],{"class":497},[374,4778,3240],{"class":497},[374,4780,4781,4783,4786,4788,4790],{"class":376,"line":1754},[374,4782,1911],{"class":497},[374,4784,4785],{"class":529},"ai",[374,4787,1917],{"class":497},[374,4789,558],{"class":497},[374,4791,548],{"class":497},[374,4793,4794,4796,4799,4801,4803,4806],{"class":376,"line":1760},[374,4795,2223],{"class":497},[374,4797,4798],{"class":380},"calls",[374,4800,1917],{"class":497},[374,4802,558],{"class":497},[374,4804,4805],{"class":1982}," 1",[374,4807,575],{"class":497},[374,4809,4810,4812,4815,4817,4819,4821,4824,4826],{"class":376,"line":2314},[374,4811,2223],{"class":497},[374,4813,4814],{"class":380},"model",[374,4816,1917],{"class":497},[374,4818,558],{"class":497},[374,4820,1922],{"class":497},[374,4822,4823],{"class":383},"claude-sonnet-4.6",[374,4825,1917],{"class":497},[374,4827,575],{"class":497},[374,4829,4830,4832,4835,4837,4839,4841,4844,4846],{"class":376,"line":2320},[374,4831,2223],{"class":497},[374,4833,4834],{"class":380},"provider",[374,4836,1917],{"class":497},[374,4838,558],{"class":497},[374,4840,1922],{"class":497},[374,4842,4843],{"class":383},"anthropic",[374,4845,1917],{"class":497},[374,4847,575],{"class":497},[374,4849,4850,4852,4855,4857,4859,4862],{"class":376,"line":2334},[374,4851,2223],{"class":497},[374,4853,4854],{"class":380},"inputTokens",[374,4856,1917],{"class":497},[374,4858,558],{"class":497},[374,4860,4861],{"class":1982}," 3312",[374,4863,575],{"class":497},[374,4865,4866,4868,4871,4873,4875,4878],{"class":376,"line":2354},[374,4867,2223],{"class":497},[374,4869,4870],{"class":380},"outputTokens",[374,4872,1917],{"class":497},[374,4874,558],{"class":497},[374,4876,4877],{"class":1982}," 814",[374,4879,575],{"class":497},[374,4881,4882,4884,4887,4889,4891,4894],{"class":376,"line":2375},[374,4883,2223],{"class":497},[374,4885,4886],{"class":380},"totalTokens",[374,4888,1917],{"class":497},[374,4890,558],{"class":497},[374,4892,4893],{"class":1982}," 4126",[374,4895,575],{"class":497},[374,4897,4898,4900,4903,4905,4907,4910],{"class":376,"line":2396},[374,4899,2223],{"class":497},[374,4901,4902],{"class":380},"msToFirstChunk",[374,4904,1917],{"class":497},[374,4906,558],{"class":497},[374,4908,4909],{"class":1982}," 234",[374,4911,575],{"class":497},[374,4913,4914,4916,4919,4921,4923,4926],{"class":376,"line":2417},[374,4915,2223],{"class":497},[374,4917,4918],{"class":380},"msToFinish",[374,4920,1917],{"class":497},[374,4922,558],{"class":497},[374,4924,4925],{"class":1982}," 4500",[374,4927,575],{"class":497},[374,4929,4930,4932,4935,4937,4939],{"class":376,"line":2434},[374,4931,2223],{"class":497},[374,4933,4934],{"class":380},"tokensPerSecond",[374,4936,1917],{"class":497},[374,4938,558],{"class":497},[374,4940,4941],{"class":1982}," 180\n",[374,4943,4944],{"class":376,"line":2439},[374,4945,1757],{"class":497},[374,4947,4948],{"class":376,"line":2453},[374,4949,1763],{"class":497},[314,4951,4952],{},"This is the power of wide events — one event per request, all context in one place: who made the request, what they did, how the AI responded, and how it performed.",[4954,4955,4956],"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":370,"searchDepth":519,"depth":519,"links":4958},[4959,4960,4961,4962,4966,4970,4971,4972,4973,4974],{"id":328,"depth":519,"text":329},{"id":475,"depth":519,"text":20},{"id":2532,"depth":519,"text":2533},{"id":2682,"depth":519,"text":1870,"children":4963},[4964,4965],{"id":2854,"depth":526,"text":2855},{"id":2951,"depth":526,"text":2951},{"id":3311,"depth":519,"text":3312,"children":4967},[4968,4969],{"id":3436,"depth":526,"text":2855},{"id":3532,"depth":526,"text":3533},{"id":3698,"depth":519,"text":3699},{"id":3866,"depth":519,"text":110},{"id":3983,"depth":519,"text":3984},{"id":4342,"depth":519,"text":4343},{"id":4567,"depth":519,"text":4568},"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",[4978,4981],{"label":51,"icon":54,"to":52,"color":4979,"variant":4980},"neutral","subtle",{"label":213,"icon":4982,"to":4983,"color":4979,"variant":4980},"i-lucide-plug","\u002Fadapters\u002Foverview",{},{"icon":74},{"title":71,"description":4975},"u4TedKTpseFa9Yuu3Q01hWl05BuWLkipeAUn3CEt9C0",[4989,4991],{"title":66,"path":67,"stem":68,"description":4990,"icon":69,"children":-1},"Capture token usage, tool calls, model info, and streaming metrics from the Vercel AI SDK into wide events. Wrap your model and get full AI observability.",{"title":76,"path":77,"stem":78,"description":4992,"icon":79,"children":-1},"First-class audit logs as a thin layer on top of evlog's wide events. Add tamper-evident audit trails to any app with one enricher, one drain wrapper, and one helper.",1777667166622]