[{"data":1,"prerenderedAt":3501},["ShallowReactive",2],{"navigation_docs":3,"-frameworks-nuxt":253,"-frameworks-nuxt-surround":3496},[4,30,110,169,223,239],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-zap",{"title":25,"path":26,"stem":27,"icon":28},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","1.getting-started\u002F4.agent-skills","i-lucide-sparkles",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Frameworks","\u002Fframeworks","2.frameworks",[35,40,45,50,55,60,65,70,75,80,85,90,95,100,105],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Fframeworks\u002Foverview","2.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":41,"path":42,"stem":43,"icon":44},"Nuxt","\u002Fframeworks\u002Fnuxt","2.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":46,"path":47,"stem":48,"icon":49},"Next.js","\u002Fframeworks\u002Fnextjs","2.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":51,"path":52,"stem":53,"icon":54},"SvelteKit","\u002Fframeworks\u002Fsveltekit","2.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":56,"path":57,"stem":58,"icon":59},"Nitro","\u002Fframeworks\u002Fnitro","2.frameworks\u002F04.nitro","i-custom-nitro",{"title":61,"path":62,"stem":63,"icon":64},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","2.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":66,"path":67,"stem":68,"icon":69},"NestJS","\u002Fframeworks\u002Fnestjs","2.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":71,"path":72,"stem":73,"icon":74},"Express","\u002Fframeworks\u002Fexpress","2.frameworks\u002F07.express","i-simple-icons-express",{"title":76,"path":77,"stem":78,"icon":79},"Hono","\u002Fframeworks\u002Fhono","2.frameworks\u002F08.hono","i-simple-icons-hono",{"title":81,"path":82,"stem":83,"icon":84},"Fastify","\u002Fframeworks\u002Ffastify","2.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":86,"path":87,"stem":88,"icon":89},"Elysia","\u002Fframeworks\u002Felysia","2.frameworks\u002F10.elysia","i-custom-elysia",{"title":91,"path":92,"stem":93,"icon":94},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","2.frameworks\u002F11.cloudflare-workers","i-simple-icons-cloudflare",{"title":96,"path":97,"stem":98,"icon":99},"Standalone","\u002Fframeworks\u002Fstandalone","2.frameworks\u002F12.standalone","i-simple-icons-typescript",{"title":101,"path":102,"stem":103,"icon":104},"Astro","\u002Fframeworks\u002Fastro","2.frameworks\u002F13.astro","i-simple-icons-astro",{"title":106,"path":107,"stem":108,"icon":109},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","2.frameworks\u002F14.custom-integration","i-lucide-puzzle",{"title":111,"path":112,"stem":113,"children":114,"page":29},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[115,120,125,130,135,140,145,149,154,159,164],{"title":116,"path":117,"stem":118,"icon":119},"Request Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":121,"path":122,"stem":123,"icon":124},"Wide Events","\u002Fcore-concepts\u002Fwide-events","3.core-concepts\u002F1.wide-events","i-lucide-layers",{"title":126,"path":127,"stem":128,"icon":129},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F10.vite-plugin","i-custom-vite",{"title":131,"path":132,"stem":133,"icon":134},"AI SDK Integration","\u002Fcore-concepts\u002Fai-sdk","3.core-concepts\u002F11.ai-sdk","i-lucide-scan-eye",{"title":136,"path":137,"stem":138,"icon":139},"Structured Errors","\u002Fcore-concepts\u002Fstructured-errors","3.core-concepts\u002F2.structured-errors","i-lucide-shield-alert",{"title":141,"path":142,"stem":143,"icon":144},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F3.best-practices","i-lucide-shield-check",{"title":146,"path":147,"stem":148,"icon":99},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F4.typed-fields",{"title":150,"path":151,"stem":152,"icon":153},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F5.sampling","i-lucide-filter",{"title":155,"path":156,"stem":157,"icon":158},"Client Logging","\u002Fcore-concepts\u002Fclient-logging","3.core-concepts\u002F6.client-logging","i-lucide-monitor",{"title":160,"path":161,"stem":162,"icon":163},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F7.configuration","i-lucide-settings",{"title":165,"path":166,"stem":167,"icon":168},"Performance","\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F8.performance","i-lucide-gauge",{"title":170,"path":171,"stem":172,"children":173,"page":29},"Adapters","\u002Fadapters","4.adapters",[174,178,183,188,193,198,203,208,213,218],{"title":36,"path":175,"stem":176,"icon":177},"\u002Fadapters\u002Foverview","4.adapters\u002F1.overview","i-custom-plug",{"title":179,"path":180,"stem":181,"icon":182},"Browser","\u002Fadapters\u002Fbrowser","4.adapters\u002F10.browser","i-lucide-globe",{"title":184,"path":185,"stem":186,"icon":187},"Axiom","\u002Fadapters\u002Faxiom","4.adapters\u002F2.axiom","i-custom-axiom",{"title":189,"path":190,"stem":191,"icon":192},"OTLP","\u002Fadapters\u002Fotlp","4.adapters\u002F3.otlp","i-simple-icons-opentelemetry",{"title":194,"path":195,"stem":196,"icon":197},"PostHog","\u002Fadapters\u002Fposthog","4.adapters\u002F4.posthog","i-simple-icons-posthog",{"title":199,"path":200,"stem":201,"icon":202},"Sentry","\u002Fadapters\u002Fsentry","4.adapters\u002F5.sentry","i-simple-icons-sentry",{"title":204,"path":205,"stem":206,"icon":207},"Better Stack","\u002Fadapters\u002Fbetter-stack","4.adapters\u002F6.better-stack","i-simple-icons-betterstack",{"title":209,"path":210,"stem":211,"icon":212},"File System","\u002Fadapters\u002Ffs","4.adapters\u002F7.fs","i-lucide-hard-drive",{"title":214,"path":215,"stem":216,"icon":217},"Custom Adapters","\u002Fadapters\u002Fcustom","4.adapters\u002F8.custom","i-lucide-code",{"title":219,"path":220,"stem":221,"icon":222},"Pipeline","\u002Fadapters\u002Fpipeline","4.adapters\u002F9.pipeline","i-lucide-workflow",{"title":224,"path":225,"stem":226,"children":227,"page":29},"Enrichers","\u002Fenrichers","5.enrichers",[228,231,235],{"title":36,"path":229,"stem":230,"icon":28},"\u002Fenrichers\u002Foverview","5.enrichers\u002F1.overview",{"title":232,"path":233,"stem":234,"icon":109},"Built-in","\u002Fenrichers\u002Fbuilt-in","5.enrichers\u002F2.built-in",{"title":236,"path":237,"stem":238,"icon":217},"Custom","\u002Fenrichers\u002Fcustom","5.enrichers\u002F3.custom",{"title":240,"path":241,"stem":242,"children":243,"page":29},"NuxtHub","\u002Fnuxthub","6.nuxthub",[244,248],{"title":36,"path":245,"stem":246,"icon":247},"\u002Fnuxthub\u002Foverview","6.nuxthub\u002F1.overview","i-lucide-database",{"title":249,"path":250,"stem":251,"icon":252},"Retention","\u002Fnuxthub\u002Fretention","6.nuxthub\u002F2.retention","i-lucide-clock",{"id":254,"title":41,"body":255,"description":3489,"extension":3490,"links":3491,"meta":3492,"navigation":3493,"path":42,"seo":3494,"stem":43,"__hash__":3495},"docs\u002F2.frameworks\u002F01.nuxt.md",{"type":256,"value":257,"toc":3462},"minimark",[258,275,362,366,371,437,441,550,560,563,570,919,922,1000,1004,1019,1277,1293,1296,1318,1328,1602,1606,1615,1747,1761,1765,1768,1935,1939,1942,1946,2184,2188,2395,2404,2406,2410,2413,2540,2543,2547,2550,2694,2698,2705,2858,2865,2869,2872,2965,2969,2999,3003,3009,3114,3118,3121,3254,3258,3265,3458],[259,260,261,262,266,267,270,271,274],"p",{},"evlog provides a first-class Nuxt module with auto-imported ",[263,264,265],"code",{},"useLogger",", ",[263,268,269],{},"createError",", and ",[263,272,273],{},"parseError",". Add it to your config and start logging with zero boilerplate.",[276,277,278],"code-collapse",{},[279,280,286],"pre",{"className":281,"code":282,"filename":283,"language":284,"meta":285,"style":285},"language-txt shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Set up evlog in my Nuxt app with wide events and structured errors.\n\n- Install evlog: pnpm add evlog\n- Add 'evlog\u002Fnuxt' to modules in nuxt.config.ts\n- Set evlog.env.service to my app name\n- useLogger, createError, and parseError are auto-imported\n- Create a server\u002Fapi route using useLogger(event) and log.set() to build a wide event\n- Throw errors with createError({ message, status, why, fix })\n- Wide events are auto-emitted when each request completes\n\nDocs: https:\u002F\u002Fwww.evlog.dev\u002Fframeworks\u002Fnuxt\nAdapters: https:\u002F\u002Fwww.evlog.dev\u002Fadapters\n","Prompt","txt","",[263,287,288,296,303,309,315,321,327,333,339,345,350,356],{"__ignoreMap":285},[289,290,293],"span",{"class":291,"line":292},"line",1,[289,294,295],{},"Set up evlog in my Nuxt app with wide events and structured errors.\n",[289,297,299],{"class":291,"line":298},2,[289,300,302],{"emptyLinePlaceholder":301},true,"\n",[289,304,306],{"class":291,"line":305},3,[289,307,308],{},"- Install evlog: pnpm add evlog\n",[289,310,312],{"class":291,"line":311},4,[289,313,314],{},"- Add 'evlog\u002Fnuxt' to modules in nuxt.config.ts\n",[289,316,318],{"class":291,"line":317},5,[289,319,320],{},"- Set evlog.env.service to my app name\n",[289,322,324],{"class":291,"line":323},6,[289,325,326],{},"- useLogger, createError, and parseError are auto-imported\n",[289,328,330],{"class":291,"line":329},7,[289,331,332],{},"- Create a server\u002Fapi route using useLogger(event) and log.set() to build a wide event\n",[289,334,336],{"class":291,"line":335},8,[289,337,338],{},"- Throw errors with createError({ message, status, why, fix })\n",[289,340,342],{"class":291,"line":341},9,[289,343,344],{},"- Wide events are auto-emitted when each request completes\n",[289,346,348],{"class":291,"line":347},10,[289,349,302],{"emptyLinePlaceholder":301},[289,351,353],{"class":291,"line":352},11,[289,354,355],{},"Docs: https:\u002F\u002Fwww.evlog.dev\u002Fframeworks\u002Fnuxt\n",[289,357,359],{"class":291,"line":358},12,[289,360,361],{},"Adapters: https:\u002F\u002Fwww.evlog.dev\u002Fadapters\n",[363,364,20],"h2",{"id":365},"quick-start",[367,368,370],"h3",{"id":369},"_1-install","1. Install",[372,373,374,394,409,423],"code-group",{},[279,375,380],{"className":376,"code":377,"filename":378,"language":379,"meta":285,"style":285},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add evlog\n","pnpm","bash",[263,381,382],{"__ignoreMap":285},[289,383,384,387,391],{"class":291,"line":292},[289,385,378],{"class":386},"sBMFI",[289,388,390],{"class":389},"sfazB"," add",[289,392,393],{"class":389}," evlog\n",[279,395,398],{"className":376,"code":396,"filename":397,"language":379,"meta":285,"style":285},"npm install evlog\n","npm",[263,399,400],{"__ignoreMap":285},[289,401,402,404,407],{"class":291,"line":292},[289,403,397],{"class":386},[289,405,406],{"class":389}," install",[289,408,393],{"class":389},[279,410,413],{"className":376,"code":411,"filename":412,"language":379,"meta":285,"style":285},"yarn add evlog\n","yarn",[263,414,415],{"__ignoreMap":285},[289,416,417,419,421],{"class":291,"line":292},[289,418,412],{"class":386},[289,420,390],{"class":389},[289,422,393],{"class":389},[279,424,427],{"className":376,"code":425,"filename":426,"language":379,"meta":285,"style":285},"bun add evlog\n","bun",[263,428,429],{"__ignoreMap":285},[289,430,431,433,435],{"class":291,"line":292},[289,432,426],{"class":386},[289,434,390],{"class":389},[289,436,393],{"class":389},[367,438,440],{"id":439},"_2-add-the-module","2. Add the module",[279,442,447],{"className":443,"code":444,"filename":445,"language":446,"meta":285,"style":285},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    env: {\n      service: 'my-app',\n    },\n  },\n})\n","nuxt.config.ts","typescript",[263,448,449,470,496,506,515,532,537,542],{"__ignoreMap":285},[289,450,451,455,458,462,466],{"class":291,"line":292},[289,452,454],{"class":453},"s7zQu","export",[289,456,457],{"class":453}," default",[289,459,461],{"class":460},"s2Zo4"," defineNuxtConfig",[289,463,465],{"class":464},"sTEyZ","(",[289,467,469],{"class":468},"sMK4o","{\n",[289,471,472,476,479,482,485,488,490,493],{"class":291,"line":298},[289,473,475],{"class":474},"swJcz","  modules",[289,477,478],{"class":468},":",[289,480,481],{"class":464}," [",[289,483,484],{"class":468},"'",[289,486,487],{"class":389},"evlog\u002Fnuxt",[289,489,484],{"class":468},[289,491,492],{"class":464},"]",[289,494,495],{"class":468},",\n",[289,497,498,501,503],{"class":291,"line":305},[289,499,500],{"class":474},"  evlog",[289,502,478],{"class":468},[289,504,505],{"class":468}," {\n",[289,507,508,511,513],{"class":291,"line":311},[289,509,510],{"class":474},"    env",[289,512,478],{"class":468},[289,514,505],{"class":468},[289,516,517,520,522,525,528,530],{"class":291,"line":317},[289,518,519],{"class":474},"      service",[289,521,478],{"class":468},[289,523,524],{"class":468}," '",[289,526,527],{"class":389},"my-app",[289,529,484],{"class":468},[289,531,495],{"class":468},[289,533,534],{"class":291,"line":323},[289,535,536],{"class":468},"    },\n",[289,538,539],{"class":291,"line":329},[289,540,541],{"class":468},"  },\n",[289,543,544,547],{"class":291,"line":335},[289,545,546],{"class":468},"}",[289,548,549],{"class":464},")\n",[259,551,552,553,266,555,270,557,559],{},"That's it. ",[263,554,265],{},[263,556,269],{},[263,558,273],{}," are auto-imported.",[363,561,121],{"id":562},"wide-events",[259,564,565,566,569],{},"Build up context progressively throughout a request with ",[263,567,568],{},"useLogger(event)",". evlog emits a single wide event when the request completes.",[279,571,574],{"className":443,"code":572,"filename":573,"language":446,"meta":285,"style":285},"export default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n  const body = await readBody(event)\n\n  log.set({ user: { id: body.userId, plan: 'enterprise' } })\n\n  const cart = await db.findCart(body.cartId)\n  log.set({ cart: { items: cart.items.length, total: cart.total } })\n\n  const payment = await processPayment(cart)\n  log.set({ payment: { method: payment.method, cardLast4: payment.last4 } })\n\n  return { success: true, orderId: payment.orderId }\n})\n","server\u002Fapi\u002Fcheckout.post.ts",[263,575,576,606,626,647,651,709,713,744,799,803,824,874,878,912],{"__ignoreMap":285},[289,577,578,580,582,585,587,591,594,598,601,604],{"class":291,"line":292},[289,579,454],{"class":453},[289,581,457],{"class":453},[289,583,584],{"class":460}," defineEventHandler",[289,586,465],{"class":464},[289,588,590],{"class":589},"spNyl","async",[289,592,593],{"class":468}," (",[289,595,597],{"class":596},"sHdIc","event",[289,599,600],{"class":468},")",[289,602,603],{"class":589}," =>",[289,605,505],{"class":468},[289,607,608,611,614,617,620,622,624],{"class":291,"line":298},[289,609,610],{"class":589},"  const",[289,612,613],{"class":464}," log",[289,615,616],{"class":468}," =",[289,618,619],{"class":460}," useLogger",[289,621,465],{"class":474},[289,623,597],{"class":464},[289,625,549],{"class":474},[289,627,628,630,633,635,638,641,643,645],{"class":291,"line":305},[289,629,610],{"class":589},[289,631,632],{"class":464}," body",[289,634,616],{"class":468},[289,636,637],{"class":453}," await",[289,639,640],{"class":460}," readBody",[289,642,465],{"class":474},[289,644,597],{"class":464},[289,646,549],{"class":474},[289,648,649],{"class":291,"line":311},[289,650,302],{"emptyLinePlaceholder":301},[289,652,653,656,659,662,664,667,670,672,675,678,680,682,684,687,690,693,695,697,700,702,705,707],{"class":291,"line":317},[289,654,655],{"class":464},"  log",[289,657,658],{"class":468},".",[289,660,661],{"class":460},"set",[289,663,465],{"class":474},[289,665,666],{"class":468},"{",[289,668,669],{"class":474}," user",[289,671,478],{"class":468},[289,673,674],{"class":468}," {",[289,676,677],{"class":474}," id",[289,679,478],{"class":468},[289,681,632],{"class":464},[289,683,658],{"class":468},[289,685,686],{"class":464},"userId",[289,688,689],{"class":468},",",[289,691,692],{"class":474}," plan",[289,694,478],{"class":468},[289,696,524],{"class":468},[289,698,699],{"class":389},"enterprise",[289,701,484],{"class":468},[289,703,704],{"class":468}," }",[289,706,704],{"class":468},[289,708,549],{"class":474},[289,710,711],{"class":291,"line":323},[289,712,302],{"emptyLinePlaceholder":301},[289,714,715,717,720,722,724,727,729,732,734,737,739,742],{"class":291,"line":329},[289,716,610],{"class":589},[289,718,719],{"class":464}," cart",[289,721,616],{"class":468},[289,723,637],{"class":453},[289,725,726],{"class":464}," db",[289,728,658],{"class":468},[289,730,731],{"class":460},"findCart",[289,733,465],{"class":474},[289,735,736],{"class":464},"body",[289,738,658],{"class":468},[289,740,741],{"class":464},"cartId",[289,743,549],{"class":474},[289,745,746,748,750,752,754,756,758,760,762,765,767,769,771,774,776,779,781,784,786,788,790,793,795,797],{"class":291,"line":335},[289,747,655],{"class":464},[289,749,658],{"class":468},[289,751,661],{"class":460},[289,753,465],{"class":474},[289,755,666],{"class":468},[289,757,719],{"class":474},[289,759,478],{"class":468},[289,761,674],{"class":468},[289,763,764],{"class":474}," items",[289,766,478],{"class":468},[289,768,719],{"class":464},[289,770,658],{"class":468},[289,772,773],{"class":464},"items",[289,775,658],{"class":468},[289,777,778],{"class":464},"length",[289,780,689],{"class":468},[289,782,783],{"class":474}," total",[289,785,478],{"class":468},[289,787,719],{"class":464},[289,789,658],{"class":468},[289,791,792],{"class":464},"total",[289,794,704],{"class":468},[289,796,704],{"class":468},[289,798,549],{"class":474},[289,800,801],{"class":291,"line":341},[289,802,302],{"emptyLinePlaceholder":301},[289,804,805,807,810,812,814,817,819,822],{"class":291,"line":347},[289,806,610],{"class":589},[289,808,809],{"class":464}," payment",[289,811,616],{"class":468},[289,813,637],{"class":453},[289,815,816],{"class":460}," processPayment",[289,818,465],{"class":474},[289,820,821],{"class":464},"cart",[289,823,549],{"class":474},[289,825,826,828,830,832,834,836,838,840,842,845,847,849,851,854,856,859,861,863,865,868,870,872],{"class":291,"line":352},[289,827,655],{"class":464},[289,829,658],{"class":468},[289,831,661],{"class":460},[289,833,465],{"class":474},[289,835,666],{"class":468},[289,837,809],{"class":474},[289,839,478],{"class":468},[289,841,674],{"class":468},[289,843,844],{"class":474}," method",[289,846,478],{"class":468},[289,848,809],{"class":464},[289,850,658],{"class":468},[289,852,853],{"class":464},"method",[289,855,689],{"class":468},[289,857,858],{"class":474}," cardLast4",[289,860,478],{"class":468},[289,862,809],{"class":464},[289,864,658],{"class":468},[289,866,867],{"class":464},"last4",[289,869,704],{"class":468},[289,871,704],{"class":468},[289,873,549],{"class":474},[289,875,876],{"class":291,"line":358},[289,877,302],{"emptyLinePlaceholder":301},[289,879,881,884,886,889,891,895,897,900,902,904,906,909],{"class":291,"line":880},13,[289,882,883],{"class":453},"  return",[289,885,674],{"class":468},[289,887,888],{"class":474}," success",[289,890,478],{"class":468},[289,892,894],{"class":893},"sfNiH"," true",[289,896,689],{"class":468},[289,898,899],{"class":474}," orderId",[289,901,478],{"class":468},[289,903,809],{"class":464},[289,905,658],{"class":468},[289,907,908],{"class":464},"orderId",[289,910,911],{"class":468}," }\n",[289,913,915,917],{"class":291,"line":914},14,[289,916,546],{"class":468},[289,918,549],{"class":464},[259,920,921],{},"One request, one log line with all context:",[279,923,926],{"className":376,"code":924,"filename":925,"language":379,"meta":285,"style":285},"10:23:45 INFO [my-app] POST \u002Fapi\u002Fcheckout 200 in 145ms\n  ├─ user: id=usr_123 plan=enterprise\n  ├─ cart: items=3 total=14999\n  ├─ payment: method=card cardLast4=4242\n  └─ requestId: a1b2c3d4-...\n","Terminal output",[263,927,928,939,953,973,989],{"__ignoreMap":285},[289,929,930,933,936],{"class":291,"line":292},[289,931,932],{"class":386},"10:23:45",[289,934,935],{"class":389}," INFO",[289,937,938],{"class":464}," [my-app] POST \u002Fapi\u002Fcheckout 200 in 145ms\n",[289,940,941,944,947,950],{"class":291,"line":298},[289,942,943],{"class":386},"  ├─",[289,945,946],{"class":389}," user:",[289,948,949],{"class":389}," id=usr_123",[289,951,952],{"class":389}," plan=enterprise\n",[289,954,955,957,960,963,967,970],{"class":291,"line":305},[289,956,943],{"class":386},[289,958,959],{"class":389}," cart:",[289,961,962],{"class":389}," items=",[289,964,966],{"class":965},"sbssI","3",[289,968,969],{"class":389}," total=",[289,971,972],{"class":965},"14999\n",[289,974,975,977,980,983,986],{"class":291,"line":311},[289,976,943],{"class":386},[289,978,979],{"class":389}," payment:",[289,981,982],{"class":389}," method=card",[289,984,985],{"class":389}," cardLast4=",[289,987,988],{"class":965},"4242\n",[289,990,991,994,997],{"class":291,"line":317},[289,992,993],{"class":386},"  └─",[289,995,996],{"class":389}," requestId:",[289,998,999],{"class":389}," a1b2c3d4-...\n",[363,1001,1003],{"id":1002},"error-handling","Error Handling",[259,1005,1006,1008,1009,266,1012,270,1015,1018],{},[263,1007,269],{}," produces structured errors with ",[263,1010,1011],{},"why",[263,1013,1014],{},"fix",[263,1016,1017],{},"link"," fields that help both humans and AI agents understand what went wrong.",[279,1020,1023],{"className":443,"code":1021,"filename":1022,"language":446,"meta":285,"style":285},"export default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n  const body = await readBody(event)\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  return { success: true }\n})\n","server\u002Fapi\u002Fpayment\u002Fprocess.post.ts",[263,1024,1025,1047,1063,1081,1085,1121,1125,1149,1161,1173,1189,1205,1221,1237,1244,1250,1255,1270],{"__ignoreMap":285},[289,1026,1027,1029,1031,1033,1035,1037,1039,1041,1043,1045],{"class":291,"line":292},[289,1028,454],{"class":453},[289,1030,457],{"class":453},[289,1032,584],{"class":460},[289,1034,465],{"class":464},[289,1036,590],{"class":589},[289,1038,593],{"class":468},[289,1040,597],{"class":596},[289,1042,600],{"class":468},[289,1044,603],{"class":589},[289,1046,505],{"class":468},[289,1048,1049,1051,1053,1055,1057,1059,1061],{"class":291,"line":298},[289,1050,610],{"class":589},[289,1052,613],{"class":464},[289,1054,616],{"class":468},[289,1056,619],{"class":460},[289,1058,465],{"class":474},[289,1060,597],{"class":464},[289,1062,549],{"class":474},[289,1064,1065,1067,1069,1071,1073,1075,1077,1079],{"class":291,"line":305},[289,1066,610],{"class":589},[289,1068,632],{"class":464},[289,1070,616],{"class":468},[289,1072,637],{"class":453},[289,1074,640],{"class":460},[289,1076,465],{"class":474},[289,1078,597],{"class":464},[289,1080,549],{"class":474},[289,1082,1083],{"class":291,"line":311},[289,1084,302],{"emptyLinePlaceholder":301},[289,1086,1087,1089,1091,1093,1095,1097,1099,1101,1103,1106,1108,1110,1112,1115,1117,1119],{"class":291,"line":317},[289,1088,655],{"class":464},[289,1090,658],{"class":468},[289,1092,661],{"class":460},[289,1094,465],{"class":474},[289,1096,666],{"class":468},[289,1098,809],{"class":474},[289,1100,478],{"class":468},[289,1102,674],{"class":468},[289,1104,1105],{"class":474}," amount",[289,1107,478],{"class":468},[289,1109,632],{"class":464},[289,1111,658],{"class":468},[289,1113,1114],{"class":464},"amount",[289,1116,704],{"class":468},[289,1118,704],{"class":468},[289,1120,549],{"class":474},[289,1122,1123],{"class":291,"line":323},[289,1124,302],{"emptyLinePlaceholder":301},[289,1126,1127,1130,1132,1134,1136,1138,1141,1144,1147],{"class":291,"line":329},[289,1128,1129],{"class":453},"  if",[289,1131,593],{"class":474},[289,1133,736],{"class":464},[289,1135,658],{"class":468},[289,1137,1114],{"class":464},[289,1139,1140],{"class":468}," \u003C=",[289,1142,1143],{"class":965}," 0",[289,1145,1146],{"class":474},") ",[289,1148,469],{"class":468},[289,1150,1151,1154,1157,1159],{"class":291,"line":335},[289,1152,1153],{"class":453},"    throw",[289,1155,1156],{"class":460}," createError",[289,1158,465],{"class":474},[289,1160,469],{"class":468},[289,1162,1163,1166,1168,1171],{"class":291,"line":341},[289,1164,1165],{"class":474},"      status",[289,1167,478],{"class":468},[289,1169,1170],{"class":965}," 400",[289,1172,495],{"class":468},[289,1174,1175,1178,1180,1182,1185,1187],{"class":291,"line":347},[289,1176,1177],{"class":474},"      message",[289,1179,478],{"class":468},[289,1181,524],{"class":468},[289,1183,1184],{"class":389},"Invalid payment amount",[289,1186,484],{"class":468},[289,1188,495],{"class":468},[289,1190,1191,1194,1196,1198,1201,1203],{"class":291,"line":352},[289,1192,1193],{"class":474},"      why",[289,1195,478],{"class":468},[289,1197,524],{"class":468},[289,1199,1200],{"class":389},"The amount must be a positive number",[289,1202,484],{"class":468},[289,1204,495],{"class":468},[289,1206,1207,1210,1212,1214,1217,1219],{"class":291,"line":358},[289,1208,1209],{"class":474},"      fix",[289,1211,478],{"class":468},[289,1213,524],{"class":468},[289,1215,1216],{"class":389},"Pass a positive integer in cents (e.g. 4999 for $49.99)",[289,1218,484],{"class":468},[289,1220,495],{"class":468},[289,1222,1223,1226,1228,1230,1233,1235],{"class":291,"line":880},[289,1224,1225],{"class":474},"      link",[289,1227,478],{"class":468},[289,1229,524],{"class":468},[289,1231,1232],{"class":389},"https:\u002F\u002Fdocs.example.com\u002Fapi\u002Fpayments#amount",[289,1234,484],{"class":468},[289,1236,495],{"class":468},[289,1238,1239,1242],{"class":291,"line":914},[289,1240,1241],{"class":468},"    }",[289,1243,549],{"class":474},[289,1245,1247],{"class":291,"line":1246},15,[289,1248,1249],{"class":468},"  }\n",[289,1251,1253],{"class":291,"line":1252},16,[289,1254,302],{"emptyLinePlaceholder":301},[289,1256,1258,1260,1262,1264,1266,1268],{"class":291,"line":1257},17,[289,1259,883],{"class":453},[289,1261,674],{"class":468},[289,1263,888],{"class":474},[289,1265,478],{"class":468},[289,1267,894],{"class":893},[289,1269,911],{"class":468},[289,1271,1273,1275],{"class":291,"line":1272},18,[289,1274,546],{"class":468},[289,1276,549],{"class":464},[1278,1279,1281,1282,1285,1286,266,1288,270,1290,1292],"callout",{"color":1280,"icon":13},"info","Nuxt's error handler automatically catches ",[263,1283,1284],{},"EvlogError"," and returns a structured JSON response with ",[263,1287,1011],{},[263,1289,1014],{},[263,1291,1017],{}," fields.",[363,1294,160],{"id":1295},"configuration",[1278,1297,1299,1300,1304,1305,266,1308,266,1311,266,1314,1317],{"color":1280,"icon":1298},"i-lucide-book-open","See the ",[1301,1302,1303],"a",{"href":161},"Configuration reference"," for the full list of shared options (",[263,1306,1307],{},"enabled",[263,1309,1310],{},"pretty",[263,1312,1313],{},"silent",[263,1315,1316],{},"sampling",", middleware options, etc.).",[259,1319,1320,1321,1323,1324,1327],{},"All options are set in ",[263,1322,445],{}," under the ",[263,1325,1326],{},"evlog"," key:",[1329,1330,1331,1350],"table",{},[1332,1333,1334],"thead",{},[1335,1336,1337,1341,1344,1347],"tr",{},[1338,1339,1340],"th",{},"Option",[1338,1342,1343],{},"Type",[1338,1345,1346],{},"Default",[1338,1348,1349],{},"Description",[1351,1352,1353,1377,1395,1415,1432,1455,1473,1492,1510,1527,1546,1565,1583],"tbody",{},[1335,1354,1355,1360,1365,1370],{},[1356,1357,1358],"td",{},[263,1359,1307],{},[1356,1361,1362],{},[263,1363,1364],{},"boolean",[1356,1366,1367],{},[263,1368,1369],{},"true",[1356,1371,1372,1373,1376],{},"Globally enable\u002Fdisable all logging. When ",[263,1374,1375],{},"false",", all operations become no-ops",[1335,1378,1379,1384,1388,1392],{},[1356,1380,1381],{},[263,1382,1383],{},"console",[1356,1385,1386],{},[263,1387,1364],{},[1356,1389,1390],{},[263,1391,1369],{},[1356,1393,1394],{},"Enable\u002Fdisable browser console output",[1335,1396,1397,1402,1407,1412],{},[1356,1398,1399],{},[263,1400,1401],{},"env.service",[1356,1403,1404],{},[263,1405,1406],{},"string",[1356,1408,1409],{},[263,1410,1411],{},"'app'",[1356,1413,1414],{},"Service name shown in logs",[1335,1416,1417,1422,1426,1429],{},[1356,1418,1419],{},[263,1420,1421],{},"env.environment",[1356,1423,1424],{},[263,1425,1406],{},[1356,1427,1428],{},"Auto-detected",[1356,1430,1431],{},"Environment name",[1335,1433,1434,1439,1444,1449],{},[1356,1435,1436],{},[263,1437,1438],{},"include",[1356,1440,1441],{},[263,1442,1443],{},"string[]",[1356,1445,1446],{},[263,1447,1448],{},"undefined",[1356,1450,1451,1452,600],{},"Route patterns to log. Supports glob (",[263,1453,1454],{},"\u002Fapi\u002F**",[1335,1456,1457,1462,1466,1470],{},[1356,1458,1459],{},[263,1460,1461],{},"exclude",[1356,1463,1464],{},[263,1465,1443],{},[1356,1467,1468],{},[263,1469,1448],{},[1356,1471,1472],{},"Route patterns to exclude. Exclusions take precedence",[1335,1474,1475,1480,1485,1489],{},[1356,1476,1477],{},[263,1478,1479],{},"routes",[1356,1481,1482],{},[263,1483,1484],{},"Record\u003Cstring, RouteConfig>",[1356,1486,1487],{},[263,1488,1448],{},[1356,1490,1491],{},"Route-specific service configuration",[1335,1493,1494,1498,1502,1507],{},[1356,1495,1496],{},[263,1497,1310],{},[1356,1499,1500],{},[263,1501,1364],{},[1356,1503,1504,1506],{},[263,1505,1369],{}," in dev",[1356,1508,1509],{},"Pretty print with tree formatting",[1335,1511,1512,1516,1520,1524],{},[1356,1513,1514],{},[263,1515,1313],{},[1356,1517,1518],{},[263,1519,1364],{},[1356,1521,1522],{},[263,1523,1375],{},[1356,1525,1526],{},"Suppress console output. Events are still built, sampled, and drained. Use for stdout-based platforms",[1335,1528,1529,1534,1539,1543],{},[1356,1530,1531],{},[263,1532,1533],{},"sampling.rates",[1356,1535,1536],{},[263,1537,1538],{},"object",[1356,1540,1541],{},[263,1542,1448],{},[1356,1544,1545],{},"Head sampling rates per log level (0-100%)",[1335,1547,1548,1553,1558,1562],{},[1356,1549,1550],{},[263,1551,1552],{},"sampling.keep",[1356,1554,1555],{},[263,1556,1557],{},"array",[1356,1559,1560],{},[263,1561,1448],{},[1356,1563,1564],{},"Tail sampling conditions to force-keep logs",[1335,1566,1567,1572,1576,1580],{},[1356,1568,1569],{},[263,1570,1571],{},"transport.enabled",[1356,1573,1574],{},[263,1575,1364],{},[1356,1577,1578],{},[263,1579,1375],{},[1356,1581,1582],{},"Enable client-to-server log transport",[1335,1584,1585,1590,1594,1599],{},[1356,1586,1587],{},[263,1588,1589],{},"transport.endpoint",[1356,1591,1592],{},[263,1593,1406],{},[1356,1595,1596],{},[263,1597,1598],{},"'\u002Fapi\u002F_evlog\u002Fingest'",[1356,1600,1601],{},"Transport endpoint",[363,1603,1605],{"id":1604},"route-filtering","Route Filtering",[259,1607,1608,1609,1611,1612,1614],{},"Use ",[263,1610,1438],{}," and ",[263,1613,1461],{}," to control which routes are logged:",[279,1616,1618],{"className":443,"code":1617,"filename":445,"language":446,"meta":285,"style":285},"export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    include: ['\u002Fapi\u002F**', '\u002Fauth\u002F**'],\n    exclude: [\n      '\u002Fapi\u002F_nuxt_icon\u002F**',\n      '\u002Fapi\u002F_content\u002F**',\n      '\u002Fapi\u002Fhealth',\n    ],\n  },\n})\n",[263,1619,1620,1632,1650,1658,1686,1696,1708,1719,1730,1737,1741],{"__ignoreMap":285},[289,1621,1622,1624,1626,1628,1630],{"class":291,"line":292},[289,1623,454],{"class":453},[289,1625,457],{"class":453},[289,1627,461],{"class":460},[289,1629,465],{"class":464},[289,1631,469],{"class":468},[289,1633,1634,1636,1638,1640,1642,1644,1646,1648],{"class":291,"line":298},[289,1635,475],{"class":474},[289,1637,478],{"class":468},[289,1639,481],{"class":464},[289,1641,484],{"class":468},[289,1643,487],{"class":389},[289,1645,484],{"class":468},[289,1647,492],{"class":464},[289,1649,495],{"class":468},[289,1651,1652,1654,1656],{"class":291,"line":305},[289,1653,500],{"class":474},[289,1655,478],{"class":468},[289,1657,505],{"class":468},[289,1659,1660,1663,1665,1667,1669,1671,1673,1675,1677,1680,1682,1684],{"class":291,"line":311},[289,1661,1662],{"class":474},"    include",[289,1664,478],{"class":468},[289,1666,481],{"class":464},[289,1668,484],{"class":468},[289,1670,1454],{"class":389},[289,1672,484],{"class":468},[289,1674,689],{"class":468},[289,1676,524],{"class":468},[289,1678,1679],{"class":389},"\u002Fauth\u002F**",[289,1681,484],{"class":468},[289,1683,492],{"class":464},[289,1685,495],{"class":468},[289,1687,1688,1691,1693],{"class":291,"line":317},[289,1689,1690],{"class":474},"    exclude",[289,1692,478],{"class":468},[289,1694,1695],{"class":464}," [\n",[289,1697,1698,1701,1704,1706],{"class":291,"line":323},[289,1699,1700],{"class":468},"      '",[289,1702,1703],{"class":389},"\u002Fapi\u002F_nuxt_icon\u002F**",[289,1705,484],{"class":468},[289,1707,495],{"class":468},[289,1709,1710,1712,1715,1717],{"class":291,"line":329},[289,1711,1700],{"class":468},[289,1713,1714],{"class":389},"\u002Fapi\u002F_content\u002F**",[289,1716,484],{"class":468},[289,1718,495],{"class":468},[289,1720,1721,1723,1726,1728],{"class":291,"line":335},[289,1722,1700],{"class":468},[289,1724,1725],{"class":389},"\u002Fapi\u002Fhealth",[289,1727,484],{"class":468},[289,1729,495],{"class":468},[289,1731,1732,1735],{"class":291,"line":341},[289,1733,1734],{"class":464},"    ]",[289,1736,495],{"class":468},[289,1738,1739],{"class":291,"line":347},[289,1740,541],{"class":468},[289,1742,1743,1745],{"class":291,"line":352},[289,1744,546],{"class":468},[289,1746,549],{"class":464},[1278,1748,1751,1755,1756,1611,1758,1760],{"color":1749,"icon":1750},"warning","i-lucide-alert-triangle",[1752,1753,1754],"strong",{},"Exclusions take precedence."," If a path matches both ",[263,1757,1438],{},[263,1759,1461],{},", it will be excluded.",[367,1762,1764],{"id":1763},"route-based-service-names","Route-Based Service Names",[259,1766,1767],{},"Assign different service names to different route groups:",[279,1769,1771],{"className":443,"code":1770,"filename":445,"language":446,"meta":285,"style":285},"export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    env: { service: 'default-service' },\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})\n",[263,1772,1773,1785,1803,1811,1834,1843,1869,1895,1921,1925,1929],{"__ignoreMap":285},[289,1774,1775,1777,1779,1781,1783],{"class":291,"line":292},[289,1776,454],{"class":453},[289,1778,457],{"class":453},[289,1780,461],{"class":460},[289,1782,465],{"class":464},[289,1784,469],{"class":468},[289,1786,1787,1789,1791,1793,1795,1797,1799,1801],{"class":291,"line":298},[289,1788,475],{"class":474},[289,1790,478],{"class":468},[289,1792,481],{"class":464},[289,1794,484],{"class":468},[289,1796,487],{"class":389},[289,1798,484],{"class":468},[289,1800,492],{"class":464},[289,1802,495],{"class":468},[289,1804,1805,1807,1809],{"class":291,"line":305},[289,1806,500],{"class":474},[289,1808,478],{"class":468},[289,1810,505],{"class":468},[289,1812,1813,1815,1817,1819,1822,1824,1826,1829,1831],{"class":291,"line":311},[289,1814,510],{"class":474},[289,1816,478],{"class":468},[289,1818,674],{"class":468},[289,1820,1821],{"class":474}," service",[289,1823,478],{"class":468},[289,1825,524],{"class":468},[289,1827,1828],{"class":389},"default-service",[289,1830,484],{"class":468},[289,1832,1833],{"class":468}," },\n",[289,1835,1836,1839,1841],{"class":291,"line":317},[289,1837,1838],{"class":474},"    routes",[289,1840,478],{"class":468},[289,1842,505],{"class":468},[289,1844,1845,1847,1850,1852,1854,1856,1858,1860,1862,1865,1867],{"class":291,"line":323},[289,1846,1700],{"class":468},[289,1848,1849],{"class":474},"\u002Fapi\u002Fauth\u002F**",[289,1851,484],{"class":468},[289,1853,478],{"class":468},[289,1855,674],{"class":468},[289,1857,1821],{"class":474},[289,1859,478],{"class":468},[289,1861,524],{"class":468},[289,1863,1864],{"class":389},"auth-service",[289,1866,484],{"class":468},[289,1868,1833],{"class":468},[289,1870,1871,1873,1876,1878,1880,1882,1884,1886,1888,1891,1893],{"class":291,"line":329},[289,1872,1700],{"class":468},[289,1874,1875],{"class":474},"\u002Fapi\u002Fpayment\u002F**",[289,1877,484],{"class":468},[289,1879,478],{"class":468},[289,1881,674],{"class":468},[289,1883,1821],{"class":474},[289,1885,478],{"class":468},[289,1887,524],{"class":468},[289,1889,1890],{"class":389},"payment-service",[289,1892,484],{"class":468},[289,1894,1833],{"class":468},[289,1896,1897,1899,1902,1904,1906,1908,1910,1912,1914,1917,1919],{"class":291,"line":335},[289,1898,1700],{"class":468},[289,1900,1901],{"class":474},"\u002Fapi\u002Fbooking\u002F**",[289,1903,484],{"class":468},[289,1905,478],{"class":468},[289,1907,674],{"class":468},[289,1909,1821],{"class":474},[289,1911,478],{"class":468},[289,1913,524],{"class":468},[289,1915,1916],{"class":389},"booking-service",[289,1918,484],{"class":468},[289,1920,1833],{"class":468},[289,1922,1923],{"class":291,"line":341},[289,1924,536],{"class":468},[289,1926,1927],{"class":291,"line":347},[289,1928,541],{"class":468},[289,1930,1931,1933],{"class":291,"line":352},[289,1932,546],{"class":468},[289,1934,549],{"class":464},[363,1936,1938],{"id":1937},"drain-enrichers","Drain & Enrichers",[259,1940,1941],{},"Use Nitro plugin hooks to send logs to external services and enrich them with additional context.",[367,1943,1945],{"id":1944},"drain-plugin","Drain Plugin",[279,1947,1950],{"className":443,"code":1948,"filename":1949,"language":446,"meta":285,"style":285},"import type { DrainContext } from 'evlog'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createDrainPipeline } from 'evlog\u002Fpipeline'\n\nconst pipeline = createDrainPipeline\u003CDrainContext>({\n  batch: { size: 50, intervalMs: 5000 },\n  retry: { maxAttempts: 3 },\n})\nconst drain = pipeline(createAxiomDrain())\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', drain)\n})\n","server\u002Fplugins\u002Fevlog-drain.ts",[263,1951,1952,1977,1997,2017,2021,2047,2076,2095,2101,2121,2125,2147,2178],{"__ignoreMap":285},[289,1953,1954,1957,1960,1962,1965,1967,1970,1972,1974],{"class":291,"line":292},[289,1955,1956],{"class":453},"import",[289,1958,1959],{"class":453}," type",[289,1961,674],{"class":468},[289,1963,1964],{"class":464}," DrainContext",[289,1966,704],{"class":468},[289,1968,1969],{"class":453}," from",[289,1971,524],{"class":468},[289,1973,1326],{"class":389},[289,1975,1976],{"class":468},"'\n",[289,1978,1979,1981,1983,1986,1988,1990,1992,1995],{"class":291,"line":298},[289,1980,1956],{"class":453},[289,1982,674],{"class":468},[289,1984,1985],{"class":464}," createAxiomDrain",[289,1987,704],{"class":468},[289,1989,1969],{"class":453},[289,1991,524],{"class":468},[289,1993,1994],{"class":389},"evlog\u002Faxiom",[289,1996,1976],{"class":468},[289,1998,1999,2001,2003,2006,2008,2010,2012,2015],{"class":291,"line":305},[289,2000,1956],{"class":453},[289,2002,674],{"class":468},[289,2004,2005],{"class":464}," createDrainPipeline",[289,2007,704],{"class":468},[289,2009,1969],{"class":453},[289,2011,524],{"class":468},[289,2013,2014],{"class":389},"evlog\u002Fpipeline",[289,2016,1976],{"class":468},[289,2018,2019],{"class":291,"line":311},[289,2020,302],{"emptyLinePlaceholder":301},[289,2022,2023,2026,2029,2032,2034,2037,2040,2043,2045],{"class":291,"line":317},[289,2024,2025],{"class":589},"const",[289,2027,2028],{"class":464}," pipeline ",[289,2030,2031],{"class":468},"=",[289,2033,2005],{"class":460},[289,2035,2036],{"class":468},"\u003C",[289,2038,2039],{"class":386},"DrainContext",[289,2041,2042],{"class":468},">",[289,2044,465],{"class":464},[289,2046,469],{"class":468},[289,2048,2049,2052,2054,2056,2059,2061,2064,2066,2069,2071,2074],{"class":291,"line":323},[289,2050,2051],{"class":474},"  batch",[289,2053,478],{"class":468},[289,2055,674],{"class":468},[289,2057,2058],{"class":474}," size",[289,2060,478],{"class":468},[289,2062,2063],{"class":965}," 50",[289,2065,689],{"class":468},[289,2067,2068],{"class":474}," intervalMs",[289,2070,478],{"class":468},[289,2072,2073],{"class":965}," 5000",[289,2075,1833],{"class":468},[289,2077,2078,2081,2083,2085,2088,2090,2093],{"class":291,"line":329},[289,2079,2080],{"class":474},"  retry",[289,2082,478],{"class":468},[289,2084,674],{"class":468},[289,2086,2087],{"class":474}," maxAttempts",[289,2089,478],{"class":468},[289,2091,2092],{"class":965}," 3",[289,2094,1833],{"class":468},[289,2096,2097,2099],{"class":291,"line":335},[289,2098,546],{"class":468},[289,2100,549],{"class":464},[289,2102,2103,2105,2108,2110,2113,2115,2118],{"class":291,"line":341},[289,2104,2025],{"class":589},[289,2106,2107],{"class":464}," drain ",[289,2109,2031],{"class":468},[289,2111,2112],{"class":460}," pipeline",[289,2114,465],{"class":464},[289,2116,2117],{"class":460},"createAxiomDrain",[289,2119,2120],{"class":464},"())\n",[289,2122,2123],{"class":291,"line":347},[289,2124,302],{"emptyLinePlaceholder":301},[289,2126,2127,2129,2131,2134,2136,2138,2141,2143,2145],{"class":291,"line":352},[289,2128,454],{"class":453},[289,2130,457],{"class":453},[289,2132,2133],{"class":460}," defineNitroPlugin",[289,2135,465],{"class":464},[289,2137,465],{"class":468},[289,2139,2140],{"class":596},"nitroApp",[289,2142,600],{"class":468},[289,2144,603],{"class":589},[289,2146,505],{"class":468},[289,2148,2149,2152,2154,2157,2159,2162,2164,2166,2169,2171,2173,2176],{"class":291,"line":358},[289,2150,2151],{"class":464},"  nitroApp",[289,2153,658],{"class":468},[289,2155,2156],{"class":464},"hooks",[289,2158,658],{"class":468},[289,2160,2161],{"class":460},"hook",[289,2163,465],{"class":474},[289,2165,484],{"class":468},[289,2167,2168],{"class":389},"evlog:drain",[289,2170,484],{"class":468},[289,2172,689],{"class":468},[289,2174,2175],{"class":464}," drain",[289,2177,549],{"class":474},[289,2179,2180,2182],{"class":291,"line":880},[289,2181,546],{"class":468},[289,2183,549],{"class":464},[367,2185,2187],{"id":2186},"enricher-plugin","Enricher Plugin",[279,2189,2192],{"className":443,"code":2190,"filename":2191,"language":446,"meta":285,"style":285},"import {\n  createUserAgentEnricher,\n  createGeoEnricher,\n  createRequestSizeEnricher,\n  createTraceContextEnricher,\n} from 'evlog\u002Fenrichers'\n\nconst enrichers = [\n  createUserAgentEnricher(),\n  createGeoEnricher(),\n  createRequestSizeEnricher(),\n  createTraceContextEnricher(),\n]\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:enrich', (ctx) => {\n    for (const enricher of enrichers) enricher(ctx)\n  })\n})\n","server\u002Fplugins\u002Fevlog-enrich.ts",[263,2193,2194,2200,2207,2214,2221,2228,2241,2245,2256,2265,2273,2281,2289,2294,2298,2318,2352,2381,2388],{"__ignoreMap":285},[289,2195,2196,2198],{"class":291,"line":292},[289,2197,1956],{"class":453},[289,2199,505],{"class":468},[289,2201,2202,2205],{"class":291,"line":298},[289,2203,2204],{"class":464},"  createUserAgentEnricher",[289,2206,495],{"class":468},[289,2208,2209,2212],{"class":291,"line":305},[289,2210,2211],{"class":464},"  createGeoEnricher",[289,2213,495],{"class":468},[289,2215,2216,2219],{"class":291,"line":311},[289,2217,2218],{"class":464},"  createRequestSizeEnricher",[289,2220,495],{"class":468},[289,2222,2223,2226],{"class":291,"line":317},[289,2224,2225],{"class":464},"  createTraceContextEnricher",[289,2227,495],{"class":468},[289,2229,2230,2232,2234,2236,2239],{"class":291,"line":323},[289,2231,546],{"class":468},[289,2233,1969],{"class":453},[289,2235,524],{"class":468},[289,2237,2238],{"class":389},"evlog\u002Fenrichers",[289,2240,1976],{"class":468},[289,2242,2243],{"class":291,"line":329},[289,2244,302],{"emptyLinePlaceholder":301},[289,2246,2247,2249,2252,2254],{"class":291,"line":335},[289,2248,2025],{"class":589},[289,2250,2251],{"class":464}," enrichers ",[289,2253,2031],{"class":468},[289,2255,1695],{"class":464},[289,2257,2258,2260,2263],{"class":291,"line":341},[289,2259,2204],{"class":460},[289,2261,2262],{"class":464},"()",[289,2264,495],{"class":468},[289,2266,2267,2269,2271],{"class":291,"line":347},[289,2268,2211],{"class":460},[289,2270,2262],{"class":464},[289,2272,495],{"class":468},[289,2274,2275,2277,2279],{"class":291,"line":352},[289,2276,2218],{"class":460},[289,2278,2262],{"class":464},[289,2280,495],{"class":468},[289,2282,2283,2285,2287],{"class":291,"line":358},[289,2284,2225],{"class":460},[289,2286,2262],{"class":464},[289,2288,495],{"class":468},[289,2290,2291],{"class":291,"line":880},[289,2292,2293],{"class":464},"]\n",[289,2295,2296],{"class":291,"line":914},[289,2297,302],{"emptyLinePlaceholder":301},[289,2299,2300,2302,2304,2306,2308,2310,2312,2314,2316],{"class":291,"line":1246},[289,2301,454],{"class":453},[289,2303,457],{"class":453},[289,2305,2133],{"class":460},[289,2307,465],{"class":464},[289,2309,465],{"class":468},[289,2311,2140],{"class":596},[289,2313,600],{"class":468},[289,2315,603],{"class":589},[289,2317,505],{"class":468},[289,2319,2320,2322,2324,2326,2328,2330,2332,2334,2337,2339,2341,2343,2346,2348,2350],{"class":291,"line":1252},[289,2321,2151],{"class":464},[289,2323,658],{"class":468},[289,2325,2156],{"class":464},[289,2327,658],{"class":468},[289,2329,2161],{"class":460},[289,2331,465],{"class":474},[289,2333,484],{"class":468},[289,2335,2336],{"class":389},"evlog:enrich",[289,2338,484],{"class":468},[289,2340,689],{"class":468},[289,2342,593],{"class":468},[289,2344,2345],{"class":596},"ctx",[289,2347,600],{"class":468},[289,2349,603],{"class":589},[289,2351,505],{"class":468},[289,2353,2354,2357,2359,2361,2364,2367,2370,2372,2375,2377,2379],{"class":291,"line":1257},[289,2355,2356],{"class":453},"    for",[289,2358,593],{"class":474},[289,2360,2025],{"class":589},[289,2362,2363],{"class":464}," enricher",[289,2365,2366],{"class":468}," of",[289,2368,2369],{"class":464}," enrichers",[289,2371,1146],{"class":474},[289,2373,2374],{"class":460},"enricher",[289,2376,465],{"class":474},[289,2378,2345],{"class":464},[289,2380,549],{"class":474},[289,2382,2383,2386],{"class":291,"line":1272},[289,2384,2385],{"class":468},"  }",[289,2387,549],{"class":474},[289,2389,2391,2393],{"class":291,"line":2390},19,[289,2392,546],{"class":468},[289,2394,549],{"class":464},[1278,2396,1299,2399,1611,2401,2403],{"color":2397,"icon":2398},"neutral","i-lucide-arrow-right",[1301,2400,170],{"href":175},[1301,2402,224],{"href":229}," docs for the full list of available drains and enrichers.",[363,2405,150],{"id":1316},[367,2407,2409],{"id":2408},"head-sampling","Head Sampling",[259,2411,2412],{},"Randomly keep a percentage of logs per level. Runs before the request completes.",[279,2414,2416],{"className":443,"code":2415,"filename":445,"language":446,"meta":285,"style":285},"export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    sampling: {\n      rates: {\n        info: 10,\n        warn: 50,\n        debug: 5,\n        error: 100,\n      },\n    },\n  },\n})\n",[263,2417,2418,2430,2448,2456,2465,2474,2486,2497,2509,2521,2526,2530,2534],{"__ignoreMap":285},[289,2419,2420,2422,2424,2426,2428],{"class":291,"line":292},[289,2421,454],{"class":453},[289,2423,457],{"class":453},[289,2425,461],{"class":460},[289,2427,465],{"class":464},[289,2429,469],{"class":468},[289,2431,2432,2434,2436,2438,2440,2442,2444,2446],{"class":291,"line":298},[289,2433,475],{"class":474},[289,2435,478],{"class":468},[289,2437,481],{"class":464},[289,2439,484],{"class":468},[289,2441,487],{"class":389},[289,2443,484],{"class":468},[289,2445,492],{"class":464},[289,2447,495],{"class":468},[289,2449,2450,2452,2454],{"class":291,"line":305},[289,2451,500],{"class":474},[289,2453,478],{"class":468},[289,2455,505],{"class":468},[289,2457,2458,2461,2463],{"class":291,"line":311},[289,2459,2460],{"class":474},"    sampling",[289,2462,478],{"class":468},[289,2464,505],{"class":468},[289,2466,2467,2470,2472],{"class":291,"line":317},[289,2468,2469],{"class":474},"      rates",[289,2471,478],{"class":468},[289,2473,505],{"class":468},[289,2475,2476,2479,2481,2484],{"class":291,"line":323},[289,2477,2478],{"class":474},"        info",[289,2480,478],{"class":468},[289,2482,2483],{"class":965}," 10",[289,2485,495],{"class":468},[289,2487,2488,2491,2493,2495],{"class":291,"line":329},[289,2489,2490],{"class":474},"        warn",[289,2492,478],{"class":468},[289,2494,2063],{"class":965},[289,2496,495],{"class":468},[289,2498,2499,2502,2504,2507],{"class":291,"line":335},[289,2500,2501],{"class":474},"        debug",[289,2503,478],{"class":468},[289,2505,2506],{"class":965}," 5",[289,2508,495],{"class":468},[289,2510,2511,2514,2516,2519],{"class":291,"line":341},[289,2512,2513],{"class":474},"        error",[289,2515,478],{"class":468},[289,2517,2518],{"class":965}," 100",[289,2520,495],{"class":468},[289,2522,2523],{"class":291,"line":347},[289,2524,2525],{"class":468},"      },\n",[289,2527,2528],{"class":291,"line":352},[289,2529,536],{"class":468},[289,2531,2532],{"class":291,"line":358},[289,2533,541],{"class":468},[289,2535,2536,2538],{"class":291,"line":880},[289,2537,546],{"class":468},[289,2539,549],{"class":464},[259,2541,2542],{},"Each level is a percentage from 0 to 100. Levels you don't configure default to 100% (keep everything). Error defaults to 100% even when other levels are configured.",[367,2544,2546],{"id":2545},"tail-sampling","Tail Sampling",[259,2548,2549],{},"Evaluate after the request completes and force-keep logs that match specific conditions, regardless of head sampling.",[279,2551,2553],{"className":443,"code":2552,"filename":445,"language":446,"meta":285,"style":285},"export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    sampling: {\n      rates: { info: 10 },\n      keep: [\n        { duration: 1000 },\n        { status: 400 },\n        { path: '\u002Fapi\u002Fcritical\u002F**' },\n      ],\n    },\n  },\n})\n",[263,2554,2555,2567,2585,2593,2601,2618,2627,2642,2655,2673,2680,2684,2688],{"__ignoreMap":285},[289,2556,2557,2559,2561,2563,2565],{"class":291,"line":292},[289,2558,454],{"class":453},[289,2560,457],{"class":453},[289,2562,461],{"class":460},[289,2564,465],{"class":464},[289,2566,469],{"class":468},[289,2568,2569,2571,2573,2575,2577,2579,2581,2583],{"class":291,"line":298},[289,2570,475],{"class":474},[289,2572,478],{"class":468},[289,2574,481],{"class":464},[289,2576,484],{"class":468},[289,2578,487],{"class":389},[289,2580,484],{"class":468},[289,2582,492],{"class":464},[289,2584,495],{"class":468},[289,2586,2587,2589,2591],{"class":291,"line":305},[289,2588,500],{"class":474},[289,2590,478],{"class":468},[289,2592,505],{"class":468},[289,2594,2595,2597,2599],{"class":291,"line":311},[289,2596,2460],{"class":474},[289,2598,478],{"class":468},[289,2600,505],{"class":468},[289,2602,2603,2605,2607,2609,2612,2614,2616],{"class":291,"line":317},[289,2604,2469],{"class":474},[289,2606,478],{"class":468},[289,2608,674],{"class":468},[289,2610,2611],{"class":474}," info",[289,2613,478],{"class":468},[289,2615,2483],{"class":965},[289,2617,1833],{"class":468},[289,2619,2620,2623,2625],{"class":291,"line":323},[289,2621,2622],{"class":474},"      keep",[289,2624,478],{"class":468},[289,2626,1695],{"class":464},[289,2628,2629,2632,2635,2637,2640],{"class":291,"line":329},[289,2630,2631],{"class":468},"        {",[289,2633,2634],{"class":474}," duration",[289,2636,478],{"class":468},[289,2638,2639],{"class":965}," 1000",[289,2641,1833],{"class":468},[289,2643,2644,2646,2649,2651,2653],{"class":291,"line":335},[289,2645,2631],{"class":468},[289,2647,2648],{"class":474}," status",[289,2650,478],{"class":468},[289,2652,1170],{"class":965},[289,2654,1833],{"class":468},[289,2656,2657,2659,2662,2664,2666,2669,2671],{"class":291,"line":341},[289,2658,2631],{"class":468},[289,2660,2661],{"class":474}," path",[289,2663,478],{"class":468},[289,2665,524],{"class":468},[289,2667,2668],{"class":389},"\u002Fapi\u002Fcritical\u002F**",[289,2670,484],{"class":468},[289,2672,1833],{"class":468},[289,2674,2675,2678],{"class":291,"line":347},[289,2676,2677],{"class":464},"      ]",[289,2679,495],{"class":468},[289,2681,2682],{"class":291,"line":352},[289,2683,536],{"class":468},[289,2685,2686],{"class":291,"line":358},[289,2687,541],{"class":468},[289,2689,2690,2692],{"class":291,"line":880},[289,2691,546],{"class":468},[289,2693,549],{"class":464},[367,2695,2697],{"id":2696},"custom-tail-sampling","Custom Tail Sampling",[259,2699,2700,2701,2704],{},"For conditions beyond status, duration, and path, use the ",[263,2702,2703],{},"evlog:emit:keep"," hook:",[279,2706,2709],{"className":443,"code":2707,"filename":2708,"language":446,"meta":285,"style":285},"export default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:emit:keep', (ctx) => {\n    const user = ctx.context.user as { premium?: boolean } | undefined\n    if (user?.premium) {\n      ctx.shouldKeep = true\n    }\n  })\n})\n","server\u002Fplugins\u002Fevlog-sampling.ts",[263,2710,2711,2731,2763,2807,2826,2841,2846,2852],{"__ignoreMap":285},[289,2712,2713,2715,2717,2719,2721,2723,2725,2727,2729],{"class":291,"line":292},[289,2714,454],{"class":453},[289,2716,457],{"class":453},[289,2718,2133],{"class":460},[289,2720,465],{"class":464},[289,2722,465],{"class":468},[289,2724,2140],{"class":596},[289,2726,600],{"class":468},[289,2728,603],{"class":589},[289,2730,505],{"class":468},[289,2732,2733,2735,2737,2739,2741,2743,2745,2747,2749,2751,2753,2755,2757,2759,2761],{"class":291,"line":298},[289,2734,2151],{"class":464},[289,2736,658],{"class":468},[289,2738,2156],{"class":464},[289,2740,658],{"class":468},[289,2742,2161],{"class":460},[289,2744,465],{"class":474},[289,2746,484],{"class":468},[289,2748,2703],{"class":389},[289,2750,484],{"class":468},[289,2752,689],{"class":468},[289,2754,593],{"class":468},[289,2756,2345],{"class":596},[289,2758,600],{"class":468},[289,2760,603],{"class":589},[289,2762,505],{"class":468},[289,2764,2765,2768,2770,2772,2775,2777,2780,2782,2785,2788,2790,2793,2796,2799,2801,2804],{"class":291,"line":305},[289,2766,2767],{"class":589},"    const",[289,2769,669],{"class":464},[289,2771,616],{"class":468},[289,2773,2774],{"class":464}," ctx",[289,2776,658],{"class":468},[289,2778,2779],{"class":464},"context",[289,2781,658],{"class":468},[289,2783,2784],{"class":464},"user",[289,2786,2787],{"class":453}," as",[289,2789,674],{"class":468},[289,2791,2792],{"class":474}," premium",[289,2794,2795],{"class":468},"?:",[289,2797,2798],{"class":386}," boolean",[289,2800,704],{"class":468},[289,2802,2803],{"class":468}," |",[289,2805,2806],{"class":386}," undefined\n",[289,2808,2809,2812,2814,2816,2819,2822,2824],{"class":291,"line":311},[289,2810,2811],{"class":453},"    if",[289,2813,593],{"class":474},[289,2815,2784],{"class":464},[289,2817,2818],{"class":468},"?.",[289,2820,2821],{"class":464},"premium",[289,2823,1146],{"class":474},[289,2825,469],{"class":468},[289,2827,2828,2831,2833,2836,2838],{"class":291,"line":317},[289,2829,2830],{"class":464},"      ctx",[289,2832,658],{"class":468},[289,2834,2835],{"class":464},"shouldKeep",[289,2837,616],{"class":468},[289,2839,2840],{"class":893}," true\n",[289,2842,2843],{"class":291,"line":323},[289,2844,2845],{"class":468},"    }\n",[289,2847,2848,2850],{"class":291,"line":329},[289,2849,2385],{"class":468},[289,2851,549],{"class":474},[289,2853,2854,2856],{"class":291,"line":335},[289,2855,546],{"class":468},[289,2857,549],{"class":464},[1278,2859,2860,2861,2864],{"color":1280,"icon":13},"Errors are always kept by default. You have to explicitly set ",[263,2862,2863],{},"error: 0"," to drop them.",[363,2866,2868],{"id":2867},"client-transport","Client Transport",[259,2870,2871],{},"Send browser logs to your server for processing and draining alongside server-side events.",[279,2873,2875],{"className":443,"code":2874,"filename":445,"language":446,"meta":285,"style":285},"export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    transport: {\n      enabled: true,\n      endpoint: '\u002Fapi\u002F_evlog\u002Fingest',\n    },\n  },\n})\n",[263,2876,2877,2889,2907,2915,2924,2935,2951,2955,2959],{"__ignoreMap":285},[289,2878,2879,2881,2883,2885,2887],{"class":291,"line":292},[289,2880,454],{"class":453},[289,2882,457],{"class":453},[289,2884,461],{"class":460},[289,2886,465],{"class":464},[289,2888,469],{"class":468},[289,2890,2891,2893,2895,2897,2899,2901,2903,2905],{"class":291,"line":298},[289,2892,475],{"class":474},[289,2894,478],{"class":468},[289,2896,481],{"class":464},[289,2898,484],{"class":468},[289,2900,487],{"class":389},[289,2902,484],{"class":468},[289,2904,492],{"class":464},[289,2906,495],{"class":468},[289,2908,2909,2911,2913],{"class":291,"line":305},[289,2910,500],{"class":474},[289,2912,478],{"class":468},[289,2914,505],{"class":468},[289,2916,2917,2920,2922],{"class":291,"line":311},[289,2918,2919],{"class":474},"    transport",[289,2921,478],{"class":468},[289,2923,505],{"class":468},[289,2925,2926,2929,2931,2933],{"class":291,"line":317},[289,2927,2928],{"class":474},"      enabled",[289,2930,478],{"class":468},[289,2932,894],{"class":893},[289,2934,495],{"class":468},[289,2936,2937,2940,2942,2944,2947,2949],{"class":291,"line":323},[289,2938,2939],{"class":474},"      endpoint",[289,2941,478],{"class":468},[289,2943,524],{"class":468},[289,2945,2946],{"class":389},"\u002Fapi\u002F_evlog\u002Fingest",[289,2948,484],{"class":468},[289,2950,495],{"class":468},[289,2952,2953],{"class":291,"line":329},[289,2954,536],{"class":468},[289,2956,2957],{"class":291,"line":335},[289,2958,541],{"class":468},[289,2960,2961,2963],{"class":291,"line":341},[289,2962,546],{"class":468},[289,2964,549],{"class":464},[367,2966,2968],{"id":2967},"how-it-works","How It Works",[2970,2971,2972,2979,2985,2988,2996],"ol",{},[2973,2974,2975,2976],"li",{},"Client calls ",[263,2977,2978],{},"log.info({ action: 'click', button: 'submit' })",[2973,2980,2981,2982,2984],{},"Log is sent to ",[263,2983,2946],{}," via POST",[2973,2986,2987],{},"Server enriches with environment context",[2973,2989,2990,2992,2993],{},[263,2991,2168],{}," hook is called with ",[263,2994,2995],{},"source: 'client'",[2973,2997,2998],{},"External services receive the log",[367,3000,3002],{"id":3001},"client-identity","Client Identity",[259,3004,3005,3006,478],{},"Attach user context to every client log with ",[263,3007,3008],{},"setIdentity",[279,3010,3013],{"className":443,"code":3011,"filename":3012,"language":446,"meta":285,"style":285},"\u002F\u002F After login\nsetIdentity({ userId: 'usr_123', orgId: 'org_456' })\n\nlog.info({ action: 'checkout' })\n\u002F\u002F -> { userId: 'usr_123', orgId: 'org_456', action: 'checkout', ... }\n\n\u002F\u002F After logout\nclearIdentity()\n","Nuxt (auto-imported)",[263,3014,3015,3021,3059,3063,3092,3097,3101,3106],{"__ignoreMap":285},[289,3016,3017],{"class":291,"line":292},[289,3018,3020],{"class":3019},"sHwdD","\u002F\u002F After login\n",[289,3022,3023,3025,3027,3029,3032,3034,3036,3039,3041,3043,3046,3048,3050,3053,3055,3057],{"class":291,"line":298},[289,3024,3008],{"class":460},[289,3026,465],{"class":464},[289,3028,666],{"class":468},[289,3030,3031],{"class":474}," userId",[289,3033,478],{"class":468},[289,3035,524],{"class":468},[289,3037,3038],{"class":389},"usr_123",[289,3040,484],{"class":468},[289,3042,689],{"class":468},[289,3044,3045],{"class":474}," orgId",[289,3047,478],{"class":468},[289,3049,524],{"class":468},[289,3051,3052],{"class":389},"org_456",[289,3054,484],{"class":468},[289,3056,704],{"class":468},[289,3058,549],{"class":464},[289,3060,3061],{"class":291,"line":305},[289,3062,302],{"emptyLinePlaceholder":301},[289,3064,3065,3068,3070,3072,3074,3076,3079,3081,3083,3086,3088,3090],{"class":291,"line":311},[289,3066,3067],{"class":464},"log",[289,3069,658],{"class":468},[289,3071,1280],{"class":460},[289,3073,465],{"class":464},[289,3075,666],{"class":468},[289,3077,3078],{"class":474}," action",[289,3080,478],{"class":468},[289,3082,524],{"class":468},[289,3084,3085],{"class":389},"checkout",[289,3087,484],{"class":468},[289,3089,704],{"class":468},[289,3091,549],{"class":464},[289,3093,3094],{"class":291,"line":317},[289,3095,3096],{"class":3019},"\u002F\u002F -> { userId: 'usr_123', orgId: 'org_456', action: 'checkout', ... }\n",[289,3098,3099],{"class":291,"line":323},[289,3100,302],{"emptyLinePlaceholder":301},[289,3102,3103],{"class":291,"line":329},[289,3104,3105],{"class":3019},"\u002F\u002F After logout\n",[289,3107,3108,3111],{"class":291,"line":335},[289,3109,3110],{"class":460},"clearIdentity",[289,3112,3113],{"class":464},"()\n",[367,3115,3117],{"id":3116},"syncing-identity-with-auth","Syncing Identity with Auth",[259,3119,3120],{},"Use a route middleware to keep identity in sync with your auth state:",[279,3122,3125],{"className":443,"code":3123,"filename":3124,"language":446,"meta":285,"style":285},"export default defineNuxtRouteMiddleware(() => {\n  const { user } = useAuth()\n\n  if (user.value) {\n    setIdentity({ userId: user.value.id, email: user.value.email })\n  } else {\n    clearIdentity()\n  }\n})\n","middleware\u002Fidentity.global.ts",[263,3126,3127,3144,3161,3165,3182,3228,3237,3244,3248],{"__ignoreMap":285},[289,3128,3129,3131,3133,3136,3138,3140,3142],{"class":291,"line":292},[289,3130,454],{"class":453},[289,3132,457],{"class":453},[289,3134,3135],{"class":460}," defineNuxtRouteMiddleware",[289,3137,465],{"class":464},[289,3139,2262],{"class":468},[289,3141,603],{"class":589},[289,3143,505],{"class":468},[289,3145,3146,3148,3150,3152,3154,3156,3159],{"class":291,"line":298},[289,3147,610],{"class":589},[289,3149,674],{"class":468},[289,3151,669],{"class":464},[289,3153,704],{"class":468},[289,3155,616],{"class":468},[289,3157,3158],{"class":460}," useAuth",[289,3160,3113],{"class":474},[289,3162,3163],{"class":291,"line":305},[289,3164,302],{"emptyLinePlaceholder":301},[289,3166,3167,3169,3171,3173,3175,3178,3180],{"class":291,"line":311},[289,3168,1129],{"class":453},[289,3170,593],{"class":474},[289,3172,2784],{"class":464},[289,3174,658],{"class":468},[289,3176,3177],{"class":464},"value",[289,3179,1146],{"class":474},[289,3181,469],{"class":468},[289,3183,3184,3187,3189,3191,3193,3195,3197,3199,3201,3203,3206,3208,3211,3213,3215,3217,3219,3221,3224,3226],{"class":291,"line":317},[289,3185,3186],{"class":460},"    setIdentity",[289,3188,465],{"class":474},[289,3190,666],{"class":468},[289,3192,3031],{"class":474},[289,3194,478],{"class":468},[289,3196,669],{"class":464},[289,3198,658],{"class":468},[289,3200,3177],{"class":464},[289,3202,658],{"class":468},[289,3204,3205],{"class":464},"id",[289,3207,689],{"class":468},[289,3209,3210],{"class":474}," email",[289,3212,478],{"class":468},[289,3214,669],{"class":464},[289,3216,658],{"class":468},[289,3218,3177],{"class":464},[289,3220,658],{"class":468},[289,3222,3223],{"class":464},"email",[289,3225,704],{"class":468},[289,3227,549],{"class":474},[289,3229,3230,3232,3235],{"class":291,"line":323},[289,3231,2385],{"class":468},[289,3233,3234],{"class":453}," else",[289,3236,505],{"class":468},[289,3238,3239,3242],{"class":291,"line":329},[289,3240,3241],{"class":460},"    clearIdentity",[289,3243,3113],{"class":474},[289,3245,3246],{"class":291,"line":335},[289,3247,1249],{"class":468},[289,3249,3250,3252],{"class":291,"line":341},[289,3251,546],{"class":468},[289,3253,549],{"class":464},[363,3255,3257],{"id":3256},"production-tips","Production Tips",[259,3259,3260,3261,3264],{},"Use Nuxt's ",[263,3262,3263],{},"$production"," override to keep full logging in development while sampling and disabling console output in production:",[279,3266,3268],{"className":443,"code":3267,"filename":445,"language":446,"meta":285,"style":285},"export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    env: { service: 'my-app' },\n  },\n  $production: {\n    evlog: {\n      console: false,\n      sampling: {\n        rates: { info: 10, warn: 50, debug: 0 },\n        keep: [{ duration: 1000 }, { status: 400 }],\n      },\n    },\n  },\n})\n",[263,3269,3270,3282,3300,3308,3328,3332,3341,3350,3362,3371,3406,3440,3444,3448,3452],{"__ignoreMap":285},[289,3271,3272,3274,3276,3278,3280],{"class":291,"line":292},[289,3273,454],{"class":453},[289,3275,457],{"class":453},[289,3277,461],{"class":460},[289,3279,465],{"class":464},[289,3281,469],{"class":468},[289,3283,3284,3286,3288,3290,3292,3294,3296,3298],{"class":291,"line":298},[289,3285,475],{"class":474},[289,3287,478],{"class":468},[289,3289,481],{"class":464},[289,3291,484],{"class":468},[289,3293,487],{"class":389},[289,3295,484],{"class":468},[289,3297,492],{"class":464},[289,3299,495],{"class":468},[289,3301,3302,3304,3306],{"class":291,"line":305},[289,3303,500],{"class":474},[289,3305,478],{"class":468},[289,3307,505],{"class":468},[289,3309,3310,3312,3314,3316,3318,3320,3322,3324,3326],{"class":291,"line":311},[289,3311,510],{"class":474},[289,3313,478],{"class":468},[289,3315,674],{"class":468},[289,3317,1821],{"class":474},[289,3319,478],{"class":468},[289,3321,524],{"class":468},[289,3323,527],{"class":389},[289,3325,484],{"class":468},[289,3327,1833],{"class":468},[289,3329,3330],{"class":291,"line":317},[289,3331,541],{"class":468},[289,3333,3334,3337,3339],{"class":291,"line":323},[289,3335,3336],{"class":474},"  $production",[289,3338,478],{"class":468},[289,3340,505],{"class":468},[289,3342,3343,3346,3348],{"class":291,"line":329},[289,3344,3345],{"class":474},"    evlog",[289,3347,478],{"class":468},[289,3349,505],{"class":468},[289,3351,3352,3355,3357,3360],{"class":291,"line":335},[289,3353,3354],{"class":474},"      console",[289,3356,478],{"class":468},[289,3358,3359],{"class":893}," false",[289,3361,495],{"class":468},[289,3363,3364,3367,3369],{"class":291,"line":341},[289,3365,3366],{"class":474},"      sampling",[289,3368,478],{"class":468},[289,3370,505],{"class":468},[289,3372,3373,3376,3378,3380,3382,3384,3386,3388,3391,3393,3395,3397,3400,3402,3404],{"class":291,"line":347},[289,3374,3375],{"class":474},"        rates",[289,3377,478],{"class":468},[289,3379,674],{"class":468},[289,3381,2611],{"class":474},[289,3383,478],{"class":468},[289,3385,2483],{"class":965},[289,3387,689],{"class":468},[289,3389,3390],{"class":474}," warn",[289,3392,478],{"class":468},[289,3394,2063],{"class":965},[289,3396,689],{"class":468},[289,3398,3399],{"class":474}," debug",[289,3401,478],{"class":468},[289,3403,1143],{"class":965},[289,3405,1833],{"class":468},[289,3407,3408,3411,3413,3415,3417,3419,3421,3423,3426,3428,3430,3432,3434,3436,3438],{"class":291,"line":352},[289,3409,3410],{"class":474},"        keep",[289,3412,478],{"class":468},[289,3414,481],{"class":464},[289,3416,666],{"class":468},[289,3418,2634],{"class":474},[289,3420,478],{"class":468},[289,3422,2639],{"class":965},[289,3424,3425],{"class":468}," },",[289,3427,674],{"class":468},[289,3429,2648],{"class":474},[289,3431,478],{"class":468},[289,3433,1170],{"class":965},[289,3435,704],{"class":468},[289,3437,492],{"class":464},[289,3439,495],{"class":468},[289,3441,3442],{"class":291,"line":358},[289,3443,2525],{"class":468},[289,3445,3446],{"class":291,"line":880},[289,3447,536],{"class":468},[289,3449,3450],{"class":291,"line":914},[289,3451,541],{"class":468},[289,3453,3454,3456],{"class":291,"line":1246},[289,3455,546],{"class":468},[289,3457,549],{"class":464},[3459,3460,3461],"style",{},"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 .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 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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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}",{"title":285,"searchDepth":298,"depth":298,"links":3463},[3464,3468,3469,3470,3471,3474,3478,3483,3488],{"id":365,"depth":298,"text":20,"children":3465},[3466,3467],{"id":369,"depth":305,"text":370},{"id":439,"depth":305,"text":440},{"id":562,"depth":298,"text":121},{"id":1002,"depth":298,"text":1003},{"id":1295,"depth":298,"text":160},{"id":1604,"depth":298,"text":1605,"children":3472},[3473],{"id":1763,"depth":305,"text":1764},{"id":1937,"depth":298,"text":1938,"children":3475},[3476,3477],{"id":1944,"depth":305,"text":1945},{"id":2186,"depth":305,"text":2187},{"id":1316,"depth":298,"text":150,"children":3479},[3480,3481,3482],{"id":2408,"depth":305,"text":2409},{"id":2545,"depth":305,"text":2546},{"id":2696,"depth":305,"text":2697},{"id":2867,"depth":298,"text":2868,"children":3484},[3485,3486,3487],{"id":2967,"depth":305,"text":2968},{"id":3001,"depth":305,"text":3002},{"id":3116,"depth":305,"text":3117},{"id":3256,"depth":298,"text":3257},"Automatic wide events, structured errors, drain adapters, enrichers, tail sampling, and client transport in Nuxt applications.","md",null,{},{"title":41,"icon":44},{"title":41,"description":3489},"wWPgduAupHX03gow5INVTXlk0-JJreTft9Nta_cfYvs",[3497,3499],{"title":36,"path":37,"stem":38,"description":3498,"icon":39,"children":-1},"evlog supports every major TypeScript framework. Choose your stack and get started in minutes.",{"title":46,"path":47,"stem":48,"description":3500,"icon":49,"children":-1},"Wide events, structured errors, drain pipeline, tail sampling, route-based services, error handling, and client-side logging in Next.js applications.",1773651975411]