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