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