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