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