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