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