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