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