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