[{"data":1,"prerenderedAt":5913},["ShallowReactive",2],{"navigation_docs":3,"-integrate-frameworks-nextjs":439,"-integrate-frameworks-nextjs-surround":5908},[4,30,80,245,353,408],{"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,157],{"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,152],{"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,"icon":156},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","3.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":158,"path":159,"stem":160,"children":161,"page":29},"Frameworks","\u002Fintegrate\u002Fframeworks","3.integrate\u002Fframeworks",[162,166,171,176,181,186,191,196,201,206,211,216,221,226,230,235,240],{"title":36,"path":163,"stem":164,"icon":165},"\u002Fintegrate\u002Fframeworks\u002Foverview","3.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":167,"path":168,"stem":169,"icon":170},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","3.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":172,"path":173,"stem":174,"icon":175},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","3.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":177,"path":178,"stem":179,"icon":180},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","3.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":182,"path":183,"stem":184,"icon":185},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","3.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":187,"path":188,"stem":189,"icon":190},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","3.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":192,"path":193,"stem":194,"icon":195},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","3.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":197,"path":198,"stem":199,"icon":200},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","3.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":202,"path":203,"stem":204,"icon":205},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","3.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":207,"path":208,"stem":209,"icon":210},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","3.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":212,"path":213,"stem":214,"icon":215},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","3.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":217,"path":218,"stem":219,"icon":220},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","3.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":222,"path":223,"stem":224,"icon":225},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","3.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":227,"path":228,"stem":229,"icon":74},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","3.integrate\u002Fframeworks\u002F13.standalone",{"title":231,"path":232,"stem":233,"icon":234},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","3.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":236,"path":237,"stem":238,"icon":239},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","3.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":241,"path":242,"stem":243,"icon":244},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","3.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":246,"path":247,"stem":248,"children":249,"page":29},"Use Cases","\u002Fuse-cases","4.use-cases",[250,254,259,288,316,348],{"title":36,"path":251,"stem":252,"icon":253},"\u002Fuse-cases\u002Foverview","4.use-cases\u002F0.overview","i-lucide-list-checks",{"title":255,"path":256,"stem":257,"icon":258},"Client Logging","\u002Fuse-cases\u002Fclient-logging","4.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":260,"icon":261,"path":262,"stem":263,"children":264,"page":29},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","4.use-cases\u002F2.ai-sdk",[265,268,273,278,283],{"title":36,"path":266,"stem":267,"icon":39},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","4.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":269,"path":270,"stem":271,"icon":272},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","4.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":274,"path":275,"stem":276,"icon":277},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","4.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":279,"path":280,"stem":281,"icon":282},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","4.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":284,"path":285,"stem":286,"icon":287},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","4.use-cases\u002F2.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":289,"icon":290,"path":291,"stem":292,"children":293,"page":29},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","4.use-cases\u002F3.better-auth",[294,297,302,307,311],{"title":36,"path":295,"stem":296,"icon":39},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","4.use-cases\u002F3.better-auth\u002F01.overview",{"title":298,"path":299,"stem":300,"icon":301},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","4.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":303,"path":304,"stem":305,"icon":306},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","4.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":308,"path":309,"stem":310,"icon":258},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","4.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":312,"path":313,"stem":314,"icon":315},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","4.use-cases\u002F3.better-auth\u002F05.performance","i-lucide-gauge",{"title":317,"icon":318,"path":319,"stem":320,"children":321,"page":29},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","4.use-cases\u002F4.audit",[322,325,330,335,340,344],{"title":36,"path":323,"stem":324,"icon":39},"\u002Fuse-cases\u002Faudit\u002Foverview","4.use-cases\u002F4.audit\u002F01.overview",{"title":326,"path":327,"stem":328,"icon":329},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","4.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":331,"path":332,"stem":333,"icon":334},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","4.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":336,"path":337,"stem":338,"icon":339},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","4.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":341,"path":342,"stem":343,"icon":318},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","4.use-cases\u002F4.audit\u002F05.compliance",{"title":345,"path":346,"stem":347,"icon":79},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","4.use-cases\u002F4.audit\u002F06.recipes",{"title":349,"path":350,"stem":351,"icon":352},"Enrichers","\u002Fuse-cases\u002Fenrichers","4.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":354,"path":355,"stem":356,"children":357,"page":29},"Extend","\u002Fextend","5.extend",[358,362,367,372,377,381,385,389,393,398,403],{"title":36,"path":359,"stem":360,"icon":361},"\u002Fextend\u002Foverview","5.extend\u002F0.overview","i-lucide-blocks",{"title":363,"path":364,"stem":365,"icon":366},"Stream","\u002Fextend\u002Fstream","5.extend\u002F1.stream","i-lucide-radio-tower",{"title":368,"path":369,"stem":370,"icon":371},"Custom framework","\u002Fextend\u002Fcustom-framework","5.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":373,"path":374,"stem":375,"icon":376},"FS reader","\u002Fextend\u002Ffs-reader","5.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":345,"path":378,"stem":379,"icon":380},"\u002Fextend\u002Fconsumer-recipes","5.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":382,"path":383,"stem":384,"icon":361},"Plugins","\u002Fextend\u002Fplugins","5.extend\u002F4.plugins",{"title":386,"path":387,"stem":388,"icon":352},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","5.extend\u002F5.custom-enrichers",{"title":390,"path":391,"stem":392,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","5.extend\u002F6.tail-sampling",{"title":394,"path":395,"stem":396,"icon":397},"Identity headers","\u002Fextend\u002Fidentity-headers","5.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":399,"path":400,"stem":401,"icon":402},"Custom drains","\u002Fextend\u002Fcustom-drains","5.extend\u002F8.custom-drains","i-lucide-share-2",{"title":404,"path":405,"stem":406,"icon":407},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","5.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":409,"path":410,"stem":411,"children":412,"page":29},"Reference","\u002Freference","6.reference",[413,418,421,426,430,435],{"title":414,"path":415,"stem":416,"icon":417},"Configuration","\u002Freference\u002Fconfiguration","6.reference\u002F1.configuration","i-lucide-settings",{"title":312,"path":419,"stem":420,"icon":315},"\u002Freference\u002Fperformance","6.reference\u002F2.performance",{"title":422,"path":423,"stem":424,"icon":425},"Vite Plugin","\u002Freference\u002Fvite-plugin","6.reference\u002F3.vite-plugin","i-custom-vite",{"title":427,"path":428,"stem":429,"icon":318},"Best Practices","\u002Freference\u002Fbest-practices","6.reference\u002F4.best-practices",{"title":431,"path":432,"stem":433,"icon":434},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","6.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":436,"path":437,"stem":438,"icon":352},"Agent Skills","\u002Freference\u002Fagent-skills","6.reference\u002F6.agent-skills",{"id":440,"title":172,"body":441,"description":5898,"extension":5899,"links":5900,"meta":5904,"navigation":5905,"path":173,"seo":5906,"stem":174,"__hash__":5907},"docs\u002F3.integrate\u002Fframeworks\u002F02.nextjs.md",{"type":442,"value":443,"toc":5869},"minimark",[444,461,508,512,517,588,592,711,715,863,867,882,928,932,954,972,1060,1172,1176,1189,1193,1200,1426,1437,1440,1478,1501,1504,1536,1581,1587,1658,1733,1737,1743,2569,2572,2575,2953,2956,3036,3043,3062,3238,3242,3260,3729,3738,3864,3867,4018,4022,4035,4336,4349,4352,4368,4374,4577,4581,4584,4809,4814,4817,4830,4915,4928,4932,4937,5084,5088,5095,5283,5286,5292,5534,5538,5544,5675,5678,5762,5766,5808,5816,5826,5830,5836,5865],[445,446,447,448,452,453,456,457,460],"p",{},"evlog integrates with Next.js App Router via a ",[449,450,451],"code",{},"createEvlog()"," factory that provides ",[449,454,455],{},"withEvlog()"," handler wrapper, ",[449,458,459],{},"useLogger()",", and typed exports. One file, zero global state.",[462,463,466,469,494],"prompt",{":actions":464,"description":465,"icon":175},"[\"copy\",\"cursor\",\"windsurf\"]","Set up evlog in my Next.js app",[445,467,468],{},"Set up evlog in my Next.js app with wide events and structured errors.",[470,471,472,476,479,482,485,488,491],"ul",{},[473,474,475],"li",{},"Install evlog: pnpm add evlog",[473,477,478],{},"Create lib\u002Fevlog.ts with createEvlog() to export withEvlog, useLogger, createError",[473,480,481],{},"Set service name and optional sampling\u002Fdrain config",[473,483,484],{},"Wrap API route handlers with withEvlog()",[473,486,487],{},"Use useLogger() inside handlers to build wide events with log.set()",[473,489,490],{},"Throw errors with createError({ message, status, why, fix })",[473,492,493],{},"Wide events are auto-emitted when each request completes",[445,495,496,497,503,504],{},"Docs: ",[498,499,500],"a",{"href":500,"rel":501},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fframeworks\u002Fnextjs",[502],"nofollow","\nAdapters: ",[498,505,506],{"href":506,"rel":507},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fadapters\u002Foverview",[502],[509,510,25],"h2",{"id":511},"quick-start",[513,514,516],"h3",{"id":515},"_1-install","1. Install",[518,519,520,545,559,573],"code-group",{},[521,522,528],"pre",{"className":523,"code":524,"filename":525,"language":526,"meta":527,"style":527},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add evlog\n","pnpm","bash","",[449,529,530],{"__ignoreMap":527},[531,532,535,538,542],"span",{"class":533,"line":534},"line",1,[531,536,525],{"class":537},"sBMFI",[531,539,541],{"class":540},"sfazB"," add",[531,543,544],{"class":540}," evlog\n",[521,546,549],{"className":523,"code":547,"filename":548,"language":526,"meta":527,"style":527},"bun add evlog\n","bun",[449,550,551],{"__ignoreMap":527},[531,552,553,555,557],{"class":533,"line":534},[531,554,548],{"class":537},[531,556,541],{"class":540},[531,558,544],{"class":540},[521,560,563],{"className":523,"code":561,"filename":562,"language":526,"meta":527,"style":527},"yarn add evlog\n","yarn",[449,564,565],{"__ignoreMap":527},[531,566,567,569,571],{"class":533,"line":534},[531,568,562],{"class":537},[531,570,541],{"class":540},[531,572,544],{"class":540},[521,574,577],{"className":523,"code":575,"filename":576,"language":526,"meta":527,"style":527},"npm install evlog\n","npm",[449,578,579],{"__ignoreMap":527},[531,580,581,583,586],{"class":533,"line":534},[531,582,576],{"class":537},[531,584,585],{"class":540}," install",[531,587,544],{"class":540},[513,589,591],{"id":590},"_2-create-your-evlog-instance","2. Create your evlog instance",[521,593,598],{"className":594,"code":595,"filename":596,"language":597,"meta":527,"style":527},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createEvlog } from 'evlog\u002Fnext'\n\nexport const { withEvlog, useLogger, log, createError } = createEvlog({\n  service: 'my-app',\n})\n","lib\u002Fevlog.ts","typescript",[449,599,600,629,636,682,703],{"__ignoreMap":527},[531,601,602,606,610,614,617,620,623,626],{"class":533,"line":534},[531,603,605],{"class":604},"s7zQu","import",[531,607,609],{"class":608},"sMK4o"," {",[531,611,613],{"class":612},"sTEyZ"," createEvlog",[531,615,616],{"class":608}," }",[531,618,619],{"class":604}," from",[531,621,622],{"class":608}," '",[531,624,625],{"class":540},"evlog\u002Fnext",[531,627,628],{"class":608},"'\n",[531,630,632],{"class":533,"line":631},2,[531,633,635],{"emptyLinePlaceholder":634},true,"\n",[531,637,639,642,646,648,651,654,657,659,662,664,667,670,673,676,679],{"class":533,"line":638},3,[531,640,641],{"class":604},"export",[531,643,645],{"class":644},"spNyl"," const",[531,647,609],{"class":608},[531,649,650],{"class":612}," withEvlog",[531,652,653],{"class":608},",",[531,655,656],{"class":612}," useLogger",[531,658,653],{"class":608},[531,660,661],{"class":612}," log",[531,663,653],{"class":608},[531,665,666],{"class":612}," createError ",[531,668,669],{"class":608},"}",[531,671,672],{"class":608}," =",[531,674,613],{"class":675},"s2Zo4",[531,677,678],{"class":612},"(",[531,680,681],{"class":608},"{\n",[531,683,685,689,692,694,697,700],{"class":533,"line":684},4,[531,686,688],{"class":687},"swJcz","  service",[531,690,691],{"class":608},":",[531,693,622],{"class":608},[531,695,696],{"class":540},"my-app",[531,698,699],{"class":608},"'",[531,701,702],{"class":608},",\n",[531,704,706,708],{"class":533,"line":705},5,[531,707,669],{"class":608},[531,709,710],{"class":612},")\n",[513,712,714],{"id":713},"_3-wrap-a-route-handler","3. Wrap a route handler",[521,716,719],{"className":594,"code":717,"filename":718,"language":597,"meta":527,"style":527},"import { withEvlog, useLogger } from '@\u002Flib\u002Fevlog'\n\nexport const GET = withEvlog(async () => {\n  const log = useLogger()\n  log.set({ action: 'hello' })\n  return Response.json({ message: 'Hello!' })\n})\n","app\u002Fapi\u002Fhello\u002Froute.ts",[449,720,721,744,748,776,790,822,856],{"__ignoreMap":527},[531,722,723,725,727,729,731,733,735,737,739,742],{"class":533,"line":534},[531,724,605],{"class":604},[531,726,609],{"class":608},[531,728,650],{"class":612},[531,730,653],{"class":608},[531,732,656],{"class":612},[531,734,616],{"class":608},[531,736,619],{"class":604},[531,738,622],{"class":608},[531,740,741],{"class":540},"@\u002Flib\u002Fevlog",[531,743,628],{"class":608},[531,745,746],{"class":533,"line":631},[531,747,635],{"emptyLinePlaceholder":634},[531,749,750,752,754,757,760,762,764,767,770,773],{"class":533,"line":638},[531,751,641],{"class":604},[531,753,645],{"class":644},[531,755,756],{"class":612}," GET ",[531,758,759],{"class":608},"=",[531,761,650],{"class":675},[531,763,678],{"class":612},[531,765,766],{"class":644},"async",[531,768,769],{"class":608}," ()",[531,771,772],{"class":644}," =>",[531,774,775],{"class":608}," {\n",[531,777,778,781,783,785,787],{"class":533,"line":684},[531,779,780],{"class":644},"  const",[531,782,661],{"class":612},[531,784,672],{"class":608},[531,786,656],{"class":675},[531,788,789],{"class":687},"()\n",[531,791,792,795,798,801,803,806,809,811,813,816,818,820],{"class":533,"line":705},[531,793,794],{"class":612},"  log",[531,796,797],{"class":608},".",[531,799,800],{"class":675},"set",[531,802,678],{"class":687},[531,804,805],{"class":608},"{",[531,807,808],{"class":687}," action",[531,810,691],{"class":608},[531,812,622],{"class":608},[531,814,815],{"class":540},"hello",[531,817,699],{"class":608},[531,819,616],{"class":608},[531,821,710],{"class":687},[531,823,825,828,831,833,836,838,840,843,845,847,850,852,854],{"class":533,"line":824},6,[531,826,827],{"class":604},"  return",[531,829,830],{"class":612}," Response",[531,832,797],{"class":608},[531,834,835],{"class":675},"json",[531,837,678],{"class":687},[531,839,805],{"class":608},[531,841,842],{"class":687}," message",[531,844,691],{"class":608},[531,846,622],{"class":608},[531,848,849],{"class":540},"Hello!",[531,851,699],{"class":608},[531,853,616],{"class":608},[531,855,710],{"class":687},[531,857,859,861],{"class":533,"line":858},7,[531,860,669],{"class":608},[531,862,710],{"class":612},[509,864,866],{"id":865},"instrumentation","Instrumentation",[445,868,869,870,877,878,881],{},"Next.js supports an ",[498,871,874],{"href":872,"rel":873},"https:\u002F\u002Fnextjs.org\u002Fdocs\u002Fapp\u002Fguides\u002Finstrumentation",[502],[449,875,876],{},"instrumentation.ts"," file at the project root for server startup hooks and error reporting. evlog provides ",[449,879,880],{},"createInstrumentation()"," to integrate with this pattern.",[883,884,886,889],"callout",{"color":885,"icon":13},"info",[445,887,888],{},"These two APIs serve different purposes and can be used independently or together:",[470,890,891,901,916],{},[473,892,893,898,899],{},[894,895,896],"strong",{},[449,897,451],{},": per-request wide events via ",[449,900,455],{},[473,902,903,907,908,911,912,915],{},[894,904,905],{},[449,906,880],{},": server startup (",[449,909,910],{},"register()",") + unhandled error reporting (",[449,913,914],{},"onRequestError()",") across all routes, including SSR and RSC",[473,917,918,919,921,922,924,925,797],{},"Both can coexist: ",[449,920,910],{}," initializes and locks the logger first, so ",[449,923,451],{}," respects it. Each can have its own ",[449,926,927],{},"drain",[513,929,931],{"id":930},"_1-split-instrumentation-from-route-config","1. Split instrumentation from route config",[445,933,934,935,938,939,941,942,945,946,949,950,953],{},"Keep Node-only imports (",[449,936,937],{},"evlog\u002Ffs",", heavy adapters) out of root ",[449,940,876],{},". Use ",[449,943,944],{},"defineNodeInstrumentation"," with an options object — evlog loads ",[449,947,948],{},"createInstrumentation"," on Node.js only, without a visible ",[449,951,952],{},"import()"," in your file.",[470,955,956,965],{},[473,957,958,959,961,962],{},"Root ",[449,960,876],{}," → ",[449,963,964],{},"defineNodeInstrumentation({ service, ... })",[473,966,967,961,969,971],{},[449,968,596],{},[449,970,451],{}," and Node-only drains for API routes",[521,973,975],{"className":594,"code":974,"filename":876,"language":597,"meta":527,"style":527},"import { defineNodeInstrumentation } from 'evlog\u002Fnext\u002Finstrumentation'\n\nexport const { register, onRequestError } = defineNodeInstrumentation({\n  service: 'my-app',\n  captureOutput: true,\n})\n",[449,976,977,997,1001,1027,1041,1054],{"__ignoreMap":527},[531,978,979,981,983,986,988,990,992,995],{"class":533,"line":534},[531,980,605],{"class":604},[531,982,609],{"class":608},[531,984,985],{"class":612}," defineNodeInstrumentation",[531,987,616],{"class":608},[531,989,619],{"class":604},[531,991,622],{"class":608},[531,993,994],{"class":540},"evlog\u002Fnext\u002Finstrumentation",[531,996,628],{"class":608},[531,998,999],{"class":533,"line":631},[531,1000,635],{"emptyLinePlaceholder":634},[531,1002,1003,1005,1007,1009,1012,1014,1017,1019,1021,1023,1025],{"class":533,"line":638},[531,1004,641],{"class":604},[531,1006,645],{"class":644},[531,1008,609],{"class":608},[531,1010,1011],{"class":612}," register",[531,1013,653],{"class":608},[531,1015,1016],{"class":612}," onRequestError ",[531,1018,669],{"class":608},[531,1020,672],{"class":608},[531,1022,985],{"class":675},[531,1024,678],{"class":612},[531,1026,681],{"class":608},[531,1028,1029,1031,1033,1035,1037,1039],{"class":533,"line":684},[531,1030,688],{"class":687},[531,1032,691],{"class":608},[531,1034,622],{"class":608},[531,1036,696],{"class":540},[531,1038,699],{"class":608},[531,1040,702],{"class":608},[531,1042,1043,1046,1048,1052],{"class":533,"line":705},[531,1044,1045],{"class":687},"  captureOutput",[531,1047,691],{"class":608},[531,1049,1051],{"class":1050},"sfNiH"," true",[531,1053,702],{"class":608},[531,1055,1056,1058],{"class":533,"line":824},[531,1057,669],{"class":608},[531,1059,710],{"class":612},[521,1061,1063],{"className":594,"code":1062,"filename":596,"language":597,"meta":527,"style":527},"import { createEvlog } from 'evlog\u002Fnext'\nimport { createFsDrain } from 'evlog\u002Ffs'\n\nexport const { withEvlog, useLogger, log, createError } = createEvlog({\n  service: 'my-app',\n  drain: createFsDrain(),\n})\n",[449,1064,1065,1083,1102,1106,1138,1152,1166],{"__ignoreMap":527},[531,1066,1067,1069,1071,1073,1075,1077,1079,1081],{"class":533,"line":534},[531,1068,605],{"class":604},[531,1070,609],{"class":608},[531,1072,613],{"class":612},[531,1074,616],{"class":608},[531,1076,619],{"class":604},[531,1078,622],{"class":608},[531,1080,625],{"class":540},[531,1082,628],{"class":608},[531,1084,1085,1087,1089,1092,1094,1096,1098,1100],{"class":533,"line":631},[531,1086,605],{"class":604},[531,1088,609],{"class":608},[531,1090,1091],{"class":612}," createFsDrain",[531,1093,616],{"class":608},[531,1095,619],{"class":604},[531,1097,622],{"class":608},[531,1099,937],{"class":540},[531,1101,628],{"class":608},[531,1103,1104],{"class":533,"line":638},[531,1105,635],{"emptyLinePlaceholder":634},[531,1107,1108,1110,1112,1114,1116,1118,1120,1122,1124,1126,1128,1130,1132,1134,1136],{"class":533,"line":684},[531,1109,641],{"class":604},[531,1111,645],{"class":644},[531,1113,609],{"class":608},[531,1115,650],{"class":612},[531,1117,653],{"class":608},[531,1119,656],{"class":612},[531,1121,653],{"class":608},[531,1123,661],{"class":612},[531,1125,653],{"class":608},[531,1127,666],{"class":612},[531,1129,669],{"class":608},[531,1131,672],{"class":608},[531,1133,613],{"class":675},[531,1135,678],{"class":612},[531,1137,681],{"class":608},[531,1139,1140,1142,1144,1146,1148,1150],{"class":533,"line":705},[531,1141,688],{"class":687},[531,1143,691],{"class":608},[531,1145,622],{"class":608},[531,1147,696],{"class":540},[531,1149,699],{"class":608},[531,1151,702],{"class":608},[531,1153,1154,1157,1159,1161,1164],{"class":533,"line":824},[531,1155,1156],{"class":687},"  drain",[531,1158,691],{"class":608},[531,1160,1091],{"class":675},[531,1162,1163],{"class":612},"()",[531,1165,702],{"class":608},[531,1167,1168,1170],{"class":533,"line":858},[531,1169,669],{"class":608},[531,1171,710],{"class":612},[513,1173,1175],{"id":1174},"_2-wire-up-instrumentationts","2. Wire up instrumentation.ts",[445,1177,1178,1179,1181,1182,1184,1185,1188],{},"Next.js evaluates ",[449,1180,876],{}," in both Node.js and Edge runtimes. ",[449,1183,944],{}," gates on ",[449,1186,1187],{},"NEXT_RUNTIME === 'nodejs'"," and loads the Node-only factory internally.",[513,1190,1192],{"id":1191},"custom-behavior-evlog-your-code","Custom behavior (evlog + your code)",[445,1194,1195,1196,1199],{},"Pass a ",[894,1197,1198],{},"loader callback"," when you need extra startup work alongside evlog:",[521,1201,1203],{"className":594,"code":1202,"filename":876,"language":597,"meta":527,"style":527},"import { defineNodeInstrumentation } from 'evlog\u002Fnext\u002Finstrumentation'\n\nexport const { register, onRequestError } = defineNodeInstrumentation(async () => {\n  const { createInstrumentation } = await import('evlog\u002Fnext\u002Finstrumentation\u002Fcreate')\n  const { register: evlogRegister, onRequestError: evlogOnRequestError } = createInstrumentation({\n    service: 'my-app',\n    captureOutput: true,\n  })\n\n  return {\n    async register() {\n      await evlogRegister()\n      \u002F\u002F e.g. OpenTelemetry, feature flags, custom one-off init\n    },\n    onRequestError: evlogOnRequestError,\n  }\n})\n",[449,1204,1205,1223,1227,1257,1287,1320,1335,1346,1354,1359,1366,1378,1388,1395,1401,1413,1419],{"__ignoreMap":527},[531,1206,1207,1209,1211,1213,1215,1217,1219,1221],{"class":533,"line":534},[531,1208,605],{"class":604},[531,1210,609],{"class":608},[531,1212,985],{"class":612},[531,1214,616],{"class":608},[531,1216,619],{"class":604},[531,1218,622],{"class":608},[531,1220,994],{"class":540},[531,1222,628],{"class":608},[531,1224,1225],{"class":533,"line":631},[531,1226,635],{"emptyLinePlaceholder":634},[531,1228,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255],{"class":533,"line":638},[531,1230,641],{"class":604},[531,1232,645],{"class":644},[531,1234,609],{"class":608},[531,1236,1011],{"class":612},[531,1238,653],{"class":608},[531,1240,1016],{"class":612},[531,1242,669],{"class":608},[531,1244,672],{"class":608},[531,1246,985],{"class":675},[531,1248,678],{"class":612},[531,1250,766],{"class":644},[531,1252,769],{"class":608},[531,1254,772],{"class":644},[531,1256,775],{"class":608},[531,1258,1259,1261,1263,1266,1268,1270,1273,1276,1278,1280,1283,1285],{"class":533,"line":684},[531,1260,780],{"class":644},[531,1262,609],{"class":608},[531,1264,1265],{"class":612}," createInstrumentation",[531,1267,616],{"class":608},[531,1269,672],{"class":608},[531,1271,1272],{"class":604}," await",[531,1274,1275],{"class":608}," import",[531,1277,678],{"class":687},[531,1279,699],{"class":608},[531,1281,1282],{"class":540},"evlog\u002Fnext\u002Finstrumentation\u002Fcreate",[531,1284,699],{"class":608},[531,1286,710],{"class":687},[531,1288,1289,1291,1293,1295,1297,1300,1302,1305,1307,1310,1312,1314,1316,1318],{"class":533,"line":705},[531,1290,780],{"class":644},[531,1292,609],{"class":608},[531,1294,1011],{"class":687},[531,1296,691],{"class":608},[531,1298,1299],{"class":612}," evlogRegister",[531,1301,653],{"class":608},[531,1303,1304],{"class":687}," onRequestError",[531,1306,691],{"class":608},[531,1308,1309],{"class":612}," evlogOnRequestError",[531,1311,616],{"class":608},[531,1313,672],{"class":608},[531,1315,1265],{"class":675},[531,1317,678],{"class":687},[531,1319,681],{"class":608},[531,1321,1322,1325,1327,1329,1331,1333],{"class":533,"line":824},[531,1323,1324],{"class":687},"    service",[531,1326,691],{"class":608},[531,1328,622],{"class":608},[531,1330,696],{"class":540},[531,1332,699],{"class":608},[531,1334,702],{"class":608},[531,1336,1337,1340,1342,1344],{"class":533,"line":858},[531,1338,1339],{"class":687},"    captureOutput",[531,1341,691],{"class":608},[531,1343,1051],{"class":1050},[531,1345,702],{"class":608},[531,1347,1349,1352],{"class":533,"line":1348},8,[531,1350,1351],{"class":608},"  }",[531,1353,710],{"class":687},[531,1355,1357],{"class":533,"line":1356},9,[531,1358,635],{"emptyLinePlaceholder":634},[531,1360,1362,1364],{"class":533,"line":1361},10,[531,1363,827],{"class":604},[531,1365,775],{"class":608},[531,1367,1369,1372,1374,1376],{"class":533,"line":1368},11,[531,1370,1371],{"class":644},"    async",[531,1373,1011],{"class":687},[531,1375,1163],{"class":608},[531,1377,775],{"class":608},[531,1379,1381,1384,1386],{"class":533,"line":1380},12,[531,1382,1383],{"class":604},"      await",[531,1385,1299],{"class":675},[531,1387,789],{"class":687},[531,1389,1391],{"class":533,"line":1390},13,[531,1392,1394],{"class":1393},"sHwdD","      \u002F\u002F e.g. OpenTelemetry, feature flags, custom one-off init\n",[531,1396,1398],{"class":533,"line":1397},14,[531,1399,1400],{"class":608},"    },\n",[531,1402,1404,1407,1409,1411],{"class":533,"line":1403},15,[531,1405,1406],{"class":687},"    onRequestError",[531,1408,691],{"class":608},[531,1410,1309],{"class":612},[531,1412,702],{"class":608},[531,1414,1416],{"class":533,"line":1415},16,[531,1417,1418],{"class":608},"  }\n",[531,1420,1422,1424],{"class":533,"line":1421},17,[531,1423,669],{"class":608},[531,1425,710],{"class":612},[445,1427,1428,1429,1431,1432,1434,1435,797],{},"Keep ",[449,1430,596],{}," for ",[449,1433,451],{}," and Node-only drains. Route handlers import ",[449,1436,741],{},[445,1438,1439],{},"Next.js automatically calls these exports:",[470,1441,1442,1459],{},[473,1443,1444,1446,1447,1450,1451,1454,1455,1458],{},[449,1445,910],{},": Runs once when the server starts. Initializes the evlog logger with your configured drain, sampling, and options. When ",[449,1448,1449],{},"captureOutput"," is enabled, ",[449,1452,1453],{},"stdout"," and ",[449,1456,1457],{},"stderr"," writes are captured as structured log events.",[473,1460,1461,1463,1464,1467,1468,1467,1471,1467,1474,1477],{},[449,1462,914],{},": Called on every unhandled request error. Emits a structured error log with the error message, digest, stack trace, request path\u002Fmethod, and routing context (",[449,1465,1466],{},"routerKind",", ",[449,1469,1470],{},"routePath",[449,1472,1473],{},"routeType",[449,1475,1476],{},"renderSource",").",[883,1479,1480,1482,1483,1485,1486,1454,1489,1492,1493,1496,1497,1500],{"color":885,"icon":13},[449,1481,1449],{}," only activates in the Node.js runtime (",[449,1484,1187],{},"). It patches ",[449,1487,1488],{},"process.stdout.write",[449,1490,1491],{},"process.stderr.write"," to emit structured ",[449,1494,1495],{},"log.info"," \u002F ",[449,1498,1499],{},"log.error"," events alongside the original output. Known Next.js Edge bundler warnings are filtered by default so they are not re-emitted as evlog errors.",[513,1502,414],{"id":1503},"configuration",[445,1505,1506,1454,1509,1511,1512,1467,1515,1467,1518,1467,1521,1467,1524,1467,1527,1467,1530,1467,1533,1535],{},[449,1507,1508],{},"defineNodeInstrumentation()",[449,1510,880],{}," accept global logger options (",[449,1513,1514],{},"enabled",[449,1516,1517],{},"service",[449,1519,1520],{},"env",[449,1522,1523],{},"pretty",[449,1525,1526],{},"silent",[449,1528,1529],{},"sampling",[449,1531,1532],{},"stringify",[449,1534,927],{},") plus:",[1537,1538,1539,1558],"table",{},[1540,1541,1542],"thead",{},[1543,1544,1545,1549,1552,1555],"tr",{},[1546,1547,1548],"th",{},"Option",[1546,1550,1551],{},"Type",[1546,1553,1554],{},"Default",[1546,1556,1557],{},"Description",[1559,1560,1561],"tbody",{},[1543,1562,1563,1568,1573,1578],{},[1564,1565,1566],"td",{},[449,1567,1449],{},[1564,1569,1570],{},[449,1571,1572],{},"boolean | CaptureOutputOptions",[1564,1574,1575],{},[449,1576,1577],{},"false",[1564,1579,1580],{},"Capture stdout\u002Fstderr as structured log events",[445,1582,1583,1586],{},[449,1584,1585],{},"CaptureOutputOptions"," fields:",[1537,1588,1589,1602],{},[1540,1590,1591],{},[1543,1592,1593,1596,1598,1600],{},[1546,1594,1595],{},"Field",[1546,1597,1551],{},[1546,1599,1554],{},[1546,1601,1557],{},[1559,1603,1604,1623,1640],{},[1543,1605,1606,1610,1615,1620],{},[1564,1607,1608],{},[449,1609,1453],{},[1564,1611,1612],{},[449,1613,1614],{},"boolean",[1564,1616,1617],{},[449,1618,1619],{},"true",[1564,1621,1622],{},"Capture stdout writes",[1543,1624,1625,1629,1633,1637],{},[1564,1626,1627],{},[449,1628,1457],{},[1564,1630,1631],{},[449,1632,1614],{},[1564,1634,1635],{},[449,1636,1619],{},[1564,1638,1639],{},"Capture stderr writes",[1543,1641,1642,1647,1652,1655],{},[1564,1643,1644],{},[449,1645,1646],{},"ignore",[1564,1648,1649],{},[449,1650,1651],{},"(string | RegExp)[]",[1564,1653,1654],{},"Next.js Edge bundler warnings",[1564,1656,1657],{},"Skip re-emitting matching chunks as log events",[521,1659,1661],{"className":594,"code":1660,"filename":876,"language":597,"meta":527,"style":527},"defineNodeInstrumentation({\n  captureOutput: {\n    stderr: true,\n    ignore: [\u002Fmy-noisy-dep\u002F, 'benign warning'],\n  },\n})\n",[449,1662,1663,1671,1679,1690,1722,1727],{"__ignoreMap":527},[531,1664,1665,1667,1669],{"class":533,"line":534},[531,1666,944],{"class":675},[531,1668,678],{"class":612},[531,1670,681],{"class":608},[531,1672,1673,1675,1677],{"class":533,"line":631},[531,1674,1045],{"class":687},[531,1676,691],{"class":608},[531,1678,775],{"class":608},[531,1680,1681,1684,1686,1688],{"class":533,"line":638},[531,1682,1683],{"class":687},"    stderr",[531,1685,691],{"class":608},[531,1687,1051],{"class":1050},[531,1689,702],{"class":608},[531,1691,1692,1695,1697,1700,1703,1706,1708,1710,1712,1715,1717,1720],{"class":533,"line":684},[531,1693,1694],{"class":687},"    ignore",[531,1696,691],{"class":608},[531,1698,1699],{"class":612}," [",[531,1701,1702],{"class":608},"\u002F",[531,1704,1705],{"class":540},"my-noisy-dep",[531,1707,1702],{"class":608},[531,1709,653],{"class":608},[531,1711,622],{"class":608},[531,1713,1714],{"class":540},"benign warning",[531,1716,699],{"class":608},[531,1718,1719],{"class":612},"]",[531,1721,702],{"class":608},[531,1723,1724],{"class":533,"line":705},[531,1725,1726],{"class":608},"  },\n",[531,1728,1729,1731],{"class":533,"line":824},[531,1730,669],{"class":608},[531,1732,710],{"class":612},[509,1734,1736],{"id":1735},"production-configuration","Production Configuration",[445,1738,1739,1740,1742],{},"A real-world ",[449,1741,596],{}," with enrichers, batched drain, tail sampling, and route-based service names:",[521,1744,1746],{"className":594,"code":1745,"filename":596,"language":597,"meta":527,"style":527},"import type { DrainContext } from 'evlog'\nimport { createEvlog } from 'evlog\u002Fnext'\nimport { createUserAgentEnricher, createRequestSizeEnricher } from 'evlog\u002Fenrichers'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createDrainPipeline } from 'evlog\u002Fpipeline'\n\n\u002F\u002F 1. Enrichers - add derived context to every event\nconst enrichers = [createUserAgentEnricher(), createRequestSizeEnricher()]\n\n\u002F\u002F 2. Pipeline - batch events before sending\nconst pipeline = createDrainPipeline\u003CDrainContext>({ batch: { size: 50, intervalMs: 5000 } })\n\n\u002F\u002F 3. Drain - send batched events to Axiom\nconst drain = pipeline(createAxiomDrain({\n  dataset: 'logs',\n  apiKey: process.env.AXIOM_API_KEY!,\n}))\n\nexport const { withEvlog, useLogger, log, createError } = createEvlog({\n  service: 'my-app',\n\n  \u002F\u002F 4. Head sampling - keep 10% of info logs\n  sampling: {\n    rates: { info: 10 },\n    keep: [\n      { status: 400 },              \u002F\u002F Always keep errors\n      { duration: 1000 },           \u002F\u002F Always keep slow requests\n      { path: '\u002Fapi\u002Fcritical\u002F**' }, \u002F\u002F Always keep critical paths\n    ],\n  },\n\n  \u002F\u002F 5. Route-based service names\n  routes: {\n    '\u002Fapi\u002Fauth\u002F**': { service: 'auth-service' },\n    '\u002Fapi\u002Fpayment\u002F**': { service: 'payment-service' },\n    '\u002Fapi\u002Fbooking\u002F**': { service: 'booking-service' },\n  },\n\n  \u002F\u002F 6. Custom tail sampling - business logic\n  keep: (ctx) => {\n    const user = ctx.context.user as { premium?: boolean } | undefined\n    if (user?.premium) ctx.shouldKeep = true\n  },\n\n  \u002F\u002F 7. Enrich every event with user agent, request size, and deployment info\n  enrich: (ctx) => {\n    for (const enricher of enrichers) enricher(ctx)\n    ctx.event.deploymentId = process.env.VERCEL_DEPLOYMENT_ID\n    ctx.event.region = process.env.VERCEL_REGION\n  },\n\n  drain,\n})\n",[449,1747,1748,1771,1789,1814,1834,1854,1858,1863,1887,1891,1896,1952,1956,1961,1982,1998,2020,2027,2032,2065,2080,2085,2091,2101,2122,2133,2153,2171,2193,2201,2206,2211,2217,2227,2256,2283,2310,2315,2320,2326,2348,2394,2425,2430,2435,2441,2459,2489,2518,2545,2550,2555,2562],{"__ignoreMap":527},[531,1749,1750,1752,1755,1757,1760,1762,1764,1766,1769],{"class":533,"line":534},[531,1751,605],{"class":604},[531,1753,1754],{"class":604}," type",[531,1756,609],{"class":608},[531,1758,1759],{"class":612}," DrainContext",[531,1761,616],{"class":608},[531,1763,619],{"class":604},[531,1765,622],{"class":608},[531,1767,1768],{"class":540},"evlog",[531,1770,628],{"class":608},[531,1772,1773,1775,1777,1779,1781,1783,1785,1787],{"class":533,"line":631},[531,1774,605],{"class":604},[531,1776,609],{"class":608},[531,1778,613],{"class":612},[531,1780,616],{"class":608},[531,1782,619],{"class":604},[531,1784,622],{"class":608},[531,1786,625],{"class":540},[531,1788,628],{"class":608},[531,1790,1791,1793,1795,1798,1800,1803,1805,1807,1809,1812],{"class":533,"line":638},[531,1792,605],{"class":604},[531,1794,609],{"class":608},[531,1796,1797],{"class":612}," createUserAgentEnricher",[531,1799,653],{"class":608},[531,1801,1802],{"class":612}," createRequestSizeEnricher",[531,1804,616],{"class":608},[531,1806,619],{"class":604},[531,1808,622],{"class":608},[531,1810,1811],{"class":540},"evlog\u002Fenrichers",[531,1813,628],{"class":608},[531,1815,1816,1818,1820,1823,1825,1827,1829,1832],{"class":533,"line":684},[531,1817,605],{"class":604},[531,1819,609],{"class":608},[531,1821,1822],{"class":612}," createAxiomDrain",[531,1824,616],{"class":608},[531,1826,619],{"class":604},[531,1828,622],{"class":608},[531,1830,1831],{"class":540},"evlog\u002Faxiom",[531,1833,628],{"class":608},[531,1835,1836,1838,1840,1843,1845,1847,1849,1852],{"class":533,"line":705},[531,1837,605],{"class":604},[531,1839,609],{"class":608},[531,1841,1842],{"class":612}," createDrainPipeline",[531,1844,616],{"class":608},[531,1846,619],{"class":604},[531,1848,622],{"class":608},[531,1850,1851],{"class":540},"evlog\u002Fpipeline",[531,1853,628],{"class":608},[531,1855,1856],{"class":533,"line":824},[531,1857,635],{"emptyLinePlaceholder":634},[531,1859,1860],{"class":533,"line":858},[531,1861,1862],{"class":1393},"\u002F\u002F 1. Enrichers - add derived context to every event\n",[531,1864,1865,1868,1871,1873,1875,1878,1880,1882,1884],{"class":533,"line":1348},[531,1866,1867],{"class":644},"const",[531,1869,1870],{"class":612}," enrichers ",[531,1872,759],{"class":608},[531,1874,1699],{"class":612},[531,1876,1877],{"class":675},"createUserAgentEnricher",[531,1879,1163],{"class":612},[531,1881,653],{"class":608},[531,1883,1802],{"class":675},[531,1885,1886],{"class":612},"()]\n",[531,1888,1889],{"class":533,"line":1356},[531,1890,635],{"emptyLinePlaceholder":634},[531,1892,1893],{"class":533,"line":1361},[531,1894,1895],{"class":1393},"\u002F\u002F 2. Pipeline - batch events before sending\n",[531,1897,1898,1900,1903,1905,1907,1910,1913,1916,1918,1920,1923,1925,1927,1930,1932,1936,1938,1941,1943,1946,1948,1950],{"class":533,"line":1368},[531,1899,1867],{"class":644},[531,1901,1902],{"class":612}," pipeline ",[531,1904,759],{"class":608},[531,1906,1842],{"class":675},[531,1908,1909],{"class":608},"\u003C",[531,1911,1912],{"class":537},"DrainContext",[531,1914,1915],{"class":608},">",[531,1917,678],{"class":612},[531,1919,805],{"class":608},[531,1921,1922],{"class":687}," batch",[531,1924,691],{"class":608},[531,1926,609],{"class":608},[531,1928,1929],{"class":687}," size",[531,1931,691],{"class":608},[531,1933,1935],{"class":1934},"sbssI"," 50",[531,1937,653],{"class":608},[531,1939,1940],{"class":687}," intervalMs",[531,1942,691],{"class":608},[531,1944,1945],{"class":1934}," 5000",[531,1947,616],{"class":608},[531,1949,616],{"class":608},[531,1951,710],{"class":612},[531,1953,1954],{"class":533,"line":1380},[531,1955,635],{"emptyLinePlaceholder":634},[531,1957,1958],{"class":533,"line":1390},[531,1959,1960],{"class":1393},"\u002F\u002F 3. Drain - send batched events to Axiom\n",[531,1962,1963,1965,1968,1970,1973,1975,1978,1980],{"class":533,"line":1397},[531,1964,1867],{"class":644},[531,1966,1967],{"class":612}," drain ",[531,1969,759],{"class":608},[531,1971,1972],{"class":675}," pipeline",[531,1974,678],{"class":612},[531,1976,1977],{"class":675},"createAxiomDrain",[531,1979,678],{"class":612},[531,1981,681],{"class":608},[531,1983,1984,1987,1989,1991,1994,1996],{"class":533,"line":1403},[531,1985,1986],{"class":687},"  dataset",[531,1988,691],{"class":608},[531,1990,622],{"class":608},[531,1992,1993],{"class":540},"logs",[531,1995,699],{"class":608},[531,1997,702],{"class":608},[531,1999,2000,2003,2005,2008,2010,2012,2014,2017],{"class":533,"line":1415},[531,2001,2002],{"class":687},"  apiKey",[531,2004,691],{"class":608},[531,2006,2007],{"class":612}," process",[531,2009,797],{"class":608},[531,2011,1520],{"class":612},[531,2013,797],{"class":608},[531,2015,2016],{"class":612},"AXIOM_API_KEY",[531,2018,2019],{"class":608},"!,\n",[531,2021,2022,2024],{"class":533,"line":1421},[531,2023,669],{"class":608},[531,2025,2026],{"class":612},"))\n",[531,2028,2030],{"class":533,"line":2029},18,[531,2031,635],{"emptyLinePlaceholder":634},[531,2033,2035,2037,2039,2041,2043,2045,2047,2049,2051,2053,2055,2057,2059,2061,2063],{"class":533,"line":2034},19,[531,2036,641],{"class":604},[531,2038,645],{"class":644},[531,2040,609],{"class":608},[531,2042,650],{"class":612},[531,2044,653],{"class":608},[531,2046,656],{"class":612},[531,2048,653],{"class":608},[531,2050,661],{"class":612},[531,2052,653],{"class":608},[531,2054,666],{"class":612},[531,2056,669],{"class":608},[531,2058,672],{"class":608},[531,2060,613],{"class":675},[531,2062,678],{"class":612},[531,2064,681],{"class":608},[531,2066,2068,2070,2072,2074,2076,2078],{"class":533,"line":2067},20,[531,2069,688],{"class":687},[531,2071,691],{"class":608},[531,2073,622],{"class":608},[531,2075,696],{"class":540},[531,2077,699],{"class":608},[531,2079,702],{"class":608},[531,2081,2083],{"class":533,"line":2082},21,[531,2084,635],{"emptyLinePlaceholder":634},[531,2086,2088],{"class":533,"line":2087},22,[531,2089,2090],{"class":1393},"  \u002F\u002F 4. Head sampling - keep 10% of info logs\n",[531,2092,2094,2097,2099],{"class":533,"line":2093},23,[531,2095,2096],{"class":687},"  sampling",[531,2098,691],{"class":608},[531,2100,775],{"class":608},[531,2102,2104,2107,2109,2111,2114,2116,2119],{"class":533,"line":2103},24,[531,2105,2106],{"class":687},"    rates",[531,2108,691],{"class":608},[531,2110,609],{"class":608},[531,2112,2113],{"class":687}," info",[531,2115,691],{"class":608},[531,2117,2118],{"class":1934}," 10",[531,2120,2121],{"class":608}," },\n",[531,2123,2125,2128,2130],{"class":533,"line":2124},25,[531,2126,2127],{"class":687},"    keep",[531,2129,691],{"class":608},[531,2131,2132],{"class":612}," [\n",[531,2134,2136,2139,2142,2144,2147,2150],{"class":533,"line":2135},26,[531,2137,2138],{"class":608},"      {",[531,2140,2141],{"class":687}," status",[531,2143,691],{"class":608},[531,2145,2146],{"class":1934}," 400",[531,2148,2149],{"class":608}," },",[531,2151,2152],{"class":1393},"              \u002F\u002F Always keep errors\n",[531,2154,2156,2158,2161,2163,2166,2168],{"class":533,"line":2155},27,[531,2157,2138],{"class":608},[531,2159,2160],{"class":687}," duration",[531,2162,691],{"class":608},[531,2164,2165],{"class":1934}," 1000",[531,2167,2149],{"class":608},[531,2169,2170],{"class":1393},"           \u002F\u002F Always keep slow requests\n",[531,2172,2174,2176,2179,2181,2183,2186,2188,2190],{"class":533,"line":2173},28,[531,2175,2138],{"class":608},[531,2177,2178],{"class":687}," path",[531,2180,691],{"class":608},[531,2182,622],{"class":608},[531,2184,2185],{"class":540},"\u002Fapi\u002Fcritical\u002F**",[531,2187,699],{"class":608},[531,2189,2149],{"class":608},[531,2191,2192],{"class":1393}," \u002F\u002F Always keep critical paths\n",[531,2194,2196,2199],{"class":533,"line":2195},29,[531,2197,2198],{"class":612},"    ]",[531,2200,702],{"class":608},[531,2202,2204],{"class":533,"line":2203},30,[531,2205,1726],{"class":608},[531,2207,2209],{"class":533,"line":2208},31,[531,2210,635],{"emptyLinePlaceholder":634},[531,2212,2214],{"class":533,"line":2213},32,[531,2215,2216],{"class":1393},"  \u002F\u002F 5. Route-based service names\n",[531,2218,2220,2223,2225],{"class":533,"line":2219},33,[531,2221,2222],{"class":687},"  routes",[531,2224,691],{"class":608},[531,2226,775],{"class":608},[531,2228,2230,2233,2236,2238,2240,2242,2245,2247,2249,2252,2254],{"class":533,"line":2229},34,[531,2231,2232],{"class":608},"    '",[531,2234,2235],{"class":687},"\u002Fapi\u002Fauth\u002F**",[531,2237,699],{"class":608},[531,2239,691],{"class":608},[531,2241,609],{"class":608},[531,2243,2244],{"class":687}," service",[531,2246,691],{"class":608},[531,2248,622],{"class":608},[531,2250,2251],{"class":540},"auth-service",[531,2253,699],{"class":608},[531,2255,2121],{"class":608},[531,2257,2259,2261,2264,2266,2268,2270,2272,2274,2276,2279,2281],{"class":533,"line":2258},35,[531,2260,2232],{"class":608},[531,2262,2263],{"class":687},"\u002Fapi\u002Fpayment\u002F**",[531,2265,699],{"class":608},[531,2267,691],{"class":608},[531,2269,609],{"class":608},[531,2271,2244],{"class":687},[531,2273,691],{"class":608},[531,2275,622],{"class":608},[531,2277,2278],{"class":540},"payment-service",[531,2280,699],{"class":608},[531,2282,2121],{"class":608},[531,2284,2286,2288,2291,2293,2295,2297,2299,2301,2303,2306,2308],{"class":533,"line":2285},36,[531,2287,2232],{"class":608},[531,2289,2290],{"class":687},"\u002Fapi\u002Fbooking\u002F**",[531,2292,699],{"class":608},[531,2294,691],{"class":608},[531,2296,609],{"class":608},[531,2298,2244],{"class":687},[531,2300,691],{"class":608},[531,2302,622],{"class":608},[531,2304,2305],{"class":540},"booking-service",[531,2307,699],{"class":608},[531,2309,2121],{"class":608},[531,2311,2313],{"class":533,"line":2312},37,[531,2314,1726],{"class":608},[531,2316,2318],{"class":533,"line":2317},38,[531,2319,635],{"emptyLinePlaceholder":634},[531,2321,2323],{"class":533,"line":2322},39,[531,2324,2325],{"class":1393},"  \u002F\u002F 6. Custom tail sampling - business logic\n",[531,2327,2329,2332,2334,2337,2341,2344,2346],{"class":533,"line":2328},40,[531,2330,2331],{"class":675},"  keep",[531,2333,691],{"class":608},[531,2335,2336],{"class":608}," (",[531,2338,2340],{"class":2339},"sHdIc","ctx",[531,2342,2343],{"class":608},")",[531,2345,772],{"class":644},[531,2347,775],{"class":608},[531,2349,2351,2354,2357,2359,2362,2364,2367,2369,2372,2375,2377,2380,2383,2386,2388,2391],{"class":533,"line":2350},41,[531,2352,2353],{"class":644},"    const",[531,2355,2356],{"class":612}," user",[531,2358,672],{"class":608},[531,2360,2361],{"class":612}," ctx",[531,2363,797],{"class":608},[531,2365,2366],{"class":612},"context",[531,2368,797],{"class":608},[531,2370,2371],{"class":612},"user",[531,2373,2374],{"class":604}," as",[531,2376,609],{"class":608},[531,2378,2379],{"class":687}," premium",[531,2381,2382],{"class":608},"?:",[531,2384,2385],{"class":537}," boolean",[531,2387,616],{"class":608},[531,2389,2390],{"class":608}," |",[531,2392,2393],{"class":537}," undefined\n",[531,2395,2397,2400,2402,2404,2407,2410,2413,2415,2417,2420,2422],{"class":533,"line":2396},42,[531,2398,2399],{"class":604},"    if",[531,2401,2336],{"class":687},[531,2403,2371],{"class":612},[531,2405,2406],{"class":608},"?.",[531,2408,2409],{"class":612},"premium",[531,2411,2412],{"class":687},") ",[531,2414,2340],{"class":612},[531,2416,797],{"class":608},[531,2418,2419],{"class":612},"shouldKeep",[531,2421,672],{"class":608},[531,2423,2424],{"class":1050}," true\n",[531,2426,2428],{"class":533,"line":2427},43,[531,2429,1726],{"class":608},[531,2431,2433],{"class":533,"line":2432},44,[531,2434,635],{"emptyLinePlaceholder":634},[531,2436,2438],{"class":533,"line":2437},45,[531,2439,2440],{"class":1393},"  \u002F\u002F 7. Enrich every event with user agent, request size, and deployment info\n",[531,2442,2444,2447,2449,2451,2453,2455,2457],{"class":533,"line":2443},46,[531,2445,2446],{"class":675},"  enrich",[531,2448,691],{"class":608},[531,2450,2336],{"class":608},[531,2452,2340],{"class":2339},[531,2454,2343],{"class":608},[531,2456,772],{"class":644},[531,2458,775],{"class":608},[531,2460,2462,2465,2467,2469,2472,2475,2478,2480,2483,2485,2487],{"class":533,"line":2461},47,[531,2463,2464],{"class":604},"    for",[531,2466,2336],{"class":687},[531,2468,1867],{"class":644},[531,2470,2471],{"class":612}," enricher",[531,2473,2474],{"class":608}," of",[531,2476,2477],{"class":612}," enrichers",[531,2479,2412],{"class":687},[531,2481,2482],{"class":675},"enricher",[531,2484,678],{"class":687},[531,2486,2340],{"class":612},[531,2488,710],{"class":687},[531,2490,2492,2495,2497,2500,2502,2505,2507,2509,2511,2513,2515],{"class":533,"line":2491},48,[531,2493,2494],{"class":612},"    ctx",[531,2496,797],{"class":608},[531,2498,2499],{"class":612},"event",[531,2501,797],{"class":608},[531,2503,2504],{"class":612},"deploymentId",[531,2506,672],{"class":608},[531,2508,2007],{"class":612},[531,2510,797],{"class":608},[531,2512,1520],{"class":612},[531,2514,797],{"class":608},[531,2516,2517],{"class":612},"VERCEL_DEPLOYMENT_ID\n",[531,2519,2521,2523,2525,2527,2529,2532,2534,2536,2538,2540,2542],{"class":533,"line":2520},49,[531,2522,2494],{"class":612},[531,2524,797],{"class":608},[531,2526,2499],{"class":612},[531,2528,797],{"class":608},[531,2530,2531],{"class":612},"region",[531,2533,672],{"class":608},[531,2535,2007],{"class":612},[531,2537,797],{"class":608},[531,2539,1520],{"class":612},[531,2541,797],{"class":608},[531,2543,2544],{"class":612},"VERCEL_REGION\n",[531,2546,2548],{"class":533,"line":2547},50,[531,2549,1726],{"class":608},[531,2551,2553],{"class":533,"line":2552},51,[531,2554,635],{"emptyLinePlaceholder":634},[531,2556,2558,2560],{"class":533,"line":2557},52,[531,2559,1156],{"class":612},[531,2561,702],{"class":608},[531,2563,2565,2567],{"class":533,"line":2564},53,[531,2566,669],{"class":608},[531,2568,710],{"class":612},[509,2570,46],{"id":2571},"wide-events",[445,2573,2574],{},"Build up context progressively through your handler. One request = one wide event:",[521,2576,2579],{"className":594,"code":2577,"filename":2578,"language":597,"meta":527,"style":527},"import { withEvlog, useLogger } from '@\u002Flib\u002Fevlog'\n\nexport const POST = withEvlog(async (request: Request) => {\n  const log = useLogger()\n  const body = await request.json()\n\n  \u002F\u002F Stage 1: User context\n  log.set({\n    user: { id: body.userId, plan: 'enterprise' },\n  })\n\n  \u002F\u002F Stage 2: Cart context\n  log.set({\n    cart: { items: body.items.length, total: body.total, currency: 'USD' },\n  })\n\n  \u002F\u002F Stage 3: Payment context\n  const payment = await processPayment(body)\n  log.set({\n    payment: { method: payment.method, cardLast4: payment.last4 },\n  })\n\n  return Response.json({ success: true, orderId: payment.orderId })\n})\n","app\u002Fapi\u002Fcheckout\u002Froute.ts",[449,2580,2581,2603,2607,2640,2652,2672,2676,2681,2693,2730,2736,2740,2745,2757,2813,2819,2823,2828,2849,2861,2898,2904,2908,2947],{"__ignoreMap":527},[531,2582,2583,2585,2587,2589,2591,2593,2595,2597,2599,2601],{"class":533,"line":534},[531,2584,605],{"class":604},[531,2586,609],{"class":608},[531,2588,650],{"class":612},[531,2590,653],{"class":608},[531,2592,656],{"class":612},[531,2594,616],{"class":608},[531,2596,619],{"class":604},[531,2598,622],{"class":608},[531,2600,741],{"class":540},[531,2602,628],{"class":608},[531,2604,2605],{"class":533,"line":631},[531,2606,635],{"emptyLinePlaceholder":634},[531,2608,2609,2611,2613,2616,2618,2620,2622,2624,2626,2629,2631,2634,2636,2638],{"class":533,"line":638},[531,2610,641],{"class":604},[531,2612,645],{"class":644},[531,2614,2615],{"class":612}," POST ",[531,2617,759],{"class":608},[531,2619,650],{"class":675},[531,2621,678],{"class":612},[531,2623,766],{"class":644},[531,2625,2336],{"class":608},[531,2627,2628],{"class":2339},"request",[531,2630,691],{"class":608},[531,2632,2633],{"class":537}," Request",[531,2635,2343],{"class":608},[531,2637,772],{"class":644},[531,2639,775],{"class":608},[531,2641,2642,2644,2646,2648,2650],{"class":533,"line":684},[531,2643,780],{"class":644},[531,2645,661],{"class":612},[531,2647,672],{"class":608},[531,2649,656],{"class":675},[531,2651,789],{"class":687},[531,2653,2654,2656,2659,2661,2663,2666,2668,2670],{"class":533,"line":705},[531,2655,780],{"class":644},[531,2657,2658],{"class":612}," body",[531,2660,672],{"class":608},[531,2662,1272],{"class":604},[531,2664,2665],{"class":612}," request",[531,2667,797],{"class":608},[531,2669,835],{"class":675},[531,2671,789],{"class":687},[531,2673,2674],{"class":533,"line":824},[531,2675,635],{"emptyLinePlaceholder":634},[531,2677,2678],{"class":533,"line":858},[531,2679,2680],{"class":1393},"  \u002F\u002F Stage 1: User context\n",[531,2682,2683,2685,2687,2689,2691],{"class":533,"line":1348},[531,2684,794],{"class":612},[531,2686,797],{"class":608},[531,2688,800],{"class":675},[531,2690,678],{"class":687},[531,2692,681],{"class":608},[531,2694,2695,2698,2700,2702,2705,2707,2709,2711,2714,2716,2719,2721,2723,2726,2728],{"class":533,"line":1356},[531,2696,2697],{"class":687},"    user",[531,2699,691],{"class":608},[531,2701,609],{"class":608},[531,2703,2704],{"class":687}," id",[531,2706,691],{"class":608},[531,2708,2658],{"class":612},[531,2710,797],{"class":608},[531,2712,2713],{"class":612},"userId",[531,2715,653],{"class":608},[531,2717,2718],{"class":687}," plan",[531,2720,691],{"class":608},[531,2722,622],{"class":608},[531,2724,2725],{"class":540},"enterprise",[531,2727,699],{"class":608},[531,2729,2121],{"class":608},[531,2731,2732,2734],{"class":533,"line":1361},[531,2733,1351],{"class":608},[531,2735,710],{"class":687},[531,2737,2738],{"class":533,"line":1368},[531,2739,635],{"emptyLinePlaceholder":634},[531,2741,2742],{"class":533,"line":1380},[531,2743,2744],{"class":1393},"  \u002F\u002F Stage 2: Cart context\n",[531,2746,2747,2749,2751,2753,2755],{"class":533,"line":1390},[531,2748,794],{"class":612},[531,2750,797],{"class":608},[531,2752,800],{"class":675},[531,2754,678],{"class":687},[531,2756,681],{"class":608},[531,2758,2759,2762,2764,2766,2769,2771,2773,2775,2778,2780,2783,2785,2788,2790,2792,2794,2797,2799,2802,2804,2806,2809,2811],{"class":533,"line":1397},[531,2760,2761],{"class":687},"    cart",[531,2763,691],{"class":608},[531,2765,609],{"class":608},[531,2767,2768],{"class":687}," items",[531,2770,691],{"class":608},[531,2772,2658],{"class":612},[531,2774,797],{"class":608},[531,2776,2777],{"class":612},"items",[531,2779,797],{"class":608},[531,2781,2782],{"class":612},"length",[531,2784,653],{"class":608},[531,2786,2787],{"class":687}," total",[531,2789,691],{"class":608},[531,2791,2658],{"class":612},[531,2793,797],{"class":608},[531,2795,2796],{"class":612},"total",[531,2798,653],{"class":608},[531,2800,2801],{"class":687}," currency",[531,2803,691],{"class":608},[531,2805,622],{"class":608},[531,2807,2808],{"class":540},"USD",[531,2810,699],{"class":608},[531,2812,2121],{"class":608},[531,2814,2815,2817],{"class":533,"line":1403},[531,2816,1351],{"class":608},[531,2818,710],{"class":687},[531,2820,2821],{"class":533,"line":1415},[531,2822,635],{"emptyLinePlaceholder":634},[531,2824,2825],{"class":533,"line":1421},[531,2826,2827],{"class":1393},"  \u002F\u002F Stage 3: Payment context\n",[531,2829,2830,2832,2835,2837,2839,2842,2844,2847],{"class":533,"line":2029},[531,2831,780],{"class":644},[531,2833,2834],{"class":612}," payment",[531,2836,672],{"class":608},[531,2838,1272],{"class":604},[531,2840,2841],{"class":675}," processPayment",[531,2843,678],{"class":687},[531,2845,2846],{"class":612},"body",[531,2848,710],{"class":687},[531,2850,2851,2853,2855,2857,2859],{"class":533,"line":2034},[531,2852,794],{"class":612},[531,2854,797],{"class":608},[531,2856,800],{"class":675},[531,2858,678],{"class":687},[531,2860,681],{"class":608},[531,2862,2863,2866,2868,2870,2873,2875,2877,2879,2882,2884,2887,2889,2891,2893,2896],{"class":533,"line":2067},[531,2864,2865],{"class":687},"    payment",[531,2867,691],{"class":608},[531,2869,609],{"class":608},[531,2871,2872],{"class":687}," method",[531,2874,691],{"class":608},[531,2876,2834],{"class":612},[531,2878,797],{"class":608},[531,2880,2881],{"class":612},"method",[531,2883,653],{"class":608},[531,2885,2886],{"class":687}," cardLast4",[531,2888,691],{"class":608},[531,2890,2834],{"class":612},[531,2892,797],{"class":608},[531,2894,2895],{"class":612},"last4",[531,2897,2121],{"class":608},[531,2899,2900,2902],{"class":533,"line":2082},[531,2901,1351],{"class":608},[531,2903,710],{"class":687},[531,2905,2906],{"class":533,"line":2087},[531,2907,635],{"emptyLinePlaceholder":634},[531,2909,2910,2912,2914,2916,2918,2920,2922,2925,2927,2929,2931,2934,2936,2938,2940,2943,2945],{"class":533,"line":2093},[531,2911,827],{"class":604},[531,2913,830],{"class":612},[531,2915,797],{"class":608},[531,2917,835],{"class":675},[531,2919,678],{"class":687},[531,2921,805],{"class":608},[531,2923,2924],{"class":687}," success",[531,2926,691],{"class":608},[531,2928,1051],{"class":1050},[531,2930,653],{"class":608},[531,2932,2933],{"class":687}," orderId",[531,2935,691],{"class":608},[531,2937,2834],{"class":612},[531,2939,797],{"class":608},[531,2941,2942],{"class":612},"orderId",[531,2944,616],{"class":608},[531,2946,710],{"class":687},[531,2948,2949,2951],{"class":533,"line":2103},[531,2950,669],{"class":608},[531,2952,710],{"class":612},[445,2954,2955],{},"All fields are merged into a single wide event emitted when the handler completes (or when a streaming response body finishes, so AI SDK metadata is included):",[521,2957,2960],{"className":523,"code":2958,"filename":2959,"language":526,"meta":527,"style":527},"10:23:45.612 INFO [my-app] POST \u002Fapi\u002Fcheckout 200 in 145ms\n  ├─ user: id=usr_123 plan=enterprise\n  ├─ cart: items=3 total=14999 currency=USD\n  ├─ payment: method=card cardLast4=4242\n  └─ requestId: a1b2c3d4-...\n","Output (Pretty)",[449,2961,2962,2973,2987,3009,3025],{"__ignoreMap":527},[531,2963,2964,2967,2970],{"class":533,"line":534},[531,2965,2966],{"class":537},"10:23:45.612",[531,2968,2969],{"class":540}," INFO",[531,2971,2972],{"class":612}," [my-app] POST \u002Fapi\u002Fcheckout 200 in 145ms\n",[531,2974,2975,2978,2981,2984],{"class":533,"line":631},[531,2976,2977],{"class":537},"  ├─",[531,2979,2980],{"class":540}," user:",[531,2982,2983],{"class":540}," id=usr_123",[531,2985,2986],{"class":540}," plan=enterprise\n",[531,2988,2989,2991,2994,2997,3000,3003,3006],{"class":533,"line":638},[531,2990,2977],{"class":537},[531,2992,2993],{"class":540}," cart:",[531,2995,2996],{"class":540}," items=",[531,2998,2999],{"class":1934},"3",[531,3001,3002],{"class":540}," total=",[531,3004,3005],{"class":1934},"14999",[531,3007,3008],{"class":540}," currency=USD\n",[531,3010,3011,3013,3016,3019,3022],{"class":533,"line":684},[531,3012,2977],{"class":537},[531,3014,3015],{"class":540}," payment:",[531,3017,3018],{"class":540}," method=card",[531,3020,3021],{"class":540}," cardLast4=",[531,3023,3024],{"class":1934},"4242\n",[531,3026,3027,3030,3033],{"class":533,"line":705},[531,3028,3029],{"class":537},"  └─",[531,3031,3032],{"class":540}," requestId:",[531,3034,3035],{"class":540}," a1b2c3d4-...\n",[509,3037,3039,3040,2343],{"id":3038},"background-work-logfork","Background work (",[449,3041,3042],{},"log.fork",[445,3044,3045,3046,1467,3049,3051,3052,3057,3058,797],{},"Inside ",[449,3047,3048],{},"withEvlog",[449,3050,459],{}," returns a logger with ",[894,3053,3054],{},[449,3055,3056],{},"fork"," for child wide events. See ",[498,3059,3061],{"href":3060},"\u002Flearn\u002Fwide-events#after-emit-sealing-and-background-work","Wide events — After emit",[521,3063,3066],{"className":594,"code":3064,"filename":3065,"language":597,"meta":527,"style":527},"import { withEvlog, useLogger } from '@\u002Flib\u002Fevlog'\n\nexport const POST = withEvlog(async () => {\n  const log = useLogger()\n  log.fork!('enqueue', async () => {\n    const child = useLogger()\n    child.set({ job: 'queued' })\n  })\n  return Response.json({ ok: true })\n})\n","app\u002Fapi\u002Forders\u002Froute.ts",[449,3067,3068,3090,3094,3116,3128,3159,3172,3201,3207,3232],{"__ignoreMap":527},[531,3069,3070,3072,3074,3076,3078,3080,3082,3084,3086,3088],{"class":533,"line":534},[531,3071,605],{"class":604},[531,3073,609],{"class":608},[531,3075,650],{"class":612},[531,3077,653],{"class":608},[531,3079,656],{"class":612},[531,3081,616],{"class":608},[531,3083,619],{"class":604},[531,3085,622],{"class":608},[531,3087,741],{"class":540},[531,3089,628],{"class":608},[531,3091,3092],{"class":533,"line":631},[531,3093,635],{"emptyLinePlaceholder":634},[531,3095,3096,3098,3100,3102,3104,3106,3108,3110,3112,3114],{"class":533,"line":638},[531,3097,641],{"class":604},[531,3099,645],{"class":644},[531,3101,2615],{"class":612},[531,3103,759],{"class":608},[531,3105,650],{"class":675},[531,3107,678],{"class":612},[531,3109,766],{"class":644},[531,3111,769],{"class":608},[531,3113,772],{"class":644},[531,3115,775],{"class":608},[531,3117,3118,3120,3122,3124,3126],{"class":533,"line":684},[531,3119,780],{"class":644},[531,3121,661],{"class":612},[531,3123,672],{"class":608},[531,3125,656],{"class":675},[531,3127,789],{"class":687},[531,3129,3130,3132,3134,3136,3139,3141,3143,3146,3148,3150,3153,3155,3157],{"class":533,"line":705},[531,3131,794],{"class":612},[531,3133,797],{"class":608},[531,3135,3056],{"class":675},[531,3137,3138],{"class":608},"!",[531,3140,678],{"class":687},[531,3142,699],{"class":608},[531,3144,3145],{"class":540},"enqueue",[531,3147,699],{"class":608},[531,3149,653],{"class":608},[531,3151,3152],{"class":644}," async",[531,3154,769],{"class":608},[531,3156,772],{"class":644},[531,3158,775],{"class":608},[531,3160,3161,3163,3166,3168,3170],{"class":533,"line":824},[531,3162,2353],{"class":644},[531,3164,3165],{"class":612}," child",[531,3167,672],{"class":608},[531,3169,656],{"class":675},[531,3171,789],{"class":687},[531,3173,3174,3177,3179,3181,3183,3185,3188,3190,3192,3195,3197,3199],{"class":533,"line":858},[531,3175,3176],{"class":612},"    child",[531,3178,797],{"class":608},[531,3180,800],{"class":675},[531,3182,678],{"class":687},[531,3184,805],{"class":608},[531,3186,3187],{"class":687}," job",[531,3189,691],{"class":608},[531,3191,622],{"class":608},[531,3193,3194],{"class":540},"queued",[531,3196,699],{"class":608},[531,3198,616],{"class":608},[531,3200,710],{"class":687},[531,3202,3203,3205],{"class":533,"line":1348},[531,3204,1351],{"class":608},[531,3206,710],{"class":687},[531,3208,3209,3211,3213,3215,3217,3219,3221,3224,3226,3228,3230],{"class":533,"line":1356},[531,3210,827],{"class":604},[531,3212,830],{"class":612},[531,3214,797],{"class":608},[531,3216,835],{"class":675},[531,3218,678],{"class":687},[531,3220,805],{"class":608},[531,3222,3223],{"class":687}," ok",[531,3225,691],{"class":608},[531,3227,1051],{"class":1050},[531,3229,616],{"class":608},[531,3231,710],{"class":687},[531,3233,3234,3236],{"class":533,"line":1361},[531,3235,669],{"class":608},[531,3237,710],{"class":612},[509,3239,3241],{"id":3240},"error-handling","Error Handling",[445,3243,3244,3245,3248,3249,1467,3252,3255,3256,3259],{},"Use ",[449,3246,3247],{},"createError"," for structured errors with ",[449,3250,3251],{},"why",[449,3253,3254],{},"fix",", and ",[449,3257,3258],{},"link"," fields that help developers debug in both logs and API responses:",[521,3261,3264],{"className":594,"code":3262,"filename":3263,"language":597,"meta":527,"style":527},"import { withEvlog, useLogger, createError } from '@\u002Flib\u002Fevlog'\n\nexport const POST = withEvlog(async (request: Request) => {\n  const log = useLogger()\n  const body = await request.json()\n\n  log.set({ payment: { amount: body.amount } })\n\n  if (body.amount \u003C= 0) {\n    throw createError({\n      status: 400,\n      message: 'Invalid payment amount',\n      why: 'The amount must be a positive number',\n      fix: 'Pass a positive integer in cents (e.g. 4999 for $49.99)',\n      link: 'https:\u002F\u002Fdocs.example.com\u002Fapi\u002Fpayments#amount',\n    })\n  }\n\n  const result = await chargeCard(body)\n\n  if (!result.success) {\n    log.error(new Error(`Payment declined: ${result.reason}`))\n    throw createError({\n      status: 402,\n      message: 'Payment declined',\n      why: `Card declined by issuer: ${result.reason}`,\n      fix: 'Try a different payment method or contact your bank',\n    })\n  }\n\n  return Response.json({ success: true })\n})\n","app\u002Fapi\u002Fpayment\u002Fprocess\u002Froute.ts",[449,3265,3266,3293,3297,3327,3339,3357,3361,3397,3401,3424,3435,3446,3462,3478,3494,3510,3517,3521,3525,3545,3549,3569,3610,3620,3631,3646,3670,3685,3691,3695,3699,3723],{"__ignoreMap":527},[531,3267,3268,3270,3272,3274,3276,3278,3280,3283,3285,3287,3289,3291],{"class":533,"line":534},[531,3269,605],{"class":604},[531,3271,609],{"class":608},[531,3273,650],{"class":612},[531,3275,653],{"class":608},[531,3277,656],{"class":612},[531,3279,653],{"class":608},[531,3281,3282],{"class":612}," createError",[531,3284,616],{"class":608},[531,3286,619],{"class":604},[531,3288,622],{"class":608},[531,3290,741],{"class":540},[531,3292,628],{"class":608},[531,3294,3295],{"class":533,"line":631},[531,3296,635],{"emptyLinePlaceholder":634},[531,3298,3299,3301,3303,3305,3307,3309,3311,3313,3315,3317,3319,3321,3323,3325],{"class":533,"line":638},[531,3300,641],{"class":604},[531,3302,645],{"class":644},[531,3304,2615],{"class":612},[531,3306,759],{"class":608},[531,3308,650],{"class":675},[531,3310,678],{"class":612},[531,3312,766],{"class":644},[531,3314,2336],{"class":608},[531,3316,2628],{"class":2339},[531,3318,691],{"class":608},[531,3320,2633],{"class":537},[531,3322,2343],{"class":608},[531,3324,772],{"class":644},[531,3326,775],{"class":608},[531,3328,3329,3331,3333,3335,3337],{"class":533,"line":684},[531,3330,780],{"class":644},[531,3332,661],{"class":612},[531,3334,672],{"class":608},[531,3336,656],{"class":675},[531,3338,789],{"class":687},[531,3340,3341,3343,3345,3347,3349,3351,3353,3355],{"class":533,"line":705},[531,3342,780],{"class":644},[531,3344,2658],{"class":612},[531,3346,672],{"class":608},[531,3348,1272],{"class":604},[531,3350,2665],{"class":612},[531,3352,797],{"class":608},[531,3354,835],{"class":675},[531,3356,789],{"class":687},[531,3358,3359],{"class":533,"line":824},[531,3360,635],{"emptyLinePlaceholder":634},[531,3362,3363,3365,3367,3369,3371,3373,3375,3377,3379,3382,3384,3386,3388,3391,3393,3395],{"class":533,"line":858},[531,3364,794],{"class":612},[531,3366,797],{"class":608},[531,3368,800],{"class":675},[531,3370,678],{"class":687},[531,3372,805],{"class":608},[531,3374,2834],{"class":687},[531,3376,691],{"class":608},[531,3378,609],{"class":608},[531,3380,3381],{"class":687}," amount",[531,3383,691],{"class":608},[531,3385,2658],{"class":612},[531,3387,797],{"class":608},[531,3389,3390],{"class":612},"amount",[531,3392,616],{"class":608},[531,3394,616],{"class":608},[531,3396,710],{"class":687},[531,3398,3399],{"class":533,"line":1348},[531,3400,635],{"emptyLinePlaceholder":634},[531,3402,3403,3406,3408,3410,3412,3414,3417,3420,3422],{"class":533,"line":1356},[531,3404,3405],{"class":604},"  if",[531,3407,2336],{"class":687},[531,3409,2846],{"class":612},[531,3411,797],{"class":608},[531,3413,3390],{"class":612},[531,3415,3416],{"class":608}," \u003C=",[531,3418,3419],{"class":1934}," 0",[531,3421,2412],{"class":687},[531,3423,681],{"class":608},[531,3425,3426,3429,3431,3433],{"class":533,"line":1361},[531,3427,3428],{"class":604},"    throw",[531,3430,3282],{"class":675},[531,3432,678],{"class":687},[531,3434,681],{"class":608},[531,3436,3437,3440,3442,3444],{"class":533,"line":1368},[531,3438,3439],{"class":687},"      status",[531,3441,691],{"class":608},[531,3443,2146],{"class":1934},[531,3445,702],{"class":608},[531,3447,3448,3451,3453,3455,3458,3460],{"class":533,"line":1380},[531,3449,3450],{"class":687},"      message",[531,3452,691],{"class":608},[531,3454,622],{"class":608},[531,3456,3457],{"class":540},"Invalid payment amount",[531,3459,699],{"class":608},[531,3461,702],{"class":608},[531,3463,3464,3467,3469,3471,3474,3476],{"class":533,"line":1390},[531,3465,3466],{"class":687},"      why",[531,3468,691],{"class":608},[531,3470,622],{"class":608},[531,3472,3473],{"class":540},"The amount must be a positive number",[531,3475,699],{"class":608},[531,3477,702],{"class":608},[531,3479,3480,3483,3485,3487,3490,3492],{"class":533,"line":1397},[531,3481,3482],{"class":687},"      fix",[531,3484,691],{"class":608},[531,3486,622],{"class":608},[531,3488,3489],{"class":540},"Pass a positive integer in cents (e.g. 4999 for $49.99)",[531,3491,699],{"class":608},[531,3493,702],{"class":608},[531,3495,3496,3499,3501,3503,3506,3508],{"class":533,"line":1403},[531,3497,3498],{"class":687},"      link",[531,3500,691],{"class":608},[531,3502,622],{"class":608},[531,3504,3505],{"class":540},"https:\u002F\u002Fdocs.example.com\u002Fapi\u002Fpayments#amount",[531,3507,699],{"class":608},[531,3509,702],{"class":608},[531,3511,3512,3515],{"class":533,"line":1415},[531,3513,3514],{"class":608},"    }",[531,3516,710],{"class":687},[531,3518,3519],{"class":533,"line":1421},[531,3520,1418],{"class":608},[531,3522,3523],{"class":533,"line":2029},[531,3524,635],{"emptyLinePlaceholder":634},[531,3526,3527,3529,3532,3534,3536,3539,3541,3543],{"class":533,"line":2034},[531,3528,780],{"class":644},[531,3530,3531],{"class":612}," result",[531,3533,672],{"class":608},[531,3535,1272],{"class":604},[531,3537,3538],{"class":675}," chargeCard",[531,3540,678],{"class":687},[531,3542,2846],{"class":612},[531,3544,710],{"class":687},[531,3546,3547],{"class":533,"line":2067},[531,3548,635],{"emptyLinePlaceholder":634},[531,3550,3551,3553,3555,3557,3560,3562,3565,3567],{"class":533,"line":2082},[531,3552,3405],{"class":604},[531,3554,2336],{"class":687},[531,3556,3138],{"class":608},[531,3558,3559],{"class":612},"result",[531,3561,797],{"class":608},[531,3563,3564],{"class":612},"success",[531,3566,2412],{"class":687},[531,3568,681],{"class":608},[531,3570,3571,3574,3576,3579,3581,3584,3587,3589,3592,3595,3598,3600,3602,3605,3608],{"class":533,"line":2087},[531,3572,3573],{"class":612},"    log",[531,3575,797],{"class":608},[531,3577,3578],{"class":675},"error",[531,3580,678],{"class":687},[531,3582,3583],{"class":608},"new",[531,3585,3586],{"class":675}," Error",[531,3588,678],{"class":687},[531,3590,3591],{"class":608},"`",[531,3593,3594],{"class":540},"Payment declined: ",[531,3596,3597],{"class":608},"${",[531,3599,3559],{"class":612},[531,3601,797],{"class":608},[531,3603,3604],{"class":612},"reason",[531,3606,3607],{"class":608},"}`",[531,3609,2026],{"class":687},[531,3611,3612,3614,3616,3618],{"class":533,"line":2093},[531,3613,3428],{"class":604},[531,3615,3282],{"class":675},[531,3617,678],{"class":687},[531,3619,681],{"class":608},[531,3621,3622,3624,3626,3629],{"class":533,"line":2103},[531,3623,3439],{"class":687},[531,3625,691],{"class":608},[531,3627,3628],{"class":1934}," 402",[531,3630,702],{"class":608},[531,3632,3633,3635,3637,3639,3642,3644],{"class":533,"line":2124},[531,3634,3450],{"class":687},[531,3636,691],{"class":608},[531,3638,622],{"class":608},[531,3640,3641],{"class":540},"Payment declined",[531,3643,699],{"class":608},[531,3645,702],{"class":608},[531,3647,3648,3650,3652,3655,3658,3660,3662,3664,3666,3668],{"class":533,"line":2135},[531,3649,3466],{"class":687},[531,3651,691],{"class":608},[531,3653,3654],{"class":608}," `",[531,3656,3657],{"class":540},"Card declined by issuer: ",[531,3659,3597],{"class":608},[531,3661,3559],{"class":612},[531,3663,797],{"class":608},[531,3665,3604],{"class":612},[531,3667,3607],{"class":608},[531,3669,702],{"class":608},[531,3671,3672,3674,3676,3678,3681,3683],{"class":533,"line":2155},[531,3673,3482],{"class":687},[531,3675,691],{"class":608},[531,3677,622],{"class":608},[531,3679,3680],{"class":540},"Try a different payment method or contact your bank",[531,3682,699],{"class":608},[531,3684,702],{"class":608},[531,3686,3687,3689],{"class":533,"line":2173},[531,3688,3514],{"class":608},[531,3690,710],{"class":687},[531,3692,3693],{"class":533,"line":2195},[531,3694,1418],{"class":608},[531,3696,3697],{"class":533,"line":2203},[531,3698,635],{"emptyLinePlaceholder":634},[531,3700,3701,3703,3705,3707,3709,3711,3713,3715,3717,3719,3721],{"class":533,"line":2208},[531,3702,827],{"class":604},[531,3704,830],{"class":612},[531,3706,797],{"class":608},[531,3708,835],{"class":675},[531,3710,678],{"class":687},[531,3712,805],{"class":608},[531,3714,2924],{"class":687},[531,3716,691],{"class":608},[531,3718,1051],{"class":1050},[531,3720,616],{"class":608},[531,3722,710],{"class":687},[531,3724,3725,3727],{"class":533,"line":2213},[531,3726,669],{"class":608},[531,3728,710],{"class":612},[445,3730,3731,3733,3734,3737],{},[449,3732,455],{}," catches ",[449,3735,3736],{},"EvlogError"," and returns a structured JSON response (like Nitro does for Nuxt):",[521,3739,3743],{"className":3740,"code":3741,"filename":3742,"language":835,"meta":527,"style":527},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"name\": \"EvlogError\",\n  \"message\": \"Payment declined\",\n  \"status\": 402,\n  \"data\": {\n    \"why\": \"Card declined by issuer: insufficient_funds\",\n    \"fix\": \"Try a different payment method or contact your bank\"\n  }\n}\n","Response (402)",[449,3744,3745,3749,3771,3790,3805,3818,3838,3855,3859],{"__ignoreMap":527},[531,3746,3747],{"class":533,"line":534},[531,3748,681],{"class":608},[531,3750,3751,3754,3757,3760,3762,3765,3767,3769],{"class":533,"line":631},[531,3752,3753],{"class":608},"  \"",[531,3755,3756],{"class":644},"name",[531,3758,3759],{"class":608},"\"",[531,3761,691],{"class":608},[531,3763,3764],{"class":608}," \"",[531,3766,3736],{"class":540},[531,3768,3759],{"class":608},[531,3770,702],{"class":608},[531,3772,3773,3775,3778,3780,3782,3784,3786,3788],{"class":533,"line":638},[531,3774,3753],{"class":608},[531,3776,3777],{"class":644},"message",[531,3779,3759],{"class":608},[531,3781,691],{"class":608},[531,3783,3764],{"class":608},[531,3785,3641],{"class":540},[531,3787,3759],{"class":608},[531,3789,702],{"class":608},[531,3791,3792,3794,3797,3799,3801,3803],{"class":533,"line":684},[531,3793,3753],{"class":608},[531,3795,3796],{"class":644},"status",[531,3798,3759],{"class":608},[531,3800,691],{"class":608},[531,3802,3628],{"class":1934},[531,3804,702],{"class":608},[531,3806,3807,3809,3812,3814,3816],{"class":533,"line":705},[531,3808,3753],{"class":608},[531,3810,3811],{"class":644},"data",[531,3813,3759],{"class":608},[531,3815,691],{"class":608},[531,3817,775],{"class":608},[531,3819,3820,3823,3825,3827,3829,3831,3834,3836],{"class":533,"line":824},[531,3821,3822],{"class":608},"    \"",[531,3824,3251],{"class":537},[531,3826,3759],{"class":608},[531,3828,691],{"class":608},[531,3830,3764],{"class":608},[531,3832,3833],{"class":540},"Card declined by issuer: insufficient_funds",[531,3835,3759],{"class":608},[531,3837,702],{"class":608},[531,3839,3840,3842,3844,3846,3848,3850,3852],{"class":533,"line":858},[531,3841,3822],{"class":608},[531,3843,3254],{"class":537},[531,3845,3759],{"class":608},[531,3847,691],{"class":608},[531,3849,3764],{"class":608},[531,3851,3680],{"class":540},[531,3853,3854],{"class":608},"\"\n",[531,3856,3857],{"class":533,"line":1348},[531,3858,1418],{"class":608},[531,3860,3861],{"class":533,"line":1356},[531,3862,3863],{"class":608},"}\n",[445,3865,3866],{},"In the terminal, the error renders inside the wide event — error block first, then request context. Colors and tree connectors render in the terminal; the example below omits ANSI for readability.",[521,3868,3871],{"className":523,"code":3869,"filename":3870,"language":526,"meta":527,"style":527},"ERROR [app] POST \u002Fapi\u002Fpayment\u002Fprocess 402 in 12ms\n  ├─ error: Payment declined\n  │     at app\u002Fapi\u002Fpayment\u002Fprocess\u002Froute.ts:336\n  │   ❯ 336 ┃ throw createError({ message: 'Payment declined', ... })\n  │     Why: Card declined by issuer: insufficient_funds\n  │     Fix: Try a different payment method or contact your bank\n  │     stack (3 frames hidden in node_modules)\n  └─ payment: amount=4999\n","Terminal output",[449,3872,3873,3881,3894,3905,3928,3950,3982,4006],{"__ignoreMap":527},[531,3874,3875,3878],{"class":533,"line":534},[531,3876,3877],{"class":537},"ERROR",[531,3879,3880],{"class":612}," [app] POST \u002Fapi\u002Fpayment\u002Fprocess 402 in 12ms\n",[531,3882,3883,3885,3888,3891],{"class":533,"line":631},[531,3884,2977],{"class":537},[531,3886,3887],{"class":540}," error:",[531,3889,3890],{"class":540}," Payment",[531,3892,3893],{"class":540}," declined\n",[531,3895,3896,3899,3902],{"class":533,"line":638},[531,3897,3898],{"class":537},"  │",[531,3900,3901],{"class":540},"     at",[531,3903,3904],{"class":540}," app\u002Fapi\u002Fpayment\u002Fprocess\u002Froute.ts:336\n",[531,3906,3907,3909,3912,3915,3918,3921,3923,3925],{"class":533,"line":684},[531,3908,3898],{"class":537},[531,3910,3911],{"class":540},"   ❯",[531,3913,3914],{"class":1934}," 336",[531,3916,3917],{"class":540}," ┃",[531,3919,3920],{"class":540}," throw",[531,3922,3282],{"class":540},[531,3924,678],{"class":608},[531,3926,3927],{"class":612},"{ message: 'Payment declined', ... })\n",[531,3929,3930,3932,3935,3938,3941,3944,3947],{"class":533,"line":705},[531,3931,3898],{"class":537},[531,3933,3934],{"class":540},"     Why:",[531,3936,3937],{"class":540}," Card",[531,3939,3940],{"class":540}," declined",[531,3942,3943],{"class":540}," by",[531,3945,3946],{"class":540}," issuer:",[531,3948,3949],{"class":540}," insufficient_funds\n",[531,3951,3952,3954,3957,3960,3963,3966,3968,3970,3973,3976,3979],{"class":533,"line":824},[531,3953,3898],{"class":537},[531,3955,3956],{"class":540},"     Fix:",[531,3958,3959],{"class":540}," Try",[531,3961,3962],{"class":540}," a",[531,3964,3965],{"class":540}," different",[531,3967,2834],{"class":540},[531,3969,2872],{"class":540},[531,3971,3972],{"class":540}," or",[531,3974,3975],{"class":540}," contact",[531,3977,3978],{"class":540}," your",[531,3980,3981],{"class":540}," bank\n",[531,3983,3984,3986,3989,3992,3995,3998,4001,4004],{"class":533,"line":858},[531,3985,3898],{"class":537},[531,3987,3988],{"class":540},"     stack",[531,3990,3991],{"class":612}," (3 ",[531,3993,3994],{"class":540},"frames",[531,3996,3997],{"class":540}," hidden",[531,3999,4000],{"class":540}," in",[531,4002,4003],{"class":540}," node_modules",[531,4005,710],{"class":608},[531,4007,4008,4010,4012,4015],{"class":533,"line":1348},[531,4009,3029],{"class":537},[531,4011,3015],{"class":540},[531,4013,4014],{"class":540}," amount=",[531,4016,4017],{"class":1934},"4999\n",[513,4019,4021],{"id":4020},"parsing-errors-on-the-client","Parsing Errors on the Client",[445,4023,3244,4024,4027,4028,4030,4031,4034],{},[449,4025,4026],{},"parseError"," to extract the structured fields from any error, whether it's a fetch response, an ",[449,4029,3736],{},", or a plain ",[449,4032,4033],{},"Error"," object:",[521,4036,4041],{"className":4037,"code":4038,"filename":4039,"language":4040,"meta":527,"style":527},"language-tsx shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","'use client'\nimport { parseError } from 'evlog'\n\nasync function handleSubmit(formData: FormData) {\n  try {\n    const res = await fetch('\u002Fapi\u002Fpayment\u002Fprocess', {\n      method: 'POST',\n      body: JSON.stringify({ amount: Number(formData.get('amount')) }),\n    })\n    if (!res.ok) throw { data: await res.json(), status: res.status }\n  } catch (error) {\n    const { message, status, why, fix, link } = parseError(error)\n    \u002F\u002F message: \"Payment declined\"\n    \u002F\u002F why: \"Card declined by issuer: insufficient_funds\"\n    \u002F\u002F fix: \"Try a different payment method or contact your bank\"\n  }\n}\n","app\u002Fcomponents\u002FPaymentForm.tsx","tsx",[449,4042,4043,4052,4071,4075,4099,4106,4133,4149,4200,4206,4259,4274,4313,4318,4323,4328,4332],{"__ignoreMap":527},[531,4044,4045,4047,4050],{"class":533,"line":534},[531,4046,699],{"class":608},[531,4048,4049],{"class":540},"use client",[531,4051,628],{"class":608},[531,4053,4054,4056,4058,4061,4063,4065,4067,4069],{"class":533,"line":631},[531,4055,605],{"class":604},[531,4057,609],{"class":608},[531,4059,4060],{"class":612}," parseError",[531,4062,616],{"class":608},[531,4064,619],{"class":604},[531,4066,622],{"class":608},[531,4068,1768],{"class":540},[531,4070,628],{"class":608},[531,4072,4073],{"class":533,"line":638},[531,4074,635],{"emptyLinePlaceholder":634},[531,4076,4077,4079,4082,4085,4087,4090,4092,4095,4097],{"class":533,"line":684},[531,4078,766],{"class":644},[531,4080,4081],{"class":644}," function",[531,4083,4084],{"class":675}," handleSubmit",[531,4086,678],{"class":608},[531,4088,4089],{"class":2339},"formData",[531,4091,691],{"class":608},[531,4093,4094],{"class":537}," FormData",[531,4096,2343],{"class":608},[531,4098,775],{"class":608},[531,4100,4101,4104],{"class":533,"line":705},[531,4102,4103],{"class":604},"  try",[531,4105,775],{"class":608},[531,4107,4108,4110,4113,4115,4117,4120,4122,4124,4127,4129,4131],{"class":533,"line":824},[531,4109,2353],{"class":644},[531,4111,4112],{"class":612}," res",[531,4114,672],{"class":608},[531,4116,1272],{"class":604},[531,4118,4119],{"class":675}," fetch",[531,4121,678],{"class":687},[531,4123,699],{"class":608},[531,4125,4126],{"class":540},"\u002Fapi\u002Fpayment\u002Fprocess",[531,4128,699],{"class":608},[531,4130,653],{"class":608},[531,4132,775],{"class":608},[531,4134,4135,4138,4140,4142,4145,4147],{"class":533,"line":858},[531,4136,4137],{"class":687},"      method",[531,4139,691],{"class":608},[531,4141,622],{"class":608},[531,4143,4144],{"class":540},"POST",[531,4146,699],{"class":608},[531,4148,702],{"class":608},[531,4150,4151,4154,4156,4159,4161,4163,4165,4167,4169,4171,4174,4176,4178,4180,4183,4185,4187,4189,4191,4194,4196,4198],{"class":533,"line":1348},[531,4152,4153],{"class":687},"      body",[531,4155,691],{"class":608},[531,4157,4158],{"class":612}," JSON",[531,4160,797],{"class":608},[531,4162,1532],{"class":675},[531,4164,678],{"class":687},[531,4166,805],{"class":608},[531,4168,3381],{"class":687},[531,4170,691],{"class":608},[531,4172,4173],{"class":675}," Number",[531,4175,678],{"class":687},[531,4177,4089],{"class":612},[531,4179,797],{"class":608},[531,4181,4182],{"class":675},"get",[531,4184,678],{"class":687},[531,4186,699],{"class":608},[531,4188,3390],{"class":540},[531,4190,699],{"class":608},[531,4192,4193],{"class":687},")) ",[531,4195,669],{"class":608},[531,4197,2343],{"class":687},[531,4199,702],{"class":608},[531,4201,4202,4204],{"class":533,"line":1356},[531,4203,3514],{"class":608},[531,4205,710],{"class":687},[531,4207,4208,4210,4212,4214,4217,4219,4222,4224,4227,4229,4232,4234,4236,4238,4240,4242,4244,4246,4248,4250,4252,4254,4256],{"class":533,"line":1361},[531,4209,2399],{"class":604},[531,4211,2336],{"class":687},[531,4213,3138],{"class":608},[531,4215,4216],{"class":612},"res",[531,4218,797],{"class":608},[531,4220,4221],{"class":612},"ok",[531,4223,2412],{"class":687},[531,4225,4226],{"class":604},"throw",[531,4228,609],{"class":608},[531,4230,4231],{"class":687}," data",[531,4233,691],{"class":608},[531,4235,1272],{"class":604},[531,4237,4112],{"class":612},[531,4239,797],{"class":608},[531,4241,835],{"class":675},[531,4243,1163],{"class":687},[531,4245,653],{"class":608},[531,4247,2141],{"class":687},[531,4249,691],{"class":608},[531,4251,4112],{"class":612},[531,4253,797],{"class":608},[531,4255,3796],{"class":612},[531,4257,4258],{"class":608}," }\n",[531,4260,4261,4263,4266,4268,4270,4272],{"class":533,"line":1368},[531,4262,1351],{"class":608},[531,4264,4265],{"class":604}," catch",[531,4267,2336],{"class":687},[531,4269,3578],{"class":612},[531,4271,2412],{"class":687},[531,4273,681],{"class":608},[531,4275,4276,4278,4280,4282,4284,4286,4288,4291,4293,4296,4298,4301,4303,4305,4307,4309,4311],{"class":533,"line":1380},[531,4277,2353],{"class":644},[531,4279,609],{"class":608},[531,4281,842],{"class":612},[531,4283,653],{"class":608},[531,4285,2141],{"class":612},[531,4287,653],{"class":608},[531,4289,4290],{"class":612}," why",[531,4292,653],{"class":608},[531,4294,4295],{"class":612}," fix",[531,4297,653],{"class":608},[531,4299,4300],{"class":612}," link",[531,4302,616],{"class":608},[531,4304,672],{"class":608},[531,4306,4060],{"class":675},[531,4308,678],{"class":687},[531,4310,3578],{"class":612},[531,4312,710],{"class":687},[531,4314,4315],{"class":533,"line":1390},[531,4316,4317],{"class":1393},"    \u002F\u002F message: \"Payment declined\"\n",[531,4319,4320],{"class":533,"line":1397},[531,4321,4322],{"class":1393},"    \u002F\u002F why: \"Card declined by issuer: insufficient_funds\"\n",[531,4324,4325],{"class":533,"line":1403},[531,4326,4327],{"class":1393},"    \u002F\u002F fix: \"Try a different payment method or contact your bank\"\n",[531,4329,4330],{"class":533,"line":1415},[531,4331,1418],{"class":608},[531,4333,4334],{"class":533,"line":1421},[531,4335,3863],{"class":608},[445,4337,4338,4340,4341,4344,4345,4348],{},[449,4339,4026],{}," normalizes any error shape into a flat ",[449,4342,4343],{},"{ message, status, why?, fix?, link? }"," object, so your UI code never has to dig through nested ",[449,4346,4347],{},"data.data"," or check for different error formats.",[509,4350,414],{"id":4351},"configuration-1",[883,4353,4354,4355,4358,4359,1467,4361,1467,4363,1467,4365,4367],{"color":885,"icon":79},"See the ",[498,4356,4357],{"href":415},"Configuration reference"," for the full list of shared options (",[449,4360,1514],{},[449,4362,1523],{},[449,4364,1526],{},[449,4366,1529],{},", middleware options, etc.).",[445,4369,4370,4371,4373],{},"The ",[449,4372,451],{}," factory accepts the following options:",[1537,4375,4376,4388],{},[1540,4377,4378],{},[1543,4379,4380,4382,4384,4386],{},[1546,4381,1548],{},[1546,4383,1551],{},[1546,4385,1554],{},[1546,4387,1557],{},[1559,4389,4390,4409,4426,4446,4464,4483,4502,4521,4540,4558],{},[1543,4391,4392,4396,4401,4406],{},[1564,4393,4394],{},[449,4395,1517],{},[1564,4397,4398],{},[449,4399,4400],{},"string",[1564,4402,4403],{},[449,4404,4405],{},"'app'",[1564,4407,4408],{},"Service name shown in logs",[1543,4410,4411,4416,4420,4423],{},[1564,4412,4413],{},[449,4414,4415],{},"environment",[1564,4417,4418],{},[449,4419,4400],{},[1564,4421,4422],{},"Auto-detected",[1564,4424,4425],{},"Environment name",[1543,4427,4428,4433,4438,4443],{},[1564,4429,4430],{},[449,4431,4432],{},"include",[1564,4434,4435],{},[449,4436,4437],{},"string[]",[1564,4439,4440],{},[449,4441,4442],{},"undefined",[1564,4444,4445],{},"Route patterns to log",[1543,4447,4448,4453,4457,4461],{},[1564,4449,4450],{},[449,4451,4452],{},"exclude",[1564,4454,4455],{},[449,4456,4437],{},[1564,4458,4459],{},[449,4460,4442],{},[1564,4462,4463],{},"Route patterns to exclude",[1543,4465,4466,4471,4476,4480],{},[1564,4467,4468],{},[449,4469,4470],{},"routes",[1564,4472,4473],{},[449,4474,4475],{},"Record\u003Cstring, RouteConfig>",[1564,4477,4478],{},[449,4479,4442],{},[1564,4481,4482],{},"Route-specific service configuration",[1543,4484,4485,4490,4495,4499],{},[1564,4486,4487],{},[449,4488,4489],{},"sampling.rates",[1564,4491,4492],{},[449,4493,4494],{},"object",[1564,4496,4497],{},[449,4498,4442],{},[1564,4500,4501],{},"Head sampling rates per log level",[1543,4503,4504,4509,4514,4518],{},[1564,4505,4506],{},[449,4507,4508],{},"sampling.keep",[1564,4510,4511],{},[449,4512,4513],{},"array",[1564,4515,4516],{},[449,4517,4442],{},[1564,4519,4520],{},"Tail sampling conditions",[1543,4522,4523,4528,4533,4537],{},[1564,4524,4525],{},[449,4526,4527],{},"keep",[1564,4529,4530],{},[449,4531,4532],{},"(ctx: TailSamplingContext) => void",[1564,4534,4535],{},[449,4536,4442],{},[1564,4538,4539],{},"Custom tail sampling callback",[1543,4541,4542,4546,4551,4555],{},[1564,4543,4544],{},[449,4545,927],{},[1564,4547,4548],{},[449,4549,4550],{},"DrainFunction",[1564,4552,4553],{},[449,4554,4442],{},[1564,4556,4557],{},"Drain adapter for external services",[1543,4559,4560,4565,4570,4574],{},[1564,4561,4562],{},[449,4563,4564],{},"enrich",[1564,4566,4567],{},[449,4568,4569],{},"(ctx: EnrichContext) => void",[1564,4571,4572],{},[449,4573,4442],{},[1564,4575,4576],{},"Event enrichment callback",[509,4578,4580],{"id":4579},"tail-sampling","Tail Sampling",[445,4582,4583],{},"Combine rule-based and custom tail sampling to always capture what matters, even when head sampling drops most logs:",[521,4585,4587],{"className":594,"code":4586,"filename":596,"language":597,"meta":527,"style":527},"export const { withEvlog, useLogger } = createEvlog({\n  service: 'my-app',\n  sampling: {\n    rates: { info: 10 }, \u002F\u002F Only keep 10% of info logs\n    keep: [\n      { status: 400 },              \u002F\u002F Always keep 4xx\u002F5xx\n      { duration: 1000 },           \u002F\u002F Always keep slow requests\n      { path: '\u002Fapi\u002Fcritical\u002F**' }, \u002F\u002F Always keep critical paths\n    ],\n  },\n  \u002F\u002F Custom: always keep premium user requests\n  keep: (ctx) => {\n    const user = ctx.context.user as { premium?: boolean } | undefined\n    if (user?.premium) ctx.shouldKeep = true\n  },\n})\n",[449,4588,4589,4614,4628,4636,4655,4663,4678,4692,4710,4716,4720,4725,4741,4775,4799,4803],{"__ignoreMap":527},[531,4590,4591,4593,4595,4597,4599,4601,4604,4606,4608,4610,4612],{"class":533,"line":534},[531,4592,641],{"class":604},[531,4594,645],{"class":644},[531,4596,609],{"class":608},[531,4598,650],{"class":612},[531,4600,653],{"class":608},[531,4602,4603],{"class":612}," useLogger ",[531,4605,669],{"class":608},[531,4607,672],{"class":608},[531,4609,613],{"class":675},[531,4611,678],{"class":612},[531,4613,681],{"class":608},[531,4615,4616,4618,4620,4622,4624,4626],{"class":533,"line":631},[531,4617,688],{"class":687},[531,4619,691],{"class":608},[531,4621,622],{"class":608},[531,4623,696],{"class":540},[531,4625,699],{"class":608},[531,4627,702],{"class":608},[531,4629,4630,4632,4634],{"class":533,"line":638},[531,4631,2096],{"class":687},[531,4633,691],{"class":608},[531,4635,775],{"class":608},[531,4637,4638,4640,4642,4644,4646,4648,4650,4652],{"class":533,"line":684},[531,4639,2106],{"class":687},[531,4641,691],{"class":608},[531,4643,609],{"class":608},[531,4645,2113],{"class":687},[531,4647,691],{"class":608},[531,4649,2118],{"class":1934},[531,4651,2149],{"class":608},[531,4653,4654],{"class":1393}," \u002F\u002F Only keep 10% of info logs\n",[531,4656,4657,4659,4661],{"class":533,"line":705},[531,4658,2127],{"class":687},[531,4660,691],{"class":608},[531,4662,2132],{"class":612},[531,4664,4665,4667,4669,4671,4673,4675],{"class":533,"line":824},[531,4666,2138],{"class":608},[531,4668,2141],{"class":687},[531,4670,691],{"class":608},[531,4672,2146],{"class":1934},[531,4674,2149],{"class":608},[531,4676,4677],{"class":1393},"              \u002F\u002F Always keep 4xx\u002F5xx\n",[531,4679,4680,4682,4684,4686,4688,4690],{"class":533,"line":858},[531,4681,2138],{"class":608},[531,4683,2160],{"class":687},[531,4685,691],{"class":608},[531,4687,2165],{"class":1934},[531,4689,2149],{"class":608},[531,4691,2170],{"class":1393},[531,4693,4694,4696,4698,4700,4702,4704,4706,4708],{"class":533,"line":1348},[531,4695,2138],{"class":608},[531,4697,2178],{"class":687},[531,4699,691],{"class":608},[531,4701,622],{"class":608},[531,4703,2185],{"class":540},[531,4705,699],{"class":608},[531,4707,2149],{"class":608},[531,4709,2192],{"class":1393},[531,4711,4712,4714],{"class":533,"line":1356},[531,4713,2198],{"class":612},[531,4715,702],{"class":608},[531,4717,4718],{"class":533,"line":1361},[531,4719,1726],{"class":608},[531,4721,4722],{"class":533,"line":1368},[531,4723,4724],{"class":1393},"  \u002F\u002F Custom: always keep premium user requests\n",[531,4726,4727,4729,4731,4733,4735,4737,4739],{"class":533,"line":1380},[531,4728,2331],{"class":675},[531,4730,691],{"class":608},[531,4732,2336],{"class":608},[531,4734,2340],{"class":2339},[531,4736,2343],{"class":608},[531,4738,772],{"class":644},[531,4740,775],{"class":608},[531,4742,4743,4745,4747,4749,4751,4753,4755,4757,4759,4761,4763,4765,4767,4769,4771,4773],{"class":533,"line":1390},[531,4744,2353],{"class":644},[531,4746,2356],{"class":612},[531,4748,672],{"class":608},[531,4750,2361],{"class":612},[531,4752,797],{"class":608},[531,4754,2366],{"class":612},[531,4756,797],{"class":608},[531,4758,2371],{"class":612},[531,4760,2374],{"class":604},[531,4762,609],{"class":608},[531,4764,2379],{"class":687},[531,4766,2382],{"class":608},[531,4768,2385],{"class":537},[531,4770,616],{"class":608},[531,4772,2390],{"class":608},[531,4774,2393],{"class":537},[531,4776,4777,4779,4781,4783,4785,4787,4789,4791,4793,4795,4797],{"class":533,"line":1397},[531,4778,2399],{"class":604},[531,4780,2336],{"class":687},[531,4782,2371],{"class":612},[531,4784,2406],{"class":608},[531,4786,2409],{"class":612},[531,4788,2412],{"class":687},[531,4790,2340],{"class":612},[531,4792,797],{"class":608},[531,4794,2419],{"class":612},[531,4796,672],{"class":608},[531,4798,2424],{"class":1050},[531,4800,4801],{"class":533,"line":1403},[531,4802,1726],{"class":608},[531,4804,4805,4807],{"class":533,"line":1415},[531,4806,669],{"class":608},[531,4808,710],{"class":612},[445,4810,4370,4811,4813],{},[449,4812,4527],{}," rules use OR logic: any match forces the event through regardless of head sampling.",[509,4815,303],{"id":4816},"middleware",[445,4818,4819,4820,1454,4823,4826,4827,4829],{},"Set ",[449,4821,4822],{},"x-request-id",[449,4824,4825],{},"x-evlog-start"," headers so ",[449,4828,455],{}," can correlate timing across the middleware -> handler chain:",[521,4831,4834],{"className":594,"code":4832,"filename":4833,"language":597,"meta":527,"style":527},"import { evlogMiddleware } from 'evlog\u002Fnext'\n\nexport const proxy = evlogMiddleware()\n\nexport const config = {\n  matcher: ['\u002Fapi\u002F:path*'],\n}\n","proxy.ts",[449,4835,4836,4855,4859,4874,4878,4891,4911],{"__ignoreMap":527},[531,4837,4838,4840,4842,4845,4847,4849,4851,4853],{"class":533,"line":534},[531,4839,605],{"class":604},[531,4841,609],{"class":608},[531,4843,4844],{"class":612}," evlogMiddleware",[531,4846,616],{"class":608},[531,4848,619],{"class":604},[531,4850,622],{"class":608},[531,4852,625],{"class":540},[531,4854,628],{"class":608},[531,4856,4857],{"class":533,"line":631},[531,4858,635],{"emptyLinePlaceholder":634},[531,4860,4861,4863,4865,4868,4870,4872],{"class":533,"line":638},[531,4862,641],{"class":604},[531,4864,645],{"class":644},[531,4866,4867],{"class":612}," proxy ",[531,4869,759],{"class":608},[531,4871,4844],{"class":675},[531,4873,789],{"class":612},[531,4875,4876],{"class":533,"line":684},[531,4877,635],{"emptyLinePlaceholder":634},[531,4879,4880,4882,4884,4887,4889],{"class":533,"line":705},[531,4881,641],{"class":604},[531,4883,645],{"class":644},[531,4885,4886],{"class":612}," config ",[531,4888,759],{"class":608},[531,4890,775],{"class":608},[531,4892,4893,4896,4898,4900,4902,4905,4907,4909],{"class":533,"line":824},[531,4894,4895],{"class":687},"  matcher",[531,4897,691],{"class":608},[531,4899,1699],{"class":612},[531,4901,699],{"class":608},[531,4903,4904],{"class":540},"\u002Fapi\u002F:path*",[531,4906,699],{"class":608},[531,4908,1719],{"class":612},[531,4910,702],{"class":608},[531,4912,4913],{"class":533,"line":858},[531,4914,3863],{"class":608},[883,4916,4917,4918,4921,4922,4924,4925,4927],{"color":885,"icon":13},"Older versions of Next.js use ",[449,4919,4920],{},"middleware.ts"," instead of ",[449,4923,4833],{},". The evlog middleware works with both, so just import from ",[449,4926,625],{}," regardless.",[509,4929,4931],{"id":4930},"server-actions","Server Actions",[445,4933,4934,4936],{},[449,4935,455],{}," also works with Server Actions. Wrap your action to get full request-scoped logging:",[521,4938,4941],{"className":594,"code":4939,"filename":4940,"language":597,"meta":527,"style":527},"'use server'\nimport { withEvlog, useLogger } from '@\u002Flib\u002Fevlog'\n\nexport const checkout = withEvlog(async (formData: FormData) => {\n  const log = useLogger()\n  log.set({ action: 'checkout', cartId: formData.get('cartId') })\n  \u002F\u002F ...\n})\n","app\u002Factions\u002Fcheckout.ts",[449,4942,4943,4952,4974,4978,5009,5021,5073,5078],{"__ignoreMap":527},[531,4944,4945,4947,4950],{"class":533,"line":534},[531,4946,699],{"class":608},[531,4948,4949],{"class":540},"use server",[531,4951,628],{"class":608},[531,4953,4954,4956,4958,4960,4962,4964,4966,4968,4970,4972],{"class":533,"line":631},[531,4955,605],{"class":604},[531,4957,609],{"class":608},[531,4959,650],{"class":612},[531,4961,653],{"class":608},[531,4963,656],{"class":612},[531,4965,616],{"class":608},[531,4967,619],{"class":604},[531,4969,622],{"class":608},[531,4971,741],{"class":540},[531,4973,628],{"class":608},[531,4975,4976],{"class":533,"line":638},[531,4977,635],{"emptyLinePlaceholder":634},[531,4979,4980,4982,4984,4987,4989,4991,4993,4995,4997,4999,5001,5003,5005,5007],{"class":533,"line":684},[531,4981,641],{"class":604},[531,4983,645],{"class":644},[531,4985,4986],{"class":612}," checkout ",[531,4988,759],{"class":608},[531,4990,650],{"class":675},[531,4992,678],{"class":612},[531,4994,766],{"class":644},[531,4996,2336],{"class":608},[531,4998,4089],{"class":2339},[531,5000,691],{"class":608},[531,5002,4094],{"class":537},[531,5004,2343],{"class":608},[531,5006,772],{"class":644},[531,5008,775],{"class":608},[531,5010,5011,5013,5015,5017,5019],{"class":533,"line":705},[531,5012,780],{"class":644},[531,5014,661],{"class":612},[531,5016,672],{"class":608},[531,5018,656],{"class":675},[531,5020,789],{"class":687},[531,5022,5023,5025,5027,5029,5031,5033,5035,5037,5039,5042,5044,5046,5049,5051,5054,5056,5058,5060,5062,5065,5067,5069,5071],{"class":533,"line":824},[531,5024,794],{"class":612},[531,5026,797],{"class":608},[531,5028,800],{"class":675},[531,5030,678],{"class":687},[531,5032,805],{"class":608},[531,5034,808],{"class":687},[531,5036,691],{"class":608},[531,5038,622],{"class":608},[531,5040,5041],{"class":540},"checkout",[531,5043,699],{"class":608},[531,5045,653],{"class":608},[531,5047,5048],{"class":687}," cartId",[531,5050,691],{"class":608},[531,5052,5053],{"class":612}," formData",[531,5055,797],{"class":608},[531,5057,4182],{"class":675},[531,5059,678],{"class":687},[531,5061,699],{"class":608},[531,5063,5064],{"class":540},"cartId",[531,5066,699],{"class":608},[531,5068,2412],{"class":687},[531,5070,669],{"class":608},[531,5072,710],{"class":687},[531,5074,5075],{"class":533,"line":858},[531,5076,5077],{"class":1393},"  \u002F\u002F ...\n",[531,5079,5080,5082],{"class":533,"line":1348},[531,5081,669],{"class":608},[531,5083,710],{"class":612},[509,5085,5087],{"id":5086},"client-provider","Client Provider",[445,5089,5090,5091,5094],{},"Wrap your root layout with ",[449,5092,5093],{},"EvlogProvider"," to enable client-side logging and transport:",[521,5096,5099],{"className":4037,"code":5097,"filename":5098,"language":4040,"meta":527,"style":527},"import { EvlogProvider } from 'evlog\u002Fnext\u002Fclient'\n\nexport default function Layout({ children }: { children: React.ReactNode }) {\n  return (\n    \u003Chtml lang=\"en\">\n      \u003Cbody>\n        \u003CEvlogProvider service=\"my-app\" transport={{ enabled: true }}>\n          {children}\n        \u003C\u002FEvlogProvider>\n      \u003C\u002Fbody>\n    \u003C\u002Fhtml>\n  )\n}\n","app\u002Flayout.tsx",[449,5100,5101,5121,5125,5165,5172,5195,5204,5237,5247,5256,5265,5274,5279],{"__ignoreMap":527},[531,5102,5103,5105,5107,5110,5112,5114,5116,5119],{"class":533,"line":534},[531,5104,605],{"class":604},[531,5106,609],{"class":608},[531,5108,5109],{"class":612}," EvlogProvider",[531,5111,616],{"class":608},[531,5113,619],{"class":604},[531,5115,622],{"class":608},[531,5117,5118],{"class":540},"evlog\u002Fnext\u002Fclient",[531,5120,628],{"class":608},[531,5122,5123],{"class":533,"line":631},[531,5124,635],{"emptyLinePlaceholder":634},[531,5126,5127,5129,5132,5134,5137,5140,5143,5146,5148,5150,5152,5155,5157,5160,5163],{"class":533,"line":638},[531,5128,641],{"class":604},[531,5130,5131],{"class":604}," default",[531,5133,4081],{"class":644},[531,5135,5136],{"class":675}," Layout",[531,5138,5139],{"class":608},"({",[531,5141,5142],{"class":2339}," children",[531,5144,5145],{"class":608}," }:",[531,5147,609],{"class":608},[531,5149,5142],{"class":687},[531,5151,691],{"class":608},[531,5153,5154],{"class":537}," React",[531,5156,797],{"class":608},[531,5158,5159],{"class":537},"ReactNode",[531,5161,5162],{"class":608}," })",[531,5164,775],{"class":608},[531,5166,5167,5169],{"class":533,"line":684},[531,5168,827],{"class":604},[531,5170,5171],{"class":687}," (\n",[531,5173,5174,5177,5180,5183,5185,5187,5190,5192],{"class":533,"line":705},[531,5175,5176],{"class":608},"    \u003C",[531,5178,5179],{"class":687},"html",[531,5181,5182],{"class":644}," lang",[531,5184,759],{"class":608},[531,5186,3759],{"class":608},[531,5188,5189],{"class":540},"en",[531,5191,3759],{"class":608},[531,5193,5194],{"class":608},">\n",[531,5196,5197,5200,5202],{"class":533,"line":824},[531,5198,5199],{"class":608},"      \u003C",[531,5201,2846],{"class":687},[531,5203,5194],{"class":608},[531,5205,5206,5209,5211,5213,5215,5217,5219,5221,5224,5227,5230,5232,5234],{"class":533,"line":858},[531,5207,5208],{"class":608},"        \u003C",[531,5210,5093],{"class":537},[531,5212,2244],{"class":644},[531,5214,759],{"class":608},[531,5216,3759],{"class":608},[531,5218,696],{"class":540},[531,5220,3759],{"class":608},[531,5222,5223],{"class":644}," transport",[531,5225,5226],{"class":608},"={{",[531,5228,5229],{"class":687}," enabled",[531,5231,691],{"class":608},[531,5233,1051],{"class":1050},[531,5235,5236],{"class":608}," }}>\n",[531,5238,5239,5242,5245],{"class":533,"line":1348},[531,5240,5241],{"class":608},"          {",[531,5243,5244],{"class":612},"children",[531,5246,3863],{"class":608},[531,5248,5249,5252,5254],{"class":533,"line":1356},[531,5250,5251],{"class":608},"        \u003C\u002F",[531,5253,5093],{"class":537},[531,5255,5194],{"class":608},[531,5257,5258,5261,5263],{"class":533,"line":1361},[531,5259,5260],{"class":608},"      \u003C\u002F",[531,5262,2846],{"class":687},[531,5264,5194],{"class":608},[531,5266,5267,5270,5272],{"class":533,"line":1368},[531,5268,5269],{"class":608},"    \u003C\u002F",[531,5271,5179],{"class":687},[531,5273,5194],{"class":608},[531,5275,5276],{"class":533,"line":1380},[531,5277,5278],{"class":687},"  )\n",[531,5280,5281],{"class":533,"line":1390},[531,5282,3863],{"class":608},[509,5284,255],{"id":5285},"client-logging",[445,5287,3244,5288,5291],{},[449,5289,5290],{},"log"," in any client component. Identity is preserved across all logs and transported to the server:",[521,5293,5296],{"className":4037,"code":5294,"filename":5295,"language":4040,"meta":527,"style":527},"'use client'\nimport { log, setIdentity, clearIdentity } from 'evlog\u002Fnext\u002Fclient'\n\nexport function Dashboard({ user }: { user: { id: string } }) {\n  \u002F\u002F Set identity once - all subsequent logs include it\n  useEffect(() => {\n    setIdentity({ userId: user.id })\n    return () => clearIdentity()\n  }, [user.id])\n\n  return (\n    \u003Cbutton onClick={() => log.info({ action: 'export_clicked', format: 'csv' })}>\n      Export\n    \u003C\u002Fbutton>\n  )\n}\n","app\u002Fcomponents\u002FDashboard.tsx",[449,5297,5298,5306,5334,5338,5374,5379,5392,5417,5430,5446,5450,5456,5513,5518,5526,5530],{"__ignoreMap":527},[531,5299,5300,5302,5304],{"class":533,"line":534},[531,5301,699],{"class":608},[531,5303,4049],{"class":540},[531,5305,628],{"class":608},[531,5307,5308,5310,5312,5314,5316,5319,5321,5324,5326,5328,5330,5332],{"class":533,"line":631},[531,5309,605],{"class":604},[531,5311,609],{"class":608},[531,5313,661],{"class":612},[531,5315,653],{"class":608},[531,5317,5318],{"class":612}," setIdentity",[531,5320,653],{"class":608},[531,5322,5323],{"class":612}," clearIdentity",[531,5325,616],{"class":608},[531,5327,619],{"class":604},[531,5329,622],{"class":608},[531,5331,5118],{"class":540},[531,5333,628],{"class":608},[531,5335,5336],{"class":533,"line":638},[531,5337,635],{"emptyLinePlaceholder":634},[531,5339,5340,5342,5344,5347,5349,5351,5353,5355,5357,5359,5361,5363,5365,5368,5370,5372],{"class":533,"line":684},[531,5341,641],{"class":604},[531,5343,4081],{"class":644},[531,5345,5346],{"class":675}," Dashboard",[531,5348,5139],{"class":608},[531,5350,2356],{"class":2339},[531,5352,5145],{"class":608},[531,5354,609],{"class":608},[531,5356,2356],{"class":687},[531,5358,691],{"class":608},[531,5360,609],{"class":608},[531,5362,2704],{"class":687},[531,5364,691],{"class":608},[531,5366,5367],{"class":537}," string",[531,5369,616],{"class":608},[531,5371,5162],{"class":608},[531,5373,775],{"class":608},[531,5375,5376],{"class":533,"line":705},[531,5377,5378],{"class":1393},"  \u002F\u002F Set identity once - all subsequent logs include it\n",[531,5380,5381,5384,5386,5388,5390],{"class":533,"line":824},[531,5382,5383],{"class":675},"  useEffect",[531,5385,678],{"class":687},[531,5387,1163],{"class":608},[531,5389,772],{"class":644},[531,5391,775],{"class":608},[531,5393,5394,5397,5399,5401,5404,5406,5408,5410,5413,5415],{"class":533,"line":858},[531,5395,5396],{"class":675},"    setIdentity",[531,5398,678],{"class":687},[531,5400,805],{"class":608},[531,5402,5403],{"class":687}," userId",[531,5405,691],{"class":608},[531,5407,2356],{"class":612},[531,5409,797],{"class":608},[531,5411,5412],{"class":612},"id",[531,5414,616],{"class":608},[531,5416,710],{"class":687},[531,5418,5419,5422,5424,5426,5428],{"class":533,"line":1348},[531,5420,5421],{"class":604},"    return",[531,5423,769],{"class":608},[531,5425,772],{"class":644},[531,5427,5323],{"class":675},[531,5429,789],{"class":687},[531,5431,5432,5435,5437,5439,5441,5443],{"class":533,"line":1356},[531,5433,5434],{"class":608},"  },",[531,5436,1699],{"class":687},[531,5438,2371],{"class":612},[531,5440,797],{"class":608},[531,5442,5412],{"class":612},[531,5444,5445],{"class":687},"])\n",[531,5447,5448],{"class":533,"line":1361},[531,5449,635],{"emptyLinePlaceholder":634},[531,5451,5452,5454],{"class":533,"line":1368},[531,5453,827],{"class":604},[531,5455,5171],{"class":687},[531,5457,5458,5460,5463,5466,5469,5471,5473,5475,5477,5479,5481,5483,5485,5487,5490,5492,5494,5497,5499,5501,5504,5506,5508,5510],{"class":533,"line":1380},[531,5459,5176],{"class":608},[531,5461,5462],{"class":687},"button",[531,5464,5465],{"class":644}," onClick",[531,5467,5468],{"class":608},"={()",[531,5470,772],{"class":644},[531,5472,661],{"class":612},[531,5474,797],{"class":608},[531,5476,885],{"class":675},[531,5478,678],{"class":612},[531,5480,805],{"class":608},[531,5482,808],{"class":687},[531,5484,691],{"class":608},[531,5486,622],{"class":608},[531,5488,5489],{"class":540},"export_clicked",[531,5491,699],{"class":608},[531,5493,653],{"class":608},[531,5495,5496],{"class":687}," format",[531,5498,691],{"class":608},[531,5500,622],{"class":608},[531,5502,5503],{"class":540},"csv",[531,5505,699],{"class":608},[531,5507,616],{"class":608},[531,5509,2343],{"class":612},[531,5511,5512],{"class":608},"}>\n",[531,5514,5515],{"class":533,"line":1390},[531,5516,5517],{"class":612},"      Export\n",[531,5519,5520,5522,5524],{"class":533,"line":1397},[531,5521,5269],{"class":608},[531,5523,5462],{"class":687},[531,5525,5194],{"class":608},[531,5527,5528],{"class":533,"line":1403},[531,5529,5278],{"class":687},[531,5531,5532],{"class":533,"line":1415},[531,5533,3863],{"class":608},[509,5535,5537],{"id":5536},"http-drain","HTTP drain",[445,5539,5540,5541,5543],{},"For advanced use cases, send structured ",[449,5542,1912],{}," events directly from the browser to a custom endpoint:",[521,5545,5548],{"className":594,"code":5546,"filename":5547,"language":597,"meta":527,"style":527},"import { createHttpLogDrain } from 'evlog\u002Fhttp'\n\nconst drain = createHttpLogDrain({\n  drain: { endpoint: '\u002Fapi\u002Fevlog\u002Fhttp-ingest' },\n  pipeline: { batch: { size: 10, intervalMs: 5000 } },\n})\n\ndrain(drainEvent)\nawait drain.flush()\n","lib\u002Fhttp-drain.ts",[449,5549,5550,5570,5574,5588,5610,5643,5649,5653,5660],{"__ignoreMap":527},[531,5551,5552,5554,5556,5559,5561,5563,5565,5568],{"class":533,"line":534},[531,5553,605],{"class":604},[531,5555,609],{"class":608},[531,5557,5558],{"class":612}," createHttpLogDrain",[531,5560,616],{"class":608},[531,5562,619],{"class":604},[531,5564,622],{"class":608},[531,5566,5567],{"class":540},"evlog\u002Fhttp",[531,5569,628],{"class":608},[531,5571,5572],{"class":533,"line":631},[531,5573,635],{"emptyLinePlaceholder":634},[531,5575,5576,5578,5580,5582,5584,5586],{"class":533,"line":638},[531,5577,1867],{"class":644},[531,5579,1967],{"class":612},[531,5581,759],{"class":608},[531,5583,5558],{"class":675},[531,5585,678],{"class":612},[531,5587,681],{"class":608},[531,5589,5590,5592,5594,5596,5599,5601,5603,5606,5608],{"class":533,"line":684},[531,5591,1156],{"class":687},[531,5593,691],{"class":608},[531,5595,609],{"class":608},[531,5597,5598],{"class":687}," endpoint",[531,5600,691],{"class":608},[531,5602,622],{"class":608},[531,5604,5605],{"class":540},"\u002Fapi\u002Fevlog\u002Fhttp-ingest",[531,5607,699],{"class":608},[531,5609,2121],{"class":608},[531,5611,5612,5615,5617,5619,5621,5623,5625,5627,5629,5631,5633,5635,5637,5639,5641],{"class":533,"line":705},[531,5613,5614],{"class":687},"  pipeline",[531,5616,691],{"class":608},[531,5618,609],{"class":608},[531,5620,1922],{"class":687},[531,5622,691],{"class":608},[531,5624,609],{"class":608},[531,5626,1929],{"class":687},[531,5628,691],{"class":608},[531,5630,2118],{"class":1934},[531,5632,653],{"class":608},[531,5634,1940],{"class":687},[531,5636,691],{"class":608},[531,5638,1945],{"class":1934},[531,5640,616],{"class":608},[531,5642,2121],{"class":608},[531,5644,5645,5647],{"class":533,"line":824},[531,5646,669],{"class":608},[531,5648,710],{"class":612},[531,5650,5651],{"class":533,"line":858},[531,5652,635],{"emptyLinePlaceholder":634},[531,5654,5655,5657],{"class":533,"line":1348},[531,5656,927],{"class":675},[531,5658,5659],{"class":612},"(drainEvent)\n",[531,5661,5662,5665,5668,5670,5673],{"class":533,"line":1356},[531,5663,5664],{"class":604},"await",[531,5666,5667],{"class":612}," drain",[531,5669,797],{"class":608},[531,5671,5672],{"class":675},"flush",[531,5674,789],{"class":612},[445,5676,5677],{},"The server endpoint receives batched events:",[521,5679,5682],{"className":594,"code":5680,"filename":5681,"language":597,"meta":527,"style":527},"export async function POST(request: Request) {\n  const events = await request.json()\n  \u002F\u002F Forward to your drain pipeline, Axiom, etc.\n  return new Response(null, { status: 204 })\n}\n","app\u002Fapi\u002Fevlog\u002Fhttp-ingest\u002Froute.ts",[449,5683,5684,5707,5726,5731,5758],{"__ignoreMap":527},[531,5685,5686,5688,5690,5692,5695,5697,5699,5701,5703,5705],{"class":533,"line":534},[531,5687,641],{"class":604},[531,5689,3152],{"class":644},[531,5691,4081],{"class":644},[531,5693,5694],{"class":675}," POST",[531,5696,678],{"class":608},[531,5698,2628],{"class":2339},[531,5700,691],{"class":608},[531,5702,2633],{"class":537},[531,5704,2343],{"class":608},[531,5706,775],{"class":608},[531,5708,5709,5711,5714,5716,5718,5720,5722,5724],{"class":533,"line":631},[531,5710,780],{"class":644},[531,5712,5713],{"class":612}," events",[531,5715,672],{"class":608},[531,5717,1272],{"class":604},[531,5719,2665],{"class":612},[531,5721,797],{"class":608},[531,5723,835],{"class":675},[531,5725,789],{"class":687},[531,5727,5728],{"class":533,"line":638},[531,5729,5730],{"class":1393},"  \u002F\u002F Forward to your drain pipeline, Axiom, etc.\n",[531,5732,5733,5735,5738,5740,5742,5745,5747,5749,5751,5754,5756],{"class":533,"line":684},[531,5734,827],{"class":604},[531,5736,5737],{"class":608}," new",[531,5739,830],{"class":675},[531,5741,678],{"class":687},[531,5743,5744],{"class":608},"null,",[531,5746,609],{"class":608},[531,5748,2141],{"class":687},[531,5750,691],{"class":608},[531,5752,5753],{"class":1934}," 204",[531,5755,616],{"class":608},[531,5757,710],{"class":687},[531,5759,5760],{"class":533,"line":705},[531,5761,3863],{"class":608},[509,5763,5765],{"id":5764},"run-locally","Run Locally",[521,5767,5770],{"className":523,"code":5768,"filename":5769,"language":526,"meta":527,"style":527},"git clone https:\u002F\u002Fgithub.com\u002Fhugorcd\u002Fevlog.git\ncd evlog\u002Fexamples\u002Fnextjs\npnpm install\npnpm run dev\n","Terminal",[449,5771,5772,5783,5791,5798],{"__ignoreMap":527},[531,5773,5774,5777,5780],{"class":533,"line":534},[531,5775,5776],{"class":537},"git",[531,5778,5779],{"class":540}," clone",[531,5781,5782],{"class":540}," https:\u002F\u002Fgithub.com\u002Fhugorcd\u002Fevlog.git\n",[531,5784,5785,5788],{"class":533,"line":631},[531,5786,5787],{"class":675},"cd",[531,5789,5790],{"class":540}," evlog\u002Fexamples\u002Fnextjs\n",[531,5792,5793,5795],{"class":533,"line":638},[531,5794,525],{"class":537},[531,5796,5797],{"class":540}," install\n",[531,5799,5800,5802,5805],{"class":533,"line":684},[531,5801,525],{"class":537},[531,5803,5804],{"class":540}," run",[531,5806,5807],{"class":540}," dev\n",[445,5809,5810,5811,5815],{},"Open ",[498,5812,5813],{"href":5813,"rel":5814},"http:\u002F\u002Flocalhost:3000",[502]," to explore the example.",[5817,5818,5819],"card-group",{},[5820,5821,5825],"card",{"icon":5822,"title":5823,"to":5824},"i-simple-icons-github","Source Code","https:\u002F\u002Fgithub.com\u002Fhugorcd\u002Fevlog\u002Ftree\u002Fmain\u002Fexamples\u002Fnextjs","Browse the complete Next.js example source on GitHub.",[509,5827,5829],{"id":5828},"next-steps","Next Steps",[445,5831,5832,5833,5835],{},"Deepen your ",[894,5834,172],{}," integration:",[470,5837,5838,5843,5848,5853],{},[473,5839,5840,5842],{},[498,5841,46],{"href":47},": Design comprehensive events with context layering",[473,5844,5845,5847],{},[498,5846,90],{"href":95},": Send logs to Axiom, Sentry, PostHog, and more",[473,5849,5850,5852],{},[498,5851,61],{"href":62},": Control log volume with head and tail sampling",[473,5854,5855,5857,5858,1467,5860,3255,5862,5864],{},[498,5856,51],{"href":52},": Throw errors with ",[449,5859,3251],{},[449,5861,3254],{},[449,5863,3258],{}," fields",[5866,5867,5868],"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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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}",{"title":527,"searchDepth":631,"depth":631,"links":5870},[5871,5876,5882,5883,5884,5886,5889,5890,5891,5892,5893,5894,5895,5896,5897],{"id":511,"depth":631,"text":25,"children":5872},[5873,5874,5875],{"id":515,"depth":638,"text":516},{"id":590,"depth":638,"text":591},{"id":713,"depth":638,"text":714},{"id":865,"depth":631,"text":866,"children":5877},[5878,5879,5880,5881],{"id":930,"depth":638,"text":931},{"id":1174,"depth":638,"text":1175},{"id":1191,"depth":638,"text":1192},{"id":1503,"depth":638,"text":414},{"id":1735,"depth":631,"text":1736},{"id":2571,"depth":631,"text":46},{"id":3038,"depth":631,"text":5885},"Background work (log.fork)",{"id":3240,"depth":631,"text":3241,"children":5887},[5888],{"id":4020,"depth":638,"text":4021},{"id":4351,"depth":631,"text":414},{"id":4579,"depth":631,"text":4580},{"id":4816,"depth":631,"text":303},{"id":4930,"depth":631,"text":4931},{"id":5086,"depth":631,"text":5087},{"id":5285,"depth":631,"text":255},{"id":5536,"depth":631,"text":5537},{"id":5764,"depth":631,"text":5765},{"id":5828,"depth":631,"text":5829},"Wide events, structured errors, drain pipeline, tail sampling, route-based services, error handling, and client-side logging in Next.js applications.","md",[5901],{"label":5823,"icon":5822,"to":5824,"color":5902,"variant":5903},"neutral","subtle",{},{"title":172,"icon":175},{"title":172,"description":5898},"4IcTuXF2Qt-Azok3GMUL3-uNPxjGTiVt32uY8YxKHps",[5909,5911],{"title":167,"path":168,"stem":169,"description":5910,"icon":170,"children":-1},"Automatic wide events, structured errors, drain adapters, enrichers, tail sampling, and client transport in Nuxt applications.",{"title":177,"path":178,"stem":179,"description":5912,"icon":180,"children":-1},"Automatic wide events, structured errors, drain adapters, enrichers, and tail sampling in SvelteKit applications.",1781250173976]