[{"data":1,"prerenderedAt":1944},["ShallowReactive",2],{"navigation_docs":3,"-core-concepts-typed-fields":308,"-core-concepts-typed-fields-surround":1939},[4,35,80,124,212,292],{"title":5,"path":6,"stem":7,"children":8,"page":34},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24,29],{"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",{"title":30,"path":31,"stem":32,"icon":33},"vs Other Loggers","\u002Fgetting-started\u002Fvs-other-loggers","1.getting-started\u002F5.vs-other-loggers","i-lucide-scale",false,{"title":36,"path":37,"stem":38,"children":39,"page":34},"Logging","\u002Flogging","2.logging",[40,45,50,55,60,65,70,75],{"title":41,"path":42,"stem":43,"icon":44},"Overview","\u002Flogging\u002Foverview","2.logging\u002F0.overview","i-lucide-list",{"title":46,"path":47,"stem":48,"icon":49},"Simple Logging","\u002Flogging\u002Fsimple-logging","2.logging\u002F1.simple-logging","i-lucide-terminal",{"title":51,"path":52,"stem":53,"icon":54},"Wide Events","\u002Flogging\u002Fwide-events","2.logging\u002F2.wide-events","i-lucide-layers",{"title":56,"path":57,"stem":58,"icon":59},"Structured Errors","\u002Flogging\u002Fstructured-errors","2.logging\u002F3.structured-errors","i-lucide-shield-alert",{"title":61,"path":62,"stem":63,"icon":64},"Client Logging","\u002Flogging\u002Fclient-logging","2.logging\u002F4.client-logging","i-lucide-monitor",{"title":66,"path":67,"stem":68,"icon":69},"AI SDK Integration","\u002Flogging\u002Fai-sdk","2.logging\u002F5.ai-sdk","i-simple-icons-vercel",{"title":71,"path":72,"stem":73,"icon":74},"Better Auth Integration","\u002Flogging\u002Fbetter-auth","2.logging\u002F6.better-auth","i-simple-icons-betterauth",{"title":76,"path":77,"stem":78,"icon":79},"Audit Logs","\u002Flogging\u002Faudit","2.logging\u002F7.audit","i-lucide-shield-check",{"title":81,"path":82,"stem":83,"children":84,"page":34},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[85,90,95,100,105,109,114,119],{"title":86,"path":87,"stem":88,"icon":89},"Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":91,"path":92,"stem":93,"icon":94},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F1.configuration","i-lucide-settings",{"title":96,"path":97,"stem":98,"icon":99},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F2.sampling","i-lucide-filter",{"title":101,"path":102,"stem":103,"icon":104},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F3.typed-fields","i-simple-icons-typescript",{"title":106,"path":107,"stem":108,"icon":79},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F4.best-practices",{"title":110,"path":111,"stem":112,"icon":113},"Performance","\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F5.performance","i-lucide-gauge",{"title":115,"path":116,"stem":117,"icon":118},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F6.vite-plugin","i-custom-vite",{"title":120,"path":121,"stem":122,"icon":123},"Auto-Redaction","\u002Fcore-concepts\u002Fredaction","3.core-concepts\u002F7.redaction","i-lucide-eye-off",{"title":125,"path":126,"stem":127,"children":128,"page":34},"Frameworks","\u002Fframeworks","4.frameworks",[129,133,138,143,148,153,158,163,168,173,178,183,188,193,197,202,207],{"title":41,"path":130,"stem":131,"icon":132},"\u002Fframeworks\u002Foverview","4.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":134,"path":135,"stem":136,"icon":137},"Nuxt","\u002Fframeworks\u002Fnuxt","4.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":139,"path":140,"stem":141,"icon":142},"Next.js","\u002Fframeworks\u002Fnextjs","4.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":144,"path":145,"stem":146,"icon":147},"SvelteKit","\u002Fframeworks\u002Fsveltekit","4.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":149,"path":150,"stem":151,"icon":152},"Nitro","\u002Fframeworks\u002Fnitro","4.frameworks\u002F04.nitro","i-custom-nitro",{"title":154,"path":155,"stem":156,"icon":157},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","4.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":159,"path":160,"stem":161,"icon":162},"NestJS","\u002Fframeworks\u002Fnestjs","4.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":164,"path":165,"stem":166,"icon":167},"Express","\u002Fframeworks\u002Fexpress","4.frameworks\u002F07.express","i-simple-icons-express",{"title":169,"path":170,"stem":171,"icon":172},"Hono","\u002Fframeworks\u002Fhono","4.frameworks\u002F08.hono","i-simple-icons-hono",{"title":174,"path":175,"stem":176,"icon":177},"Fastify","\u002Fframeworks\u002Ffastify","4.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":179,"path":180,"stem":181,"icon":182},"Elysia","\u002Fframeworks\u002Felysia","4.frameworks\u002F10.elysia","i-custom-elysia",{"title":184,"path":185,"stem":186,"icon":187},"React Router","\u002Fframeworks\u002Freact-router","4.frameworks\u002F11.react-router","i-custom-reactrouter",{"title":189,"path":190,"stem":191,"icon":192},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","4.frameworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":194,"path":195,"stem":196,"icon":104},"Standalone","\u002Fframeworks\u002Fstandalone","4.frameworks\u002F13.standalone",{"title":198,"path":199,"stem":200,"icon":201},"Astro","\u002Fframeworks\u002Fastro","4.frameworks\u002F14.astro","i-simple-icons-astro",{"title":203,"path":204,"stem":205,"icon":206},"AWS Lambda","\u002Fframeworks\u002Faws-lambda","4.frameworks\u002F16.aws-lambda","i-custom-lambda",{"title":208,"path":209,"stem":210,"icon":211},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","4.frameworks\u002F17.custom-integration","i-lucide-puzzle",{"title":213,"path":214,"stem":215,"children":216,"page":34},"Adapters","\u002Fadapters","6.adapters",[217,257,272],{"title":218,"path":219,"stem":220,"children":221,"page":34},"Cloud destinations","\u002Fadapters\u002Fcloud","6.adapters\u002F02.cloud",[222,227,232,237,242,247,252],{"title":223,"path":224,"stem":225,"icon":226},"Axiom","\u002Fadapters\u002Fcloud\u002Faxiom","6.adapters\u002F02.cloud\u002F01.axiom","i-custom-axiom",{"title":228,"path":229,"stem":230,"icon":231},"OTLP","\u002Fadapters\u002Fcloud\u002Fotlp","6.adapters\u002F02.cloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":233,"path":234,"stem":235,"icon":236},"PostHog","\u002Fadapters\u002Fcloud\u002Fposthog","6.adapters\u002F02.cloud\u002F03.posthog","i-simple-icons-posthog",{"title":238,"path":239,"stem":240,"icon":241},"Sentry","\u002Fadapters\u002Fcloud\u002Fsentry","6.adapters\u002F02.cloud\u002F04.sentry","i-simple-icons-sentry",{"title":243,"path":244,"stem":245,"icon":246},"Better Stack","\u002Fadapters\u002Fcloud\u002Fbetter-stack","6.adapters\u002F02.cloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":248,"path":249,"stem":250,"icon":251},"Datadog","\u002Fadapters\u002Fcloud\u002Fdatadog","6.adapters\u002F02.cloud\u002F06.datadog","i-simple-icons-datadog",{"title":253,"path":254,"stem":255,"icon":256},"HyperDX","\u002Fadapters\u002Fcloud\u002Fhyperdx","6.adapters\u002F02.cloud\u002F07.hyperdx","i-custom-hyperdx",{"title":258,"path":259,"stem":260,"children":261,"page":34},"Self-hosted","\u002Fadapters\u002Fself-hosted","6.adapters\u002F03.self-hosted",[262,267],{"title":263,"path":264,"stem":265,"icon":266},"File System","\u002Fadapters\u002Fself-hosted\u002Ffs","6.adapters\u002F03.self-hosted\u002F01.fs","i-lucide-hard-drive",{"title":268,"path":269,"stem":270,"icon":271},"NuxtHub","\u002Fadapters\u002Fself-hosted\u002Fnuxthub","6.adapters\u002F03.self-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":273,"path":274,"stem":275,"children":276,"page":34},"Building blocks","\u002Fadapters\u002Fbuilding-blocks","6.adapters\u002F04.building-blocks",[277,282,287],{"title":278,"path":279,"stem":280,"icon":281},"Pipeline","\u002Fadapters\u002Fbuilding-blocks\u002Fpipeline","6.adapters\u002F04.building-blocks\u002F01.pipeline","i-lucide-workflow",{"title":283,"path":284,"stem":285,"icon":286},"HTTP","\u002Fadapters\u002Fbuilding-blocks\u002Fhttp","6.adapters\u002F04.building-blocks\u002F02.http","i-lucide-globe",{"title":288,"path":289,"stem":290,"icon":291},"Custom Adapters","\u002Fadapters\u002Fbuilding-blocks\u002Fcustom","6.adapters\u002F04.building-blocks\u002F03.custom","i-lucide-code",{"title":293,"path":294,"stem":295,"children":296,"page":34},"Enrichers","\u002Fenrichers","7.enrichers",[297,300,304],{"title":41,"path":298,"stem":299,"icon":28},"\u002Fenrichers\u002Foverview","7.enrichers\u002F1.overview",{"title":301,"path":302,"stem":303,"icon":211},"Built-in","\u002Fenrichers\u002Fbuilt-in","7.enrichers\u002F2.built-in",{"title":305,"path":306,"stem":307,"icon":291},"Custom","\u002Fenrichers\u002Fcustom","7.enrichers\u002F3.custom",{"id":309,"title":101,"body":310,"description":1928,"extension":1929,"links":1930,"meta":1935,"navigation":1936,"path":102,"seo":1937,"stem":103,"__hash__":1938},"docs\u002F3.core-concepts\u002F3.typed-fields.md",{"type":311,"value":312,"toc":1916},"minimark",[313,334,339,345,808,811,815,830,894,903,907,913,983,986,990,1005,1138,1141,1145,1155,1451,1455,1460,1463,1641,1747,1751,1754,1884,1888,1912],[314,315,316,317,321,322,325,326,329,330,333],"p",{},"By default, ",[318,319,320],"code",{},"useLogger"," accepts any fields, which is great for getting started. But as your codebase grows, inconsistencies creep in: one route logs ",[318,323,324],{},"user",", another logs ",[318,327,328],{},"account",", a third logs ",[318,331,332],{},"userId",". Typed fields solve this with opt-in compile-time safety.",[335,336,338],"h2",{"id":337},"basic-usage","Basic Usage",[314,340,341,342,344],{},"Define an interface for your fields and pass it as a generic to ",[318,343,320],{},":",[346,347,353],"pre",{"className":348,"code":349,"filename":350,"language":351,"meta":352,"style":352},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { useLogger } from 'evlog'\n\ninterface CheckoutFields {\n  user: { id: string; plan: string }\n  cart: { items: number; total: number }\n  action: string\n}\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger\u003CCheckoutFields>(event)\n\n  log.set({ user: { id: '123', plan: 'pro' } })  \u002F\u002F OK\n  log.set({ cart: { items: 3, total: 9999 } })    \u002F\u002F OK\n  log.set({ action: 'checkout' })                  \u002F\u002F OK\n\n  log.set({ account: '...' })                      \u002F\u002F TS error\n  log.set({ usr: { id: '123' } })                  \u002F\u002F TS error\n\n  return { success: true }\n})\n","server\u002Fapi\u002Fcheckout.post.ts","typescript","",[318,354,355,388,395,409,441,470,481,487,492,526,556,561,622,668,700,705,738,776,781,800],{"__ignoreMap":352},[356,357,360,364,368,372,375,378,381,385],"span",{"class":358,"line":359},"line",1,[356,361,363],{"class":362},"s7zQu","import",[356,365,367],{"class":366},"sMK4o"," {",[356,369,371],{"class":370},"sTEyZ"," useLogger",[356,373,374],{"class":366}," }",[356,376,377],{"class":362}," from",[356,379,380],{"class":366}," '",[356,382,384],{"class":383},"sfazB","evlog",[356,386,387],{"class":366},"'\n",[356,389,391],{"class":358,"line":390},2,[356,392,394],{"emptyLinePlaceholder":393},true,"\n",[356,396,398,402,406],{"class":358,"line":397},3,[356,399,401],{"class":400},"spNyl","interface",[356,403,405],{"class":404},"sBMFI"," CheckoutFields",[356,407,408],{"class":366}," {\n",[356,410,412,416,418,420,423,425,428,431,434,436,438],{"class":358,"line":411},4,[356,413,415],{"class":414},"swJcz","  user",[356,417,344],{"class":366},[356,419,367],{"class":366},[356,421,422],{"class":414}," id",[356,424,344],{"class":366},[356,426,427],{"class":404}," string",[356,429,430],{"class":366},";",[356,432,433],{"class":414}," plan",[356,435,344],{"class":366},[356,437,427],{"class":404},[356,439,440],{"class":366}," }\n",[356,442,444,447,449,451,454,456,459,461,464,466,468],{"class":358,"line":443},5,[356,445,446],{"class":414},"  cart",[356,448,344],{"class":366},[356,450,367],{"class":366},[356,452,453],{"class":414}," items",[356,455,344],{"class":366},[356,457,458],{"class":404}," number",[356,460,430],{"class":366},[356,462,463],{"class":414}," total",[356,465,344],{"class":366},[356,467,458],{"class":404},[356,469,440],{"class":366},[356,471,473,476,478],{"class":358,"line":472},6,[356,474,475],{"class":414},"  action",[356,477,344],{"class":366},[356,479,480],{"class":404}," string\n",[356,482,484],{"class":358,"line":483},7,[356,485,486],{"class":366},"}\n",[356,488,490],{"class":358,"line":489},8,[356,491,394],{"emptyLinePlaceholder":393},[356,493,495,498,501,505,508,511,514,518,521,524],{"class":358,"line":494},9,[356,496,497],{"class":362},"export",[356,499,500],{"class":362}," default",[356,502,504],{"class":503},"s2Zo4"," defineEventHandler",[356,506,507],{"class":370},"(",[356,509,510],{"class":400},"async",[356,512,513],{"class":366}," (",[356,515,517],{"class":516},"sHdIc","event",[356,519,520],{"class":366},")",[356,522,523],{"class":400}," =>",[356,525,408],{"class":366},[356,527,529,532,535,538,540,543,546,549,551,553],{"class":358,"line":528},10,[356,530,531],{"class":400},"  const",[356,533,534],{"class":370}," log",[356,536,537],{"class":366}," =",[356,539,371],{"class":503},[356,541,542],{"class":366},"\u003C",[356,544,545],{"class":404},"CheckoutFields",[356,547,548],{"class":366},">",[356,550,507],{"class":414},[356,552,517],{"class":370},[356,554,555],{"class":414},")\n",[356,557,559],{"class":358,"line":558},11,[356,560,394],{"emptyLinePlaceholder":393},[356,562,564,567,570,573,575,578,581,583,585,587,589,591,594,597,600,602,604,606,609,611,613,615,618],{"class":358,"line":563},12,[356,565,566],{"class":370},"  log",[356,568,569],{"class":366},".",[356,571,572],{"class":503},"set",[356,574,507],{"class":414},[356,576,577],{"class":366},"{",[356,579,580],{"class":414}," user",[356,582,344],{"class":366},[356,584,367],{"class":366},[356,586,422],{"class":414},[356,588,344],{"class":366},[356,590,380],{"class":366},[356,592,593],{"class":383},"123",[356,595,596],{"class":366},"'",[356,598,599],{"class":366},",",[356,601,433],{"class":414},[356,603,344],{"class":366},[356,605,380],{"class":366},[356,607,608],{"class":383},"pro",[356,610,596],{"class":366},[356,612,374],{"class":366},[356,614,374],{"class":366},[356,616,617],{"class":414},")  ",[356,619,621],{"class":620},"sHwdD","\u002F\u002F OK\n",[356,623,625,627,629,631,633,635,638,640,642,644,646,650,652,654,656,659,661,663,666],{"class":358,"line":624},13,[356,626,566],{"class":370},[356,628,569],{"class":366},[356,630,572],{"class":503},[356,632,507],{"class":414},[356,634,577],{"class":366},[356,636,637],{"class":414}," cart",[356,639,344],{"class":366},[356,641,367],{"class":366},[356,643,453],{"class":414},[356,645,344],{"class":366},[356,647,649],{"class":648},"sbssI"," 3",[356,651,599],{"class":366},[356,653,463],{"class":414},[356,655,344],{"class":366},[356,657,658],{"class":648}," 9999",[356,660,374],{"class":366},[356,662,374],{"class":366},[356,664,665],{"class":414},")    ",[356,667,621],{"class":620},[356,669,671,673,675,677,679,681,684,686,688,691,693,695,698],{"class":358,"line":670},14,[356,672,566],{"class":370},[356,674,569],{"class":366},[356,676,572],{"class":503},[356,678,507],{"class":414},[356,680,577],{"class":366},[356,682,683],{"class":414}," action",[356,685,344],{"class":366},[356,687,380],{"class":366},[356,689,690],{"class":383},"checkout",[356,692,596],{"class":366},[356,694,374],{"class":366},[356,696,697],{"class":414},")                  ",[356,699,621],{"class":620},[356,701,703],{"class":358,"line":702},15,[356,704,394],{"emptyLinePlaceholder":393},[356,706,708,710,712,714,716,718,721,723,725,728,730,732,735],{"class":358,"line":707},16,[356,709,566],{"class":370},[356,711,569],{"class":366},[356,713,572],{"class":503},[356,715,507],{"class":414},[356,717,577],{"class":366},[356,719,720],{"class":414}," account",[356,722,344],{"class":366},[356,724,380],{"class":366},[356,726,727],{"class":383},"...",[356,729,596],{"class":366},[356,731,374],{"class":366},[356,733,734],{"class":414},")                      ",[356,736,737],{"class":620},"\u002F\u002F TS error\n",[356,739,741,743,745,747,749,751,754,756,758,760,762,764,766,768,770,772,774],{"class":358,"line":740},17,[356,742,566],{"class":370},[356,744,569],{"class":366},[356,746,572],{"class":503},[356,748,507],{"class":414},[356,750,577],{"class":366},[356,752,753],{"class":414}," usr",[356,755,344],{"class":366},[356,757,367],{"class":366},[356,759,422],{"class":414},[356,761,344],{"class":366},[356,763,380],{"class":366},[356,765,593],{"class":383},[356,767,596],{"class":366},[356,769,374],{"class":366},[356,771,374],{"class":366},[356,773,697],{"class":414},[356,775,737],{"class":620},[356,777,779],{"class":358,"line":778},18,[356,780,394],{"emptyLinePlaceholder":393},[356,782,784,787,789,792,794,798],{"class":358,"line":783},19,[356,785,786],{"class":362},"  return",[356,788,367],{"class":366},[356,790,791],{"class":414}," success",[356,793,344],{"class":366},[356,795,797],{"class":796},"sfNiH"," true",[356,799,440],{"class":366},[356,801,803,806],{"class":358,"line":802},20,[356,804,805],{"class":366},"}",[356,807,555],{"class":370},[314,809,810],{},"TypeScript catches typos and unknown fields at compile time, before they reach production.",[335,812,814],{"id":813},"internal-fields","Internal Fields",[314,816,817,818,821,822,825,826,829],{},"evlog sets some fields internally (",[318,819,820],{},"status",", ",[318,823,824],{},"service","). These are always accepted regardless of your type, through the ",[318,827,828],{},"InternalFields"," type:",[346,831,833],{"className":348,"code":832,"filename":350,"language":351,"meta":352,"style":352},"log.set({ status: 200 })    \u002F\u002F OK - internal field\nlog.set({ service: 'api' }) \u002F\u002F OK - internal field\n",[318,834,835,863],{"__ignoreMap":352},[356,836,837,840,842,844,846,848,851,853,856,858,860],{"class":358,"line":359},[356,838,839],{"class":370},"log",[356,841,569],{"class":366},[356,843,572],{"class":503},[356,845,507],{"class":370},[356,847,577],{"class":366},[356,849,850],{"class":414}," status",[356,852,344],{"class":366},[356,854,855],{"class":648}," 200",[356,857,374],{"class":366},[356,859,665],{"class":370},[356,861,862],{"class":620},"\u002F\u002F OK - internal field\n",[356,864,865,867,869,871,873,875,878,880,882,885,887,889,892],{"class":358,"line":390},[356,866,839],{"class":370},[356,868,569],{"class":366},[356,870,572],{"class":503},[356,872,507],{"class":370},[356,874,577],{"class":366},[356,876,877],{"class":414}," service",[356,879,344],{"class":366},[356,881,380],{"class":366},[356,883,884],{"class":383},"api",[356,886,596],{"class":366},[356,888,374],{"class":366},[356,890,891],{"class":370},") ",[356,893,862],{"class":620},[314,895,896,897,899,900,902],{},"You don't need to include ",[318,898,820],{}," or ",[318,901,824],{}," in your interface.",[335,904,906],{"id":905},"untyped-usage","Untyped Usage",[314,908,909,910,912],{},"Without a generic, ",[318,911,320],{}," accepts any fields as usual:",[346,914,917],{"className":348,"code":915,"filename":916,"language":351,"meta":352,"style":352},"const log = useLogger(event)\nlog.set({ anything: true, nested: { deep: 'value' } }) \u002F\u002F OK\n","server\u002Fapi\u002Fexample.ts",[318,918,919,935],{"__ignoreMap":352},[356,920,921,924,927,930,932],{"class":358,"line":359},[356,922,923],{"class":400},"const",[356,925,926],{"class":370}," log ",[356,928,929],{"class":366},"=",[356,931,371],{"class":503},[356,933,934],{"class":370},"(event)\n",[356,936,937,939,941,943,945,947,950,952,954,956,959,961,963,966,968,970,973,975,977,979,981],{"class":358,"line":390},[356,938,839],{"class":370},[356,940,569],{"class":366},[356,942,572],{"class":503},[356,944,507],{"class":370},[356,946,577],{"class":366},[356,948,949],{"class":414}," anything",[356,951,344],{"class":366},[356,953,797],{"class":796},[356,955,599],{"class":366},[356,957,958],{"class":414}," nested",[356,960,344],{"class":366},[356,962,367],{"class":366},[356,964,965],{"class":414}," deep",[356,967,344],{"class":366},[356,969,380],{"class":366},[356,971,972],{"class":383},"value",[356,974,596],{"class":366},[356,976,374],{"class":366},[356,978,374],{"class":366},[356,980,891],{"class":370},[356,982,621],{"class":620},[314,984,985],{},"Typed fields are fully opt-in.",[335,987,989],{"id":988},"nuxt-auto-import","Nuxt Auto-Import",[991,992,995,996,999,1000,1004],"callout",{"color":993,"icon":994},"warning","i-lucide-triangle-alert","When using typed fields with ",[318,997,998],{},"useLogger\u003CT>",", you ",[1001,1002,1003],"strong",{},"must"," use an explicit import. The Nuxt auto-import does not support excess property checking for generics due to a TypeScript limitation.",[346,1006,1008],{"className":348,"code":1007,"filename":350,"language":351,"meta":352,"style":352},"\u002F\u002F Works - explicit import preserves type checking\nimport { useLogger } from 'evlog'\nconst log = useLogger\u003CMyFields>(event)\nlog.set({ typo: 'oops' }) \u002F\u002F TS error\n\n\u002F\u002F Does NOT work - auto-import loses excess property checking\nconst log = useLogger\u003CMyFields>(event)\nlog.set({ typo: 'oops' }) \u002F\u002F No error (silently accepted)\n",[318,1009,1010,1015,1033,1052,1082,1086,1091,1109],{"__ignoreMap":352},[356,1011,1012],{"class":358,"line":359},[356,1013,1014],{"class":620},"\u002F\u002F Works - explicit import preserves type checking\n",[356,1016,1017,1019,1021,1023,1025,1027,1029,1031],{"class":358,"line":390},[356,1018,363],{"class":362},[356,1020,367],{"class":366},[356,1022,371],{"class":370},[356,1024,374],{"class":366},[356,1026,377],{"class":362},[356,1028,380],{"class":366},[356,1030,384],{"class":383},[356,1032,387],{"class":366},[356,1034,1035,1037,1039,1041,1043,1045,1048,1050],{"class":358,"line":397},[356,1036,923],{"class":400},[356,1038,926],{"class":370},[356,1040,929],{"class":366},[356,1042,371],{"class":503},[356,1044,542],{"class":366},[356,1046,1047],{"class":404},"MyFields",[356,1049,548],{"class":366},[356,1051,934],{"class":370},[356,1053,1054,1056,1058,1060,1062,1064,1067,1069,1071,1074,1076,1078,1080],{"class":358,"line":411},[356,1055,839],{"class":370},[356,1057,569],{"class":366},[356,1059,572],{"class":503},[356,1061,507],{"class":370},[356,1063,577],{"class":366},[356,1065,1066],{"class":414}," typo",[356,1068,344],{"class":366},[356,1070,380],{"class":366},[356,1072,1073],{"class":383},"oops",[356,1075,596],{"class":366},[356,1077,374],{"class":366},[356,1079,891],{"class":370},[356,1081,737],{"class":620},[356,1083,1084],{"class":358,"line":443},[356,1085,394],{"emptyLinePlaceholder":393},[356,1087,1088],{"class":358,"line":472},[356,1089,1090],{"class":620},"\u002F\u002F Does NOT work - auto-import loses excess property checking\n",[356,1092,1093,1095,1097,1099,1101,1103,1105,1107],{"class":358,"line":483},[356,1094,923],{"class":400},[356,1096,926],{"class":370},[356,1098,929],{"class":366},[356,1100,371],{"class":503},[356,1102,542],{"class":366},[356,1104,1047],{"class":404},[356,1106,548],{"class":366},[356,1108,934],{"class":370},[356,1110,1111,1113,1115,1117,1119,1121,1123,1125,1127,1129,1131,1133,1135],{"class":358,"line":489},[356,1112,839],{"class":370},[356,1114,569],{"class":366},[356,1116,572],{"class":503},[356,1118,507],{"class":370},[356,1120,577],{"class":366},[356,1122,1066],{"class":414},[356,1124,344],{"class":366},[356,1126,380],{"class":366},[356,1128,1073],{"class":383},[356,1130,596],{"class":366},[356,1132,374],{"class":366},[356,1134,891],{"class":370},[356,1136,1137],{"class":620},"\u002F\u002F No error (silently accepted)\n",[314,1139,1140],{},"The auto-import works perfectly for untyped usage. Only add the explicit import when you need typed fields.",[335,1142,1144],{"id":1143},"outside-nuxt","Outside Nuxt",[314,1146,1147,1148,1151,1152,344],{},"The same generic works with ",[318,1149,1150],{},"createRequestLogger"," and ",[318,1153,1154],{},"createWorkersLogger",[1156,1157,1158,1350],"code-group",{},[346,1159,1161],{"className":348,"code":1160,"filename":194,"language":351,"meta":352,"style":352},"import { createRequestLogger } from 'evlog'\n\ninterface MyFields {\n  action: string\n  userId: string\n}\n\nconst log = createRequestLogger\u003CMyFields>({\n  method: 'POST',\n  path: '\u002Fcheckout',\n})\n\nlog.set({ action: 'checkout', userId: '123' }) \u002F\u002F OK\nlog.set({ unknown: true })                      \u002F\u002F TS error\n",[318,1162,1163,1182,1186,1195,1203,1212,1216,1220,1241,1258,1274,1280,1284,1325],{"__ignoreMap":352},[356,1164,1165,1167,1169,1172,1174,1176,1178,1180],{"class":358,"line":359},[356,1166,363],{"class":362},[356,1168,367],{"class":366},[356,1170,1171],{"class":370}," createRequestLogger",[356,1173,374],{"class":366},[356,1175,377],{"class":362},[356,1177,380],{"class":366},[356,1179,384],{"class":383},[356,1181,387],{"class":366},[356,1183,1184],{"class":358,"line":390},[356,1185,394],{"emptyLinePlaceholder":393},[356,1187,1188,1190,1193],{"class":358,"line":397},[356,1189,401],{"class":400},[356,1191,1192],{"class":404}," MyFields",[356,1194,408],{"class":366},[356,1196,1197,1199,1201],{"class":358,"line":411},[356,1198,475],{"class":414},[356,1200,344],{"class":366},[356,1202,480],{"class":404},[356,1204,1205,1208,1210],{"class":358,"line":443},[356,1206,1207],{"class":414},"  userId",[356,1209,344],{"class":366},[356,1211,480],{"class":404},[356,1213,1214],{"class":358,"line":472},[356,1215,486],{"class":366},[356,1217,1218],{"class":358,"line":483},[356,1219,394],{"emptyLinePlaceholder":393},[356,1221,1222,1224,1226,1228,1230,1232,1234,1236,1238],{"class":358,"line":489},[356,1223,923],{"class":400},[356,1225,926],{"class":370},[356,1227,929],{"class":366},[356,1229,1171],{"class":503},[356,1231,542],{"class":366},[356,1233,1047],{"class":404},[356,1235,548],{"class":366},[356,1237,507],{"class":370},[356,1239,1240],{"class":366},"{\n",[356,1242,1243,1246,1248,1250,1253,1255],{"class":358,"line":494},[356,1244,1245],{"class":414},"  method",[356,1247,344],{"class":366},[356,1249,380],{"class":366},[356,1251,1252],{"class":383},"POST",[356,1254,596],{"class":366},[356,1256,1257],{"class":366},",\n",[356,1259,1260,1263,1265,1267,1270,1272],{"class":358,"line":528},[356,1261,1262],{"class":414},"  path",[356,1264,344],{"class":366},[356,1266,380],{"class":366},[356,1268,1269],{"class":383},"\u002Fcheckout",[356,1271,596],{"class":366},[356,1273,1257],{"class":366},[356,1275,1276,1278],{"class":358,"line":558},[356,1277,805],{"class":366},[356,1279,555],{"class":370},[356,1281,1282],{"class":358,"line":563},[356,1283,394],{"emptyLinePlaceholder":393},[356,1285,1286,1288,1290,1292,1294,1296,1298,1300,1302,1304,1306,1308,1311,1313,1315,1317,1319,1321,1323],{"class":358,"line":624},[356,1287,839],{"class":370},[356,1289,569],{"class":366},[356,1291,572],{"class":503},[356,1293,507],{"class":370},[356,1295,577],{"class":366},[356,1297,683],{"class":414},[356,1299,344],{"class":366},[356,1301,380],{"class":366},[356,1303,690],{"class":383},[356,1305,596],{"class":366},[356,1307,599],{"class":366},[356,1309,1310],{"class":414}," userId",[356,1312,344],{"class":366},[356,1314,380],{"class":366},[356,1316,593],{"class":383},[356,1318,596],{"class":366},[356,1320,374],{"class":366},[356,1322,891],{"class":370},[356,1324,621],{"class":620},[356,1326,1327,1329,1331,1333,1335,1337,1340,1342,1344,1346,1348],{"class":358,"line":670},[356,1328,839],{"class":370},[356,1330,569],{"class":366},[356,1332,572],{"class":503},[356,1334,507],{"class":370},[356,1336,577],{"class":366},[356,1338,1339],{"class":414}," unknown",[356,1341,344],{"class":366},[356,1343,797],{"class":796},[356,1345,374],{"class":366},[356,1347,734],{"class":370},[356,1349,737],{"class":620},[346,1351,1353],{"className":348,"code":1352,"filename":189,"language":351,"meta":352,"style":352},"import { createWorkersLogger } from 'evlog\u002Fworkers'\n\ninterface MyFields {\n  action: string\n}\n\nconst log = createWorkersLogger\u003CMyFields>(request)\nlog.set({ action: 'process' }) \u002F\u002F OK\n",[318,1354,1355,1375,1379,1387,1395,1399,1403,1422],{"__ignoreMap":352},[356,1356,1357,1359,1361,1364,1366,1368,1370,1373],{"class":358,"line":359},[356,1358,363],{"class":362},[356,1360,367],{"class":366},[356,1362,1363],{"class":370}," createWorkersLogger",[356,1365,374],{"class":366},[356,1367,377],{"class":362},[356,1369,380],{"class":366},[356,1371,1372],{"class":383},"evlog\u002Fworkers",[356,1374,387],{"class":366},[356,1376,1377],{"class":358,"line":390},[356,1378,394],{"emptyLinePlaceholder":393},[356,1380,1381,1383,1385],{"class":358,"line":397},[356,1382,401],{"class":400},[356,1384,1192],{"class":404},[356,1386,408],{"class":366},[356,1388,1389,1391,1393],{"class":358,"line":411},[356,1390,475],{"class":414},[356,1392,344],{"class":366},[356,1394,480],{"class":404},[356,1396,1397],{"class":358,"line":443},[356,1398,486],{"class":366},[356,1400,1401],{"class":358,"line":472},[356,1402,394],{"emptyLinePlaceholder":393},[356,1404,1405,1407,1409,1411,1413,1415,1417,1419],{"class":358,"line":483},[356,1406,923],{"class":400},[356,1408,926],{"class":370},[356,1410,929],{"class":366},[356,1412,1363],{"class":503},[356,1414,542],{"class":366},[356,1416,1047],{"class":404},[356,1418,548],{"class":366},[356,1420,1421],{"class":370},"(request)\n",[356,1423,1424,1426,1428,1430,1432,1434,1436,1438,1440,1443,1445,1447,1449],{"class":358,"line":489},[356,1425,839],{"class":370},[356,1427,569],{"class":366},[356,1429,572],{"class":503},[356,1431,507],{"class":370},[356,1433,577],{"class":366},[356,1435,683],{"class":414},[356,1437,344],{"class":366},[356,1439,380],{"class":366},[356,1441,1442],{"class":383},"process",[356,1444,596],{"class":366},[356,1446,374],{"class":366},[356,1448,891],{"class":370},[356,1450,621],{"class":620},[335,1452,1454],{"id":1453},"design-tips","Design Tips",[1456,1457,1459],"h3",{"id":1458},"one-interface-per-domain","One Interface Per Domain",[314,1461,1462],{},"Define field interfaces per domain area, not per route:",[346,1464,1467],{"className":348,"code":1465,"filename":1466,"language":351,"meta":352,"style":352},"export interface AuthFields {\n  user: { id: string; email: string; role: string }\n  action: string\n  mfaUsed: boolean\n}\n\nexport interface PaymentFields {\n  user: { id: string; plan: string }\n  order: { id: string; total: number; currency: string }\n  payment: { method: string; last4: string }\n}\n","server\u002Ftypes\u002Flog-fields.ts",[318,1468,1469,1481,1515,1523,1533,1537,1541,1552,1576,1610,1637],{"__ignoreMap":352},[356,1470,1471,1473,1476,1479],{"class":358,"line":359},[356,1472,497],{"class":362},[356,1474,1475],{"class":400}," interface",[356,1477,1478],{"class":404}," AuthFields",[356,1480,408],{"class":366},[356,1482,1483,1485,1487,1489,1491,1493,1495,1497,1500,1502,1504,1506,1509,1511,1513],{"class":358,"line":390},[356,1484,415],{"class":414},[356,1486,344],{"class":366},[356,1488,367],{"class":366},[356,1490,422],{"class":414},[356,1492,344],{"class":366},[356,1494,427],{"class":404},[356,1496,430],{"class":366},[356,1498,1499],{"class":414}," email",[356,1501,344],{"class":366},[356,1503,427],{"class":404},[356,1505,430],{"class":366},[356,1507,1508],{"class":414}," role",[356,1510,344],{"class":366},[356,1512,427],{"class":404},[356,1514,440],{"class":366},[356,1516,1517,1519,1521],{"class":358,"line":397},[356,1518,475],{"class":414},[356,1520,344],{"class":366},[356,1522,480],{"class":404},[356,1524,1525,1528,1530],{"class":358,"line":411},[356,1526,1527],{"class":414},"  mfaUsed",[356,1529,344],{"class":366},[356,1531,1532],{"class":404}," boolean\n",[356,1534,1535],{"class":358,"line":443},[356,1536,486],{"class":366},[356,1538,1539],{"class":358,"line":472},[356,1540,394],{"emptyLinePlaceholder":393},[356,1542,1543,1545,1547,1550],{"class":358,"line":483},[356,1544,497],{"class":362},[356,1546,1475],{"class":400},[356,1548,1549],{"class":404}," PaymentFields",[356,1551,408],{"class":366},[356,1553,1554,1556,1558,1560,1562,1564,1566,1568,1570,1572,1574],{"class":358,"line":489},[356,1555,415],{"class":414},[356,1557,344],{"class":366},[356,1559,367],{"class":366},[356,1561,422],{"class":414},[356,1563,344],{"class":366},[356,1565,427],{"class":404},[356,1567,430],{"class":366},[356,1569,433],{"class":414},[356,1571,344],{"class":366},[356,1573,427],{"class":404},[356,1575,440],{"class":366},[356,1577,1578,1581,1583,1585,1587,1589,1591,1593,1595,1597,1599,1601,1604,1606,1608],{"class":358,"line":494},[356,1579,1580],{"class":414},"  order",[356,1582,344],{"class":366},[356,1584,367],{"class":366},[356,1586,422],{"class":414},[356,1588,344],{"class":366},[356,1590,427],{"class":404},[356,1592,430],{"class":366},[356,1594,463],{"class":414},[356,1596,344],{"class":366},[356,1598,458],{"class":404},[356,1600,430],{"class":366},[356,1602,1603],{"class":414}," currency",[356,1605,344],{"class":366},[356,1607,427],{"class":404},[356,1609,440],{"class":366},[356,1611,1612,1615,1617,1619,1622,1624,1626,1628,1631,1633,1635],{"class":358,"line":528},[356,1613,1614],{"class":414},"  payment",[356,1616,344],{"class":366},[356,1618,367],{"class":366},[356,1620,1621],{"class":414}," method",[356,1623,344],{"class":366},[356,1625,427],{"class":404},[356,1627,430],{"class":366},[356,1629,1630],{"class":414}," last4",[356,1632,344],{"class":366},[356,1634,427],{"class":404},[356,1636,440],{"class":366},[356,1638,1639],{"class":358,"line":558},[356,1640,486],{"class":366},[346,1642,1645],{"className":348,"code":1643,"filename":1644,"language":351,"meta":352,"style":352},"import { useLogger } from 'evlog'\nimport type { AuthFields } from '~\u002Fserver\u002Ftypes\u002Flog-fields'\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger\u003CAuthFields>(event)\n  \u002F\u002F ...\n})\n","server\u002Fapi\u002Fauth\u002Flogin.post.ts",[318,1646,1647,1665,1687,1691,1713,1736,1741],{"__ignoreMap":352},[356,1648,1649,1651,1653,1655,1657,1659,1661,1663],{"class":358,"line":359},[356,1650,363],{"class":362},[356,1652,367],{"class":366},[356,1654,371],{"class":370},[356,1656,374],{"class":366},[356,1658,377],{"class":362},[356,1660,380],{"class":366},[356,1662,384],{"class":383},[356,1664,387],{"class":366},[356,1666,1667,1669,1672,1674,1676,1678,1680,1682,1685],{"class":358,"line":390},[356,1668,363],{"class":362},[356,1670,1671],{"class":362}," type",[356,1673,367],{"class":366},[356,1675,1478],{"class":370},[356,1677,374],{"class":366},[356,1679,377],{"class":362},[356,1681,380],{"class":366},[356,1683,1684],{"class":383},"~\u002Fserver\u002Ftypes\u002Flog-fields",[356,1686,387],{"class":366},[356,1688,1689],{"class":358,"line":397},[356,1690,394],{"emptyLinePlaceholder":393},[356,1692,1693,1695,1697,1699,1701,1703,1705,1707,1709,1711],{"class":358,"line":411},[356,1694,497],{"class":362},[356,1696,500],{"class":362},[356,1698,504],{"class":503},[356,1700,507],{"class":370},[356,1702,510],{"class":400},[356,1704,513],{"class":366},[356,1706,517],{"class":516},[356,1708,520],{"class":366},[356,1710,523],{"class":400},[356,1712,408],{"class":366},[356,1714,1715,1717,1719,1721,1723,1725,1728,1730,1732,1734],{"class":358,"line":443},[356,1716,531],{"class":400},[356,1718,534],{"class":370},[356,1720,537],{"class":366},[356,1722,371],{"class":503},[356,1724,542],{"class":366},[356,1726,1727],{"class":404},"AuthFields",[356,1729,548],{"class":366},[356,1731,507],{"class":414},[356,1733,517],{"class":370},[356,1735,555],{"class":414},[356,1737,1738],{"class":358,"line":472},[356,1739,1740],{"class":620},"  \u002F\u002F ...\n",[356,1742,1743,1745],{"class":358,"line":483},[356,1744,805],{"class":366},[356,1746,555],{"class":370},[1456,1748,1750],{"id":1749},"keep-interfaces-focused","Keep Interfaces Focused",[314,1752,1753],{},"Include only the fields your routes actually set. The interface doesn't need to mirror your entire data model:",[346,1755,1758],{"className":348,"code":1756,"filename":1757,"language":351,"meta":352,"style":352},"\u002F\u002F Too broad - most routes won't set all these\ninterface EverythingFields {\n  user: FullUserProfile\n  order: CompleteOrder\n  payment: PaymentDetails\n  shipping: ShippingInfo\n}\n\n\u002F\u002F Focused - only what this route sets\ninterface CheckoutFields {\n  user: { id: string; plan: string }\n  cart: { items: number; total: number }\n}\n","server\u002Ftypes\u002Fevlog.ts",[318,1759,1760,1765,1774,1783,1792,1801,1811,1815,1819,1824,1832,1856,1880],{"__ignoreMap":352},[356,1761,1762],{"class":358,"line":359},[356,1763,1764],{"class":620},"\u002F\u002F Too broad - most routes won't set all these\n",[356,1766,1767,1769,1772],{"class":358,"line":390},[356,1768,401],{"class":400},[356,1770,1771],{"class":404}," EverythingFields",[356,1773,408],{"class":366},[356,1775,1776,1778,1780],{"class":358,"line":397},[356,1777,415],{"class":414},[356,1779,344],{"class":366},[356,1781,1782],{"class":404}," FullUserProfile\n",[356,1784,1785,1787,1789],{"class":358,"line":411},[356,1786,1580],{"class":414},[356,1788,344],{"class":366},[356,1790,1791],{"class":404}," CompleteOrder\n",[356,1793,1794,1796,1798],{"class":358,"line":443},[356,1795,1614],{"class":414},[356,1797,344],{"class":366},[356,1799,1800],{"class":404}," PaymentDetails\n",[356,1802,1803,1806,1808],{"class":358,"line":472},[356,1804,1805],{"class":414},"  shipping",[356,1807,344],{"class":366},[356,1809,1810],{"class":404}," ShippingInfo\n",[356,1812,1813],{"class":358,"line":483},[356,1814,486],{"class":366},[356,1816,1817],{"class":358,"line":489},[356,1818,394],{"emptyLinePlaceholder":393},[356,1820,1821],{"class":358,"line":494},[356,1822,1823],{"class":620},"\u002F\u002F Focused - only what this route sets\n",[356,1825,1826,1828,1830],{"class":358,"line":528},[356,1827,401],{"class":400},[356,1829,405],{"class":404},[356,1831,408],{"class":366},[356,1833,1834,1836,1838,1840,1842,1844,1846,1848,1850,1852,1854],{"class":358,"line":558},[356,1835,415],{"class":414},[356,1837,344],{"class":366},[356,1839,367],{"class":366},[356,1841,422],{"class":414},[356,1843,344],{"class":366},[356,1845,427],{"class":404},[356,1847,430],{"class":366},[356,1849,433],{"class":414},[356,1851,344],{"class":366},[356,1853,427],{"class":404},[356,1855,440],{"class":366},[356,1857,1858,1860,1862,1864,1866,1868,1870,1872,1874,1876,1878],{"class":358,"line":563},[356,1859,446],{"class":414},[356,1861,344],{"class":366},[356,1863,367],{"class":366},[356,1865,453],{"class":414},[356,1867,344],{"class":366},[356,1869,458],{"class":404},[356,1871,430],{"class":366},[356,1873,463],{"class":414},[356,1875,344],{"class":366},[356,1877,458],{"class":404},[356,1879,440],{"class":366},[356,1881,1882],{"class":358,"line":624},[356,1883,486],{"class":366},[335,1885,1887],{"id":1886},"next-steps","Next Steps",[1889,1890,1891,1898,1903],"ul",{},[1892,1893,1894,1897],"li",{},[1895,1896,51],"a",{"href":52},": Design effective wide events with context layering",[1892,1899,1900,1902],{},[1895,1901,106],{"href":107},": Security guidelines for preventing sensitive data leakage",[1892,1904,1905,1907,1908,1911],{},[1895,1906,91],{"href":92},": All ",[318,1909,1910],{},"initLogger"," and middleware options",[1913,1914,1915],"style",{},"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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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);}",{"title":352,"searchDepth":390,"depth":390,"links":1917},[1918,1919,1920,1921,1922,1923,1927],{"id":337,"depth":390,"text":338},{"id":813,"depth":390,"text":814},{"id":905,"depth":390,"text":906},{"id":988,"depth":390,"text":989},{"id":1143,"depth":390,"text":1144},{"id":1453,"depth":390,"text":1454,"children":1924},[1925,1926],{"id":1458,"depth":397,"text":1459},{"id":1749,"depth":397,"text":1750},{"id":1886,"depth":390,"text":1887},"Add compile-time type safety to your wide events with TypeScript module augmentation. Prevent typos and ensure consistent field names across your codebase.","md",[1931,1934],{"label":51,"icon":54,"to":52,"color":1932,"variant":1933},"neutral","subtle",{"label":106,"icon":79,"to":107,"color":1932,"variant":1933},{},{"icon":104},{"title":101,"description":1928},"CFWf0mu6NnRmJOaGDaTtswyeqRA-BoEIeXq6zo0m5J8",[1940,1942],{"title":96,"path":97,"stem":98,"description":1941,"icon":99,"children":-1},"Control log volume with two-tier sampling. Head sampling drops noise by level, tail sampling rescues critical events based on outcome. Never miss errors, slow requests, or critical paths.",{"title":106,"path":107,"stem":108,"description":1943,"icon":79,"children":-1},"Security guidelines, data sanitization, and production tips for evlog. Learn what not to log and how to protect sensitive data.",1777667167360]