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