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