[{"data":1,"prerenderedAt":2971},["ShallowReactive",2],{"navigation_docs":3,"-frameworks-elysia":253,"-frameworks-elysia-surround":2966},[4,30,110,169,223,239],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-zap",{"title":25,"path":26,"stem":27,"icon":28},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","1.getting-started\u002F4.agent-skills","i-lucide-sparkles",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Frameworks","\u002Fframeworks","2.frameworks",[35,40,45,50,55,60,65,70,75,80,85,90,95,100,105],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Fframeworks\u002Foverview","2.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":41,"path":42,"stem":43,"icon":44},"Nuxt","\u002Fframeworks\u002Fnuxt","2.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":46,"path":47,"stem":48,"icon":49},"Next.js","\u002Fframeworks\u002Fnextjs","2.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":51,"path":52,"stem":53,"icon":54},"SvelteKit","\u002Fframeworks\u002Fsveltekit","2.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":56,"path":57,"stem":58,"icon":59},"Nitro","\u002Fframeworks\u002Fnitro","2.frameworks\u002F04.nitro","i-custom-nitro",{"title":61,"path":62,"stem":63,"icon":64},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","2.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":66,"path":67,"stem":68,"icon":69},"NestJS","\u002Fframeworks\u002Fnestjs","2.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":71,"path":72,"stem":73,"icon":74},"Express","\u002Fframeworks\u002Fexpress","2.frameworks\u002F07.express","i-simple-icons-express",{"title":76,"path":77,"stem":78,"icon":79},"Hono","\u002Fframeworks\u002Fhono","2.frameworks\u002F08.hono","i-simple-icons-hono",{"title":81,"path":82,"stem":83,"icon":84},"Fastify","\u002Fframeworks\u002Ffastify","2.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":86,"path":87,"stem":88,"icon":89},"Elysia","\u002Fframeworks\u002Felysia","2.frameworks\u002F10.elysia","i-custom-elysia",{"title":91,"path":92,"stem":93,"icon":94},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","2.frameworks\u002F11.cloudflare-workers","i-simple-icons-cloudflare",{"title":96,"path":97,"stem":98,"icon":99},"Standalone","\u002Fframeworks\u002Fstandalone","2.frameworks\u002F12.standalone","i-simple-icons-typescript",{"title":101,"path":102,"stem":103,"icon":104},"Astro","\u002Fframeworks\u002Fastro","2.frameworks\u002F13.astro","i-simple-icons-astro",{"title":106,"path":107,"stem":108,"icon":109},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","2.frameworks\u002F14.custom-integration","i-lucide-puzzle",{"title":111,"path":112,"stem":113,"children":114,"page":29},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[115,120,125,130,135,140,145,149,154,159,164],{"title":116,"path":117,"stem":118,"icon":119},"Request Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":121,"path":122,"stem":123,"icon":124},"Wide Events","\u002Fcore-concepts\u002Fwide-events","3.core-concepts\u002F1.wide-events","i-lucide-layers",{"title":126,"path":127,"stem":128,"icon":129},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F10.vite-plugin","i-custom-vite",{"title":131,"path":132,"stem":133,"icon":134},"AI SDK Integration","\u002Fcore-concepts\u002Fai-sdk","3.core-concepts\u002F11.ai-sdk","i-lucide-scan-eye",{"title":136,"path":137,"stem":138,"icon":139},"Structured Errors","\u002Fcore-concepts\u002Fstructured-errors","3.core-concepts\u002F2.structured-errors","i-lucide-shield-alert",{"title":141,"path":142,"stem":143,"icon":144},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F3.best-practices","i-lucide-shield-check",{"title":146,"path":147,"stem":148,"icon":99},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F4.typed-fields",{"title":150,"path":151,"stem":152,"icon":153},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F5.sampling","i-lucide-filter",{"title":155,"path":156,"stem":157,"icon":158},"Client Logging","\u002Fcore-concepts\u002Fclient-logging","3.core-concepts\u002F6.client-logging","i-lucide-monitor",{"title":160,"path":161,"stem":162,"icon":163},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F7.configuration","i-lucide-settings",{"title":165,"path":166,"stem":167,"icon":168},"Performance","\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F8.performance","i-lucide-gauge",{"title":170,"path":171,"stem":172,"children":173,"page":29},"Adapters","\u002Fadapters","4.adapters",[174,178,183,188,193,198,203,208,213,218],{"title":36,"path":175,"stem":176,"icon":177},"\u002Fadapters\u002Foverview","4.adapters\u002F1.overview","i-custom-plug",{"title":179,"path":180,"stem":181,"icon":182},"Browser","\u002Fadapters\u002Fbrowser","4.adapters\u002F10.browser","i-lucide-globe",{"title":184,"path":185,"stem":186,"icon":187},"Axiom","\u002Fadapters\u002Faxiom","4.adapters\u002F2.axiom","i-custom-axiom",{"title":189,"path":190,"stem":191,"icon":192},"OTLP","\u002Fadapters\u002Fotlp","4.adapters\u002F3.otlp","i-simple-icons-opentelemetry",{"title":194,"path":195,"stem":196,"icon":197},"PostHog","\u002Fadapters\u002Fposthog","4.adapters\u002F4.posthog","i-simple-icons-posthog",{"title":199,"path":200,"stem":201,"icon":202},"Sentry","\u002Fadapters\u002Fsentry","4.adapters\u002F5.sentry","i-simple-icons-sentry",{"title":204,"path":205,"stem":206,"icon":207},"Better Stack","\u002Fadapters\u002Fbetter-stack","4.adapters\u002F6.better-stack","i-simple-icons-betterstack",{"title":209,"path":210,"stem":211,"icon":212},"File System","\u002Fadapters\u002Ffs","4.adapters\u002F7.fs","i-lucide-hard-drive",{"title":214,"path":215,"stem":216,"icon":217},"Custom Adapters","\u002Fadapters\u002Fcustom","4.adapters\u002F8.custom","i-lucide-code",{"title":219,"path":220,"stem":221,"icon":222},"Pipeline","\u002Fadapters\u002Fpipeline","4.adapters\u002F9.pipeline","i-lucide-workflow",{"title":224,"path":225,"stem":226,"children":227,"page":29},"Enrichers","\u002Fenrichers","5.enrichers",[228,231,235],{"title":36,"path":229,"stem":230,"icon":28},"\u002Fenrichers\u002Foverview","5.enrichers\u002F1.overview",{"title":232,"path":233,"stem":234,"icon":109},"Built-in","\u002Fenrichers\u002Fbuilt-in","5.enrichers\u002F2.built-in",{"title":236,"path":237,"stem":238,"icon":217},"Custom","\u002Fenrichers\u002Fcustom","5.enrichers\u002F3.custom",{"title":240,"path":241,"stem":242,"children":243,"page":29},"NuxtHub","\u002Fnuxthub","6.nuxthub",[244,248],{"title":36,"path":245,"stem":246,"icon":247},"\u002Fnuxthub\u002Foverview","6.nuxthub\u002F1.overview","i-lucide-database",{"title":249,"path":250,"stem":251,"icon":252},"Retention","\u002Fnuxthub\u002Fretention","6.nuxthub\u002F2.retention","i-lucide-clock",{"id":254,"title":86,"body":255,"description":2956,"extension":2957,"links":2958,"meta":2962,"navigation":2963,"path":87,"seo":2964,"stem":88,"__hash__":2965},"docs\u002F2.frameworks\u002F10.elysia.md",{"type":256,"value":257,"toc":2936},"minimark",[258,275,362,366,371,394,398,674,699,707,710,713,998,1001,1065,1068,1074,1257,1350,1366,1370,1391,1763,1766,1832,1835,1845,1849,1852,2020,2024,2031,2222,2233,2237,2243,2347,2351,2362,2505,2509,2515,2519,2673,2677,2684,2861,2869,2873,2914,2923,2932],[259,260,261,262,266,267,270,271,274],"p",{},"The ",[263,264,265],"code",{},"evlog\u002Felysia"," plugin auto-creates a request-scoped logger accessible via ",[263,268,269],{},"log"," in route context and ",[263,272,273],{},"useLogger()",", emitting a wide event when the response completes.",[276,277,278],"code-collapse",{},[279,280,286],"pre",{"className":281,"code":282,"filename":283,"language":284,"meta":285,"style":285},"language-txt shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Set up evlog in my Elysia app.\n\n- Install evlog: pnpm add evlog\n- Call initLogger({ env: { service: 'my-api' } }) at startup\n- Alternatively, use evlog\u002Fvite plugin in vite.config.ts for auto-init (replaces initLogger)\n- Import evlog from 'evlog\u002Felysia' and add .use(evlog()) to your Elysia app\n- Access the logger via the log property in route context destructuring\n- Use useLogger() from 'evlog\u002Felysia' to access the logger from anywhere\n- Optionally pass drain, enrich, include, and keep options to evlog()\n\nDocs: https:\u002F\u002Fwww.evlog.dev\u002Fframeworks\u002Felysia\nAdapters: https:\u002F\u002Fwww.evlog.dev\u002Fadapters\n","Prompt","txt","",[263,287,288,296,303,309,315,321,327,333,339,345,350,356],{"__ignoreMap":285},[289,290,293],"span",{"class":291,"line":292},"line",1,[289,294,295],{},"Set up evlog in my Elysia app.\n",[289,297,299],{"class":291,"line":298},2,[289,300,302],{"emptyLinePlaceholder":301},true,"\n",[289,304,306],{"class":291,"line":305},3,[289,307,308],{},"- Install evlog: pnpm add evlog\n",[289,310,312],{"class":291,"line":311},4,[289,313,314],{},"- Call initLogger({ env: { service: 'my-api' } }) at startup\n",[289,316,318],{"class":291,"line":317},5,[289,319,320],{},"- Alternatively, use evlog\u002Fvite plugin in vite.config.ts for auto-init (replaces initLogger)\n",[289,322,324],{"class":291,"line":323},6,[289,325,326],{},"- Import evlog from 'evlog\u002Felysia' and add .use(evlog()) to your Elysia app\n",[289,328,330],{"class":291,"line":329},7,[289,331,332],{},"- Access the logger via the log property in route context destructuring\n",[289,334,336],{"class":291,"line":335},8,[289,337,338],{},"- Use useLogger() from 'evlog\u002Felysia' to access the logger from anywhere\n",[289,340,342],{"class":291,"line":341},9,[289,343,344],{},"- Optionally pass drain, enrich, include, and keep options to evlog()\n",[289,346,348],{"class":291,"line":347},10,[289,349,302],{"emptyLinePlaceholder":301},[289,351,353],{"class":291,"line":352},11,[289,354,355],{},"Docs: https:\u002F\u002Fwww.evlog.dev\u002Fframeworks\u002Felysia\n",[289,357,359],{"class":291,"line":358},12,[289,360,361],{},"Adapters: https:\u002F\u002Fwww.evlog.dev\u002Fadapters\n",[363,364,20],"h2",{"id":365},"quick-start",[367,368,370],"h3",{"id":369},"_1-install","1. Install",[279,372,376],{"className":373,"code":374,"language":375,"meta":285,"style":285},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","bun add evlog elysia\n","bash",[263,377,378],{"__ignoreMap":285},[289,379,380,384,388,391],{"class":291,"line":292},[289,381,383],{"class":382},"sBMFI","bun",[289,385,387],{"class":386},"sfazB"," add",[289,389,390],{"class":386}," evlog",[289,392,393],{"class":386}," elysia\n",[367,395,397],{"id":396},"_2-initialize-and-register-the-plugin","2. Initialize and register the plugin",[279,399,404],{"className":400,"code":401,"filename":402,"language":403,"meta":285,"style":285},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { Elysia } from 'elysia'\nimport { initLogger } from 'evlog'\nimport { evlog } from 'evlog\u002Felysia'\n\ninitLogger({\n  env: { service: 'my-api' },\n})\n\nconst app = new Elysia()\n  .use(evlog())\n  .get('\u002Fhealth', ({ log }) => {\n    log.set({ route: 'health' })\n    return { ok: true }\n  })\n  .listen(3000)\n","src\u002Findex.ts","typescript",[263,405,406,435,455,473,477,489,516,524,528,548,563,598,630,650,658],{"__ignoreMap":285},[289,407,408,412,416,420,423,426,429,432],{"class":291,"line":292},[289,409,411],{"class":410},"s7zQu","import",[289,413,415],{"class":414},"sMK4o"," {",[289,417,419],{"class":418},"sTEyZ"," Elysia",[289,421,422],{"class":414}," }",[289,424,425],{"class":410}," from",[289,427,428],{"class":414}," '",[289,430,431],{"class":386},"elysia",[289,433,434],{"class":414},"'\n",[289,436,437,439,441,444,446,448,450,453],{"class":291,"line":298},[289,438,411],{"class":410},[289,440,415],{"class":414},[289,442,443],{"class":418}," initLogger",[289,445,422],{"class":414},[289,447,425],{"class":410},[289,449,428],{"class":414},[289,451,452],{"class":386},"evlog",[289,454,434],{"class":414},[289,456,457,459,461,463,465,467,469,471],{"class":291,"line":305},[289,458,411],{"class":410},[289,460,415],{"class":414},[289,462,390],{"class":418},[289,464,422],{"class":414},[289,466,425],{"class":410},[289,468,428],{"class":414},[289,470,265],{"class":386},[289,472,434],{"class":414},[289,474,475],{"class":291,"line":311},[289,476,302],{"emptyLinePlaceholder":301},[289,478,479,483,486],{"class":291,"line":317},[289,480,482],{"class":481},"s2Zo4","initLogger",[289,484,485],{"class":418},"(",[289,487,488],{"class":414},"{\n",[289,490,491,495,498,500,503,505,507,510,513],{"class":291,"line":323},[289,492,494],{"class":493},"swJcz","  env",[289,496,497],{"class":414},":",[289,499,415],{"class":414},[289,501,502],{"class":493}," service",[289,504,497],{"class":414},[289,506,428],{"class":414},[289,508,509],{"class":386},"my-api",[289,511,512],{"class":414},"'",[289,514,515],{"class":414}," },\n",[289,517,518,521],{"class":291,"line":329},[289,519,520],{"class":414},"}",[289,522,523],{"class":418},")\n",[289,525,526],{"class":291,"line":335},[289,527,302],{"emptyLinePlaceholder":301},[289,529,530,534,537,540,543,545],{"class":291,"line":341},[289,531,533],{"class":532},"spNyl","const",[289,535,536],{"class":418}," app ",[289,538,539],{"class":414},"=",[289,541,542],{"class":414}," new",[289,544,419],{"class":481},[289,546,547],{"class":418},"()\n",[289,549,550,553,556,558,560],{"class":291,"line":347},[289,551,552],{"class":414},"  .",[289,554,555],{"class":481},"use",[289,557,485],{"class":418},[289,559,452],{"class":481},[289,561,562],{"class":418},"())\n",[289,564,565,567,570,572,574,577,579,582,585,589,592,595],{"class":291,"line":352},[289,566,552],{"class":414},[289,568,569],{"class":481},"get",[289,571,485],{"class":418},[289,573,512],{"class":414},[289,575,576],{"class":386},"\u002Fhealth",[289,578,512],{"class":414},[289,580,581],{"class":414},",",[289,583,584],{"class":414}," ({",[289,586,588],{"class":587},"sHdIc"," log",[289,590,591],{"class":414}," })",[289,593,594],{"class":532}," =>",[289,596,597],{"class":414}," {\n",[289,599,600,603,606,609,611,614,617,619,621,624,626,628],{"class":291,"line":358},[289,601,602],{"class":418},"    log",[289,604,605],{"class":414},".",[289,607,608],{"class":481},"set",[289,610,485],{"class":493},[289,612,613],{"class":414},"{",[289,615,616],{"class":493}," route",[289,618,497],{"class":414},[289,620,428],{"class":414},[289,622,623],{"class":386},"health",[289,625,512],{"class":414},[289,627,422],{"class":414},[289,629,523],{"class":493},[289,631,633,636,638,641,643,647],{"class":291,"line":632},13,[289,634,635],{"class":410},"    return",[289,637,415],{"class":414},[289,639,640],{"class":493}," ok",[289,642,497],{"class":414},[289,644,646],{"class":645},"sfNiH"," true",[289,648,649],{"class":414}," }\n",[289,651,653,656],{"class":291,"line":652},14,[289,654,655],{"class":414},"  }",[289,657,523],{"class":418},[289,659,661,663,666,668,672],{"class":291,"line":660},15,[289,662,552],{"class":414},[289,664,665],{"class":481},"listen",[289,667,485],{"class":418},[289,669,671],{"class":670},"sbssI","3000",[289,673,523],{"class":418},[675,676,678,682,683,690,691,694,695,698],"callout",{"color":677,"icon":129},"info",[679,680,681],"strong",{},"Using Vite?"," The ",[684,685,686,689],"a",{"href":127},[263,687,688],{},"evlog\u002Fvite"," plugin"," replaces the ",[263,692,693],{},"initLogger()"," call with compile-time auto-initialization, strips ",[263,696,697],{},"log.debug()"," from production builds, and injects source locations.",[259,700,261,701,703,704,605],{},[263,702,269],{}," property is automatically available in all route handlers via Elysia's ",[263,705,706],{},"derive",[363,708,121],{"id":709},"wide-events",[259,711,712],{},"Build up context progressively through your handler. One request = one wide event:",[279,714,716],{"className":400,"code":715,"filename":402,"language":403,"meta":285,"style":285},"app.get('\u002Fusers\u002F:id', async ({ log, params }) => {\n  const userId = params.id\n\n  log.set({ user: { id: userId } })\n\n  const user = await db.findUser(userId)\n  log.set({ user: { name: user.name, plan: user.plan } })\n\n  const orders = await db.findOrders(userId)\n  log.set({ orders: { count: orders.length, totalRevenue: sum(orders) } })\n\n  return { user, orders }\n})\n",[263,717,718,756,774,778,811,815,841,891,895,919,973,977,992],{"__ignoreMap":285},[289,719,720,723,725,727,729,731,734,736,738,741,743,745,747,750,752,754],{"class":291,"line":292},[289,721,722],{"class":418},"app",[289,724,605],{"class":414},[289,726,569],{"class":481},[289,728,485],{"class":418},[289,730,512],{"class":414},[289,732,733],{"class":386},"\u002Fusers\u002F:id",[289,735,512],{"class":414},[289,737,581],{"class":414},[289,739,740],{"class":532}," async",[289,742,584],{"class":414},[289,744,588],{"class":587},[289,746,581],{"class":414},[289,748,749],{"class":587}," params",[289,751,591],{"class":414},[289,753,594],{"class":532},[289,755,597],{"class":414},[289,757,758,761,764,767,769,771],{"class":291,"line":298},[289,759,760],{"class":532},"  const",[289,762,763],{"class":418}," userId",[289,765,766],{"class":414}," =",[289,768,749],{"class":418},[289,770,605],{"class":414},[289,772,773],{"class":418},"id\n",[289,775,776],{"class":291,"line":305},[289,777,302],{"emptyLinePlaceholder":301},[289,779,780,783,785,787,789,791,794,796,798,801,803,805,807,809],{"class":291,"line":311},[289,781,782],{"class":418},"  log",[289,784,605],{"class":414},[289,786,608],{"class":481},[289,788,485],{"class":493},[289,790,613],{"class":414},[289,792,793],{"class":493}," user",[289,795,497],{"class":414},[289,797,415],{"class":414},[289,799,800],{"class":493}," id",[289,802,497],{"class":414},[289,804,763],{"class":418},[289,806,422],{"class":414},[289,808,422],{"class":414},[289,810,523],{"class":493},[289,812,813],{"class":291,"line":317},[289,814,302],{"emptyLinePlaceholder":301},[289,816,817,819,821,823,826,829,831,834,836,839],{"class":291,"line":323},[289,818,760],{"class":532},[289,820,793],{"class":418},[289,822,766],{"class":414},[289,824,825],{"class":410}," await",[289,827,828],{"class":418}," db",[289,830,605],{"class":414},[289,832,833],{"class":481},"findUser",[289,835,485],{"class":493},[289,837,838],{"class":418},"userId",[289,840,523],{"class":493},[289,842,843,845,847,849,851,853,855,857,859,862,864,866,868,871,873,876,878,880,882,885,887,889],{"class":291,"line":329},[289,844,782],{"class":418},[289,846,605],{"class":414},[289,848,608],{"class":481},[289,850,485],{"class":493},[289,852,613],{"class":414},[289,854,793],{"class":493},[289,856,497],{"class":414},[289,858,415],{"class":414},[289,860,861],{"class":493}," name",[289,863,497],{"class":414},[289,865,793],{"class":418},[289,867,605],{"class":414},[289,869,870],{"class":418},"name",[289,872,581],{"class":414},[289,874,875],{"class":493}," plan",[289,877,497],{"class":414},[289,879,793],{"class":418},[289,881,605],{"class":414},[289,883,884],{"class":418},"plan",[289,886,422],{"class":414},[289,888,422],{"class":414},[289,890,523],{"class":493},[289,892,893],{"class":291,"line":335},[289,894,302],{"emptyLinePlaceholder":301},[289,896,897,899,902,904,906,908,910,913,915,917],{"class":291,"line":341},[289,898,760],{"class":532},[289,900,901],{"class":418}," orders",[289,903,766],{"class":414},[289,905,825],{"class":410},[289,907,828],{"class":418},[289,909,605],{"class":414},[289,911,912],{"class":481},"findOrders",[289,914,485],{"class":493},[289,916,838],{"class":418},[289,918,523],{"class":493},[289,920,921,923,925,927,929,931,933,935,937,940,942,944,946,949,951,954,956,959,961,964,967,969,971],{"class":291,"line":347},[289,922,782],{"class":418},[289,924,605],{"class":414},[289,926,608],{"class":481},[289,928,485],{"class":493},[289,930,613],{"class":414},[289,932,901],{"class":493},[289,934,497],{"class":414},[289,936,415],{"class":414},[289,938,939],{"class":493}," count",[289,941,497],{"class":414},[289,943,901],{"class":418},[289,945,605],{"class":414},[289,947,948],{"class":418},"length",[289,950,581],{"class":414},[289,952,953],{"class":493}," totalRevenue",[289,955,497],{"class":414},[289,957,958],{"class":481}," sum",[289,960,485],{"class":493},[289,962,963],{"class":418},"orders",[289,965,966],{"class":493},") ",[289,968,520],{"class":414},[289,970,422],{"class":414},[289,972,523],{"class":493},[289,974,975],{"class":291,"line":352},[289,976,302],{"emptyLinePlaceholder":301},[289,978,979,982,984,986,988,990],{"class":291,"line":358},[289,980,981],{"class":410},"  return",[289,983,415],{"class":414},[289,985,793],{"class":418},[289,987,581],{"class":414},[289,989,901],{"class":418},[289,991,649],{"class":414},[289,993,994,996],{"class":291,"line":632},[289,995,520],{"class":414},[289,997,523],{"class":418},[259,999,1000],{},"All fields are merged into a single wide event emitted when the request completes:",[279,1002,1005],{"className":373,"code":1003,"filename":1004,"language":375,"meta":285,"style":285},"14:58:15 INFO [my-api] GET \u002Fusers\u002Fusr_123 200 in 12ms\n  ├─ orders: count=2 totalRevenue=6298\n  ├─ user: id=usr_123 name=Alice plan=pro\n  └─ requestId: 4a8ff3a8-...\n","Terminal output",[263,1006,1007,1018,1038,1054],{"__ignoreMap":285},[289,1008,1009,1012,1015],{"class":291,"line":292},[289,1010,1011],{"class":382},"14:58:15",[289,1013,1014],{"class":386}," INFO",[289,1016,1017],{"class":418}," [my-api] GET \u002Fusers\u002Fusr_123 200 in 12ms\n",[289,1019,1020,1023,1026,1029,1032,1035],{"class":291,"line":298},[289,1021,1022],{"class":382},"  ├─",[289,1024,1025],{"class":386}," orders:",[289,1027,1028],{"class":386}," count=",[289,1030,1031],{"class":670},"2",[289,1033,1034],{"class":386}," totalRevenue=",[289,1036,1037],{"class":670},"6298\n",[289,1039,1040,1042,1045,1048,1051],{"class":291,"line":305},[289,1041,1022],{"class":382},[289,1043,1044],{"class":386}," user:",[289,1046,1047],{"class":386}," id=usr_123",[289,1049,1050],{"class":386}," name=Alice",[289,1052,1053],{"class":386}," plan=pro\n",[289,1055,1056,1059,1062],{"class":291,"line":311},[289,1057,1058],{"class":382},"  └─",[289,1060,1061],{"class":386}," requestId:",[289,1063,1064],{"class":386}," 4a8ff3a8-...\n",[363,1066,273],{"id":1067},"uselogger",[259,1069,1070,1071,1073],{},"Use ",[263,1072,273],{}," to access the request-scoped logger from anywhere in the call stack without passing the context through your service layer:",[279,1075,1078],{"className":400,"code":1076,"filename":1077,"language":403,"meta":285,"style":285},"import { useLogger } from 'evlog\u002Felysia'\n\nexport async function findUser(id: string) {\n  const log = useLogger()\n  log.set({ user: { id } })\n\n  const user = await db.findUser(id)\n  log.set({ user: { name: user.name, plan: user.plan } })\n\n  return user\n}\n","src\u002Fservices\u002Fuser.ts",[263,1079,1080,1099,1103,1131,1143,1169,1173,1195,1241,1245,1252],{"__ignoreMap":285},[289,1081,1082,1084,1086,1089,1091,1093,1095,1097],{"class":291,"line":292},[289,1083,411],{"class":410},[289,1085,415],{"class":414},[289,1087,1088],{"class":418}," useLogger",[289,1090,422],{"class":414},[289,1092,425],{"class":410},[289,1094,428],{"class":414},[289,1096,265],{"class":386},[289,1098,434],{"class":414},[289,1100,1101],{"class":291,"line":298},[289,1102,302],{"emptyLinePlaceholder":301},[289,1104,1105,1108,1110,1113,1116,1118,1121,1123,1126,1129],{"class":291,"line":305},[289,1106,1107],{"class":410},"export",[289,1109,740],{"class":532},[289,1111,1112],{"class":532}," function",[289,1114,1115],{"class":481}," findUser",[289,1117,485],{"class":414},[289,1119,1120],{"class":587},"id",[289,1122,497],{"class":414},[289,1124,1125],{"class":382}," string",[289,1127,1128],{"class":414},")",[289,1130,597],{"class":414},[289,1132,1133,1135,1137,1139,1141],{"class":291,"line":311},[289,1134,760],{"class":532},[289,1136,588],{"class":418},[289,1138,766],{"class":414},[289,1140,1088],{"class":481},[289,1142,547],{"class":493},[289,1144,1145,1147,1149,1151,1153,1155,1157,1159,1161,1163,1165,1167],{"class":291,"line":317},[289,1146,782],{"class":418},[289,1148,605],{"class":414},[289,1150,608],{"class":481},[289,1152,485],{"class":493},[289,1154,613],{"class":414},[289,1156,793],{"class":493},[289,1158,497],{"class":414},[289,1160,415],{"class":414},[289,1162,800],{"class":418},[289,1164,422],{"class":414},[289,1166,422],{"class":414},[289,1168,523],{"class":493},[289,1170,1171],{"class":291,"line":323},[289,1172,302],{"emptyLinePlaceholder":301},[289,1174,1175,1177,1179,1181,1183,1185,1187,1189,1191,1193],{"class":291,"line":329},[289,1176,760],{"class":532},[289,1178,793],{"class":418},[289,1180,766],{"class":414},[289,1182,825],{"class":410},[289,1184,828],{"class":418},[289,1186,605],{"class":414},[289,1188,833],{"class":481},[289,1190,485],{"class":493},[289,1192,1120],{"class":418},[289,1194,523],{"class":493},[289,1196,1197,1199,1201,1203,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239],{"class":291,"line":335},[289,1198,782],{"class":418},[289,1200,605],{"class":414},[289,1202,608],{"class":481},[289,1204,485],{"class":493},[289,1206,613],{"class":414},[289,1208,793],{"class":493},[289,1210,497],{"class":414},[289,1212,415],{"class":414},[289,1214,861],{"class":493},[289,1216,497],{"class":414},[289,1218,793],{"class":418},[289,1220,605],{"class":414},[289,1222,870],{"class":418},[289,1224,581],{"class":414},[289,1226,875],{"class":493},[289,1228,497],{"class":414},[289,1230,793],{"class":418},[289,1232,605],{"class":414},[289,1234,884],{"class":418},[289,1236,422],{"class":414},[289,1238,422],{"class":414},[289,1240,523],{"class":493},[289,1242,1243],{"class":291,"line":341},[289,1244,302],{"emptyLinePlaceholder":301},[289,1246,1247,1249],{"class":291,"line":347},[289,1248,981],{"class":410},[289,1250,1251],{"class":418}," user\n",[289,1253,1254],{"class":291,"line":352},[289,1255,1256],{"class":414},"}\n",[279,1258,1260],{"className":400,"code":1259,"filename":402,"language":403,"meta":285,"style":285},"import { findUser } from '.\u002Fservices\u002Fuser'\n\napp.get('\u002Fusers\u002F:id', async ({ params }) => {\n  const user = await findUser(params.id)\n  return user\n})\n",[263,1261,1262,1281,1285,1315,1338,1344],{"__ignoreMap":285},[289,1263,1264,1266,1268,1270,1272,1274,1276,1279],{"class":291,"line":292},[289,1265,411],{"class":410},[289,1267,415],{"class":414},[289,1269,1115],{"class":418},[289,1271,422],{"class":414},[289,1273,425],{"class":410},[289,1275,428],{"class":414},[289,1277,1278],{"class":386},".\u002Fservices\u002Fuser",[289,1280,434],{"class":414},[289,1282,1283],{"class":291,"line":298},[289,1284,302],{"emptyLinePlaceholder":301},[289,1286,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313],{"class":291,"line":305},[289,1288,722],{"class":418},[289,1290,605],{"class":414},[289,1292,569],{"class":481},[289,1294,485],{"class":418},[289,1296,512],{"class":414},[289,1298,733],{"class":386},[289,1300,512],{"class":414},[289,1302,581],{"class":414},[289,1304,740],{"class":532},[289,1306,584],{"class":414},[289,1308,749],{"class":587},[289,1310,591],{"class":414},[289,1312,594],{"class":532},[289,1314,597],{"class":414},[289,1316,1317,1319,1321,1323,1325,1327,1329,1332,1334,1336],{"class":291,"line":311},[289,1318,760],{"class":532},[289,1320,793],{"class":418},[289,1322,766],{"class":414},[289,1324,825],{"class":410},[289,1326,1115],{"class":481},[289,1328,485],{"class":493},[289,1330,1331],{"class":418},"params",[289,1333,605],{"class":414},[289,1335,1120],{"class":418},[289,1337,523],{"class":493},[289,1339,1340,1342],{"class":291,"line":317},[289,1341,981],{"class":410},[289,1343,1251],{"class":418},[289,1345,1346,1348],{"class":291,"line":323},[289,1347,520],{"class":414},[289,1349,523],{"class":418},[259,1351,1352,1353,1355,1356,1358,1359,1361,1362,1365],{},"Both ",[263,1354,269],{}," in context and ",[263,1357,273],{}," return the same logger instance. ",[263,1360,273],{}," uses ",[263,1363,1364],{},"AsyncLocalStorage"," to propagate the logger across async boundaries.",[363,1367,1369],{"id":1368},"error-handling","Error Handling",[259,1371,1070,1372,1375,1376,1379,1380,1383,1384,1387,1388,497],{},[263,1373,1374],{},"createError"," for structured errors with ",[263,1377,1378],{},"why",", ",[263,1381,1382],{},"fix",", and ",[263,1385,1386],{},"link"," fields. Elysia captures thrown errors via ",[263,1389,1390],{},"onError",[279,1392,1394],{"className":400,"code":1393,"filename":402,"language":403,"meta":285,"style":285},"import { createError, parseError } from 'evlog'\n\napp\n  .use(evlog())\n  .get('\u002Fcheckout', ({ log }) => {\n    log.set({ cart: { items: 3, total: 9999 } })\n\n    throw createError({\n      message: 'Payment failed',\n      status: 402,\n      why: 'Card declined by issuer',\n      fix: 'Try a different payment method',\n      link: 'https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined',\n    })\n  })\n  .onError(({ error, set }) => {\n    const parsed = parseError(error)\n    set.status = parsed.status\n    return {\n      message: parsed.message,\n      why: parsed.why,\n      fix: parsed.fix,\n      link: parsed.link,\n    }\n  })\n",[263,1395,1396,1420,1424,1429,1441,1468,1511,1515,1526,1543,1555,1571,1587,1603,1610,1616,1642,1662,1682,1689,1705,1720,1735,1750,1756],{"__ignoreMap":285},[289,1397,1398,1400,1402,1405,1407,1410,1412,1414,1416,1418],{"class":291,"line":292},[289,1399,411],{"class":410},[289,1401,415],{"class":414},[289,1403,1404],{"class":418}," createError",[289,1406,581],{"class":414},[289,1408,1409],{"class":418}," parseError",[289,1411,422],{"class":414},[289,1413,425],{"class":410},[289,1415,428],{"class":414},[289,1417,452],{"class":386},[289,1419,434],{"class":414},[289,1421,1422],{"class":291,"line":298},[289,1423,302],{"emptyLinePlaceholder":301},[289,1425,1426],{"class":291,"line":305},[289,1427,1428],{"class":418},"app\n",[289,1430,1431,1433,1435,1437,1439],{"class":291,"line":311},[289,1432,552],{"class":414},[289,1434,555],{"class":481},[289,1436,485],{"class":418},[289,1438,452],{"class":481},[289,1440,562],{"class":418},[289,1442,1443,1445,1447,1449,1451,1454,1456,1458,1460,1462,1464,1466],{"class":291,"line":317},[289,1444,552],{"class":414},[289,1446,569],{"class":481},[289,1448,485],{"class":418},[289,1450,512],{"class":414},[289,1452,1453],{"class":386},"\u002Fcheckout",[289,1455,512],{"class":414},[289,1457,581],{"class":414},[289,1459,584],{"class":414},[289,1461,588],{"class":587},[289,1463,591],{"class":414},[289,1465,594],{"class":532},[289,1467,597],{"class":414},[289,1469,1470,1472,1474,1476,1478,1480,1483,1485,1487,1490,1492,1495,1497,1500,1502,1505,1507,1509],{"class":291,"line":323},[289,1471,602],{"class":418},[289,1473,605],{"class":414},[289,1475,608],{"class":481},[289,1477,485],{"class":493},[289,1479,613],{"class":414},[289,1481,1482],{"class":493}," cart",[289,1484,497],{"class":414},[289,1486,415],{"class":414},[289,1488,1489],{"class":493}," items",[289,1491,497],{"class":414},[289,1493,1494],{"class":670}," 3",[289,1496,581],{"class":414},[289,1498,1499],{"class":493}," total",[289,1501,497],{"class":414},[289,1503,1504],{"class":670}," 9999",[289,1506,422],{"class":414},[289,1508,422],{"class":414},[289,1510,523],{"class":493},[289,1512,1513],{"class":291,"line":329},[289,1514,302],{"emptyLinePlaceholder":301},[289,1516,1517,1520,1522,1524],{"class":291,"line":335},[289,1518,1519],{"class":410},"    throw",[289,1521,1404],{"class":481},[289,1523,485],{"class":493},[289,1525,488],{"class":414},[289,1527,1528,1531,1533,1535,1538,1540],{"class":291,"line":341},[289,1529,1530],{"class":493},"      message",[289,1532,497],{"class":414},[289,1534,428],{"class":414},[289,1536,1537],{"class":386},"Payment failed",[289,1539,512],{"class":414},[289,1541,1542],{"class":414},",\n",[289,1544,1545,1548,1550,1553],{"class":291,"line":347},[289,1546,1547],{"class":493},"      status",[289,1549,497],{"class":414},[289,1551,1552],{"class":670}," 402",[289,1554,1542],{"class":414},[289,1556,1557,1560,1562,1564,1567,1569],{"class":291,"line":352},[289,1558,1559],{"class":493},"      why",[289,1561,497],{"class":414},[289,1563,428],{"class":414},[289,1565,1566],{"class":386},"Card declined by issuer",[289,1568,512],{"class":414},[289,1570,1542],{"class":414},[289,1572,1573,1576,1578,1580,1583,1585],{"class":291,"line":358},[289,1574,1575],{"class":493},"      fix",[289,1577,497],{"class":414},[289,1579,428],{"class":414},[289,1581,1582],{"class":386},"Try a different payment method",[289,1584,512],{"class":414},[289,1586,1542],{"class":414},[289,1588,1589,1592,1594,1596,1599,1601],{"class":291,"line":632},[289,1590,1591],{"class":493},"      link",[289,1593,497],{"class":414},[289,1595,428],{"class":414},[289,1597,1598],{"class":386},"https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined",[289,1600,512],{"class":414},[289,1602,1542],{"class":414},[289,1604,1605,1608],{"class":291,"line":652},[289,1606,1607],{"class":414},"    }",[289,1609,523],{"class":493},[289,1611,1612,1614],{"class":291,"line":660},[289,1613,655],{"class":414},[289,1615,523],{"class":418},[289,1617,1619,1621,1623,1625,1628,1631,1633,1636,1638,1640],{"class":291,"line":1618},16,[289,1620,552],{"class":414},[289,1622,1390],{"class":481},[289,1624,485],{"class":418},[289,1626,1627],{"class":414},"({",[289,1629,1630],{"class":587}," error",[289,1632,581],{"class":414},[289,1634,1635],{"class":587}," set",[289,1637,591],{"class":414},[289,1639,594],{"class":532},[289,1641,597],{"class":414},[289,1643,1645,1648,1651,1653,1655,1657,1660],{"class":291,"line":1644},17,[289,1646,1647],{"class":532},"    const",[289,1649,1650],{"class":418}," parsed",[289,1652,766],{"class":414},[289,1654,1409],{"class":481},[289,1656,485],{"class":493},[289,1658,1659],{"class":418},"error",[289,1661,523],{"class":493},[289,1663,1665,1668,1670,1673,1675,1677,1679],{"class":291,"line":1664},18,[289,1666,1667],{"class":418},"    set",[289,1669,605],{"class":414},[289,1671,1672],{"class":418},"status",[289,1674,766],{"class":414},[289,1676,1650],{"class":418},[289,1678,605],{"class":414},[289,1680,1681],{"class":418},"status\n",[289,1683,1685,1687],{"class":291,"line":1684},19,[289,1686,635],{"class":410},[289,1688,597],{"class":414},[289,1690,1692,1694,1696,1698,1700,1703],{"class":291,"line":1691},20,[289,1693,1530],{"class":493},[289,1695,497],{"class":414},[289,1697,1650],{"class":418},[289,1699,605],{"class":414},[289,1701,1702],{"class":418},"message",[289,1704,1542],{"class":414},[289,1706,1708,1710,1712,1714,1716,1718],{"class":291,"line":1707},21,[289,1709,1559],{"class":493},[289,1711,497],{"class":414},[289,1713,1650],{"class":418},[289,1715,605],{"class":414},[289,1717,1378],{"class":418},[289,1719,1542],{"class":414},[289,1721,1723,1725,1727,1729,1731,1733],{"class":291,"line":1722},22,[289,1724,1575],{"class":493},[289,1726,497],{"class":414},[289,1728,1650],{"class":418},[289,1730,605],{"class":414},[289,1732,1382],{"class":418},[289,1734,1542],{"class":414},[289,1736,1738,1740,1742,1744,1746,1748],{"class":291,"line":1737},23,[289,1739,1591],{"class":493},[289,1741,497],{"class":414},[289,1743,1650],{"class":418},[289,1745,605],{"class":414},[289,1747,1386],{"class":418},[289,1749,1542],{"class":414},[289,1751,1753],{"class":291,"line":1752},24,[289,1754,1755],{"class":414},"    }\n",[289,1757,1759,1761],{"class":291,"line":1758},25,[289,1760,655],{"class":414},[289,1762,523],{"class":418},[259,1764,1765],{},"The error is captured and logged with both the custom context and structured error fields:",[279,1767,1769],{"className":373,"code":1768,"filename":1004,"language":375,"meta":285,"style":285},"14:58:20 ERROR [my-api] GET \u002Fcheckout 402 in 3ms\n  ├─ error: name=EvlogError message=Payment failed status=402\n  ├─ cart: items=3 total=9999\n  └─ requestId: 880a50ac-...\n",[263,1770,1771,1782,1804,1823],{"__ignoreMap":285},[289,1772,1773,1776,1779],{"class":291,"line":292},[289,1774,1775],{"class":382},"14:58:20",[289,1777,1778],{"class":386}," ERROR",[289,1780,1781],{"class":418}," [my-api] GET \u002Fcheckout 402 in 3ms\n",[289,1783,1784,1786,1789,1792,1795,1798,1801],{"class":291,"line":298},[289,1785,1022],{"class":382},[289,1787,1788],{"class":386}," error:",[289,1790,1791],{"class":386}," name=EvlogError",[289,1793,1794],{"class":386}," message=Payment",[289,1796,1797],{"class":386}," failed",[289,1799,1800],{"class":386}," status=",[289,1802,1803],{"class":670},"402\n",[289,1805,1806,1808,1811,1814,1817,1820],{"class":291,"line":305},[289,1807,1022],{"class":382},[289,1809,1810],{"class":386}," cart:",[289,1812,1813],{"class":386}," items=",[289,1815,1816],{"class":670},"3",[289,1818,1819],{"class":386}," total=",[289,1821,1822],{"class":670},"9999\n",[289,1824,1825,1827,1829],{"class":291,"line":311},[289,1826,1058],{"class":382},[289,1828,1061],{"class":386},[289,1830,1831],{"class":386}," 880a50ac-...\n",[363,1833,160],{"id":1834},"configuration",[259,1836,1837,1838,1841,1842,1844],{},"See the ",[684,1839,1840],{"href":161},"Configuration reference"," for all available options (",[263,1843,482],{},", middleware options, sampling, silent mode, etc.).",[363,1846,1848],{"id":1847},"drain-enrichers","Drain & Enrichers",[259,1850,1851],{},"Configure drain adapters and enrichers directly in the plugin options:",[279,1853,1855],{"className":400,"code":1854,"filename":402,"language":403,"meta":285,"style":285},"import { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createUserAgentEnricher } from 'evlog\u002Fenrichers'\n\nconst userAgent = createUserAgentEnricher()\n\napp.use(evlog({\n  drain: createAxiomDrain(),\n  enrich: (ctx) => {\n    userAgent(ctx)\n    ctx.event.region = process.env.FLY_REGION\n  },\n}))\n",[263,1856,1857,1877,1897,1901,1914,1918,1934,1948,1967,1978,2008,2013],{"__ignoreMap":285},[289,1858,1859,1861,1863,1866,1868,1870,1872,1875],{"class":291,"line":292},[289,1860,411],{"class":410},[289,1862,415],{"class":414},[289,1864,1865],{"class":418}," createAxiomDrain",[289,1867,422],{"class":414},[289,1869,425],{"class":410},[289,1871,428],{"class":414},[289,1873,1874],{"class":386},"evlog\u002Faxiom",[289,1876,434],{"class":414},[289,1878,1879,1881,1883,1886,1888,1890,1892,1895],{"class":291,"line":298},[289,1880,411],{"class":410},[289,1882,415],{"class":414},[289,1884,1885],{"class":418}," createUserAgentEnricher",[289,1887,422],{"class":414},[289,1889,425],{"class":410},[289,1891,428],{"class":414},[289,1893,1894],{"class":386},"evlog\u002Fenrichers",[289,1896,434],{"class":414},[289,1898,1899],{"class":291,"line":305},[289,1900,302],{"emptyLinePlaceholder":301},[289,1902,1903,1905,1908,1910,1912],{"class":291,"line":311},[289,1904,533],{"class":532},[289,1906,1907],{"class":418}," userAgent ",[289,1909,539],{"class":414},[289,1911,1885],{"class":481},[289,1913,547],{"class":418},[289,1915,1916],{"class":291,"line":317},[289,1917,302],{"emptyLinePlaceholder":301},[289,1919,1920,1922,1924,1926,1928,1930,1932],{"class":291,"line":323},[289,1921,722],{"class":418},[289,1923,605],{"class":414},[289,1925,555],{"class":481},[289,1927,485],{"class":418},[289,1929,452],{"class":481},[289,1931,485],{"class":418},[289,1933,488],{"class":414},[289,1935,1936,1939,1941,1943,1946],{"class":291,"line":329},[289,1937,1938],{"class":493},"  drain",[289,1940,497],{"class":414},[289,1942,1865],{"class":481},[289,1944,1945],{"class":418},"()",[289,1947,1542],{"class":414},[289,1949,1950,1953,1955,1958,1961,1963,1965],{"class":291,"line":335},[289,1951,1952],{"class":481},"  enrich",[289,1954,497],{"class":414},[289,1956,1957],{"class":414}," (",[289,1959,1960],{"class":587},"ctx",[289,1962,1128],{"class":414},[289,1964,594],{"class":532},[289,1966,597],{"class":414},[289,1968,1969,1972,1974,1976],{"class":291,"line":341},[289,1970,1971],{"class":481},"    userAgent",[289,1973,485],{"class":493},[289,1975,1960],{"class":418},[289,1977,523],{"class":493},[289,1979,1980,1983,1985,1988,1990,1993,1995,1998,2000,2003,2005],{"class":291,"line":347},[289,1981,1982],{"class":418},"    ctx",[289,1984,605],{"class":414},[289,1986,1987],{"class":418},"event",[289,1989,605],{"class":414},[289,1991,1992],{"class":418},"region",[289,1994,766],{"class":414},[289,1996,1997],{"class":418}," process",[289,1999,605],{"class":414},[289,2001,2002],{"class":418},"env",[289,2004,605],{"class":414},[289,2006,2007],{"class":418},"FLY_REGION\n",[289,2009,2010],{"class":291,"line":352},[289,2011,2012],{"class":414},"  },\n",[289,2014,2015,2017],{"class":291,"line":358},[289,2016,520],{"class":414},[289,2018,2019],{"class":418},"))\n",[367,2021,2023],{"id":2022},"pipeline-batching-retry","Pipeline (Batching & Retry)",[259,2025,2026,2027,2030],{},"For production, wrap your adapter with ",[263,2028,2029],{},"createDrainPipeline"," to batch events and retry on failure:",[279,2032,2034],{"className":400,"code":2033,"filename":402,"language":403,"meta":285,"style":285},"import type { DrainContext } from 'evlog'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createDrainPipeline } from 'evlog\u002Fpipeline'\n\nconst pipeline = createDrainPipeline\u003CDrainContext>({\n  batch: { size: 50, intervalMs: 5000 },\n  retry: { maxAttempts: 3 },\n})\nconst drain = pipeline(createAxiomDrain())\n\napp.use(evlog({ drain }))\n",[263,2035,2036,2058,2076,2096,2100,2124,2153,2171,2177,2196,2200],{"__ignoreMap":285},[289,2037,2038,2040,2043,2045,2048,2050,2052,2054,2056],{"class":291,"line":292},[289,2039,411],{"class":410},[289,2041,2042],{"class":410}," type",[289,2044,415],{"class":414},[289,2046,2047],{"class":418}," DrainContext",[289,2049,422],{"class":414},[289,2051,425],{"class":410},[289,2053,428],{"class":414},[289,2055,452],{"class":386},[289,2057,434],{"class":414},[289,2059,2060,2062,2064,2066,2068,2070,2072,2074],{"class":291,"line":298},[289,2061,411],{"class":410},[289,2063,415],{"class":414},[289,2065,1865],{"class":418},[289,2067,422],{"class":414},[289,2069,425],{"class":410},[289,2071,428],{"class":414},[289,2073,1874],{"class":386},[289,2075,434],{"class":414},[289,2077,2078,2080,2082,2085,2087,2089,2091,2094],{"class":291,"line":305},[289,2079,411],{"class":410},[289,2081,415],{"class":414},[289,2083,2084],{"class":418}," createDrainPipeline",[289,2086,422],{"class":414},[289,2088,425],{"class":410},[289,2090,428],{"class":414},[289,2092,2093],{"class":386},"evlog\u002Fpipeline",[289,2095,434],{"class":414},[289,2097,2098],{"class":291,"line":311},[289,2099,302],{"emptyLinePlaceholder":301},[289,2101,2102,2104,2107,2109,2111,2114,2117,2120,2122],{"class":291,"line":317},[289,2103,533],{"class":532},[289,2105,2106],{"class":418}," pipeline ",[289,2108,539],{"class":414},[289,2110,2084],{"class":481},[289,2112,2113],{"class":414},"\u003C",[289,2115,2116],{"class":382},"DrainContext",[289,2118,2119],{"class":414},">",[289,2121,485],{"class":418},[289,2123,488],{"class":414},[289,2125,2126,2129,2131,2133,2136,2138,2141,2143,2146,2148,2151],{"class":291,"line":323},[289,2127,2128],{"class":493},"  batch",[289,2130,497],{"class":414},[289,2132,415],{"class":414},[289,2134,2135],{"class":493}," size",[289,2137,497],{"class":414},[289,2139,2140],{"class":670}," 50",[289,2142,581],{"class":414},[289,2144,2145],{"class":493}," intervalMs",[289,2147,497],{"class":414},[289,2149,2150],{"class":670}," 5000",[289,2152,515],{"class":414},[289,2154,2155,2158,2160,2162,2165,2167,2169],{"class":291,"line":329},[289,2156,2157],{"class":493},"  retry",[289,2159,497],{"class":414},[289,2161,415],{"class":414},[289,2163,2164],{"class":493}," maxAttempts",[289,2166,497],{"class":414},[289,2168,1494],{"class":670},[289,2170,515],{"class":414},[289,2172,2173,2175],{"class":291,"line":335},[289,2174,520],{"class":414},[289,2176,523],{"class":418},[289,2178,2179,2181,2184,2186,2189,2191,2194],{"class":291,"line":341},[289,2180,533],{"class":532},[289,2182,2183],{"class":418}," drain ",[289,2185,539],{"class":414},[289,2187,2188],{"class":481}," pipeline",[289,2190,485],{"class":418},[289,2192,2193],{"class":481},"createAxiomDrain",[289,2195,562],{"class":418},[289,2197,2198],{"class":291,"line":347},[289,2199,302],{"emptyLinePlaceholder":301},[289,2201,2202,2204,2206,2208,2210,2212,2214,2216,2218,2220],{"class":291,"line":352},[289,2203,722],{"class":418},[289,2205,605],{"class":414},[289,2207,555],{"class":481},[289,2209,485],{"class":418},[289,2211,452],{"class":481},[289,2213,485],{"class":418},[289,2215,613],{"class":414},[289,2217,2183],{"class":418},[289,2219,520],{"class":414},[289,2221,2019],{"class":418},[675,2223,2224,2225,2228,2229,2232],{"color":677,"icon":13},"Call ",[263,2226,2227],{},"drain.flush()"," on server shutdown to ensure all buffered events are sent. See the ",[684,2230,2231],{"href":220},"Pipeline docs"," for all options.",[363,2234,2236],{"id":2235},"tail-sampling","Tail Sampling",[259,2238,1070,2239,2242],{},[263,2240,2241],{},"keep"," to force-retain specific events regardless of head sampling:",[279,2244,2246],{"className":400,"code":2245,"filename":402,"language":403,"meta":285,"style":285},"app.use(evlog({\n  drain: createAxiomDrain(),\n  keep: (ctx) => {\n    if (ctx.duration && ctx.duration > 2000) ctx.shouldKeep = true\n  },\n}))\n",[263,2247,2248,2264,2276,2293,2337,2341],{"__ignoreMap":285},[289,2249,2250,2252,2254,2256,2258,2260,2262],{"class":291,"line":292},[289,2251,722],{"class":418},[289,2253,605],{"class":414},[289,2255,555],{"class":481},[289,2257,485],{"class":418},[289,2259,452],{"class":481},[289,2261,485],{"class":418},[289,2263,488],{"class":414},[289,2265,2266,2268,2270,2272,2274],{"class":291,"line":298},[289,2267,1938],{"class":493},[289,2269,497],{"class":414},[289,2271,1865],{"class":481},[289,2273,1945],{"class":418},[289,2275,1542],{"class":414},[289,2277,2278,2281,2283,2285,2287,2289,2291],{"class":291,"line":305},[289,2279,2280],{"class":481},"  keep",[289,2282,497],{"class":414},[289,2284,1957],{"class":414},[289,2286,1960],{"class":587},[289,2288,1128],{"class":414},[289,2290,594],{"class":532},[289,2292,597],{"class":414},[289,2294,2295,2298,2300,2302,2304,2307,2310,2313,2315,2317,2320,2323,2325,2327,2329,2332,2334],{"class":291,"line":311},[289,2296,2297],{"class":410},"    if",[289,2299,1957],{"class":493},[289,2301,1960],{"class":418},[289,2303,605],{"class":414},[289,2305,2306],{"class":418},"duration",[289,2308,2309],{"class":414}," &&",[289,2311,2312],{"class":418}," ctx",[289,2314,605],{"class":414},[289,2316,2306],{"class":418},[289,2318,2319],{"class":414}," >",[289,2321,2322],{"class":670}," 2000",[289,2324,966],{"class":493},[289,2326,1960],{"class":418},[289,2328,605],{"class":414},[289,2330,2331],{"class":418},"shouldKeep",[289,2333,766],{"class":414},[289,2335,2336],{"class":645}," true\n",[289,2338,2339],{"class":291,"line":317},[289,2340,2012],{"class":414},[289,2342,2343,2345],{"class":291,"line":323},[289,2344,520],{"class":414},[289,2346,2019],{"class":418},[363,2348,2350],{"id":2349},"route-filtering","Route Filtering",[259,2352,2353,2354,2357,2358,2361],{},"Control which routes are logged with ",[263,2355,2356],{},"include"," and ",[263,2359,2360],{},"exclude"," patterns:",[279,2363,2365],{"className":400,"code":2364,"filename":402,"language":403,"meta":285,"style":285},"app.use(evlog({\n  include: ['\u002Fapi\u002F**'],\n  exclude: ['\u002F_internal\u002F**', '\u002Fhealth'],\n  routes: {\n    '\u002Fapi\u002Fauth\u002F**': { service: 'auth-service' },\n    '\u002Fapi\u002Fpayment\u002F**': { service: 'payment-service' },\n  },\n}))\n",[263,2366,2367,2383,2405,2433,2442,2469,2495,2499],{"__ignoreMap":285},[289,2368,2369,2371,2373,2375,2377,2379,2381],{"class":291,"line":292},[289,2370,722],{"class":418},[289,2372,605],{"class":414},[289,2374,555],{"class":481},[289,2376,485],{"class":418},[289,2378,452],{"class":481},[289,2380,485],{"class":418},[289,2382,488],{"class":414},[289,2384,2385,2388,2390,2393,2395,2398,2400,2403],{"class":291,"line":298},[289,2386,2387],{"class":493},"  include",[289,2389,497],{"class":414},[289,2391,2392],{"class":418}," [",[289,2394,512],{"class":414},[289,2396,2397],{"class":386},"\u002Fapi\u002F**",[289,2399,512],{"class":414},[289,2401,2402],{"class":418},"]",[289,2404,1542],{"class":414},[289,2406,2407,2410,2412,2414,2416,2419,2421,2423,2425,2427,2429,2431],{"class":291,"line":305},[289,2408,2409],{"class":493},"  exclude",[289,2411,497],{"class":414},[289,2413,2392],{"class":418},[289,2415,512],{"class":414},[289,2417,2418],{"class":386},"\u002F_internal\u002F**",[289,2420,512],{"class":414},[289,2422,581],{"class":414},[289,2424,428],{"class":414},[289,2426,576],{"class":386},[289,2428,512],{"class":414},[289,2430,2402],{"class":418},[289,2432,1542],{"class":414},[289,2434,2435,2438,2440],{"class":291,"line":311},[289,2436,2437],{"class":493},"  routes",[289,2439,497],{"class":414},[289,2441,597],{"class":414},[289,2443,2444,2447,2450,2452,2454,2456,2458,2460,2462,2465,2467],{"class":291,"line":317},[289,2445,2446],{"class":414},"    '",[289,2448,2449],{"class":493},"\u002Fapi\u002Fauth\u002F**",[289,2451,512],{"class":414},[289,2453,497],{"class":414},[289,2455,415],{"class":414},[289,2457,502],{"class":493},[289,2459,497],{"class":414},[289,2461,428],{"class":414},[289,2463,2464],{"class":386},"auth-service",[289,2466,512],{"class":414},[289,2468,515],{"class":414},[289,2470,2471,2473,2476,2478,2480,2482,2484,2486,2488,2491,2493],{"class":291,"line":323},[289,2472,2446],{"class":414},[289,2474,2475],{"class":493},"\u002Fapi\u002Fpayment\u002F**",[289,2477,512],{"class":414},[289,2479,497],{"class":414},[289,2481,415],{"class":414},[289,2483,502],{"class":493},[289,2485,497],{"class":414},[289,2487,428],{"class":414},[289,2489,2490],{"class":386},"payment-service",[289,2492,512],{"class":414},[289,2494,515],{"class":414},[289,2496,2497],{"class":291,"line":329},[289,2498,2012],{"class":414},[289,2500,2501,2503],{"class":291,"line":335},[289,2502,520],{"class":414},[289,2504,2019],{"class":418},[363,2506,2508],{"id":2507},"client-side-logging","Client-Side Logging",[259,2510,1070,2511,2514],{},[263,2512,2513],{},"evlog\u002Fbrowser"," to send structured logs from any frontend to your Elysia server. This works with any client framework (React, Vue, Svelte, vanilla JS).",[367,2516,2518],{"id":2517},"browser-setup","Browser setup",[279,2520,2523],{"className":400,"code":2521,"filename":2522,"language":403,"meta":285,"style":285},"import { initLogger, log } from 'evlog'\nimport { createBrowserLogDrain } from 'evlog\u002Fbrowser'\n\nconst drain = createBrowserLogDrain({\n  drain: { endpoint: '\u002Fv1\u002Fingest' },\n})\ninitLogger({ drain })\n\nlog.info({ action: 'page_view', path: location.pathname })\n","client.ts",[263,2524,2525,2547,2566,2570,2584,2606,2612,2626,2630],{"__ignoreMap":285},[289,2526,2527,2529,2531,2533,2535,2537,2539,2541,2543,2545],{"class":291,"line":292},[289,2528,411],{"class":410},[289,2530,415],{"class":414},[289,2532,443],{"class":418},[289,2534,581],{"class":414},[289,2536,588],{"class":418},[289,2538,422],{"class":414},[289,2540,425],{"class":410},[289,2542,428],{"class":414},[289,2544,452],{"class":386},[289,2546,434],{"class":414},[289,2548,2549,2551,2553,2556,2558,2560,2562,2564],{"class":291,"line":298},[289,2550,411],{"class":410},[289,2552,415],{"class":414},[289,2554,2555],{"class":418}," createBrowserLogDrain",[289,2557,422],{"class":414},[289,2559,425],{"class":410},[289,2561,428],{"class":414},[289,2563,2513],{"class":386},[289,2565,434],{"class":414},[289,2567,2568],{"class":291,"line":305},[289,2569,302],{"emptyLinePlaceholder":301},[289,2571,2572,2574,2576,2578,2580,2582],{"class":291,"line":311},[289,2573,533],{"class":532},[289,2575,2183],{"class":418},[289,2577,539],{"class":414},[289,2579,2555],{"class":481},[289,2581,485],{"class":418},[289,2583,488],{"class":414},[289,2585,2586,2588,2590,2592,2595,2597,2599,2602,2604],{"class":291,"line":317},[289,2587,1938],{"class":493},[289,2589,497],{"class":414},[289,2591,415],{"class":414},[289,2593,2594],{"class":493}," endpoint",[289,2596,497],{"class":414},[289,2598,428],{"class":414},[289,2600,2601],{"class":386},"\u002Fv1\u002Fingest",[289,2603,512],{"class":414},[289,2605,515],{"class":414},[289,2607,2608,2610],{"class":291,"line":323},[289,2609,520],{"class":414},[289,2611,523],{"class":418},[289,2613,2614,2616,2618,2620,2622,2624],{"class":291,"line":329},[289,2615,482],{"class":481},[289,2617,485],{"class":418},[289,2619,613],{"class":414},[289,2621,2183],{"class":418},[289,2623,520],{"class":414},[289,2625,523],{"class":418},[289,2627,2628],{"class":291,"line":335},[289,2629,302],{"emptyLinePlaceholder":301},[289,2631,2632,2634,2636,2638,2640,2642,2645,2647,2649,2652,2654,2656,2659,2661,2664,2666,2669,2671],{"class":291,"line":341},[289,2633,269],{"class":418},[289,2635,605],{"class":414},[289,2637,677],{"class":481},[289,2639,485],{"class":418},[289,2641,613],{"class":414},[289,2643,2644],{"class":493}," action",[289,2646,497],{"class":414},[289,2648,428],{"class":414},[289,2650,2651],{"class":386},"page_view",[289,2653,512],{"class":414},[289,2655,581],{"class":414},[289,2657,2658],{"class":493}," path",[289,2660,497],{"class":414},[289,2662,2663],{"class":418}," location",[289,2665,605],{"class":414},[289,2667,2668],{"class":418},"pathname ",[289,2670,520],{"class":414},[289,2672,523],{"class":418},[367,2674,2676],{"id":2675},"ingest-endpoint","Ingest endpoint",[259,2678,2679,2680,2683],{},"Add a POST route to receive batched ",[263,2681,2682],{},"DrainContext[]"," from the browser:",[279,2685,2687],{"className":400,"code":2686,"filename":402,"language":403,"meta":285,"style":285},"import type { DrainContext } from 'evlog'\n\napp.post('\u002Fv1\u002Fingest', async ({ body }) => {\n  const batch = body as DrainContext[]\n  for (const ctx of batch) {\n    console.log('[BROWSER]', JSON.stringify(ctx.event))\n  }\n  return new Response(null, { status: 204 })\n})\n",[263,2688,2689,2709,2713,2745,2764,2784,2822,2827,2855],{"__ignoreMap":285},[289,2690,2691,2693,2695,2697,2699,2701,2703,2705,2707],{"class":291,"line":292},[289,2692,411],{"class":410},[289,2694,2042],{"class":410},[289,2696,415],{"class":414},[289,2698,2047],{"class":418},[289,2700,422],{"class":414},[289,2702,425],{"class":410},[289,2704,428],{"class":414},[289,2706,452],{"class":386},[289,2708,434],{"class":414},[289,2710,2711],{"class":291,"line":298},[289,2712,302],{"emptyLinePlaceholder":301},[289,2714,2715,2717,2719,2722,2724,2726,2728,2730,2732,2734,2736,2739,2741,2743],{"class":291,"line":305},[289,2716,722],{"class":418},[289,2718,605],{"class":414},[289,2720,2721],{"class":481},"post",[289,2723,485],{"class":418},[289,2725,512],{"class":414},[289,2727,2601],{"class":386},[289,2729,512],{"class":414},[289,2731,581],{"class":414},[289,2733,740],{"class":532},[289,2735,584],{"class":414},[289,2737,2738],{"class":587}," body",[289,2740,591],{"class":414},[289,2742,594],{"class":532},[289,2744,597],{"class":414},[289,2746,2747,2749,2752,2754,2756,2759,2761],{"class":291,"line":311},[289,2748,760],{"class":532},[289,2750,2751],{"class":418}," batch",[289,2753,766],{"class":414},[289,2755,2738],{"class":418},[289,2757,2758],{"class":410}," as",[289,2760,2047],{"class":382},[289,2762,2763],{"class":493},"[]\n",[289,2765,2766,2769,2771,2773,2775,2778,2780,2782],{"class":291,"line":317},[289,2767,2768],{"class":410},"  for",[289,2770,1957],{"class":493},[289,2772,533],{"class":532},[289,2774,2312],{"class":418},[289,2776,2777],{"class":414}," of",[289,2779,2751],{"class":418},[289,2781,966],{"class":493},[289,2783,488],{"class":414},[289,2785,2786,2789,2791,2793,2795,2797,2800,2802,2804,2807,2809,2812,2814,2816,2818,2820],{"class":291,"line":323},[289,2787,2788],{"class":418},"    console",[289,2790,605],{"class":414},[289,2792,269],{"class":481},[289,2794,485],{"class":493},[289,2796,512],{"class":414},[289,2798,2799],{"class":386},"[BROWSER]",[289,2801,512],{"class":414},[289,2803,581],{"class":414},[289,2805,2806],{"class":418}," JSON",[289,2808,605],{"class":414},[289,2810,2811],{"class":481},"stringify",[289,2813,485],{"class":493},[289,2815,1960],{"class":418},[289,2817,605],{"class":414},[289,2819,1987],{"class":418},[289,2821,2019],{"class":493},[289,2823,2824],{"class":291,"line":329},[289,2825,2826],{"class":414},"  }\n",[289,2828,2829,2831,2833,2836,2838,2841,2843,2846,2848,2851,2853],{"class":291,"line":335},[289,2830,981],{"class":410},[289,2832,542],{"class":414},[289,2834,2835],{"class":481}," Response",[289,2837,485],{"class":493},[289,2839,2840],{"class":414},"null,",[289,2842,415],{"class":414},[289,2844,2845],{"class":493}," status",[289,2847,497],{"class":414},[289,2849,2850],{"class":670}," 204",[289,2852,422],{"class":414},[289,2854,523],{"class":493},[289,2856,2857,2859],{"class":291,"line":341},[289,2858,520],{"class":414},[289,2860,523],{"class":418},[675,2862,2864,2865,2868],{"color":2863,"icon":182},"neutral","See the full ",[684,2866,2867],{"href":180},"Browser Drain"," adapter docs for batching, retry, sendBeacon fallback, and authentication options.",[363,2870,2872],{"id":2871},"run-locally","Run Locally",[279,2874,2876],{"className":373,"code":2875,"language":375,"meta":285,"style":285},"git clone https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Fevlog.git\ncd evlog\nbun install\nbun run example:elysia\n",[263,2877,2878,2889,2897,2904],{"__ignoreMap":285},[289,2879,2880,2883,2886],{"class":291,"line":292},[289,2881,2882],{"class":382},"git",[289,2884,2885],{"class":386}," clone",[289,2887,2888],{"class":386}," https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Fevlog.git\n",[289,2890,2891,2894],{"class":291,"line":298},[289,2892,2893],{"class":481},"cd",[289,2895,2896],{"class":386}," evlog\n",[289,2898,2899,2901],{"class":291,"line":305},[289,2900,383],{"class":382},[289,2902,2903],{"class":386}," install\n",[289,2905,2906,2908,2911],{"class":291,"line":311},[289,2907,383],{"class":382},[289,2909,2910],{"class":386}," run",[289,2912,2913],{"class":386}," example:elysia\n",[259,2915,2916,2917,2922],{},"Open ",[684,2918,2919],{"href":2919,"rel":2920},"http:\u002F\u002Flocalhost:3000",[2921],"nofollow"," to explore the interactive test UI.",[2924,2925,2926],"card-group",{},[2927,2928,2931],"card",{"icon":89,"title":2929,"to":2930},"Source Code","https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Fevlog\u002Ftree\u002Fmain\u002Fexamples\u002Felysia","Browse the complete Elysia example source on GitHub.",[2933,2934,2935],"style",{},"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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":285,"searchDepth":298,"depth":298,"links":2937},[2938,2942,2943,2944,2945,2946,2949,2950,2951,2955],{"id":365,"depth":298,"text":20,"children":2939},[2940,2941],{"id":369,"depth":305,"text":370},{"id":396,"depth":305,"text":397},{"id":709,"depth":298,"text":121},{"id":1067,"depth":298,"text":273},{"id":1368,"depth":298,"text":1369},{"id":1834,"depth":298,"text":160},{"id":1847,"depth":298,"text":1848,"children":2947},[2948],{"id":2022,"depth":305,"text":2023},{"id":2235,"depth":298,"text":2236},{"id":2349,"depth":298,"text":2350},{"id":2507,"depth":298,"text":2508,"children":2952},[2953,2954],{"id":2517,"depth":305,"text":2518},{"id":2675,"depth":305,"text":2676},{"id":2871,"depth":298,"text":2872},"Automatic wide events, structured errors, drain adapters, enrichers, and tail sampling in Elysia applications.","md",[2959],{"label":2929,"icon":2960,"to":2930,"color":2863,"variant":2961},"i-simple-icons-github","subtle",{},{"title":86,"icon":89},{"title":86,"description":2956},"tMvF_lsC3jpIvxN8lzJlHL2l7Edd0T7Vyf7x0oj_DxM",[2967,2969],{"title":81,"path":82,"stem":83,"description":2968,"icon":84,"children":-1},"Automatic wide events, structured errors, drain adapters, enrichers, and tail sampling in Fastify applications.",{"title":91,"path":92,"stem":93,"description":2970,"icon":94,"children":-1},"Wide events, structured errors, and logging in Cloudflare Workers and Durable Objects.",1773605729305]