[{"data":1,"prerenderedAt":2597},["ShallowReactive",2],{"navigation_docs":3,"-use-cases-enrichers":447,"-use-cases-enrichers-surround":2592},[4,30,80,245,361,416],{"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,353],{"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":349,"path":350,"stem":351,"icon":352},"Enrichers","\u002Fuse-cases\u002Fenrichers","4.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":354,"icon":261,"path":355,"stem":356,"children":357,"page":29},"Eve","\u002Fuse-cases\u002Feve","4.use-cases\u002F5.eve",[358],{"title":36,"path":359,"stem":360,"icon":261},"\u002Fuse-cases\u002Feve\u002Foverview","4.use-cases\u002F5.eve\u002F01.overview",{"title":362,"path":363,"stem":364,"children":365,"page":29},"Extend","\u002Fextend","5.extend",[366,370,375,380,385,389,393,397,401,406,411],{"title":36,"path":367,"stem":368,"icon":369},"\u002Fextend\u002Foverview","5.extend\u002F0.overview","i-lucide-blocks",{"title":371,"path":372,"stem":373,"icon":374},"Stream","\u002Fextend\u002Fstream","5.extend\u002F1.stream","i-lucide-radio-tower",{"title":376,"path":377,"stem":378,"icon":379},"Custom framework","\u002Fextend\u002Fcustom-framework","5.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":381,"path":382,"stem":383,"icon":384},"FS reader","\u002Fextend\u002Ffs-reader","5.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":345,"path":386,"stem":387,"icon":388},"\u002Fextend\u002Fconsumer-recipes","5.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":390,"path":391,"stem":392,"icon":369},"Plugins","\u002Fextend\u002Fplugins","5.extend\u002F4.plugins",{"title":394,"path":395,"stem":396,"icon":352},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","5.extend\u002F5.custom-enrichers",{"title":398,"path":399,"stem":400,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","5.extend\u002F6.tail-sampling",{"title":402,"path":403,"stem":404,"icon":405},"Identity headers","\u002Fextend\u002Fidentity-headers","5.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":407,"path":408,"stem":409,"icon":410},"Custom drains","\u002Fextend\u002Fcustom-drains","5.extend\u002F8.custom-drains","i-lucide-share-2",{"title":412,"path":413,"stem":414,"icon":415},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","5.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":417,"path":418,"stem":419,"children":420,"page":29},"Reference","\u002Freference","6.reference",[421,426,429,434,438,443],{"title":422,"path":423,"stem":424,"icon":425},"Configuration","\u002Freference\u002Fconfiguration","6.reference\u002F1.configuration","i-lucide-settings",{"title":312,"path":427,"stem":428,"icon":315},"\u002Freference\u002Fperformance","6.reference\u002F2.performance",{"title":430,"path":431,"stem":432,"icon":433},"Vite Plugin","\u002Freference\u002Fvite-plugin","6.reference\u002F3.vite-plugin","i-custom-vite",{"title":435,"path":436,"stem":437,"icon":318},"Best Practices","\u002Freference\u002Fbest-practices","6.reference\u002F4.best-practices",{"title":439,"path":440,"stem":441,"icon":442},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","6.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":444,"path":445,"stem":446,"icon":352},"Agent Skills","\u002Freference\u002Fagent-skills","6.reference\u002F6.agent-skills",{"id":448,"title":349,"body":449,"description":2582,"extension":2583,"links":2584,"meta":2588,"navigation":2589,"path":350,"seo":2590,"stem":351,"__hash__":2591},"docs\u002F4.use-cases\u002F5.enrichers.md",{"type":450,"value":451,"toc":2573},"minimark",[452,456,473,513,588,593,600,724,735,739,746,756,775,780,938,943,1131,1137,1143,1147,1150,1157,1176,1180,1272,1277,1339,1375,1379,1386,1393,1412,1416,1459,1463,1524,1533,1537,1547,1560,1579,1583,1650,1654,1779,1786,1798,1802,1805,2552,2556,2569],[453,454,455],"p",{},"Enrichers add derived context to your wide events after they are emitted, before they reach your drain adapters. Use them to automatically extract useful information from request headers without cluttering your application code.",[453,457,458,459,463,464,467,468,472],{},"All built-in enrichers are exported from ",[460,461,462],"code",{},"evlog\u002Fenrichers",". Each enricher is a factory function that returns an ",[460,465,466],{},"(ctx: EnrichContext) => void"," callback. To write your own, see ",[469,470,471],"a",{"href":395},"Custom Enrichers",".",[474,475,478,481,500],"prompt",{":actions":476,"description":477,"icon":379},"[\"copy\",\"cursor\",\"windsurf\"]","Add all built-in evlog enrichers",[453,479,480],{},"Add all built-in enrichers to my evlog setup.",[482,483,484,488,491,494,497],"ol",{},[485,486,487],"li",{},"Identify which framework I'm using and follow its evlog integration pattern",[485,489,490],{},"Import createUserAgentEnricher, createGeoEnricher, createRequestSizeEnricher, and createTraceContextEnricher from 'evlog\u002Fenrichers'",[485,492,493],{},"Wire the enrichers into my framework's enrich configuration",[485,495,496],{},"Enrichers add userAgent, geo, requestSize, and traceContext fields to wide events",[485,498,499],{},"All enrichers accept { overwrite?: boolean } - defaults to false to preserve user-set data",[453,501,502,503,508,509],{},"Enricher docs: ",[469,504,505],{"href":505,"rel":506},"https:\u002F\u002Fwww.evlog.dev\u002Fuse-cases\u002Fenrichers",[507],"nofollow","\nFramework setup: ",[469,510,511],{"href":511,"rel":512},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fframeworks\u002Foverview",[507],[514,515,521],"pre",{"className":516,"code":517,"filename":518,"language":519,"meta":520,"style":520},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import {\n  createUserAgentEnricher,\n  createGeoEnricher,\n  createRequestSizeEnricher,\n  createTraceContextEnricher,\n} from 'evlog\u002Fenrichers'\n","server\u002Fplugins\u002Fevlog-enrich.ts","typescript","",[460,522,523,536,546,554,562,570],{"__ignoreMap":520},[524,525,528,532],"span",{"class":526,"line":527},"line",1,[524,529,531],{"class":530},"s7zQu","import",[524,533,535],{"class":534},"sMK4o"," {\n",[524,537,539,543],{"class":526,"line":538},2,[524,540,542],{"class":541},"sTEyZ","  createUserAgentEnricher",[524,544,545],{"class":534},",\n",[524,547,549,552],{"class":526,"line":548},3,[524,550,551],{"class":541},"  createGeoEnricher",[524,553,545],{"class":534},[524,555,557,560],{"class":526,"line":556},4,[524,558,559],{"class":541},"  createRequestSizeEnricher",[524,561,545],{"class":534},[524,563,565,568],{"class":526,"line":564},5,[524,566,567],{"class":541},"  createTraceContextEnricher",[524,569,545],{"class":534},[524,571,573,576,579,582,585],{"class":526,"line":572},6,[524,574,575],{"class":534},"}",[524,577,578],{"class":530}," from",[524,580,581],{"class":534}," '",[524,583,462],{"class":584},"sfazB",[524,586,587],{"class":534},"'\n",[589,590,592],"h2",{"id":591},"all-built-in-enrichers","All built-in enrichers",[453,594,595,596,599],{},"Use ",[460,597,598],{},"createDefaultEnrichers()"," to compose user agent, geo, request size, and trace context in one call:",[514,601,603],{"className":516,"code":602,"filename":518,"language":519,"meta":520,"style":520},"import { createDefaultEnrichers } from 'evlog\u002Fenrichers'\n\nconst enrich = createDefaultEnrichers()\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:enrich', enrich)\n})\n",[460,604,605,626,632,650,654,682,717],{"__ignoreMap":520},[524,606,607,609,612,615,618,620,622,624],{"class":526,"line":527},[524,608,531],{"class":530},[524,610,611],{"class":534}," {",[524,613,614],{"class":541}," createDefaultEnrichers",[524,616,617],{"class":534}," }",[524,619,578],{"class":530},[524,621,581],{"class":534},[524,623,462],{"class":584},[524,625,587],{"class":534},[524,627,628],{"class":526,"line":538},[524,629,631],{"emptyLinePlaceholder":630},true,"\n",[524,633,634,638,641,644,647],{"class":526,"line":548},[524,635,637],{"class":636},"spNyl","const",[524,639,640],{"class":541}," enrich ",[524,642,643],{"class":534},"=",[524,645,614],{"class":646},"s2Zo4",[524,648,649],{"class":541},"()\n",[524,651,652],{"class":526,"line":556},[524,653,631],{"emptyLinePlaceholder":630},[524,655,656,659,662,665,668,670,674,677,680],{"class":526,"line":564},[524,657,658],{"class":530},"export",[524,660,661],{"class":530}," default",[524,663,664],{"class":646}," defineNitroPlugin",[524,666,667],{"class":541},"(",[524,669,667],{"class":534},[524,671,673],{"class":672},"sHdIc","nitroApp",[524,675,676],{"class":534},")",[524,678,679],{"class":636}," =>",[524,681,535],{"class":534},[524,683,684,687,689,692,694,697,700,703,706,708,711,714],{"class":526,"line":572},[524,685,686],{"class":541},"  nitroApp",[524,688,472],{"class":534},[524,690,691],{"class":541},"hooks",[524,693,472],{"class":534},[524,695,696],{"class":646},"hook",[524,698,667],{"class":699},"swJcz",[524,701,702],{"class":534},"'",[524,704,705],{"class":584},"evlog:enrich",[524,707,702],{"class":534},[524,709,710],{"class":534},",",[524,712,713],{"class":541}," enrich",[524,715,716],{"class":699},")\n",[524,718,720,722],{"class":526,"line":719},7,[524,721,575],{"class":534},[524,723,716],{"class":541},[453,725,726,727,730,731,734],{},"Each enricher accepts ",[460,728,729],{},"{ overwrite?: boolean }"," (default ",[460,732,733],{},"false",") so user-set fields are preserved.",[589,736,738],{"id":737},"user-agent","User Agent",[453,740,741,742,745],{},"Parse browser, OS, and device type from the ",[460,743,744],{},"User-Agent"," header.",[453,747,748,752,753],{},[749,750,751],"strong",{},"Sets:"," ",[460,754,755],{},"event.userAgent",[514,757,760],{"className":516,"code":758,"filename":759,"language":519,"meta":520,"style":520},"const enrich = createUserAgentEnricher()\n","user-agent-enricher.ts",[460,761,762],{"__ignoreMap":520},[524,763,764,766,768,770,773],{"class":526,"line":527},[524,765,637],{"class":636},[524,767,640],{"class":541},[524,769,643],{"class":534},[524,771,772],{"class":646}," createUserAgentEnricher",[524,774,649],{"class":541},[453,776,777],{},[749,778,779],{},"Output shape:",[514,781,784],{"className":516,"code":782,"filename":783,"language":519,"meta":520,"style":520},"interface UserAgentInfo {\n  raw: string                                      \u002F\u002F Original User-Agent string\n  browser?: { name: string; version?: string }     \u002F\u002F Chrome, Firefox, Safari, Edge\n  os?: { name: string; version?: string }          \u002F\u002F Windows, macOS, iOS, Android, Linux\n  device?: { type: 'mobile' | 'tablet' | 'desktop' | 'bot' | 'unknown' }\n}\n","user-agent-types.ts",[460,785,786,797,812,844,872,933],{"__ignoreMap":520},[524,787,788,791,795],{"class":526,"line":527},[524,789,790],{"class":636},"interface",[524,792,794],{"class":793},"sBMFI"," UserAgentInfo",[524,796,535],{"class":534},[524,798,799,802,805,808],{"class":526,"line":538},[524,800,801],{"class":699},"  raw",[524,803,804],{"class":534},":",[524,806,807],{"class":793}," string",[524,809,811],{"class":810},"sHwdD","                                      \u002F\u002F Original User-Agent string\n",[524,813,814,817,820,822,825,827,829,832,835,837,839,841],{"class":526,"line":548},[524,815,816],{"class":699},"  browser",[524,818,819],{"class":534},"?:",[524,821,611],{"class":534},[524,823,824],{"class":699}," name",[524,826,804],{"class":534},[524,828,807],{"class":793},[524,830,831],{"class":534},";",[524,833,834],{"class":699}," version",[524,836,819],{"class":534},[524,838,807],{"class":793},[524,840,617],{"class":534},[524,842,843],{"class":810},"     \u002F\u002F Chrome, Firefox, Safari, Edge\n",[524,845,846,849,851,853,855,857,859,861,863,865,867,869],{"class":526,"line":556},[524,847,848],{"class":699},"  os",[524,850,819],{"class":534},[524,852,611],{"class":534},[524,854,824],{"class":699},[524,856,804],{"class":534},[524,858,807],{"class":793},[524,860,831],{"class":534},[524,862,834],{"class":699},[524,864,819],{"class":534},[524,866,807],{"class":793},[524,868,617],{"class":534},[524,870,871],{"class":810},"          \u002F\u002F Windows, macOS, iOS, Android, Linux\n",[524,873,874,877,879,881,884,886,888,891,893,896,898,901,903,905,907,910,912,914,916,919,921,923,925,928,930],{"class":526,"line":564},[524,875,876],{"class":699},"  device",[524,878,819],{"class":534},[524,880,611],{"class":534},[524,882,883],{"class":699}," type",[524,885,804],{"class":534},[524,887,581],{"class":534},[524,889,890],{"class":584},"mobile",[524,892,702],{"class":534},[524,894,895],{"class":534}," |",[524,897,581],{"class":534},[524,899,900],{"class":584},"tablet",[524,902,702],{"class":534},[524,904,895],{"class":534},[524,906,581],{"class":534},[524,908,909],{"class":584},"desktop",[524,911,702],{"class":534},[524,913,895],{"class":534},[524,915,581],{"class":534},[524,917,918],{"class":584},"bot",[524,920,702],{"class":534},[524,922,895],{"class":534},[524,924,581],{"class":534},[524,926,927],{"class":584},"unknown",[524,929,702],{"class":534},[524,931,932],{"class":534}," }\n",[524,934,935],{"class":526,"line":572},[524,936,937],{"class":534},"}\n",[453,939,940],{},[749,941,942],{},"Example output:",[514,944,949],{"className":945,"code":946,"filename":947,"language":948,"meta":520,"style":520},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"userAgent\": {\n    \"raw\": \"Mozilla\u002F5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit\u002F537.36 Chrome\u002F120.0.0.0\",\n    \"browser\": { \"name\": \"Chrome\", \"version\": \"120.0.0.0\" },\n    \"os\": { \"name\": \"macOS\", \"version\": \"10.15.7\" },\n    \"device\": { \"type\": \"desktop\" }\n  }\n}\n","Example wide event: userAgent","json",[460,950,951,956,971,993,1044,1091,1121,1126],{"__ignoreMap":520},[524,952,953],{"class":526,"line":527},[524,954,955],{"class":534},"{\n",[524,957,958,961,964,967,969],{"class":526,"line":538},[524,959,960],{"class":534},"  \"",[524,962,963],{"class":636},"userAgent",[524,965,966],{"class":534},"\"",[524,968,804],{"class":534},[524,970,535],{"class":534},[524,972,973,976,979,981,983,986,989,991],{"class":526,"line":548},[524,974,975],{"class":534},"    \"",[524,977,978],{"class":793},"raw",[524,980,966],{"class":534},[524,982,804],{"class":534},[524,984,985],{"class":534}," \"",[524,987,988],{"class":584},"Mozilla\u002F5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit\u002F537.36 Chrome\u002F120.0.0.0",[524,990,966],{"class":534},[524,992,545],{"class":534},[524,994,995,997,1000,1002,1004,1006,1008,1012,1014,1016,1018,1021,1023,1025,1027,1030,1032,1034,1036,1039,1041],{"class":526,"line":556},[524,996,975],{"class":534},[524,998,999],{"class":793},"browser",[524,1001,966],{"class":534},[524,1003,804],{"class":534},[524,1005,611],{"class":534},[524,1007,985],{"class":534},[524,1009,1011],{"class":1010},"sbssI","name",[524,1013,966],{"class":534},[524,1015,804],{"class":534},[524,1017,985],{"class":534},[524,1019,1020],{"class":584},"Chrome",[524,1022,966],{"class":534},[524,1024,710],{"class":534},[524,1026,985],{"class":534},[524,1028,1029],{"class":1010},"version",[524,1031,966],{"class":534},[524,1033,804],{"class":534},[524,1035,985],{"class":534},[524,1037,1038],{"class":584},"120.0.0.0",[524,1040,966],{"class":534},[524,1042,1043],{"class":534}," },\n",[524,1045,1046,1048,1051,1053,1055,1057,1059,1061,1063,1065,1067,1070,1072,1074,1076,1078,1080,1082,1084,1087,1089],{"class":526,"line":564},[524,1047,975],{"class":534},[524,1049,1050],{"class":793},"os",[524,1052,966],{"class":534},[524,1054,804],{"class":534},[524,1056,611],{"class":534},[524,1058,985],{"class":534},[524,1060,1011],{"class":1010},[524,1062,966],{"class":534},[524,1064,804],{"class":534},[524,1066,985],{"class":534},[524,1068,1069],{"class":584},"macOS",[524,1071,966],{"class":534},[524,1073,710],{"class":534},[524,1075,985],{"class":534},[524,1077,1029],{"class":1010},[524,1079,966],{"class":534},[524,1081,804],{"class":534},[524,1083,985],{"class":534},[524,1085,1086],{"class":584},"10.15.7",[524,1088,966],{"class":534},[524,1090,1043],{"class":534},[524,1092,1093,1095,1098,1100,1102,1104,1106,1109,1111,1113,1115,1117,1119],{"class":526,"line":572},[524,1094,975],{"class":534},[524,1096,1097],{"class":793},"device",[524,1099,966],{"class":534},[524,1101,804],{"class":534},[524,1103,611],{"class":534},[524,1105,985],{"class":534},[524,1107,1108],{"class":1010},"type",[524,1110,966],{"class":534},[524,1112,804],{"class":534},[524,1114,985],{"class":534},[524,1116,909],{"class":584},[524,1118,966],{"class":534},[524,1120,932],{"class":534},[524,1122,1123],{"class":526,"line":719},[524,1124,1125],{"class":534},"  }\n",[524,1127,1129],{"class":526,"line":1128},8,[524,1130,937],{"class":534},[453,1132,1133,1136],{},[749,1134,1135],{},"Detected browsers:"," Edge, Chrome, Firefox, Safari (checked in order, Edge before Chrome to avoid false matches).",[453,1138,1139,1142],{},[749,1140,1141],{},"Detected devices:"," Bot (crawlers, spiders), Tablet (iPad), Mobile (iPhone, Android phones), Desktop (fallback).",[589,1144,1146],{"id":1145},"geo","Geo",[453,1148,1149],{},"Extract geographic data from platform-injected headers.",[453,1151,1152,752,1154],{},[749,1153,751],{},[460,1155,1156],{},"event.geo",[514,1158,1161],{"className":516,"code":1159,"filename":1160,"language":519,"meta":520,"style":520},"const enrich = createGeoEnricher()\n","geo-enricher.ts",[460,1162,1163],{"__ignoreMap":520},[524,1164,1165,1167,1169,1171,1174],{"class":526,"line":527},[524,1166,637],{"class":636},[524,1168,640],{"class":541},[524,1170,643],{"class":534},[524,1172,1173],{"class":646}," createGeoEnricher",[524,1175,649],{"class":541},[453,1177,1178],{},[749,1179,779],{},[514,1181,1184],{"className":516,"code":1182,"filename":1183,"language":519,"meta":520,"style":520},"interface GeoInfo {\n  country?: string      \u002F\u002F ISO country code (e.g., \"US\", \"FR\")\n  region?: string       \u002F\u002F Region\u002Fstate name\n  regionCode?: string   \u002F\u002F Region code\n  city?: string         \u002F\u002F City name\n  latitude?: number     \u002F\u002F Decimal latitude\n  longitude?: number    \u002F\u002F Decimal longitude\n}\n","geo-types.ts",[460,1185,1186,1195,1207,1219,1231,1243,1256,1268],{"__ignoreMap":520},[524,1187,1188,1190,1193],{"class":526,"line":527},[524,1189,790],{"class":636},[524,1191,1192],{"class":793}," GeoInfo",[524,1194,535],{"class":534},[524,1196,1197,1200,1202,1204],{"class":526,"line":538},[524,1198,1199],{"class":699},"  country",[524,1201,819],{"class":534},[524,1203,807],{"class":793},[524,1205,1206],{"class":810},"      \u002F\u002F ISO country code (e.g., \"US\", \"FR\")\n",[524,1208,1209,1212,1214,1216],{"class":526,"line":548},[524,1210,1211],{"class":699},"  region",[524,1213,819],{"class":534},[524,1215,807],{"class":793},[524,1217,1218],{"class":810},"       \u002F\u002F Region\u002Fstate name\n",[524,1220,1221,1224,1226,1228],{"class":526,"line":556},[524,1222,1223],{"class":699},"  regionCode",[524,1225,819],{"class":534},[524,1227,807],{"class":793},[524,1229,1230],{"class":810},"   \u002F\u002F Region code\n",[524,1232,1233,1236,1238,1240],{"class":526,"line":564},[524,1234,1235],{"class":699},"  city",[524,1237,819],{"class":534},[524,1239,807],{"class":793},[524,1241,1242],{"class":810},"         \u002F\u002F City name\n",[524,1244,1245,1248,1250,1253],{"class":526,"line":572},[524,1246,1247],{"class":699},"  latitude",[524,1249,819],{"class":534},[524,1251,1252],{"class":793}," number",[524,1254,1255],{"class":810},"     \u002F\u002F Decimal latitude\n",[524,1257,1258,1261,1263,1265],{"class":526,"line":719},[524,1259,1260],{"class":699},"  longitude",[524,1262,819],{"class":534},[524,1264,1252],{"class":793},[524,1266,1267],{"class":810},"    \u002F\u002F Decimal longitude\n",[524,1269,1270],{"class":526,"line":1128},[524,1271,937],{"class":534},[453,1273,1274],{},[749,1275,1276],{},"Supported platforms:",[1278,1279,1280,1296],"table",{},[1281,1282,1283],"thead",{},[1284,1285,1286,1290,1293],"tr",{},[1287,1288,1289],"th",{},"Platform",[1287,1291,1292],{},"Headers",[1287,1294,1295],{},"Coverage",[1297,1298,1299,1326],"tbody",{},[1284,1300,1301,1305,1323],{},[1302,1303,1304],"td",{},"Vercel",[1302,1306,1307,1310,1311,1310,1314,1310,1317,1310,1320],{},[460,1308,1309],{},"x-vercel-ip-country",", ",[460,1312,1313],{},"x-vercel-ip-country-region",[460,1315,1316],{},"x-vercel-ip-city",[460,1318,1319],{},"x-vercel-ip-latitude",[460,1321,1322],{},"x-vercel-ip-longitude",[1302,1324,1325],{},"Full",[1284,1327,1328,1331,1336],{},[1302,1329,1330],{},"Cloudflare",[1302,1332,1333],{},[460,1334,1335],{},"cf-ipcountry",[1302,1337,1338],{},"Country only",[1340,1341,1343,1346,1347,1349,1350,1310,1353,1310,1356,1359,1360,1363,1364,1367,1368,1370,1371,1374],"callout",{"color":1342,"icon":13},"info",[749,1344,1345],{},"Cloudflare note:"," Only ",[460,1348,1335],{}," is a standard Cloudflare HTTP header. Other geo fields (",[460,1351,1352],{},"city",[460,1354,1355],{},"region",[460,1357,1358],{},"latitude",", etc.) are properties of ",[460,1361,1362],{},"request.cf",", which is not exposed as headers. For full Cloudflare geo data, write a ",[469,1365,1366],{"href":395},"custom enricher"," that reads ",[460,1369,1362],{},", or use a Workers middleware to copy ",[460,1372,1373],{},"cf"," properties into custom headers.",[589,1376,1378],{"id":1377},"request-size","Request Size",[453,1380,1381,1382,1385],{},"Capture request and response payload sizes from ",[460,1383,1384],{},"Content-Length"," headers.",[453,1387,1388,752,1390],{},[749,1389,751],{},[460,1391,1392],{},"event.requestSize",[514,1394,1397],{"className":516,"code":1395,"filename":1396,"language":519,"meta":520,"style":520},"const enrich = createRequestSizeEnricher()\n","request-size-enricher.ts",[460,1398,1399],{"__ignoreMap":520},[524,1400,1401,1403,1405,1407,1410],{"class":526,"line":527},[524,1402,637],{"class":636},[524,1404,640],{"class":541},[524,1406,643],{"class":534},[524,1408,1409],{"class":646}," createRequestSizeEnricher",[524,1411,649],{"class":541},[453,1413,1414],{},[749,1415,779],{},[514,1417,1420],{"className":516,"code":1418,"filename":1419,"language":519,"meta":520,"style":520},"interface RequestSizeInfo {\n  requestBytes?: number    \u002F\u002F Request Content-Length\n  responseBytes?: number   \u002F\u002F Response Content-Length\n}\n","request-size-types.ts",[460,1421,1422,1431,1443,1455],{"__ignoreMap":520},[524,1423,1424,1426,1429],{"class":526,"line":527},[524,1425,790],{"class":636},[524,1427,1428],{"class":793}," RequestSizeInfo",[524,1430,535],{"class":534},[524,1432,1433,1436,1438,1440],{"class":526,"line":538},[524,1434,1435],{"class":699},"  requestBytes",[524,1437,819],{"class":534},[524,1439,1252],{"class":793},[524,1441,1442],{"class":810},"    \u002F\u002F Request Content-Length\n",[524,1444,1445,1448,1450,1452],{"class":526,"line":548},[524,1446,1447],{"class":699},"  responseBytes",[524,1449,819],{"class":534},[524,1451,1252],{"class":793},[524,1453,1454],{"class":810},"   \u002F\u002F Response Content-Length\n",[524,1456,1457],{"class":526,"line":556},[524,1458,937],{"class":534},[453,1460,1461],{},[749,1462,942],{},[514,1464,1467],{"className":945,"code":1465,"filename":1466,"language":948,"meta":520,"style":520},"{\n  \"requestSize\": {\n    \"requestBytes\": 1234,\n    \"responseBytes\": 5678\n  }\n}\n","Example wide event: requestSize",[460,1468,1469,1473,1486,1502,1516,1520],{"__ignoreMap":520},[524,1470,1471],{"class":526,"line":527},[524,1472,955],{"class":534},[524,1474,1475,1477,1480,1482,1484],{"class":526,"line":538},[524,1476,960],{"class":534},[524,1478,1479],{"class":636},"requestSize",[524,1481,966],{"class":534},[524,1483,804],{"class":534},[524,1485,535],{"class":534},[524,1487,1488,1490,1493,1495,1497,1500],{"class":526,"line":548},[524,1489,975],{"class":534},[524,1491,1492],{"class":793},"requestBytes",[524,1494,966],{"class":534},[524,1496,804],{"class":534},[524,1498,1499],{"class":1010}," 1234",[524,1501,545],{"class":534},[524,1503,1504,1506,1509,1511,1513],{"class":526,"line":556},[524,1505,975],{"class":534},[524,1507,1508],{"class":793},"responseBytes",[524,1510,966],{"class":534},[524,1512,804],{"class":534},[524,1514,1515],{"class":1010}," 5678\n",[524,1517,1518],{"class":526,"line":564},[524,1519,1125],{"class":534},[524,1521,1522],{"class":526,"line":572},[524,1523,937],{"class":534},[1340,1525,1526,1527,1529,1530,472],{"color":1342,"icon":13},"This enricher reads the ",[460,1528,1384],{}," header from both the request and response. If the header is missing (e.g., for chunked transfer encoding), the corresponding field will be ",[460,1531,1532],{},"undefined",[589,1534,1536],{"id":1535},"trace-context","Trace Context",[453,1538,1539,1540,1543,1544,1385],{},"Extract W3C trace context from the ",[460,1541,1542],{},"traceparent"," and ",[460,1545,1546],{},"tracestate",[453,1548,1549,752,1551,1310,1554,1310,1557],{},[749,1550,751],{},[460,1552,1553],{},"event.traceContext",[460,1555,1556],{},"event.traceId",[460,1558,1559],{},"event.spanId",[514,1561,1564],{"className":516,"code":1562,"filename":1563,"language":519,"meta":520,"style":520},"const enrich = createTraceContextEnricher()\n","trace-context-enricher.ts",[460,1565,1566],{"__ignoreMap":520},[524,1567,1568,1570,1572,1574,1577],{"class":526,"line":527},[524,1569,637],{"class":636},[524,1571,640],{"class":541},[524,1573,643],{"class":534},[524,1575,1576],{"class":646}," createTraceContextEnricher",[524,1578,649],{"class":541},[453,1580,1581],{},[749,1582,779],{},[514,1584,1587],{"className":516,"code":1585,"filename":1586,"language":519,"meta":520,"style":520},"interface TraceContextInfo {\n  traceparent?: string   \u002F\u002F Full traceparent header value\n  tracestate?: string    \u002F\u002F Full tracestate header value\n  traceId?: string       \u002F\u002F 32-char hex trace ID (parsed from traceparent)\n  spanId?: string        \u002F\u002F 16-char hex span ID (parsed from traceparent)\n}\n","trace-context-types.ts",[460,1588,1589,1598,1610,1622,1634,1646],{"__ignoreMap":520},[524,1590,1591,1593,1596],{"class":526,"line":527},[524,1592,790],{"class":636},[524,1594,1595],{"class":793}," TraceContextInfo",[524,1597,535],{"class":534},[524,1599,1600,1603,1605,1607],{"class":526,"line":538},[524,1601,1602],{"class":699},"  traceparent",[524,1604,819],{"class":534},[524,1606,807],{"class":793},[524,1608,1609],{"class":810},"   \u002F\u002F Full traceparent header value\n",[524,1611,1612,1615,1617,1619],{"class":526,"line":548},[524,1613,1614],{"class":699},"  tracestate",[524,1616,819],{"class":534},[524,1618,807],{"class":793},[524,1620,1621],{"class":810},"    \u002F\u002F Full tracestate header value\n",[524,1623,1624,1627,1629,1631],{"class":526,"line":556},[524,1625,1626],{"class":699},"  traceId",[524,1628,819],{"class":534},[524,1630,807],{"class":793},[524,1632,1633],{"class":810},"       \u002F\u002F 32-char hex trace ID (parsed from traceparent)\n",[524,1635,1636,1639,1641,1643],{"class":526,"line":564},[524,1637,1638],{"class":699},"  spanId",[524,1640,819],{"class":534},[524,1642,807],{"class":793},[524,1644,1645],{"class":810},"        \u002F\u002F 16-char hex span ID (parsed from traceparent)\n",[524,1647,1648],{"class":526,"line":572},[524,1649,937],{"class":534},[453,1651,1652],{},[749,1653,942],{},[514,1655,1658],{"className":945,"code":1656,"filename":1657,"language":948,"meta":520,"style":520},"{\n  \"traceContext\": {\n    \"traceparent\": \"00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01\",\n    \"traceId\": \"4bf92f3577b34da6a3ce929d0e0e4736\",\n    \"spanId\": \"00f067aa0ba902b7\"\n  },\n  \"traceId\": \"4bf92f3577b34da6a3ce929d0e0e4736\",\n  \"spanId\": \"00f067aa0ba902b7\"\n}\n","Example wide event: traceContext",[460,1659,1660,1664,1677,1696,1716,1735,1740,1758,1774],{"__ignoreMap":520},[524,1661,1662],{"class":526,"line":527},[524,1663,955],{"class":534},[524,1665,1666,1668,1671,1673,1675],{"class":526,"line":538},[524,1667,960],{"class":534},[524,1669,1670],{"class":636},"traceContext",[524,1672,966],{"class":534},[524,1674,804],{"class":534},[524,1676,535],{"class":534},[524,1678,1679,1681,1683,1685,1687,1689,1692,1694],{"class":526,"line":548},[524,1680,975],{"class":534},[524,1682,1542],{"class":793},[524,1684,966],{"class":534},[524,1686,804],{"class":534},[524,1688,985],{"class":534},[524,1690,1691],{"class":584},"00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",[524,1693,966],{"class":534},[524,1695,545],{"class":534},[524,1697,1698,1700,1703,1705,1707,1709,1712,1714],{"class":526,"line":556},[524,1699,975],{"class":534},[524,1701,1702],{"class":793},"traceId",[524,1704,966],{"class":534},[524,1706,804],{"class":534},[524,1708,985],{"class":534},[524,1710,1711],{"class":584},"4bf92f3577b34da6a3ce929d0e0e4736",[524,1713,966],{"class":534},[524,1715,545],{"class":534},[524,1717,1718,1720,1723,1725,1727,1729,1732],{"class":526,"line":564},[524,1719,975],{"class":534},[524,1721,1722],{"class":793},"spanId",[524,1724,966],{"class":534},[524,1726,804],{"class":534},[524,1728,985],{"class":534},[524,1730,1731],{"class":584},"00f067aa0ba902b7",[524,1733,1734],{"class":534},"\"\n",[524,1736,1737],{"class":526,"line":572},[524,1738,1739],{"class":534},"  },\n",[524,1741,1742,1744,1746,1748,1750,1752,1754,1756],{"class":526,"line":719},[524,1743,960],{"class":534},[524,1745,1702],{"class":636},[524,1747,966],{"class":534},[524,1749,804],{"class":534},[524,1751,985],{"class":534},[524,1753,1711],{"class":584},[524,1755,966],{"class":534},[524,1757,545],{"class":534},[524,1759,1760,1762,1764,1766,1768,1770,1772],{"class":526,"line":1128},[524,1761,960],{"class":534},[524,1763,1722],{"class":636},[524,1765,966],{"class":534},[524,1767,804],{"class":534},[524,1769,985],{"class":534},[524,1771,1731],{"class":584},[524,1773,1734],{"class":534},[524,1775,1777],{"class":526,"line":1776},9,[524,1778,937],{"class":534},[453,1780,1781,1543,1783,1785],{},[460,1782,1702],{},[460,1784,1722],{}," are also set at the top level of the event for easy querying and correlation.",[1340,1787,1788,1789,1794,1795,472],{"color":1342,"icon":13},"The traceparent format follows the ",[469,1790,1793],{"href":1791,"rel":1792},"https:\u002F\u002Fwww.w3.org\u002FTR\u002Ftrace-context\u002F",[507],"W3C Trace Context"," specification: ",[460,1796,1797],{},"{version}-{traceId}-{spanId}-{flags}",[589,1799,1801],{"id":1800},"full-setup-example","Full Setup Example",[453,1803,1804],{},"Use all built-in enrichers together. The list of enrichers is identical across frameworks — only the wiring changes.",[1806,1807,1808,2032,2266,2414],"code-group",{},[514,1809,1812],{"className":516,"code":1810,"filename":1811,"language":519,"meta":520,"style":520},"\u002F\u002F server\u002Fplugins\u002Fevlog-enrich.ts\nimport {\n  createUserAgentEnricher,\n  createGeoEnricher,\n  createRequestSizeEnricher,\n  createTraceContextEnricher,\n} from 'evlog\u002Fenrichers'\n\nexport default defineNitroPlugin((nitroApp) => {\n  const enrichers = [\n    createUserAgentEnricher(),\n    createGeoEnricher(),\n    createRequestSizeEnricher(),\n    createTraceContextEnricher(),\n  ]\n\n  nitroApp.hooks.hook('evlog:enrich', (ctx) => {\n    for (const enricher of enrichers) enricher(ctx)\n  })\n})\n","Nuxt \u002F Nitro",[460,1813,1814,1819,1825,1831,1837,1843,1849,1861,1865,1885,1900,1911,1921,1931,1941,1947,1952,1987,2017,2025],{"__ignoreMap":520},[524,1815,1816],{"class":526,"line":527},[524,1817,1818],{"class":810},"\u002F\u002F server\u002Fplugins\u002Fevlog-enrich.ts\n",[524,1820,1821,1823],{"class":526,"line":538},[524,1822,531],{"class":530},[524,1824,535],{"class":534},[524,1826,1827,1829],{"class":526,"line":548},[524,1828,542],{"class":541},[524,1830,545],{"class":534},[524,1832,1833,1835],{"class":526,"line":556},[524,1834,551],{"class":541},[524,1836,545],{"class":534},[524,1838,1839,1841],{"class":526,"line":564},[524,1840,559],{"class":541},[524,1842,545],{"class":534},[524,1844,1845,1847],{"class":526,"line":572},[524,1846,567],{"class":541},[524,1848,545],{"class":534},[524,1850,1851,1853,1855,1857,1859],{"class":526,"line":719},[524,1852,575],{"class":534},[524,1854,578],{"class":530},[524,1856,581],{"class":534},[524,1858,462],{"class":584},[524,1860,587],{"class":534},[524,1862,1863],{"class":526,"line":1128},[524,1864,631],{"emptyLinePlaceholder":630},[524,1866,1867,1869,1871,1873,1875,1877,1879,1881,1883],{"class":526,"line":1776},[524,1868,658],{"class":530},[524,1870,661],{"class":530},[524,1872,664],{"class":646},[524,1874,667],{"class":541},[524,1876,667],{"class":534},[524,1878,673],{"class":672},[524,1880,676],{"class":534},[524,1882,679],{"class":636},[524,1884,535],{"class":534},[524,1886,1888,1891,1894,1897],{"class":526,"line":1887},10,[524,1889,1890],{"class":636},"  const",[524,1892,1893],{"class":541}," enrichers",[524,1895,1896],{"class":534}," =",[524,1898,1899],{"class":699}," [\n",[524,1901,1903,1906,1909],{"class":526,"line":1902},11,[524,1904,1905],{"class":646},"    createUserAgentEnricher",[524,1907,1908],{"class":699},"()",[524,1910,545],{"class":534},[524,1912,1914,1917,1919],{"class":526,"line":1913},12,[524,1915,1916],{"class":646},"    createGeoEnricher",[524,1918,1908],{"class":699},[524,1920,545],{"class":534},[524,1922,1924,1927,1929],{"class":526,"line":1923},13,[524,1925,1926],{"class":646},"    createRequestSizeEnricher",[524,1928,1908],{"class":699},[524,1930,545],{"class":534},[524,1932,1934,1937,1939],{"class":526,"line":1933},14,[524,1935,1936],{"class":646},"    createTraceContextEnricher",[524,1938,1908],{"class":699},[524,1940,545],{"class":534},[524,1942,1944],{"class":526,"line":1943},15,[524,1945,1946],{"class":699},"  ]\n",[524,1948,1950],{"class":526,"line":1949},16,[524,1951,631],{"emptyLinePlaceholder":630},[524,1953,1955,1957,1959,1961,1963,1965,1967,1969,1971,1973,1975,1978,1981,1983,1985],{"class":526,"line":1954},17,[524,1956,686],{"class":541},[524,1958,472],{"class":534},[524,1960,691],{"class":541},[524,1962,472],{"class":534},[524,1964,696],{"class":646},[524,1966,667],{"class":699},[524,1968,702],{"class":534},[524,1970,705],{"class":584},[524,1972,702],{"class":534},[524,1974,710],{"class":534},[524,1976,1977],{"class":534}," (",[524,1979,1980],{"class":672},"ctx",[524,1982,676],{"class":534},[524,1984,679],{"class":636},[524,1986,535],{"class":534},[524,1988,1990,1993,1995,1997,2000,2003,2005,2008,2011,2013,2015],{"class":526,"line":1989},18,[524,1991,1992],{"class":530},"    for",[524,1994,1977],{"class":699},[524,1996,637],{"class":636},[524,1998,1999],{"class":541}," enricher",[524,2001,2002],{"class":534}," of",[524,2004,1893],{"class":541},[524,2006,2007],{"class":699},") ",[524,2009,2010],{"class":646},"enricher",[524,2012,667],{"class":699},[524,2014,1980],{"class":541},[524,2016,716],{"class":699},[524,2018,2020,2023],{"class":526,"line":2019},19,[524,2021,2022],{"class":534},"  }",[524,2024,716],{"class":699},[524,2026,2028,2030],{"class":526,"line":2027},20,[524,2029,575],{"class":534},[524,2031,716],{"class":541},[514,2033,2035],{"className":516,"code":2034,"filename":172,"language":519,"meta":520,"style":520},"\u002F\u002F lib\u002Fevlog.ts\nimport { createEvlog } from 'evlog\u002Fnext'\nimport {\n  createUserAgentEnricher,\n  createGeoEnricher,\n  createRequestSizeEnricher,\n  createTraceContextEnricher,\n} from 'evlog\u002Fenrichers'\n\nconst enrichers = [\n  createUserAgentEnricher(),\n  createGeoEnricher(),\n  createRequestSizeEnricher(),\n  createTraceContextEnricher(),\n]\n\nexport const { withEvlog, useLogger, log, createError } = createEvlog({\n  service: 'my-app',\n  enrich: (ctx) => {\n    for (const enricher of enrichers) enricher(ctx)\n  },\n})\n",[460,2036,2037,2042,2062,2068,2074,2080,2086,2092,2104,2108,2119,2127,2135,2143,2151,2156,2160,2197,2213,2230,2254,2259],{"__ignoreMap":520},[524,2038,2039],{"class":526,"line":527},[524,2040,2041],{"class":810},"\u002F\u002F lib\u002Fevlog.ts\n",[524,2043,2044,2046,2048,2051,2053,2055,2057,2060],{"class":526,"line":538},[524,2045,531],{"class":530},[524,2047,611],{"class":534},[524,2049,2050],{"class":541}," createEvlog",[524,2052,617],{"class":534},[524,2054,578],{"class":530},[524,2056,581],{"class":534},[524,2058,2059],{"class":584},"evlog\u002Fnext",[524,2061,587],{"class":534},[524,2063,2064,2066],{"class":526,"line":548},[524,2065,531],{"class":530},[524,2067,535],{"class":534},[524,2069,2070,2072],{"class":526,"line":556},[524,2071,542],{"class":541},[524,2073,545],{"class":534},[524,2075,2076,2078],{"class":526,"line":564},[524,2077,551],{"class":541},[524,2079,545],{"class":534},[524,2081,2082,2084],{"class":526,"line":572},[524,2083,559],{"class":541},[524,2085,545],{"class":534},[524,2087,2088,2090],{"class":526,"line":719},[524,2089,567],{"class":541},[524,2091,545],{"class":534},[524,2093,2094,2096,2098,2100,2102],{"class":526,"line":1128},[524,2095,575],{"class":534},[524,2097,578],{"class":530},[524,2099,581],{"class":534},[524,2101,462],{"class":584},[524,2103,587],{"class":534},[524,2105,2106],{"class":526,"line":1776},[524,2107,631],{"emptyLinePlaceholder":630},[524,2109,2110,2112,2115,2117],{"class":526,"line":1887},[524,2111,637],{"class":636},[524,2113,2114],{"class":541}," enrichers ",[524,2116,643],{"class":534},[524,2118,1899],{"class":541},[524,2120,2121,2123,2125],{"class":526,"line":1902},[524,2122,542],{"class":646},[524,2124,1908],{"class":541},[524,2126,545],{"class":534},[524,2128,2129,2131,2133],{"class":526,"line":1913},[524,2130,551],{"class":646},[524,2132,1908],{"class":541},[524,2134,545],{"class":534},[524,2136,2137,2139,2141],{"class":526,"line":1923},[524,2138,559],{"class":646},[524,2140,1908],{"class":541},[524,2142,545],{"class":534},[524,2144,2145,2147,2149],{"class":526,"line":1933},[524,2146,567],{"class":646},[524,2148,1908],{"class":541},[524,2150,545],{"class":534},[524,2152,2153],{"class":526,"line":1943},[524,2154,2155],{"class":541},"]\n",[524,2157,2158],{"class":526,"line":1949},[524,2159,631],{"emptyLinePlaceholder":630},[524,2161,2162,2164,2167,2169,2172,2174,2177,2179,2182,2184,2187,2189,2191,2193,2195],{"class":526,"line":1954},[524,2163,658],{"class":530},[524,2165,2166],{"class":636}," const",[524,2168,611],{"class":534},[524,2170,2171],{"class":541}," withEvlog",[524,2173,710],{"class":534},[524,2175,2176],{"class":541}," useLogger",[524,2178,710],{"class":534},[524,2180,2181],{"class":541}," log",[524,2183,710],{"class":534},[524,2185,2186],{"class":541}," createError ",[524,2188,575],{"class":534},[524,2190,1896],{"class":534},[524,2192,2050],{"class":646},[524,2194,667],{"class":541},[524,2196,955],{"class":534},[524,2198,2199,2202,2204,2206,2209,2211],{"class":526,"line":1989},[524,2200,2201],{"class":699},"  service",[524,2203,804],{"class":534},[524,2205,581],{"class":534},[524,2207,2208],{"class":584},"my-app",[524,2210,702],{"class":534},[524,2212,545],{"class":534},[524,2214,2215,2218,2220,2222,2224,2226,2228],{"class":526,"line":2019},[524,2216,2217],{"class":646},"  enrich",[524,2219,804],{"class":534},[524,2221,1977],{"class":534},[524,2223,1980],{"class":672},[524,2225,676],{"class":534},[524,2227,679],{"class":636},[524,2229,535],{"class":534},[524,2231,2232,2234,2236,2238,2240,2242,2244,2246,2248,2250,2252],{"class":526,"line":2027},[524,2233,1992],{"class":530},[524,2235,1977],{"class":699},[524,2237,637],{"class":636},[524,2239,1999],{"class":541},[524,2241,2002],{"class":534},[524,2243,1893],{"class":541},[524,2245,2007],{"class":699},[524,2247,2010],{"class":646},[524,2249,667],{"class":699},[524,2251,1980],{"class":541},[524,2253,716],{"class":699},[524,2255,2257],{"class":526,"line":2256},21,[524,2258,1739],{"class":534},[524,2260,2262,2264],{"class":526,"line":2261},22,[524,2263,575],{"class":534},[524,2265,716],{"class":541},[514,2267,2270],{"className":516,"code":2268,"filename":2269,"language":519,"meta":520,"style":520},"import {\n  createUserAgentEnricher,\n  createGeoEnricher,\n  createRequestSizeEnricher,\n  createTraceContextEnricher,\n} from 'evlog\u002Fenrichers'\n\nconst enrichers = [\n  createUserAgentEnricher(),\n  createGeoEnricher(),\n  createRequestSizeEnricher(),\n  createTraceContextEnricher(),\n]\n\napp.use(evlog({ enrichers })) \u002F\u002F Hono \u002F Express \u002F Elysia\n\u002F\u002F await app.register(evlog, { enrichers }) \u002F\u002F Fastify\n\u002F\u002F EvlogModule.forRoot({ enrichers }) \u002F\u002F NestJS\n","Hono \u002F Express \u002F Fastify \u002F Elysia \u002F NestJS",[460,2271,2272,2278,2284,2290,2296,2302,2314,2318,2328,2336,2344,2352,2360,2364,2368,2398,2406],{"__ignoreMap":520},[524,2273,2274,2276],{"class":526,"line":527},[524,2275,531],{"class":530},[524,2277,535],{"class":534},[524,2279,2280,2282],{"class":526,"line":538},[524,2281,542],{"class":541},[524,2283,545],{"class":534},[524,2285,2286,2288],{"class":526,"line":548},[524,2287,551],{"class":541},[524,2289,545],{"class":534},[524,2291,2292,2294],{"class":526,"line":556},[524,2293,559],{"class":541},[524,2295,545],{"class":534},[524,2297,2298,2300],{"class":526,"line":564},[524,2299,567],{"class":541},[524,2301,545],{"class":534},[524,2303,2304,2306,2308,2310,2312],{"class":526,"line":572},[524,2305,575],{"class":534},[524,2307,578],{"class":530},[524,2309,581],{"class":534},[524,2311,462],{"class":584},[524,2313,587],{"class":534},[524,2315,2316],{"class":526,"line":719},[524,2317,631],{"emptyLinePlaceholder":630},[524,2319,2320,2322,2324,2326],{"class":526,"line":1128},[524,2321,637],{"class":636},[524,2323,2114],{"class":541},[524,2325,643],{"class":534},[524,2327,1899],{"class":541},[524,2329,2330,2332,2334],{"class":526,"line":1776},[524,2331,542],{"class":646},[524,2333,1908],{"class":541},[524,2335,545],{"class":534},[524,2337,2338,2340,2342],{"class":526,"line":1887},[524,2339,551],{"class":646},[524,2341,1908],{"class":541},[524,2343,545],{"class":534},[524,2345,2346,2348,2350],{"class":526,"line":1902},[524,2347,559],{"class":646},[524,2349,1908],{"class":541},[524,2351,545],{"class":534},[524,2353,2354,2356,2358],{"class":526,"line":1913},[524,2355,567],{"class":646},[524,2357,1908],{"class":541},[524,2359,545],{"class":534},[524,2361,2362],{"class":526,"line":1923},[524,2363,2155],{"class":541},[524,2365,2366],{"class":526,"line":1933},[524,2367,631],{"emptyLinePlaceholder":630},[524,2369,2370,2373,2375,2378,2380,2383,2385,2388,2390,2392,2395],{"class":526,"line":1943},[524,2371,2372],{"class":541},"app",[524,2374,472],{"class":534},[524,2376,2377],{"class":646},"use",[524,2379,667],{"class":541},[524,2381,2382],{"class":646},"evlog",[524,2384,667],{"class":541},[524,2386,2387],{"class":534},"{",[524,2389,2114],{"class":541},[524,2391,575],{"class":534},[524,2393,2394],{"class":541},")) ",[524,2396,2397],{"class":810},"\u002F\u002F Hono \u002F Express \u002F Elysia\n",[524,2399,2400,2403],{"class":526,"line":1949},[524,2401,2402],{"class":810},"\u002F\u002F await app.register(evlog, { enrichers })",[524,2404,2405],{"class":810}," \u002F\u002F Fastify\n",[524,2407,2408,2411],{"class":526,"line":1954},[524,2409,2410],{"class":810},"\u002F\u002F EvlogModule.forRoot({ enrichers })",[524,2412,2413],{"class":810}," \u002F\u002F NestJS\n",[514,2415,2417],{"className":516,"code":2416,"filename":227,"language":519,"meta":520,"style":520},"\u002F\u002F index.ts\nimport { initLogger } from 'evlog'\nimport {\n  createUserAgentEnricher,\n  createGeoEnricher,\n  createRequestSizeEnricher,\n  createTraceContextEnricher,\n} from 'evlog\u002Fenrichers'\n\ninitLogger({\n  enrichers: [\n    createUserAgentEnricher(),\n    createGeoEnricher(),\n    createRequestSizeEnricher(),\n    createTraceContextEnricher(),\n  ],\n})\n",[460,2418,2419,2424,2443,2449,2455,2461,2467,2473,2485,2489,2498,2507,2515,2523,2531,2539,2546],{"__ignoreMap":520},[524,2420,2421],{"class":526,"line":527},[524,2422,2423],{"class":810},"\u002F\u002F index.ts\n",[524,2425,2426,2428,2430,2433,2435,2437,2439,2441],{"class":526,"line":538},[524,2427,531],{"class":530},[524,2429,611],{"class":534},[524,2431,2432],{"class":541}," initLogger",[524,2434,617],{"class":534},[524,2436,578],{"class":530},[524,2438,581],{"class":534},[524,2440,2382],{"class":584},[524,2442,587],{"class":534},[524,2444,2445,2447],{"class":526,"line":548},[524,2446,531],{"class":530},[524,2448,535],{"class":534},[524,2450,2451,2453],{"class":526,"line":556},[524,2452,542],{"class":541},[524,2454,545],{"class":534},[524,2456,2457,2459],{"class":526,"line":564},[524,2458,551],{"class":541},[524,2460,545],{"class":534},[524,2462,2463,2465],{"class":526,"line":572},[524,2464,559],{"class":541},[524,2466,545],{"class":534},[524,2468,2469,2471],{"class":526,"line":719},[524,2470,567],{"class":541},[524,2472,545],{"class":534},[524,2474,2475,2477,2479,2481,2483],{"class":526,"line":1128},[524,2476,575],{"class":534},[524,2478,578],{"class":530},[524,2480,581],{"class":534},[524,2482,462],{"class":584},[524,2484,587],{"class":534},[524,2486,2487],{"class":526,"line":1776},[524,2488,631],{"emptyLinePlaceholder":630},[524,2490,2491,2494,2496],{"class":526,"line":1887},[524,2492,2493],{"class":646},"initLogger",[524,2495,667],{"class":541},[524,2497,955],{"class":534},[524,2499,2500,2503,2505],{"class":526,"line":1902},[524,2501,2502],{"class":699},"  enrichers",[524,2504,804],{"class":534},[524,2506,1899],{"class":541},[524,2508,2509,2511,2513],{"class":526,"line":1913},[524,2510,1905],{"class":646},[524,2512,1908],{"class":541},[524,2514,545],{"class":534},[524,2516,2517,2519,2521],{"class":526,"line":1923},[524,2518,1916],{"class":646},[524,2520,1908],{"class":541},[524,2522,545],{"class":534},[524,2524,2525,2527,2529],{"class":526,"line":1933},[524,2526,1926],{"class":646},[524,2528,1908],{"class":541},[524,2530,545],{"class":534},[524,2532,2533,2535,2537],{"class":526,"line":1943},[524,2534,1936],{"class":646},[524,2536,1908],{"class":541},[524,2538,545],{"class":534},[524,2540,2541,2544],{"class":526,"line":1949},[524,2542,2543],{"class":541},"  ]",[524,2545,545],{"class":534},[524,2547,2548,2550],{"class":526,"line":1954},[524,2549,575],{"class":534},[524,2551,716],{"class":541},[589,2553,2555],{"id":2554},"next-steps","Next Steps",[2557,2558,2559,2564],"ul",{},[485,2560,2561,2563],{},[469,2562,471],{"href":395}," - Write your own enricher",[485,2565,2566,2568],{},[469,2567,90],{"href":95}," - Send enriched events to external services",[2570,2571,2572],"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 .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 .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 .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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":520,"searchDepth":538,"depth":538,"links":2574},[2575,2576,2577,2578,2579,2580,2581],{"id":591,"depth":538,"text":592},{"id":737,"depth":538,"text":738},{"id":1145,"depth":538,"text":1146},{"id":1377,"depth":538,"text":1378},{"id":1535,"depth":538,"text":1536},{"id":1800,"depth":538,"text":1801},{"id":2554,"depth":538,"text":2555},"Add derived context to every wide event automatically — user agent, geo, request size, and trace context. Built-in enrichers from evlog\u002Fenrichers, plus how to compose them with your own.","md",[2585],{"label":471,"icon":272,"to":395,"color":2586,"variant":2587},"neutral","subtle",{},{"title":349,"icon":352},{"title":349,"description":2582},"rqyEbduMDVQLuvlrRu4MfsFEcclSo10RsYQoDqVJtno",[2593,2595],{"title":345,"path":346,"stem":347,"description":2594,"icon":79,"children":-1},"File system, Axiom, and Postgres recipes for audit logs, plus mockAudit for tests and the full API reference.",{"title":36,"path":359,"stem":360,"description":2596,"icon":261,"children":-1},"Export one evlog wide event per Eve agent turn — token usage, tool executions, business context, drains, enrichers, and tail sampling alongside Agent Runs and OpenTelemetry.",1782924662900]