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