[{"data":1,"prerenderedAt":1398},["ShallowReactive",2],{"navigation_docs":3,"-use-cases-better-auth-client-sync":464,"-use-cases-better-auth-client-sync-surround":1393},[4,30,80,245,379,434],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Start","\u002Fstart","1.start",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fstart\u002Fintroduction","1.start\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Why start with evlog","\u002Fstart\u002Fwhy-evlog","1.start\u002F2.why-evlog","i-lucide-rocket",{"title":20,"path":21,"stem":22,"icon":23},"Installation","\u002Fstart\u002Finstallation","1.start\u002F3.installation","i-lucide-download",{"title":25,"path":26,"stem":27,"icon":28},"Quick Start","\u002Fstart\u002Fquick-start","1.start\u002F4.quick-start","i-lucide-zap",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Learn","\u002Flearn","2.learn",[35,40,45,50,55,60,65,70,75],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Flearn\u002Foverview","2.learn\u002F0.overview","i-lucide-list",{"title":41,"path":42,"stem":43,"icon":44},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":46,"path":47,"stem":48,"icon":49},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":51,"path":52,"stem":53,"icon":54},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":56,"path":57,"stem":58,"icon":59},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":61,"path":62,"stem":63,"icon":64},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling","i-lucide-filter",{"title":66,"path":67,"stem":68,"icon":69},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":71,"path":72,"stem":73,"icon":74},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":76,"path":77,"stem":78,"icon":79},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs","i-lucide-book-open",{"title":81,"path":82,"stem":83,"children":84,"page":29},"Integrate","\u002Fintegrate","3.integrate",[85,89,157],{"title":36,"path":86,"stem":87,"icon":88},"\u002Fintegrate\u002Foverview","3.integrate\u002F0.overview","i-lucide-plug",{"title":90,"path":91,"stem":92,"children":93,"page":29},"Adapters","\u002Fintegrate\u002Fadapters","3.integrate\u002Fadapters",[94,97,137],{"title":36,"path":95,"stem":96,"icon":39},"\u002Fintegrate\u002Fadapters\u002Foverview","3.integrate\u002Fadapters\u002F01.overview",{"title":98,"path":99,"stem":100,"children":101,"page":29},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","3.integrate\u002Fadapters\u002Fcloud",[102,107,112,117,122,127,132],{"title":103,"path":104,"stem":105,"icon":106},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","3.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":108,"path":109,"stem":110,"icon":111},"OTLP","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fotlp","3.integrate\u002Fadapters\u002Fcloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":113,"path":114,"stem":115,"icon":116},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","3.integrate\u002Fadapters\u002Fcloud\u002F03.posthog","i-simple-icons-posthog",{"title":118,"path":119,"stem":120,"icon":121},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","3.integrate\u002Fadapters\u002Fcloud\u002F04.sentry","i-simple-icons-sentry",{"title":123,"path":124,"stem":125,"icon":126},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","3.integrate\u002Fadapters\u002Fcloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":128,"path":129,"stem":130,"icon":131},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","3.integrate\u002Fadapters\u002Fcloud\u002F06.datadog","i-simple-icons-datadog",{"title":133,"path":134,"stem":135,"icon":136},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fhyperdx","3.integrate\u002Fadapters\u002Fcloud\u002F07.hyperdx","i-custom-hyperdx",{"title":138,"path":139,"stem":140,"children":141,"page":29},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","3.integrate\u002Fadapters\u002Fself-hosted",[142,147,152],{"title":143,"path":144,"stem":145,"icon":146},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","3.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":148,"path":149,"stem":150,"icon":151},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","3.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":153,"path":154,"stem":155,"icon":156},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","3.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":158,"path":159,"stem":160,"children":161,"page":29},"Frameworks","\u002Fintegrate\u002Fframeworks","3.integrate\u002Fframeworks",[162,166,171,176,181,186,191,196,201,206,211,216,221,226,230,235,240],{"title":36,"path":163,"stem":164,"icon":165},"\u002Fintegrate\u002Fframeworks\u002Foverview","3.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":167,"path":168,"stem":169,"icon":170},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","3.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":172,"path":173,"stem":174,"icon":175},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","3.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":177,"path":178,"stem":179,"icon":180},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","3.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":182,"path":183,"stem":184,"icon":185},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","3.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":187,"path":188,"stem":189,"icon":190},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","3.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":192,"path":193,"stem":194,"icon":195},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","3.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":197,"path":198,"stem":199,"icon":200},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","3.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":202,"path":203,"stem":204,"icon":205},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","3.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":207,"path":208,"stem":209,"icon":210},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","3.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":212,"path":213,"stem":214,"icon":215},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","3.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":217,"path":218,"stem":219,"icon":220},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","3.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":222,"path":223,"stem":224,"icon":225},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","3.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":227,"path":228,"stem":229,"icon":74},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","3.integrate\u002Fframeworks\u002F13.standalone",{"title":231,"path":232,"stem":233,"icon":234},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","3.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":236,"path":237,"stem":238,"icon":239},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","3.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":241,"path":242,"stem":243,"icon":244},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","3.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":246,"path":247,"stem":248,"children":249,"page":29},"Use Cases","\u002Fuse-cases","4.use-cases",[250,254,259,288,316,348,369,374],{"title":36,"path":251,"stem":252,"icon":253},"\u002Fuse-cases\u002Foverview","4.use-cases\u002F0.overview","i-lucide-list-checks",{"title":255,"path":256,"stem":257,"icon":258},"Client Logging","\u002Fuse-cases\u002Fclient-logging","4.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":260,"icon":261,"path":262,"stem":263,"children":264,"page":29},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","4.use-cases\u002F2.ai-sdk",[265,268,273,278,283],{"title":36,"path":266,"stem":267,"icon":39},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","4.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":269,"path":270,"stem":271,"icon":272},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","4.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":274,"path":275,"stem":276,"icon":277},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","4.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":279,"path":280,"stem":281,"icon":282},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","4.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":284,"path":285,"stem":286,"icon":287},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","4.use-cases\u002F2.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":289,"icon":290,"path":291,"stem":292,"children":293,"page":29},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","4.use-cases\u002F3.better-auth",[294,297,302,307,311],{"title":36,"path":295,"stem":296,"icon":39},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","4.use-cases\u002F3.better-auth\u002F01.overview",{"title":298,"path":299,"stem":300,"icon":301},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","4.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":303,"path":304,"stem":305,"icon":306},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","4.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":308,"path":309,"stem":310,"icon":258},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","4.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":312,"path":313,"stem":314,"icon":315},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","4.use-cases\u002F3.better-auth\u002F05.performance","i-lucide-gauge",{"title":317,"icon":318,"path":319,"stem":320,"children":321,"page":29},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","4.use-cases\u002F4.audit",[322,325,330,335,340,344],{"title":36,"path":323,"stem":324,"icon":39},"\u002Fuse-cases\u002Faudit\u002Foverview","4.use-cases\u002F4.audit\u002F01.overview",{"title":326,"path":327,"stem":328,"icon":329},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","4.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":331,"path":332,"stem":333,"icon":334},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","4.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":336,"path":337,"stem":338,"icon":339},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","4.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":341,"path":342,"stem":343,"icon":318},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","4.use-cases\u002F4.audit\u002F05.compliance",{"title":345,"path":346,"stem":347,"icon":79},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","4.use-cases\u002F4.audit\u002F06.recipes",{"title":284,"icon":315,"path":349,"stem":350,"children":351,"page":29},"\u002Fuse-cases\u002Ftelemetry","4.use-cases\u002F4.telemetry",[352,355,360,365],{"title":36,"path":353,"stem":354,"icon":39},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","4.use-cases\u002F4.telemetry\u002F01.overview",{"title":356,"path":357,"stem":358,"icon":359},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","4.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":361,"path":362,"stem":363,"icon":364},"Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","4.use-cases\u002F4.telemetry\u002F03.ingest","i-lucide-server",{"title":366,"path":367,"stem":368,"icon":79},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","4.use-cases\u002F4.telemetry\u002F04.reference",{"title":370,"path":371,"stem":372,"icon":373},"Enrichers","\u002Fuse-cases\u002Fenrichers","4.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":375,"path":376,"stem":377,"icon":378},"eve","\u002Fuse-cases\u002Feve","4.use-cases\u002F5.eve","i-custom-eve",{"title":380,"path":381,"stem":382,"children":383,"page":29},"Extend","\u002Fextend","5.extend",[384,388,393,398,403,407,411,415,419,424,429],{"title":36,"path":385,"stem":386,"icon":387},"\u002Fextend\u002Foverview","5.extend\u002F0.overview","i-lucide-blocks",{"title":389,"path":390,"stem":391,"icon":392},"Stream","\u002Fextend\u002Fstream","5.extend\u002F1.stream","i-lucide-radio-tower",{"title":394,"path":395,"stem":396,"icon":397},"Custom framework","\u002Fextend\u002Fcustom-framework","5.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":399,"path":400,"stem":401,"icon":402},"FS reader","\u002Fextend\u002Ffs-reader","5.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":345,"path":404,"stem":405,"icon":406},"\u002Fextend\u002Fconsumer-recipes","5.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":408,"path":409,"stem":410,"icon":387},"Plugins","\u002Fextend\u002Fplugins","5.extend\u002F4.plugins",{"title":412,"path":413,"stem":414,"icon":373},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","5.extend\u002F5.custom-enrichers",{"title":416,"path":417,"stem":418,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","5.extend\u002F6.tail-sampling",{"title":420,"path":421,"stem":422,"icon":423},"Identity headers","\u002Fextend\u002Fidentity-headers","5.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":425,"path":426,"stem":427,"icon":428},"Custom drains","\u002Fextend\u002Fcustom-drains","5.extend\u002F8.custom-drains","i-lucide-share-2",{"title":430,"path":431,"stem":432,"icon":433},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","5.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":366,"path":435,"stem":436,"children":437,"page":29},"\u002Freference","6.reference",[438,443,446,451,455,460],{"title":439,"path":440,"stem":441,"icon":442},"Configuration","\u002Freference\u002Fconfiguration","6.reference\u002F1.configuration","i-lucide-settings",{"title":312,"path":444,"stem":445,"icon":315},"\u002Freference\u002Fperformance","6.reference\u002F2.performance",{"title":447,"path":448,"stem":449,"icon":450},"Vite Plugin","\u002Freference\u002Fvite-plugin","6.reference\u002F3.vite-plugin","i-custom-vite",{"title":452,"path":453,"stem":454,"icon":318},"Best Practices","\u002Freference\u002Fbest-practices","6.reference\u002F4.best-practices",{"title":456,"path":457,"stem":458,"icon":459},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","6.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":461,"path":462,"stem":463,"icon":373},"Agent Skills","\u002Freference\u002Fagent-skills","6.reference\u002F6.agent-skills",{"id":465,"title":466,"body":467,"description":1381,"extension":1382,"links":1383,"meta":1389,"navigation":1390,"path":309,"seo":1391,"stem":310,"__hash__":1392},"docs\u002F4.use-cases\u002F3.better-auth\u002F04.client-sync.md","Client Identity Sync",{"type":468,"value":469,"toc":1375},"minimark",[470,479,484,744,747,785,789,1016,1023,1027,1222,1229,1233,1236,1355,1371],[471,472,473,474,478],"p",{},"The middleware identifies users on the server. To get the same identity on ",[475,476,477],"strong",{},"client-side logs"," (clicks, navigation, errors caught in the browser), watch the Better Auth session and forward the user to evlog's client identity store.",[480,481,483],"h2",{"id":482},"vue-nuxt","Vue \u002F Nuxt",[485,486,492],"pre",{"className":487,"code":488,"filename":489,"language":490,"meta":491,"style":491},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","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","typescript","",[493,494,495,528,535,555,579,584,632,648,692,703,711,717,738],"code",{"__ignoreMap":491},[496,497,500,504,508,512,515,518,521,525],"span",{"class":498,"line":499},"line",1,[496,501,503],{"class":502},"s7zQu","import",[496,505,507],{"class":506},"sMK4o"," {",[496,509,511],{"class":510},"sTEyZ"," authClient",[496,513,514],{"class":506}," }",[496,516,517],{"class":502}," from",[496,519,520],{"class":506}," '",[496,522,524],{"class":523},"sfazB","~\u002Flib\u002Fauth-client",[496,526,527],{"class":506},"'\n",[496,529,531],{"class":498,"line":530},2,[496,532,534],{"emptyLinePlaceholder":533},true,"\n",[496,536,538,541,545,549,552],{"class":498,"line":537},3,[496,539,540],{"class":502},"export",[496,542,544],{"class":543},"spNyl"," function",[496,546,548],{"class":547},"s2Zo4"," useAuthIdentity",[496,550,551],{"class":506},"()",[496,553,554],{"class":506}," {\n",[496,556,558,561,564,567,569,572,575],{"class":498,"line":557},4,[496,559,560],{"class":543},"  const",[496,562,563],{"class":510}," session",[496,565,566],{"class":506}," =",[496,568,511],{"class":510},[496,570,571],{"class":506},".",[496,573,574],{"class":547},"useSession",[496,576,578],{"class":577},"swJcz","()\n",[496,580,582],{"class":498,"line":581},5,[496,583,534],{"emptyLinePlaceholder":533},[496,585,587,590,593,595,598,600,602,605,608,611,613,616,619,622,625,628,630],{"class":498,"line":586},6,[496,588,589],{"class":547},"  watch",[496,591,592],{"class":577},"(",[496,594,551],{"class":506},[496,596,597],{"class":543}," =>",[496,599,563],{"class":510},[496,601,571],{"class":506},[496,603,604],{"class":510},"value",[496,606,607],{"class":506},"?.",[496,609,610],{"class":510},"data",[496,612,607],{"class":506},[496,614,615],{"class":510},"user",[496,617,618],{"class":506},",",[496,620,621],{"class":506}," (",[496,623,615],{"class":624},"sHdIc",[496,626,627],{"class":506},")",[496,629,597],{"class":543},[496,631,554],{"class":506},[496,633,635,638,640,642,645],{"class":498,"line":634},7,[496,636,637],{"class":502},"    if",[496,639,621],{"class":577},[496,641,615],{"class":510},[496,643,644],{"class":577},") ",[496,646,647],{"class":506},"{\n",[496,649,651,654,656,659,662,665,668,670,673,675,678,680,682,684,687,689],{"class":498,"line":650},8,[496,652,653],{"class":547},"      setIdentity",[496,655,592],{"class":577},[496,657,658],{"class":506},"{",[496,660,661],{"class":577}," userId",[496,663,664],{"class":506},":",[496,666,667],{"class":510}," user",[496,669,571],{"class":506},[496,671,672],{"class":510},"id",[496,674,618],{"class":506},[496,676,677],{"class":577}," userName",[496,679,664],{"class":506},[496,681,667],{"class":510},[496,683,571],{"class":506},[496,685,686],{"class":510},"name",[496,688,514],{"class":506},[496,690,691],{"class":577},")\n",[496,693,695,698,701],{"class":498,"line":694},9,[496,696,697],{"class":506},"    }",[496,699,700],{"class":502}," else",[496,702,554],{"class":506},[496,704,706,709],{"class":498,"line":705},10,[496,707,708],{"class":547},"      clearIdentity",[496,710,578],{"class":577},[496,712,714],{"class":498,"line":713},11,[496,715,716],{"class":506},"    }\n",[496,718,720,723,725,728,730,734,736],{"class":498,"line":719},12,[496,721,722],{"class":506},"  },",[496,724,507],{"class":506},[496,726,727],{"class":577}," immediate",[496,729,664],{"class":506},[496,731,733],{"class":732},"sfNiH"," true",[496,735,514],{"class":506},[496,737,691],{"class":577},[496,739,741],{"class":498,"line":740},13,[496,742,743],{"class":506},"}\n",[471,745,746],{},"Call it once in your root layout:",[485,748,753],{"className":749,"code":750,"filename":751,"language":752,"meta":491,"style":491},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup>\nuseAuthIdentity()\n\u003C\u002Fscript>\n","app.vue","vue",[493,754,755,769,776],{"__ignoreMap":491},[496,756,757,760,763,766],{"class":498,"line":499},[496,758,759],{"class":506},"\u003C",[496,761,762],{"class":577},"script",[496,764,765],{"class":543}," setup",[496,767,768],{"class":506},">\n",[496,770,771,774],{"class":498,"line":530},[496,772,773],{"class":547},"useAuthIdentity",[496,775,578],{"class":510},[496,777,778,781,783],{"class":498,"line":537},[496,779,780],{"class":506},"\u003C\u002F",[496,782,762],{"class":577},[496,784,768],{"class":506},[480,786,788],{"id":787},"react","React",[485,790,795],{"className":791,"code":792,"filename":793,"language":794,"meta":491,"style":491},"language-tsx shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { useEffect } from 'react'\nimport { setIdentity, clearIdentity } from 'evlog\u002Fhttp'\nimport { authClient } from '@\u002Flib\u002Fauth-client'\n\nexport function useAuthIdentity() {\n  const { data } = authClient.useSession()\n\n  useEffect(() => {\n    if (data?.user) {\n      setIdentity({ userId: data.user.id, userName: data.user.name })\n    } else {\n      clearIdentity()\n    }\n  }, [data?.user?.id])\n}\n","hooks\u002FuseAuthIdentity.tsx","tsx",[493,796,797,816,841,860,864,876,897,901,914,930,972,980,986,990,1011],{"__ignoreMap":491},[496,798,799,801,803,806,808,810,812,814],{"class":498,"line":499},[496,800,503],{"class":502},[496,802,507],{"class":506},[496,804,805],{"class":510}," useEffect",[496,807,514],{"class":506},[496,809,517],{"class":502},[496,811,520],{"class":506},[496,813,787],{"class":523},[496,815,527],{"class":506},[496,817,818,820,822,825,827,830,832,834,836,839],{"class":498,"line":530},[496,819,503],{"class":502},[496,821,507],{"class":506},[496,823,824],{"class":510}," setIdentity",[496,826,618],{"class":506},[496,828,829],{"class":510}," clearIdentity",[496,831,514],{"class":506},[496,833,517],{"class":502},[496,835,520],{"class":506},[496,837,838],{"class":523},"evlog\u002Fhttp",[496,840,527],{"class":506},[496,842,843,845,847,849,851,853,855,858],{"class":498,"line":537},[496,844,503],{"class":502},[496,846,507],{"class":506},[496,848,511],{"class":510},[496,850,514],{"class":506},[496,852,517],{"class":502},[496,854,520],{"class":506},[496,856,857],{"class":523},"@\u002Flib\u002Fauth-client",[496,859,527],{"class":506},[496,861,862],{"class":498,"line":557},[496,863,534],{"emptyLinePlaceholder":533},[496,865,866,868,870,872,874],{"class":498,"line":581},[496,867,540],{"class":502},[496,869,544],{"class":543},[496,871,548],{"class":547},[496,873,551],{"class":506},[496,875,554],{"class":506},[496,877,878,880,882,885,887,889,891,893,895],{"class":498,"line":586},[496,879,560],{"class":543},[496,881,507],{"class":506},[496,883,884],{"class":510}," data",[496,886,514],{"class":506},[496,888,566],{"class":506},[496,890,511],{"class":510},[496,892,571],{"class":506},[496,894,574],{"class":547},[496,896,578],{"class":577},[496,898,899],{"class":498,"line":634},[496,900,534],{"emptyLinePlaceholder":533},[496,902,903,906,908,910,912],{"class":498,"line":650},[496,904,905],{"class":547},"  useEffect",[496,907,592],{"class":577},[496,909,551],{"class":506},[496,911,597],{"class":543},[496,913,554],{"class":506},[496,915,916,918,920,922,924,926,928],{"class":498,"line":694},[496,917,637],{"class":502},[496,919,621],{"class":577},[496,921,610],{"class":510},[496,923,607],{"class":506},[496,925,615],{"class":510},[496,927,644],{"class":577},[496,929,647],{"class":506},[496,931,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962,964,966,968,970],{"class":498,"line":705},[496,933,653],{"class":547},[496,935,592],{"class":577},[496,937,658],{"class":506},[496,939,661],{"class":577},[496,941,664],{"class":506},[496,943,884],{"class":510},[496,945,571],{"class":506},[496,947,615],{"class":510},[496,949,571],{"class":506},[496,951,672],{"class":510},[496,953,618],{"class":506},[496,955,677],{"class":577},[496,957,664],{"class":506},[496,959,884],{"class":510},[496,961,571],{"class":506},[496,963,615],{"class":510},[496,965,571],{"class":506},[496,967,686],{"class":510},[496,969,514],{"class":506},[496,971,691],{"class":577},[496,973,974,976,978],{"class":498,"line":713},[496,975,697],{"class":506},[496,977,700],{"class":502},[496,979,554],{"class":506},[496,981,982,984],{"class":498,"line":719},[496,983,708],{"class":547},[496,985,578],{"class":577},[496,987,988],{"class":498,"line":740},[496,989,716],{"class":506},[496,991,993,995,998,1000,1002,1004,1006,1008],{"class":498,"line":992},14,[496,994,722],{"class":506},[496,996,997],{"class":577}," [",[496,999,610],{"class":510},[496,1001,607],{"class":506},[496,1003,615],{"class":510},[496,1005,607],{"class":506},[496,1007,672],{"class":510},[496,1009,1010],{"class":577},"])\n",[496,1012,1014],{"class":498,"line":1013},15,[496,1015,743],{"class":506},[471,1017,1018,1019,1022],{},"Wire it up at the root of your app (in ",[493,1020,1021],{},"_app.tsx",", the root layout, or a top-level provider).",[480,1024,1026],{"id":1025},"svelte","Svelte",[485,1028,1031],{"className":487,"code":1029,"filename":1030,"language":490,"meta":491,"style":491},"import { setIdentity, clearIdentity } from 'evlog\u002Fhttp'\nimport { authClient } from '$lib\u002Fauth-client'\n\nexport function setupAuthIdentity() {\n  const session = authClient.useSession()\n\n  session.subscribe(({ data }) => {\n    if (data?.user) {\n      setIdentity({ userId: data.user.id, userName: data.user.name })\n    } else {\n      clearIdentity()\n    }\n  })\n}\n","src\u002Flib\u002Fauth-identity.ts",[493,1032,1033,1055,1074,1078,1091,1107,1111,1135,1151,1193,1201,1207,1211,1218],{"__ignoreMap":491},[496,1034,1035,1037,1039,1041,1043,1045,1047,1049,1051,1053],{"class":498,"line":499},[496,1036,503],{"class":502},[496,1038,507],{"class":506},[496,1040,824],{"class":510},[496,1042,618],{"class":506},[496,1044,829],{"class":510},[496,1046,514],{"class":506},[496,1048,517],{"class":502},[496,1050,520],{"class":506},[496,1052,838],{"class":523},[496,1054,527],{"class":506},[496,1056,1057,1059,1061,1063,1065,1067,1069,1072],{"class":498,"line":530},[496,1058,503],{"class":502},[496,1060,507],{"class":506},[496,1062,511],{"class":510},[496,1064,514],{"class":506},[496,1066,517],{"class":502},[496,1068,520],{"class":506},[496,1070,1071],{"class":523},"$lib\u002Fauth-client",[496,1073,527],{"class":506},[496,1075,1076],{"class":498,"line":537},[496,1077,534],{"emptyLinePlaceholder":533},[496,1079,1080,1082,1084,1087,1089],{"class":498,"line":557},[496,1081,540],{"class":502},[496,1083,544],{"class":543},[496,1085,1086],{"class":547}," setupAuthIdentity",[496,1088,551],{"class":506},[496,1090,554],{"class":506},[496,1092,1093,1095,1097,1099,1101,1103,1105],{"class":498,"line":581},[496,1094,560],{"class":543},[496,1096,563],{"class":510},[496,1098,566],{"class":506},[496,1100,511],{"class":510},[496,1102,571],{"class":506},[496,1104,574],{"class":547},[496,1106,578],{"class":577},[496,1108,1109],{"class":498,"line":586},[496,1110,534],{"emptyLinePlaceholder":533},[496,1112,1113,1116,1118,1121,1123,1126,1128,1131,1133],{"class":498,"line":634},[496,1114,1115],{"class":510},"  session",[496,1117,571],{"class":506},[496,1119,1120],{"class":547},"subscribe",[496,1122,592],{"class":577},[496,1124,1125],{"class":506},"({",[496,1127,884],{"class":624},[496,1129,1130],{"class":506}," })",[496,1132,597],{"class":543},[496,1134,554],{"class":506},[496,1136,1137,1139,1141,1143,1145,1147,1149],{"class":498,"line":650},[496,1138,637],{"class":502},[496,1140,621],{"class":577},[496,1142,610],{"class":510},[496,1144,607],{"class":506},[496,1146,615],{"class":510},[496,1148,644],{"class":577},[496,1150,647],{"class":506},[496,1152,1153,1155,1157,1159,1161,1163,1165,1167,1169,1171,1173,1175,1177,1179,1181,1183,1185,1187,1189,1191],{"class":498,"line":694},[496,1154,653],{"class":547},[496,1156,592],{"class":577},[496,1158,658],{"class":506},[496,1160,661],{"class":577},[496,1162,664],{"class":506},[496,1164,884],{"class":510},[496,1166,571],{"class":506},[496,1168,615],{"class":510},[496,1170,571],{"class":506},[496,1172,672],{"class":510},[496,1174,618],{"class":506},[496,1176,677],{"class":577},[496,1178,664],{"class":506},[496,1180,884],{"class":510},[496,1182,571],{"class":506},[496,1184,615],{"class":510},[496,1186,571],{"class":506},[496,1188,686],{"class":510},[496,1190,514],{"class":506},[496,1192,691],{"class":577},[496,1194,1195,1197,1199],{"class":498,"line":705},[496,1196,697],{"class":506},[496,1198,700],{"class":502},[496,1200,554],{"class":506},[496,1202,1203,1205],{"class":498,"line":713},[496,1204,708],{"class":547},[496,1206,578],{"class":577},[496,1208,1209],{"class":498,"line":719},[496,1210,716],{"class":506},[496,1212,1213,1216],{"class":498,"line":740},[496,1214,1215],{"class":506},"  }",[496,1217,691],{"class":577},[496,1219,1220],{"class":498,"line":992},[496,1221,743],{"class":506},[471,1223,1224,1225,1228],{},"Run ",[493,1226,1227],{},"setupAuthIdentity()"," once when the app boots.",[480,1230,1232],{"id":1231},"output","Output",[471,1234,1235],{},"Client-side logs now include the user identity:",[485,1237,1242],{"className":1238,"code":1239,"filename":1240,"language":1241,"meta":491,"style":491},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"level\": \"info\",\n  \"tag\": \"checkout\",\n  \"message\": \"User clicked checkout\",\n  \"userId\": \"QBX9tPjJQExWawAbNll75\",\n  \"userName\": \"Hugo Richard\"\n}\n","Client Log","json",[493,1243,1244,1248,1272,1292,1312,1332,1351],{"__ignoreMap":491},[496,1245,1246],{"class":498,"line":499},[496,1247,647],{"class":506},[496,1249,1250,1253,1256,1259,1261,1264,1267,1269],{"class":498,"line":530},[496,1251,1252],{"class":506},"  \"",[496,1254,1255],{"class":543},"level",[496,1257,1258],{"class":506},"\"",[496,1260,664],{"class":506},[496,1262,1263],{"class":506}," \"",[496,1265,1266],{"class":523},"info",[496,1268,1258],{"class":506},[496,1270,1271],{"class":506},",\n",[496,1273,1274,1276,1279,1281,1283,1285,1288,1290],{"class":498,"line":537},[496,1275,1252],{"class":506},[496,1277,1278],{"class":543},"tag",[496,1280,1258],{"class":506},[496,1282,664],{"class":506},[496,1284,1263],{"class":506},[496,1286,1287],{"class":523},"checkout",[496,1289,1258],{"class":506},[496,1291,1271],{"class":506},[496,1293,1294,1296,1299,1301,1303,1305,1308,1310],{"class":498,"line":557},[496,1295,1252],{"class":506},[496,1297,1298],{"class":543},"message",[496,1300,1258],{"class":506},[496,1302,664],{"class":506},[496,1304,1263],{"class":506},[496,1306,1307],{"class":523},"User clicked checkout",[496,1309,1258],{"class":506},[496,1311,1271],{"class":506},[496,1313,1314,1316,1319,1321,1323,1325,1328,1330],{"class":498,"line":581},[496,1315,1252],{"class":506},[496,1317,1318],{"class":543},"userId",[496,1320,1258],{"class":506},[496,1322,664],{"class":506},[496,1324,1263],{"class":506},[496,1326,1327],{"class":523},"QBX9tPjJQExWawAbNll75",[496,1329,1258],{"class":506},[496,1331,1271],{"class":506},[496,1333,1334,1336,1339,1341,1343,1345,1348],{"class":498,"line":586},[496,1335,1252],{"class":506},[496,1337,1338],{"class":543},"userName",[496,1340,1258],{"class":506},[496,1342,664],{"class":506},[496,1344,1263],{"class":506},[496,1346,1347],{"class":523},"Hugo Richard",[496,1349,1350],{"class":506},"\"\n",[496,1352,1353],{"class":498,"line":634},[496,1354,743],{"class":506},[1356,1357,1358,1361,1362,1366,1367,1370],"tip",{},[493,1359,1360],{},"setIdentity"," is part of evlog's ",[1363,1364,1365],"a",{"href":256},"client logging"," layer. The same fields are picked up by the HTTP transport when client logs are forwarded to your server, so a single user shows up identified across browser ",[475,1368,1369],{},"and"," API logs.",[1372,1373,1374],"style",{},"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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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);}",{"title":491,"searchDepth":530,"depth":530,"links":1376},[1377,1378,1379,1380],{"id":482,"depth":530,"text":483},{"id":787,"depth":530,"text":788},{"id":1025,"depth":530,"text":1026},{"id":1231,"depth":530,"text":1232},"Mirror the server-side user identity into client-side logs by watching the Better Auth session and calling setIdentity.","md",[1384,1387],{"label":36,"icon":39,"to":295,"color":1385,"variant":1386},"neutral","subtle",{"label":255,"icon":1388,"to":256,"color":1385,"variant":1386},"i-lucide-monitor-dot",{},{"title":308,"icon":258},{"title":466,"description":1381},"sJEJlejAja_J96L8yvmIttC_iI0gol_zZ55GYdBMqBw",[1394,1396],{"title":303,"path":304,"stem":305,"description":1395,"icon":306,"children":-1},"Framework-agnostic factory with route filtering, session timing, and lifecycle hooks. Call it once at startup and reuse across requests.",{"title":312,"path":313,"stem":314,"description":1397,"icon":315,"children":-1},"Watch session resolution time, enable session caching, wire the standalone Nitro hook, and combine with the AI SDK integration.",1784209653063]