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