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