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