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