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