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