[{"data":1,"prerenderedAt":1677},["ShallowReactive",2],{"navigation_docs":3,"-enrichers-built-in":228,"-enrichers-built-in-surround":1672},[4,30,110,149,198,214],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-zap",{"title":25,"path":26,"stem":27,"icon":28},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","1.getting-started\u002F4.agent-skills","i-lucide-sparkles",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Frameworks","\u002Fframeworks","2.frameworks",[35,40,45,50,55,60,65,70,75,80,85,90,95,100,105],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Fframeworks\u002Foverview","2.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":41,"path":42,"stem":43,"icon":44},"Nuxt","\u002Fframeworks\u002Fnuxt","2.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":46,"path":47,"stem":48,"icon":49},"Next.js","\u002Fframeworks\u002Fnextjs","2.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":51,"path":52,"stem":53,"icon":54},"SvelteKit","\u002Fframeworks\u002Fsveltekit","2.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":56,"path":57,"stem":58,"icon":59},"Nitro","\u002Fframeworks\u002Fnitro","2.frameworks\u002F04.nitro","i-custom-nitro",{"title":61,"path":62,"stem":63,"icon":64},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","2.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":66,"path":67,"stem":68,"icon":69},"NestJS","\u002Fframeworks\u002Fnestjs","2.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":71,"path":72,"stem":73,"icon":74},"Express","\u002Fframeworks\u002Fexpress","2.frameworks\u002F07.express","i-simple-icons-express",{"title":76,"path":77,"stem":78,"icon":79},"Hono","\u002Fframeworks\u002Fhono","2.frameworks\u002F08.hono","i-simple-icons-hono",{"title":81,"path":82,"stem":83,"icon":84},"Fastify","\u002Fframeworks\u002Ffastify","2.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":86,"path":87,"stem":88,"icon":89},"Elysia","\u002Fframeworks\u002Felysia","2.frameworks\u002F10.elysia","i-custom-elysia",{"title":91,"path":92,"stem":93,"icon":94},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","2.frameworks\u002F11.cloudflare-workers","i-simple-icons-cloudflare",{"title":96,"path":97,"stem":98,"icon":99},"Standalone","\u002Fframeworks\u002Fstandalone","2.frameworks\u002F12.standalone","i-simple-icons-typescript",{"title":101,"path":102,"stem":103,"icon":104},"Astro","\u002Fframeworks\u002Fastro","2.frameworks\u002F13.astro","i-simple-icons-astro",{"title":106,"path":107,"stem":108,"icon":109},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","2.frameworks\u002F14.custom-integration","i-lucide-puzzle",{"title":111,"path":112,"stem":113,"children":114,"page":29},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[115,120,125,130,135,139,144],{"title":116,"path":117,"stem":118,"icon":119},"Request Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":121,"path":122,"stem":123,"icon":124},"Wide Events","\u002Fcore-concepts\u002Fwide-events","3.core-concepts\u002F1.wide-events","i-lucide-layers",{"title":126,"path":127,"stem":128,"icon":129},"Structured Errors","\u002Fcore-concepts\u002Fstructured-errors","3.core-concepts\u002F2.structured-errors","i-lucide-shield-alert",{"title":131,"path":132,"stem":133,"icon":134},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F3.best-practices","i-lucide-shield-check",{"title":136,"path":137,"stem":138,"icon":99},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F4.typed-fields",{"title":140,"path":141,"stem":142,"icon":143},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F5.sampling","i-lucide-filter",{"title":145,"path":146,"stem":147,"icon":148},"Client Logging","\u002Fcore-concepts\u002Fclient-logging","3.core-concepts\u002F6.client-logging","i-lucide-monitor",{"title":150,"path":151,"stem":152,"children":153,"page":29},"Adapters","\u002Fadapters","4.adapters",[154,158,163,168,173,178,183,188,193],{"title":36,"path":155,"stem":156,"icon":157},"\u002Fadapters\u002Foverview","4.adapters\u002F1.overview","i-custom-plug",{"title":159,"path":160,"stem":161,"icon":162},"Axiom","\u002Fadapters\u002Faxiom","4.adapters\u002F2.axiom","i-custom-axiom",{"title":164,"path":165,"stem":166,"icon":167},"OTLP","\u002Fadapters\u002Fotlp","4.adapters\u002F3.otlp","i-simple-icons-opentelemetry",{"title":169,"path":170,"stem":171,"icon":172},"PostHog","\u002Fadapters\u002Fposthog","4.adapters\u002F4.posthog","i-simple-icons-posthog",{"title":174,"path":175,"stem":176,"icon":177},"Sentry","\u002Fadapters\u002Fsentry","4.adapters\u002F5.sentry","i-simple-icons-sentry",{"title":179,"path":180,"stem":181,"icon":182},"Better Stack","\u002Fadapters\u002Fbetter-stack","4.adapters\u002F6.better-stack","i-simple-icons-betterstack",{"title":184,"path":185,"stem":186,"icon":187},"Custom Adapters","\u002Fadapters\u002Fcustom","4.adapters\u002F7.custom","i-lucide-code",{"title":189,"path":190,"stem":191,"icon":192},"Pipeline","\u002Fadapters\u002Fpipeline","4.adapters\u002F8.pipeline","i-lucide-workflow",{"title":194,"path":195,"stem":196,"icon":197},"Browser","\u002Fadapters\u002Fbrowser","4.adapters\u002F9.browser","i-lucide-globe",{"title":199,"path":200,"stem":201,"children":202,"page":29},"Enrichers","\u002Fenrichers","5.enrichers",[203,206,210],{"title":36,"path":204,"stem":205,"icon":28},"\u002Fenrichers\u002Foverview","5.enrichers\u002F1.overview",{"title":207,"path":208,"stem":209,"icon":109},"Built-in","\u002Fenrichers\u002Fbuilt-in","5.enrichers\u002F2.built-in",{"title":211,"path":212,"stem":213,"icon":187},"Custom","\u002Fenrichers\u002Fcustom","5.enrichers\u002F3.custom",{"title":215,"path":216,"stem":217,"children":218,"page":29},"NuxtHub","\u002Fnuxthub","6.nuxthub",[219,223],{"title":36,"path":220,"stem":221,"icon":222},"\u002Fnuxthub\u002Foverview","6.nuxthub\u002F1.overview","i-lucide-database",{"title":224,"path":225,"stem":226,"icon":227},"Retention","\u002Fnuxthub\u002Fretention","6.nuxthub\u002F2.retention","i-lucide-clock",{"id":229,"title":230,"body":231,"description":1660,"extension":1661,"links":1662,"meta":1668,"navigation":1669,"path":208,"seo":1670,"stem":209,"__hash__":1671},"docs\u002F5.enrichers\u002F2.built-in.md","Built-in Enrichers",{"type":232,"value":233,"toc":1652},"minimark",[234,247,321,326,333,343,367,372,533,538,727,733,739,743,746,753,771,775,866,871,933,970,974,981,988,1006,1010,1052,1056,1116,1126,1130,1140,1153,1171,1175,1241,1245,1369,1376,1389,1393,1396,1629,1633,1648],[235,236,237,238,242,243,246],"p",{},"All built-in enrichers are exported from ",[239,240,241],"code",{},"evlog\u002Fenrichers",". Each enricher is a factory function that returns an ",[239,244,245],{},"(ctx: EnrichContext) => void"," callback.",[248,249,254],"pre",{"className":250,"code":251,"language":252,"meta":253,"style":253},"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","typescript","",[239,255,256,269,279,287,295,303],{"__ignoreMap":253},[257,258,261,265],"span",{"class":259,"line":260},"line",1,[257,262,264],{"class":263},"s7zQu","import",[257,266,268],{"class":267},"sMK4o"," {\n",[257,270,272,276],{"class":259,"line":271},2,[257,273,275],{"class":274},"sTEyZ","  createUserAgentEnricher",[257,277,278],{"class":267},",\n",[257,280,282,285],{"class":259,"line":281},3,[257,283,284],{"class":274},"  createGeoEnricher",[257,286,278],{"class":267},[257,288,290,293],{"class":259,"line":289},4,[257,291,292],{"class":274},"  createRequestSizeEnricher",[257,294,278],{"class":267},[257,296,298,301],{"class":259,"line":297},5,[257,299,300],{"class":274},"  createTraceContextEnricher",[257,302,278],{"class":267},[257,304,306,309,312,315,318],{"class":259,"line":305},6,[257,307,308],{"class":267},"}",[257,310,311],{"class":263}," from",[257,313,314],{"class":267}," '",[257,316,241],{"class":317},"sfazB",[257,319,320],{"class":267},"'\n",[322,323,325],"h2",{"id":324},"user-agent","User Agent",[235,327,328,329,332],{},"Parse browser, OS, and device type from the ",[239,330,331],{},"User-Agent"," header.",[235,334,335,339,340],{},[336,337,338],"strong",{},"Sets:"," ",[239,341,342],{},"event.userAgent",[248,344,346],{"className":250,"code":345,"language":252,"meta":253,"style":253},"const enrich = createUserAgentEnricher()\n",[239,347,348],{"__ignoreMap":253},[257,349,350,354,357,360,364],{"class":259,"line":260},[257,351,353],{"class":352},"spNyl","const",[257,355,356],{"class":274}," enrich ",[257,358,359],{"class":267},"=",[257,361,363],{"class":362},"s2Zo4"," createUserAgentEnricher",[257,365,366],{"class":274},"()\n",[235,368,369],{},[336,370,371],{},"Output shape:",[248,373,375],{"className":250,"code":374,"language":252,"meta":253,"style":253},"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",[239,376,377,388,404,438,466,528],{"__ignoreMap":253},[257,378,379,382,386],{"class":259,"line":260},[257,380,381],{"class":352},"interface",[257,383,385],{"class":384},"sBMFI"," UserAgentInfo",[257,387,268],{"class":267},[257,389,390,394,397,400],{"class":259,"line":271},[257,391,393],{"class":392},"swJcz","  raw",[257,395,396],{"class":267},":",[257,398,399],{"class":384}," string",[257,401,403],{"class":402},"sHwdD","                                      \u002F\u002F Original User-Agent string\n",[257,405,406,409,412,415,418,420,422,425,428,430,432,435],{"class":259,"line":281},[257,407,408],{"class":392},"  browser",[257,410,411],{"class":267},"?:",[257,413,414],{"class":267}," {",[257,416,417],{"class":392}," name",[257,419,396],{"class":267},[257,421,399],{"class":384},[257,423,424],{"class":267},";",[257,426,427],{"class":392}," version",[257,429,411],{"class":267},[257,431,399],{"class":384},[257,433,434],{"class":267}," }",[257,436,437],{"class":402},"     \u002F\u002F Chrome, Firefox, Safari, Edge\n",[257,439,440,443,445,447,449,451,453,455,457,459,461,463],{"class":259,"line":289},[257,441,442],{"class":392},"  os",[257,444,411],{"class":267},[257,446,414],{"class":267},[257,448,417],{"class":392},[257,450,396],{"class":267},[257,452,399],{"class":384},[257,454,424],{"class":267},[257,456,427],{"class":392},[257,458,411],{"class":267},[257,460,399],{"class":384},[257,462,434],{"class":267},[257,464,465],{"class":402},"          \u002F\u002F Windows, macOS, iOS, Android, Linux\n",[257,467,468,471,473,475,478,480,482,485,488,491,493,496,498,500,502,505,507,509,511,514,516,518,520,523,525],{"class":259,"line":297},[257,469,470],{"class":392},"  device",[257,472,411],{"class":267},[257,474,414],{"class":267},[257,476,477],{"class":392}," type",[257,479,396],{"class":267},[257,481,314],{"class":267},[257,483,484],{"class":317},"mobile",[257,486,487],{"class":267},"'",[257,489,490],{"class":267}," |",[257,492,314],{"class":267},[257,494,495],{"class":317},"tablet",[257,497,487],{"class":267},[257,499,490],{"class":267},[257,501,314],{"class":267},[257,503,504],{"class":317},"desktop",[257,506,487],{"class":267},[257,508,490],{"class":267},[257,510,314],{"class":267},[257,512,513],{"class":317},"bot",[257,515,487],{"class":267},[257,517,490],{"class":267},[257,519,314],{"class":267},[257,521,522],{"class":317},"unknown",[257,524,487],{"class":267},[257,526,527],{"class":267}," }\n",[257,529,530],{"class":259,"line":305},[257,531,532],{"class":267},"}\n",[235,534,535],{},[336,536,537],{},"Example output:",[248,539,543],{"className":540,"code":541,"language":542,"meta":253,"style":253},"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","json",[239,544,545,550,565,587,639,686,716,722],{"__ignoreMap":253},[257,546,547],{"class":259,"line":260},[257,548,549],{"class":267},"{\n",[257,551,552,555,558,561,563],{"class":259,"line":271},[257,553,554],{"class":267},"  \"",[257,556,557],{"class":352},"userAgent",[257,559,560],{"class":267},"\"",[257,562,396],{"class":267},[257,564,268],{"class":267},[257,566,567,570,573,575,577,580,583,585],{"class":259,"line":281},[257,568,569],{"class":267},"    \"",[257,571,572],{"class":384},"raw",[257,574,560],{"class":267},[257,576,396],{"class":267},[257,578,579],{"class":267}," \"",[257,581,582],{"class":317},"Mozilla\u002F5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit\u002F537.36 Chrome\u002F120.0.0.0",[257,584,560],{"class":267},[257,586,278],{"class":267},[257,588,589,591,594,596,598,600,602,606,608,610,612,615,617,620,622,625,627,629,631,634,636],{"class":259,"line":289},[257,590,569],{"class":267},[257,592,593],{"class":384},"browser",[257,595,560],{"class":267},[257,597,396],{"class":267},[257,599,414],{"class":267},[257,601,579],{"class":267},[257,603,605],{"class":604},"sbssI","name",[257,607,560],{"class":267},[257,609,396],{"class":267},[257,611,579],{"class":267},[257,613,614],{"class":317},"Chrome",[257,616,560],{"class":267},[257,618,619],{"class":267},",",[257,621,579],{"class":267},[257,623,624],{"class":604},"version",[257,626,560],{"class":267},[257,628,396],{"class":267},[257,630,579],{"class":267},[257,632,633],{"class":317},"120.0.0.0",[257,635,560],{"class":267},[257,637,638],{"class":267}," },\n",[257,640,641,643,646,648,650,652,654,656,658,660,662,665,667,669,671,673,675,677,679,682,684],{"class":259,"line":297},[257,642,569],{"class":267},[257,644,645],{"class":384},"os",[257,647,560],{"class":267},[257,649,396],{"class":267},[257,651,414],{"class":267},[257,653,579],{"class":267},[257,655,605],{"class":604},[257,657,560],{"class":267},[257,659,396],{"class":267},[257,661,579],{"class":267},[257,663,664],{"class":317},"macOS",[257,666,560],{"class":267},[257,668,619],{"class":267},[257,670,579],{"class":267},[257,672,624],{"class":604},[257,674,560],{"class":267},[257,676,396],{"class":267},[257,678,579],{"class":267},[257,680,681],{"class":317},"10.15.7",[257,683,560],{"class":267},[257,685,638],{"class":267},[257,687,688,690,693,695,697,699,701,704,706,708,710,712,714],{"class":259,"line":305},[257,689,569],{"class":267},[257,691,692],{"class":384},"device",[257,694,560],{"class":267},[257,696,396],{"class":267},[257,698,414],{"class":267},[257,700,579],{"class":267},[257,702,703],{"class":604},"type",[257,705,560],{"class":267},[257,707,396],{"class":267},[257,709,579],{"class":267},[257,711,504],{"class":317},[257,713,560],{"class":267},[257,715,527],{"class":267},[257,717,719],{"class":259,"line":718},7,[257,720,721],{"class":267},"  }\n",[257,723,725],{"class":259,"line":724},8,[257,726,532],{"class":267},[235,728,729,732],{},[336,730,731],{},"Detected browsers:"," Edge, Chrome, Firefox, Safari (checked in order, Edge before Chrome to avoid false matches).",[235,734,735,738],{},[336,736,737],{},"Detected devices:"," Bot (crawlers, spiders), Tablet (iPad), Mobile (iPhone, Android phones), Desktop (fallback).",[322,740,742],{"id":741},"geo","Geo",[235,744,745],{},"Extract geographic data from platform-injected headers.",[235,747,748,339,750],{},[336,749,338],{},[239,751,752],{},"event.geo",[248,754,756],{"className":250,"code":755,"language":252,"meta":253,"style":253},"const enrich = createGeoEnricher()\n",[239,757,758],{"__ignoreMap":253},[257,759,760,762,764,766,769],{"class":259,"line":260},[257,761,353],{"class":352},[257,763,356],{"class":274},[257,765,359],{"class":267},[257,767,768],{"class":362}," createGeoEnricher",[257,770,366],{"class":274},[235,772,773],{},[336,774,371],{},[248,776,778],{"className":250,"code":777,"language":252,"meta":253,"style":253},"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",[239,779,780,789,801,813,825,837,850,862],{"__ignoreMap":253},[257,781,782,784,787],{"class":259,"line":260},[257,783,381],{"class":352},[257,785,786],{"class":384}," GeoInfo",[257,788,268],{"class":267},[257,790,791,794,796,798],{"class":259,"line":271},[257,792,793],{"class":392},"  country",[257,795,411],{"class":267},[257,797,399],{"class":384},[257,799,800],{"class":402},"      \u002F\u002F ISO country code (e.g., \"US\", \"FR\")\n",[257,802,803,806,808,810],{"class":259,"line":281},[257,804,805],{"class":392},"  region",[257,807,411],{"class":267},[257,809,399],{"class":384},[257,811,812],{"class":402},"       \u002F\u002F Region\u002Fstate name\n",[257,814,815,818,820,822],{"class":259,"line":289},[257,816,817],{"class":392},"  regionCode",[257,819,411],{"class":267},[257,821,399],{"class":384},[257,823,824],{"class":402},"   \u002F\u002F Region code\n",[257,826,827,830,832,834],{"class":259,"line":297},[257,828,829],{"class":392},"  city",[257,831,411],{"class":267},[257,833,399],{"class":384},[257,835,836],{"class":402},"         \u002F\u002F City name\n",[257,838,839,842,844,847],{"class":259,"line":305},[257,840,841],{"class":392},"  latitude",[257,843,411],{"class":267},[257,845,846],{"class":384}," number",[257,848,849],{"class":402},"     \u002F\u002F Decimal latitude\n",[257,851,852,855,857,859],{"class":259,"line":718},[257,853,854],{"class":392},"  longitude",[257,856,411],{"class":267},[257,858,846],{"class":384},[257,860,861],{"class":402},"    \u002F\u002F Decimal longitude\n",[257,863,864],{"class":259,"line":724},[257,865,532],{"class":267},[235,867,868],{},[336,869,870],{},"Supported platforms:",[872,873,874,890],"table",{},[875,876,877],"thead",{},[878,879,880,884,887],"tr",{},[881,882,883],"th",{},"Platform",[881,885,886],{},"Headers",[881,888,889],{},"Coverage",[891,892,893,920],"tbody",{},[878,894,895,899,917],{},[896,897,898],"td",{},"Vercel",[896,900,901,904,905,904,908,904,911,904,914],{},[239,902,903],{},"x-vercel-ip-country",", ",[239,906,907],{},"x-vercel-ip-country-region",[239,909,910],{},"x-vercel-ip-city",[239,912,913],{},"x-vercel-ip-latitude",[239,915,916],{},"x-vercel-ip-longitude",[896,918,919],{},"Full",[878,921,922,925,930],{},[896,923,924],{},"Cloudflare",[896,926,927],{},[239,928,929],{},"cf-ipcountry",[896,931,932],{},"Country only",[934,935,937,940,941,943,944,904,947,904,950,953,954,957,958,962,963,965,966,969],"callout",{"color":936,"icon":13},"info",[336,938,939],{},"Cloudflare note:"," Only ",[239,942,929],{}," is a standard Cloudflare HTTP header. Other geo fields (",[239,945,946],{},"city",[239,948,949],{},"region",[239,951,952],{},"latitude",", etc.) are properties of ",[239,955,956],{},"request.cf",", which is not exposed as headers. For full Cloudflare geo data, write a ",[959,960,961],"a",{"href":212},"custom enricher"," that reads ",[239,964,956],{},", or use a Workers middleware to copy ",[239,967,968],{},"cf"," properties into custom headers.",[322,971,973],{"id":972},"request-size","Request Size",[235,975,976,977,980],{},"Capture request and response payload sizes from ",[239,978,979],{},"Content-Length"," headers.",[235,982,983,339,985],{},[336,984,338],{},[239,986,987],{},"event.requestSize",[248,989,991],{"className":250,"code":990,"language":252,"meta":253,"style":253},"const enrich = createRequestSizeEnricher()\n",[239,992,993],{"__ignoreMap":253},[257,994,995,997,999,1001,1004],{"class":259,"line":260},[257,996,353],{"class":352},[257,998,356],{"class":274},[257,1000,359],{"class":267},[257,1002,1003],{"class":362}," createRequestSizeEnricher",[257,1005,366],{"class":274},[235,1007,1008],{},[336,1009,371],{},[248,1011,1013],{"className":250,"code":1012,"language":252,"meta":253,"style":253},"interface RequestSizeInfo {\n  requestBytes?: number    \u002F\u002F Request Content-Length\n  responseBytes?: number   \u002F\u002F Response Content-Length\n}\n",[239,1014,1015,1024,1036,1048],{"__ignoreMap":253},[257,1016,1017,1019,1022],{"class":259,"line":260},[257,1018,381],{"class":352},[257,1020,1021],{"class":384}," RequestSizeInfo",[257,1023,268],{"class":267},[257,1025,1026,1029,1031,1033],{"class":259,"line":271},[257,1027,1028],{"class":392},"  requestBytes",[257,1030,411],{"class":267},[257,1032,846],{"class":384},[257,1034,1035],{"class":402},"    \u002F\u002F Request Content-Length\n",[257,1037,1038,1041,1043,1045],{"class":259,"line":281},[257,1039,1040],{"class":392},"  responseBytes",[257,1042,411],{"class":267},[257,1044,846],{"class":384},[257,1046,1047],{"class":402},"   \u002F\u002F Response Content-Length\n",[257,1049,1050],{"class":259,"line":289},[257,1051,532],{"class":267},[235,1053,1054],{},[336,1055,537],{},[248,1057,1059],{"className":540,"code":1058,"language":542,"meta":253,"style":253},"{\n  \"requestSize\": {\n    \"requestBytes\": 1234,\n    \"responseBytes\": 5678\n  }\n}\n",[239,1060,1061,1065,1078,1094,1108,1112],{"__ignoreMap":253},[257,1062,1063],{"class":259,"line":260},[257,1064,549],{"class":267},[257,1066,1067,1069,1072,1074,1076],{"class":259,"line":271},[257,1068,554],{"class":267},[257,1070,1071],{"class":352},"requestSize",[257,1073,560],{"class":267},[257,1075,396],{"class":267},[257,1077,268],{"class":267},[257,1079,1080,1082,1085,1087,1089,1092],{"class":259,"line":281},[257,1081,569],{"class":267},[257,1083,1084],{"class":384},"requestBytes",[257,1086,560],{"class":267},[257,1088,396],{"class":267},[257,1090,1091],{"class":604}," 1234",[257,1093,278],{"class":267},[257,1095,1096,1098,1101,1103,1105],{"class":259,"line":289},[257,1097,569],{"class":267},[257,1099,1100],{"class":384},"responseBytes",[257,1102,560],{"class":267},[257,1104,396],{"class":267},[257,1106,1107],{"class":604}," 5678\n",[257,1109,1110],{"class":259,"line":297},[257,1111,721],{"class":267},[257,1113,1114],{"class":259,"line":305},[257,1115,532],{"class":267},[934,1117,1118,1119,1121,1122,1125],{"color":936,"icon":13},"This enricher reads the ",[239,1120,979],{}," header from both the request and response. If the header is missing (e.g., for chunked transfer encoding), the corresponding field will be ",[239,1123,1124],{},"undefined",".",[322,1127,1129],{"id":1128},"trace-context","Trace Context",[235,1131,1132,1133,1136,1137,980],{},"Extract W3C trace context from the ",[239,1134,1135],{},"traceparent"," and ",[239,1138,1139],{},"tracestate",[235,1141,1142,339,1144,904,1147,904,1150],{},[336,1143,338],{},[239,1145,1146],{},"event.traceContext",[239,1148,1149],{},"event.traceId",[239,1151,1152],{},"event.spanId",[248,1154,1156],{"className":250,"code":1155,"language":252,"meta":253,"style":253},"const enrich = createTraceContextEnricher()\n",[239,1157,1158],{"__ignoreMap":253},[257,1159,1160,1162,1164,1166,1169],{"class":259,"line":260},[257,1161,353],{"class":352},[257,1163,356],{"class":274},[257,1165,359],{"class":267},[257,1167,1168],{"class":362}," createTraceContextEnricher",[257,1170,366],{"class":274},[235,1172,1173],{},[336,1174,371],{},[248,1176,1178],{"className":250,"code":1177,"language":252,"meta":253,"style":253},"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",[239,1179,1180,1189,1201,1213,1225,1237],{"__ignoreMap":253},[257,1181,1182,1184,1187],{"class":259,"line":260},[257,1183,381],{"class":352},[257,1185,1186],{"class":384}," TraceContextInfo",[257,1188,268],{"class":267},[257,1190,1191,1194,1196,1198],{"class":259,"line":271},[257,1192,1193],{"class":392},"  traceparent",[257,1195,411],{"class":267},[257,1197,399],{"class":384},[257,1199,1200],{"class":402},"   \u002F\u002F Full traceparent header value\n",[257,1202,1203,1206,1208,1210],{"class":259,"line":281},[257,1204,1205],{"class":392},"  tracestate",[257,1207,411],{"class":267},[257,1209,399],{"class":384},[257,1211,1212],{"class":402},"    \u002F\u002F Full tracestate header value\n",[257,1214,1215,1218,1220,1222],{"class":259,"line":289},[257,1216,1217],{"class":392},"  traceId",[257,1219,411],{"class":267},[257,1221,399],{"class":384},[257,1223,1224],{"class":402},"       \u002F\u002F 32-char hex trace ID (parsed from traceparent)\n",[257,1226,1227,1230,1232,1234],{"class":259,"line":297},[257,1228,1229],{"class":392},"  spanId",[257,1231,411],{"class":267},[257,1233,399],{"class":384},[257,1235,1236],{"class":402},"        \u002F\u002F 16-char hex span ID (parsed from traceparent)\n",[257,1238,1239],{"class":259,"line":305},[257,1240,532],{"class":267},[235,1242,1243],{},[336,1244,537],{},[248,1246,1248],{"className":540,"code":1247,"language":542,"meta":253,"style":253},"{\n  \"traceContext\": {\n    \"traceparent\": \"00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01\",\n    \"traceId\": \"4bf92f3577b34da6a3ce929d0e0e4736\",\n    \"spanId\": \"00f067aa0ba902b7\"\n  },\n  \"traceId\": \"4bf92f3577b34da6a3ce929d0e0e4736\",\n  \"spanId\": \"00f067aa0ba902b7\"\n}\n",[239,1249,1250,1254,1267,1286,1306,1325,1330,1348,1364],{"__ignoreMap":253},[257,1251,1252],{"class":259,"line":260},[257,1253,549],{"class":267},[257,1255,1256,1258,1261,1263,1265],{"class":259,"line":271},[257,1257,554],{"class":267},[257,1259,1260],{"class":352},"traceContext",[257,1262,560],{"class":267},[257,1264,396],{"class":267},[257,1266,268],{"class":267},[257,1268,1269,1271,1273,1275,1277,1279,1282,1284],{"class":259,"line":281},[257,1270,569],{"class":267},[257,1272,1135],{"class":384},[257,1274,560],{"class":267},[257,1276,396],{"class":267},[257,1278,579],{"class":267},[257,1280,1281],{"class":317},"00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",[257,1283,560],{"class":267},[257,1285,278],{"class":267},[257,1287,1288,1290,1293,1295,1297,1299,1302,1304],{"class":259,"line":289},[257,1289,569],{"class":267},[257,1291,1292],{"class":384},"traceId",[257,1294,560],{"class":267},[257,1296,396],{"class":267},[257,1298,579],{"class":267},[257,1300,1301],{"class":317},"4bf92f3577b34da6a3ce929d0e0e4736",[257,1303,560],{"class":267},[257,1305,278],{"class":267},[257,1307,1308,1310,1313,1315,1317,1319,1322],{"class":259,"line":297},[257,1309,569],{"class":267},[257,1311,1312],{"class":384},"spanId",[257,1314,560],{"class":267},[257,1316,396],{"class":267},[257,1318,579],{"class":267},[257,1320,1321],{"class":317},"00f067aa0ba902b7",[257,1323,1324],{"class":267},"\"\n",[257,1326,1327],{"class":259,"line":305},[257,1328,1329],{"class":267},"  },\n",[257,1331,1332,1334,1336,1338,1340,1342,1344,1346],{"class":259,"line":718},[257,1333,554],{"class":267},[257,1335,1292],{"class":352},[257,1337,560],{"class":267},[257,1339,396],{"class":267},[257,1341,579],{"class":267},[257,1343,1301],{"class":317},[257,1345,560],{"class":267},[257,1347,278],{"class":267},[257,1349,1350,1352,1354,1356,1358,1360,1362],{"class":259,"line":724},[257,1351,554],{"class":267},[257,1353,1312],{"class":352},[257,1355,560],{"class":267},[257,1357,396],{"class":267},[257,1359,579],{"class":267},[257,1361,1321],{"class":317},[257,1363,1324],{"class":267},[257,1365,1367],{"class":259,"line":1366},9,[257,1368,532],{"class":267},[235,1370,1371,1136,1373,1375],{},[239,1372,1292],{},[239,1374,1312],{}," are also set at the top level of the event for easy querying and correlation.",[934,1377,1378,1379,1385,1386,1125],{"color":936,"icon":13},"The traceparent format follows the ",[959,1380,1384],{"href":1381,"rel":1382},"https:\u002F\u002Fwww.w3.org\u002FTR\u002Ftrace-context\u002F",[1383],"nofollow","W3C Trace Context"," specification: ",[239,1387,1388],{},"{version}-{traceId}-{spanId}-{flags}",[322,1390,1392],{"id":1391},"full-setup-example","Full Setup Example",[235,1394,1395],{},"Use all built-in enrichers together:",[248,1397,1400],{"className":250,"code":1398,"filename":1399,"language":252,"meta":253,"style":253},"import {\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","server\u002Fplugins\u002Fevlog-enrich.ts",[239,1401,1402,1408,1414,1420,1426,1432,1444,1450,1478,1492,1503,1513,1523,1533,1539,1544,1583,1614,1622],{"__ignoreMap":253},[257,1403,1404,1406],{"class":259,"line":260},[257,1405,264],{"class":263},[257,1407,268],{"class":267},[257,1409,1410,1412],{"class":259,"line":271},[257,1411,275],{"class":274},[257,1413,278],{"class":267},[257,1415,1416,1418],{"class":259,"line":281},[257,1417,284],{"class":274},[257,1419,278],{"class":267},[257,1421,1422,1424],{"class":259,"line":289},[257,1423,292],{"class":274},[257,1425,278],{"class":267},[257,1427,1428,1430],{"class":259,"line":297},[257,1429,300],{"class":274},[257,1431,278],{"class":267},[257,1433,1434,1436,1438,1440,1442],{"class":259,"line":305},[257,1435,308],{"class":267},[257,1437,311],{"class":263},[257,1439,314],{"class":267},[257,1441,241],{"class":317},[257,1443,320],{"class":267},[257,1445,1446],{"class":259,"line":718},[257,1447,1449],{"emptyLinePlaceholder":1448},true,"\n",[257,1451,1452,1455,1458,1461,1464,1466,1470,1473,1476],{"class":259,"line":724},[257,1453,1454],{"class":263},"export",[257,1456,1457],{"class":263}," default",[257,1459,1460],{"class":362}," defineNitroPlugin",[257,1462,1463],{"class":274},"(",[257,1465,1463],{"class":267},[257,1467,1469],{"class":1468},"sHdIc","nitroApp",[257,1471,1472],{"class":267},")",[257,1474,1475],{"class":352}," =>",[257,1477,268],{"class":267},[257,1479,1480,1483,1486,1489],{"class":259,"line":1366},[257,1481,1482],{"class":352},"  const",[257,1484,1485],{"class":274}," enrichers",[257,1487,1488],{"class":267}," =",[257,1490,1491],{"class":392}," [\n",[257,1493,1495,1498,1501],{"class":259,"line":1494},10,[257,1496,1497],{"class":362},"    createUserAgentEnricher",[257,1499,1500],{"class":392},"()",[257,1502,278],{"class":267},[257,1504,1506,1509,1511],{"class":259,"line":1505},11,[257,1507,1508],{"class":362},"    createGeoEnricher",[257,1510,1500],{"class":392},[257,1512,278],{"class":267},[257,1514,1516,1519,1521],{"class":259,"line":1515},12,[257,1517,1518],{"class":362},"    createRequestSizeEnricher",[257,1520,1500],{"class":392},[257,1522,278],{"class":267},[257,1524,1526,1529,1531],{"class":259,"line":1525},13,[257,1527,1528],{"class":362},"    createTraceContextEnricher",[257,1530,1500],{"class":392},[257,1532,278],{"class":267},[257,1534,1536],{"class":259,"line":1535},14,[257,1537,1538],{"class":392},"  ]\n",[257,1540,1542],{"class":259,"line":1541},15,[257,1543,1449],{"emptyLinePlaceholder":1448},[257,1545,1547,1550,1552,1555,1557,1560,1562,1564,1567,1569,1571,1574,1577,1579,1581],{"class":259,"line":1546},16,[257,1548,1549],{"class":274},"  nitroApp",[257,1551,1125],{"class":267},[257,1553,1554],{"class":274},"hooks",[257,1556,1125],{"class":267},[257,1558,1559],{"class":362},"hook",[257,1561,1463],{"class":392},[257,1563,487],{"class":267},[257,1565,1566],{"class":317},"evlog:enrich",[257,1568,487],{"class":267},[257,1570,619],{"class":267},[257,1572,1573],{"class":267}," (",[257,1575,1576],{"class":1468},"ctx",[257,1578,1472],{"class":267},[257,1580,1475],{"class":352},[257,1582,268],{"class":267},[257,1584,1586,1589,1591,1593,1596,1599,1601,1604,1607,1609,1611],{"class":259,"line":1585},17,[257,1587,1588],{"class":263},"    for",[257,1590,1573],{"class":392},[257,1592,353],{"class":352},[257,1594,1595],{"class":274}," enricher",[257,1597,1598],{"class":267}," of",[257,1600,1485],{"class":274},[257,1602,1603],{"class":392},") ",[257,1605,1606],{"class":362},"enricher",[257,1608,1463],{"class":392},[257,1610,1576],{"class":274},[257,1612,1613],{"class":392},")\n",[257,1615,1617,1620],{"class":259,"line":1616},18,[257,1618,1619],{"class":267},"  }",[257,1621,1613],{"class":392},[257,1623,1625,1627],{"class":259,"line":1624},19,[257,1626,308],{"class":267},[257,1628,1613],{"class":274},[322,1630,1632],{"id":1631},"next-steps","Next Steps",[1634,1635,1636,1643],"ul",{},[1637,1638,1639,1642],"li",{},[959,1640,1641],{"href":212},"Custom Enrichers"," - Write your own enricher",[1637,1644,1645,1647],{},[959,1646,150],{"href":155}," - Send enriched events to external services",[1649,1650,1651],"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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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}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}",{"title":253,"searchDepth":271,"depth":271,"links":1653},[1654,1655,1656,1657,1658,1659],{"id":324,"depth":271,"text":325},{"id":741,"depth":271,"text":742},{"id":972,"depth":271,"text":973},{"id":1128,"depth":271,"text":1129},{"id":1391,"depth":271,"text":1392},{"id":1631,"depth":271,"text":1632},"Reference for all built-in evlog enrichers. Parse user agents, extract geo data, measure request sizes, and capture trace context automatically.","md",[1663,1666],{"label":1641,"icon":187,"to":212,"color":1664,"variant":1665},"neutral","subtle",{"label":1667,"icon":28,"to":204,"color":1664,"variant":1665},"Enrichers Overview",{},{"title":207,"icon":109},{"title":230,"description":1660},"DNYO7xfJOJC8JznTlToOOO9hx8Ohr8bkCT_-DDzlBt8",[1673,1675],{"title":36,"path":204,"stem":205,"description":1674,"icon":28,"children":-1},"Enrich your wide events with derived context like user agent, geo data, request size, and trace context. Built-in enrichers and custom enricher support.",{"title":211,"path":212,"stem":213,"description":1676,"icon":187,"children":-1},"Write custom enrichers to add derived context to your wide events. Add deployment metadata, tenant IDs, feature flags, or any computed data.",1773428031289]