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