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