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