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