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