[{"data":1,"prerenderedAt":2027},["ShallowReactive",2],{"navigation_docs":3,"-core-concepts-typed-fields":388,"-core-concepts-typed-fields-surround":2022},[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":2011,"extension":2012,"links":2013,"meta":2018,"navigation":2019,"path":177,"seo":2020,"stem":178,"__hash__":2021},"docs\u002F3.core-concepts\u002F3.typed-fields.md",{"type":391,"value":392,"toc":1999},"minimark",[393,414,417,422,428,891,894,898,913,977,986,990,996,1066,1069,1073,1088,1221,1224,1228,1238,1534,1538,1543,1546,1724,1830,1834,1837,1967,1971,1995],[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],"typed-fields-intellisense",{},[418,419,421],"h2",{"id":420},"basic-usage","Basic Usage",[394,423,424,425,427],{},"Define an interface for your fields and pass it as a generic to ",[398,426,400],{},":",[429,430,436],"pre",{"className":431,"code":432,"filename":433,"language":434,"meta":435,"style":435},"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,437,438,471,478,492,524,553,564,570,575,609,639,644,705,751,783,788,821,859,864,883],{"__ignoreMap":435},[439,440,443,447,451,455,458,461,464,468],"span",{"class":441,"line":442},"line",1,[439,444,446],{"class":445},"s7zQu","import",[439,448,450],{"class":449},"sMK4o"," {",[439,452,454],{"class":453},"sTEyZ"," useLogger",[439,456,457],{"class":449}," }",[439,459,460],{"class":445}," from",[439,462,463],{"class":449}," '",[439,465,467],{"class":466},"sfazB","evlog",[439,469,470],{"class":449},"'\n",[439,472,474],{"class":441,"line":473},2,[439,475,477],{"emptyLinePlaceholder":476},true,"\n",[439,479,481,485,489],{"class":441,"line":480},3,[439,482,484],{"class":483},"spNyl","interface",[439,486,488],{"class":487},"sBMFI"," CheckoutFields",[439,490,491],{"class":449}," {\n",[439,493,495,499,501,503,506,508,511,514,517,519,521],{"class":441,"line":494},4,[439,496,498],{"class":497},"swJcz","  user",[439,500,427],{"class":449},[439,502,450],{"class":449},[439,504,505],{"class":497}," id",[439,507,427],{"class":449},[439,509,510],{"class":487}," string",[439,512,513],{"class":449},";",[439,515,516],{"class":497}," plan",[439,518,427],{"class":449},[439,520,510],{"class":487},[439,522,523],{"class":449}," }\n",[439,525,527,530,532,534,537,539,542,544,547,549,551],{"class":441,"line":526},5,[439,528,529],{"class":497},"  cart",[439,531,427],{"class":449},[439,533,450],{"class":449},[439,535,536],{"class":497}," items",[439,538,427],{"class":449},[439,540,541],{"class":487}," number",[439,543,513],{"class":449},[439,545,546],{"class":497}," total",[439,548,427],{"class":449},[439,550,541],{"class":487},[439,552,523],{"class":449},[439,554,556,559,561],{"class":441,"line":555},6,[439,557,558],{"class":497},"  action",[439,560,427],{"class":449},[439,562,563],{"class":487}," string\n",[439,565,567],{"class":441,"line":566},7,[439,568,569],{"class":449},"}\n",[439,571,573],{"class":441,"line":572},8,[439,574,477],{"emptyLinePlaceholder":476},[439,576,578,581,584,588,591,594,597,601,604,607],{"class":441,"line":577},9,[439,579,580],{"class":445},"export",[439,582,583],{"class":445}," default",[439,585,587],{"class":586},"s2Zo4"," defineEventHandler",[439,589,590],{"class":453},"(",[439,592,593],{"class":483},"async",[439,595,596],{"class":449}," (",[439,598,600],{"class":599},"sHdIc","event",[439,602,603],{"class":449},")",[439,605,606],{"class":483}," =>",[439,608,491],{"class":449},[439,610,612,615,618,621,623,626,629,632,634,636],{"class":441,"line":611},10,[439,613,614],{"class":483},"  const",[439,616,617],{"class":453}," log",[439,619,620],{"class":449}," =",[439,622,454],{"class":586},[439,624,625],{"class":449},"\u003C",[439,627,628],{"class":487},"CheckoutFields",[439,630,631],{"class":449},">",[439,633,590],{"class":497},[439,635,600],{"class":453},[439,637,638],{"class":497},")\n",[439,640,642],{"class":441,"line":641},11,[439,643,477],{"emptyLinePlaceholder":476},[439,645,647,650,653,656,658,661,664,666,668,670,672,674,677,680,683,685,687,689,692,694,696,698,701],{"class":441,"line":646},12,[439,648,649],{"class":453},"  log",[439,651,652],{"class":449},".",[439,654,655],{"class":586},"set",[439,657,590],{"class":497},[439,659,660],{"class":449},"{",[439,662,663],{"class":497}," user",[439,665,427],{"class":449},[439,667,450],{"class":449},[439,669,505],{"class":497},[439,671,427],{"class":449},[439,673,463],{"class":449},[439,675,676],{"class":466},"123",[439,678,679],{"class":449},"'",[439,681,682],{"class":449},",",[439,684,516],{"class":497},[439,686,427],{"class":449},[439,688,463],{"class":449},[439,690,691],{"class":466},"pro",[439,693,679],{"class":449},[439,695,457],{"class":449},[439,697,457],{"class":449},[439,699,700],{"class":497},")  ",[439,702,704],{"class":703},"sHwdD","\u002F\u002F OK\n",[439,706,708,710,712,714,716,718,721,723,725,727,729,733,735,737,739,742,744,746,749],{"class":441,"line":707},13,[439,709,649],{"class":453},[439,711,652],{"class":449},[439,713,655],{"class":586},[439,715,590],{"class":497},[439,717,660],{"class":449},[439,719,720],{"class":497}," cart",[439,722,427],{"class":449},[439,724,450],{"class":449},[439,726,536],{"class":497},[439,728,427],{"class":449},[439,730,732],{"class":731},"sbssI"," 3",[439,734,682],{"class":449},[439,736,546],{"class":497},[439,738,427],{"class":449},[439,740,741],{"class":731}," 9999",[439,743,457],{"class":449},[439,745,457],{"class":449},[439,747,748],{"class":497},")    ",[439,750,704],{"class":703},[439,752,754,756,758,760,762,764,767,769,771,774,776,778,781],{"class":441,"line":753},14,[439,755,649],{"class":453},[439,757,652],{"class":449},[439,759,655],{"class":586},[439,761,590],{"class":497},[439,763,660],{"class":449},[439,765,766],{"class":497}," action",[439,768,427],{"class":449},[439,770,463],{"class":449},[439,772,773],{"class":466},"checkout",[439,775,679],{"class":449},[439,777,457],{"class":449},[439,779,780],{"class":497},")                  ",[439,782,704],{"class":703},[439,784,786],{"class":441,"line":785},15,[439,787,477],{"emptyLinePlaceholder":476},[439,789,791,793,795,797,799,801,804,806,808,811,813,815,818],{"class":441,"line":790},16,[439,792,649],{"class":453},[439,794,652],{"class":449},[439,796,655],{"class":586},[439,798,590],{"class":497},[439,800,660],{"class":449},[439,802,803],{"class":497}," account",[439,805,427],{"class":449},[439,807,463],{"class":449},[439,809,810],{"class":466},"...",[439,812,679],{"class":449},[439,814,457],{"class":449},[439,816,817],{"class":497},")                      ",[439,819,820],{"class":703},"\u002F\u002F TS error\n",[439,822,824,826,828,830,832,834,837,839,841,843,845,847,849,851,853,855,857],{"class":441,"line":823},17,[439,825,649],{"class":453},[439,827,652],{"class":449},[439,829,655],{"class":586},[439,831,590],{"class":497},[439,833,660],{"class":449},[439,835,836],{"class":497}," usr",[439,838,427],{"class":449},[439,840,450],{"class":449},[439,842,505],{"class":497},[439,844,427],{"class":449},[439,846,463],{"class":449},[439,848,676],{"class":466},[439,850,679],{"class":449},[439,852,457],{"class":449},[439,854,457],{"class":449},[439,856,780],{"class":497},[439,858,820],{"class":703},[439,860,862],{"class":441,"line":861},18,[439,863,477],{"emptyLinePlaceholder":476},[439,865,867,870,872,875,877,881],{"class":441,"line":866},19,[439,868,869],{"class":445},"  return",[439,871,450],{"class":449},[439,873,874],{"class":497}," success",[439,876,427],{"class":449},[439,878,880],{"class":879},"sfNiH"," true",[439,882,523],{"class":449},[439,884,886,889],{"class":441,"line":885},20,[439,887,888],{"class":449},"}",[439,890,638],{"class":453},[394,892,893],{},"TypeScript catches typos and unknown fields at compile time, before they reach production.",[418,895,897],{"id":896},"internal-fields","Internal Fields",[394,899,900,901,904,905,908,909,912],{},"evlog sets some fields internally (",[398,902,903],{},"status",", ",[398,906,907],{},"service","). These are always accepted regardless of your type, through the ",[398,910,911],{},"InternalFields"," type:",[429,914,916],{"className":431,"code":915,"filename":433,"language":434,"meta":435,"style":435},"log.set({ status: 200 })    \u002F\u002F OK - internal field\nlog.set({ service: 'api' }) \u002F\u002F OK - internal field\n",[398,917,918,946],{"__ignoreMap":435},[439,919,920,923,925,927,929,931,934,936,939,941,943],{"class":441,"line":442},[439,921,922],{"class":453},"log",[439,924,652],{"class":449},[439,926,655],{"class":586},[439,928,590],{"class":453},[439,930,660],{"class":449},[439,932,933],{"class":497}," status",[439,935,427],{"class":449},[439,937,938],{"class":731}," 200",[439,940,457],{"class":449},[439,942,748],{"class":453},[439,944,945],{"class":703},"\u002F\u002F OK - internal field\n",[439,947,948,950,952,954,956,958,961,963,965,968,970,972,975],{"class":441,"line":473},[439,949,922],{"class":453},[439,951,652],{"class":449},[439,953,655],{"class":586},[439,955,590],{"class":453},[439,957,660],{"class":449},[439,959,960],{"class":497}," service",[439,962,427],{"class":449},[439,964,463],{"class":449},[439,966,967],{"class":466},"api",[439,969,679],{"class":449},[439,971,457],{"class":449},[439,973,974],{"class":453},") ",[439,976,945],{"class":703},[394,978,979,980,982,983,985],{},"You don't need to include ",[398,981,903],{}," or ",[398,984,907],{}," in your interface.",[418,987,989],{"id":988},"untyped-usage","Untyped Usage",[394,991,992,993,995],{},"Without a generic, ",[398,994,400],{}," accepts any fields as usual:",[429,997,1000],{"className":431,"code":998,"filename":999,"language":434,"meta":435,"style":435},"const log = useLogger(event)\nlog.set({ anything: true, nested: { deep: 'value' } }) \u002F\u002F OK\n","server\u002Fapi\u002Fexample.ts",[398,1001,1002,1018],{"__ignoreMap":435},[439,1003,1004,1007,1010,1013,1015],{"class":441,"line":442},[439,1005,1006],{"class":483},"const",[439,1008,1009],{"class":453}," log ",[439,1011,1012],{"class":449},"=",[439,1014,454],{"class":586},[439,1016,1017],{"class":453},"(event)\n",[439,1019,1020,1022,1024,1026,1028,1030,1033,1035,1037,1039,1042,1044,1046,1049,1051,1053,1056,1058,1060,1062,1064],{"class":441,"line":473},[439,1021,922],{"class":453},[439,1023,652],{"class":449},[439,1025,655],{"class":586},[439,1027,590],{"class":453},[439,1029,660],{"class":449},[439,1031,1032],{"class":497}," anything",[439,1034,427],{"class":449},[439,1036,880],{"class":879},[439,1038,682],{"class":449},[439,1040,1041],{"class":497}," nested",[439,1043,427],{"class":449},[439,1045,450],{"class":449},[439,1047,1048],{"class":497}," deep",[439,1050,427],{"class":449},[439,1052,463],{"class":449},[439,1054,1055],{"class":466},"value",[439,1057,679],{"class":449},[439,1059,457],{"class":449},[439,1061,457],{"class":449},[439,1063,974],{"class":453},[439,1065,704],{"class":703},[394,1067,1068],{},"Typed fields are fully opt-in.",[418,1070,1072],{"id":1071},"nuxt-auto-import","Nuxt Auto-Import",[1074,1075,1078,1079,1082,1083,1087],"callout",{"color":1076,"icon":1077},"warning","i-lucide-triangle-alert","When using typed fields with ",[398,1080,1081],{},"useLogger\u003CT>",", you ",[1084,1085,1086],"strong",{},"must"," use an explicit import. The Nuxt auto-import does not support excess property checking for generics due to a TypeScript limitation.",[429,1089,1091],{"className":431,"code":1090,"filename":433,"language":434,"meta":435,"style":435},"\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,1092,1093,1098,1116,1135,1165,1169,1174,1192],{"__ignoreMap":435},[439,1094,1095],{"class":441,"line":442},[439,1096,1097],{"class":703},"\u002F\u002F Works - explicit import preserves type checking\n",[439,1099,1100,1102,1104,1106,1108,1110,1112,1114],{"class":441,"line":473},[439,1101,446],{"class":445},[439,1103,450],{"class":449},[439,1105,454],{"class":453},[439,1107,457],{"class":449},[439,1109,460],{"class":445},[439,1111,463],{"class":449},[439,1113,467],{"class":466},[439,1115,470],{"class":449},[439,1117,1118,1120,1122,1124,1126,1128,1131,1133],{"class":441,"line":480},[439,1119,1006],{"class":483},[439,1121,1009],{"class":453},[439,1123,1012],{"class":449},[439,1125,454],{"class":586},[439,1127,625],{"class":449},[439,1129,1130],{"class":487},"MyFields",[439,1132,631],{"class":449},[439,1134,1017],{"class":453},[439,1136,1137,1139,1141,1143,1145,1147,1150,1152,1154,1157,1159,1161,1163],{"class":441,"line":494},[439,1138,922],{"class":453},[439,1140,652],{"class":449},[439,1142,655],{"class":586},[439,1144,590],{"class":453},[439,1146,660],{"class":449},[439,1148,1149],{"class":497}," typo",[439,1151,427],{"class":449},[439,1153,463],{"class":449},[439,1155,1156],{"class":466},"oops",[439,1158,679],{"class":449},[439,1160,457],{"class":449},[439,1162,974],{"class":453},[439,1164,820],{"class":703},[439,1166,1167],{"class":441,"line":526},[439,1168,477],{"emptyLinePlaceholder":476},[439,1170,1171],{"class":441,"line":555},[439,1172,1173],{"class":703},"\u002F\u002F Does NOT work - auto-import loses excess property checking\n",[439,1175,1176,1178,1180,1182,1184,1186,1188,1190],{"class":441,"line":566},[439,1177,1006],{"class":483},[439,1179,1009],{"class":453},[439,1181,1012],{"class":449},[439,1183,454],{"class":586},[439,1185,625],{"class":449},[439,1187,1130],{"class":487},[439,1189,631],{"class":449},[439,1191,1017],{"class":453},[439,1193,1194,1196,1198,1200,1202,1204,1206,1208,1210,1212,1214,1216,1218],{"class":441,"line":572},[439,1195,922],{"class":453},[439,1197,652],{"class":449},[439,1199,655],{"class":586},[439,1201,590],{"class":453},[439,1203,660],{"class":449},[439,1205,1149],{"class":497},[439,1207,427],{"class":449},[439,1209,463],{"class":449},[439,1211,1156],{"class":466},[439,1213,679],{"class":449},[439,1215,457],{"class":449},[439,1217,974],{"class":453},[439,1219,1220],{"class":703},"\u002F\u002F No error (silently accepted)\n",[394,1222,1223],{},"The auto-import works perfectly for untyped usage. Only add the explicit import when you need typed fields.",[418,1225,1227],{"id":1226},"outside-nuxt","Outside Nuxt",[394,1229,1230,1231,1234,1235,427],{},"The same generic works with ",[398,1232,1233],{},"createRequestLogger"," and ",[398,1236,1237],{},"createWorkersLogger",[1239,1240,1241,1433],"code-group",{},[429,1242,1244],{"className":431,"code":1243,"filename":267,"language":434,"meta":435,"style":435},"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,1245,1246,1265,1269,1278,1286,1295,1299,1303,1324,1341,1357,1363,1367,1408],{"__ignoreMap":435},[439,1247,1248,1250,1252,1255,1257,1259,1261,1263],{"class":441,"line":442},[439,1249,446],{"class":445},[439,1251,450],{"class":449},[439,1253,1254],{"class":453}," createRequestLogger",[439,1256,457],{"class":449},[439,1258,460],{"class":445},[439,1260,463],{"class":449},[439,1262,467],{"class":466},[439,1264,470],{"class":449},[439,1266,1267],{"class":441,"line":473},[439,1268,477],{"emptyLinePlaceholder":476},[439,1270,1271,1273,1276],{"class":441,"line":480},[439,1272,484],{"class":483},[439,1274,1275],{"class":487}," MyFields",[439,1277,491],{"class":449},[439,1279,1280,1282,1284],{"class":441,"line":494},[439,1281,558],{"class":497},[439,1283,427],{"class":449},[439,1285,563],{"class":487},[439,1287,1288,1291,1293],{"class":441,"line":526},[439,1289,1290],{"class":497},"  userId",[439,1292,427],{"class":449},[439,1294,563],{"class":487},[439,1296,1297],{"class":441,"line":555},[439,1298,569],{"class":449},[439,1300,1301],{"class":441,"line":566},[439,1302,477],{"emptyLinePlaceholder":476},[439,1304,1305,1307,1309,1311,1313,1315,1317,1319,1321],{"class":441,"line":572},[439,1306,1006],{"class":483},[439,1308,1009],{"class":453},[439,1310,1012],{"class":449},[439,1312,1254],{"class":586},[439,1314,625],{"class":449},[439,1316,1130],{"class":487},[439,1318,631],{"class":449},[439,1320,590],{"class":453},[439,1322,1323],{"class":449},"{\n",[439,1325,1326,1329,1331,1333,1336,1338],{"class":441,"line":577},[439,1327,1328],{"class":497},"  method",[439,1330,427],{"class":449},[439,1332,463],{"class":449},[439,1334,1335],{"class":466},"POST",[439,1337,679],{"class":449},[439,1339,1340],{"class":449},",\n",[439,1342,1343,1346,1348,1350,1353,1355],{"class":441,"line":611},[439,1344,1345],{"class":497},"  path",[439,1347,427],{"class":449},[439,1349,463],{"class":449},[439,1351,1352],{"class":466},"\u002Fcheckout",[439,1354,679],{"class":449},[439,1356,1340],{"class":449},[439,1358,1359,1361],{"class":441,"line":641},[439,1360,888],{"class":449},[439,1362,638],{"class":453},[439,1364,1365],{"class":441,"line":646},[439,1366,477],{"emptyLinePlaceholder":476},[439,1368,1369,1371,1373,1375,1377,1379,1381,1383,1385,1387,1389,1391,1394,1396,1398,1400,1402,1404,1406],{"class":441,"line":707},[439,1370,922],{"class":453},[439,1372,652],{"class":449},[439,1374,655],{"class":586},[439,1376,590],{"class":453},[439,1378,660],{"class":449},[439,1380,766],{"class":497},[439,1382,427],{"class":449},[439,1384,463],{"class":449},[439,1386,773],{"class":466},[439,1388,679],{"class":449},[439,1390,682],{"class":449},[439,1392,1393],{"class":497}," userId",[439,1395,427],{"class":449},[439,1397,463],{"class":449},[439,1399,676],{"class":466},[439,1401,679],{"class":449},[439,1403,457],{"class":449},[439,1405,974],{"class":453},[439,1407,704],{"class":703},[439,1409,1410,1412,1414,1416,1418,1420,1423,1425,1427,1429,1431],{"class":441,"line":753},[439,1411,922],{"class":453},[439,1413,652],{"class":449},[439,1415,655],{"class":586},[439,1417,590],{"class":453},[439,1419,660],{"class":449},[439,1421,1422],{"class":497}," unknown",[439,1424,427],{"class":449},[439,1426,880],{"class":879},[439,1428,457],{"class":449},[439,1430,817],{"class":453},[439,1432,820],{"class":703},[429,1434,1436],{"className":431,"code":1435,"filename":262,"language":434,"meta":435,"style":435},"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,1437,1438,1458,1462,1470,1478,1482,1486,1505],{"__ignoreMap":435},[439,1439,1440,1442,1444,1447,1449,1451,1453,1456],{"class":441,"line":442},[439,1441,446],{"class":445},[439,1443,450],{"class":449},[439,1445,1446],{"class":453}," createWorkersLogger",[439,1448,457],{"class":449},[439,1450,460],{"class":445},[439,1452,463],{"class":449},[439,1454,1455],{"class":466},"evlog\u002Fworkers",[439,1457,470],{"class":449},[439,1459,1460],{"class":441,"line":473},[439,1461,477],{"emptyLinePlaceholder":476},[439,1463,1464,1466,1468],{"class":441,"line":480},[439,1465,484],{"class":483},[439,1467,1275],{"class":487},[439,1469,491],{"class":449},[439,1471,1472,1474,1476],{"class":441,"line":494},[439,1473,558],{"class":497},[439,1475,427],{"class":449},[439,1477,563],{"class":487},[439,1479,1480],{"class":441,"line":526},[439,1481,569],{"class":449},[439,1483,1484],{"class":441,"line":555},[439,1485,477],{"emptyLinePlaceholder":476},[439,1487,1488,1490,1492,1494,1496,1498,1500,1502],{"class":441,"line":566},[439,1489,1006],{"class":483},[439,1491,1009],{"class":453},[439,1493,1012],{"class":449},[439,1495,1446],{"class":586},[439,1497,625],{"class":449},[439,1499,1130],{"class":487},[439,1501,631],{"class":449},[439,1503,1504],{"class":453},"(request)\n",[439,1506,1507,1509,1511,1513,1515,1517,1519,1521,1523,1526,1528,1530,1532],{"class":441,"line":572},[439,1508,922],{"class":453},[439,1510,652],{"class":449},[439,1512,655],{"class":586},[439,1514,590],{"class":453},[439,1516,660],{"class":449},[439,1518,766],{"class":497},[439,1520,427],{"class":449},[439,1522,463],{"class":449},[439,1524,1525],{"class":466},"process",[439,1527,679],{"class":449},[439,1529,457],{"class":449},[439,1531,974],{"class":453},[439,1533,704],{"class":703},[418,1535,1537],{"id":1536},"design-tips","Design Tips",[1539,1540,1542],"h3",{"id":1541},"one-interface-per-domain","One Interface Per Domain",[394,1544,1545],{},"Define field interfaces per domain area, not per route:",[429,1547,1550],{"className":431,"code":1548,"filename":1549,"language":434,"meta":435,"style":435},"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,1551,1552,1564,1598,1606,1616,1620,1624,1635,1659,1693,1720],{"__ignoreMap":435},[439,1553,1554,1556,1559,1562],{"class":441,"line":442},[439,1555,580],{"class":445},[439,1557,1558],{"class":483}," interface",[439,1560,1561],{"class":487}," AuthFields",[439,1563,491],{"class":449},[439,1565,1566,1568,1570,1572,1574,1576,1578,1580,1583,1585,1587,1589,1592,1594,1596],{"class":441,"line":473},[439,1567,498],{"class":497},[439,1569,427],{"class":449},[439,1571,450],{"class":449},[439,1573,505],{"class":497},[439,1575,427],{"class":449},[439,1577,510],{"class":487},[439,1579,513],{"class":449},[439,1581,1582],{"class":497}," email",[439,1584,427],{"class":449},[439,1586,510],{"class":487},[439,1588,513],{"class":449},[439,1590,1591],{"class":497}," role",[439,1593,427],{"class":449},[439,1595,510],{"class":487},[439,1597,523],{"class":449},[439,1599,1600,1602,1604],{"class":441,"line":480},[439,1601,558],{"class":497},[439,1603,427],{"class":449},[439,1605,563],{"class":487},[439,1607,1608,1611,1613],{"class":441,"line":494},[439,1609,1610],{"class":497},"  mfaUsed",[439,1612,427],{"class":449},[439,1614,1615],{"class":487}," boolean\n",[439,1617,1618],{"class":441,"line":526},[439,1619,569],{"class":449},[439,1621,1622],{"class":441,"line":555},[439,1623,477],{"emptyLinePlaceholder":476},[439,1625,1626,1628,1630,1633],{"class":441,"line":566},[439,1627,580],{"class":445},[439,1629,1558],{"class":483},[439,1631,1632],{"class":487}," PaymentFields",[439,1634,491],{"class":449},[439,1636,1637,1639,1641,1643,1645,1647,1649,1651,1653,1655,1657],{"class":441,"line":572},[439,1638,498],{"class":497},[439,1640,427],{"class":449},[439,1642,450],{"class":449},[439,1644,505],{"class":497},[439,1646,427],{"class":449},[439,1648,510],{"class":487},[439,1650,513],{"class":449},[439,1652,516],{"class":497},[439,1654,427],{"class":449},[439,1656,510],{"class":487},[439,1658,523],{"class":449},[439,1660,1661,1664,1666,1668,1670,1672,1674,1676,1678,1680,1682,1684,1687,1689,1691],{"class":441,"line":577},[439,1662,1663],{"class":497},"  order",[439,1665,427],{"class":449},[439,1667,450],{"class":449},[439,1669,505],{"class":497},[439,1671,427],{"class":449},[439,1673,510],{"class":487},[439,1675,513],{"class":449},[439,1677,546],{"class":497},[439,1679,427],{"class":449},[439,1681,541],{"class":487},[439,1683,513],{"class":449},[439,1685,1686],{"class":497}," currency",[439,1688,427],{"class":449},[439,1690,510],{"class":487},[439,1692,523],{"class":449},[439,1694,1695,1698,1700,1702,1705,1707,1709,1711,1714,1716,1718],{"class":441,"line":611},[439,1696,1697],{"class":497},"  payment",[439,1699,427],{"class":449},[439,1701,450],{"class":449},[439,1703,1704],{"class":497}," method",[439,1706,427],{"class":449},[439,1708,510],{"class":487},[439,1710,513],{"class":449},[439,1712,1713],{"class":497}," last4",[439,1715,427],{"class":449},[439,1717,510],{"class":487},[439,1719,523],{"class":449},[439,1721,1722],{"class":441,"line":641},[439,1723,569],{"class":449},[429,1725,1728],{"className":431,"code":1726,"filename":1727,"language":434,"meta":435,"style":435},"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,1729,1730,1748,1770,1774,1796,1819,1824],{"__ignoreMap":435},[439,1731,1732,1734,1736,1738,1740,1742,1744,1746],{"class":441,"line":442},[439,1733,446],{"class":445},[439,1735,450],{"class":449},[439,1737,454],{"class":453},[439,1739,457],{"class":449},[439,1741,460],{"class":445},[439,1743,463],{"class":449},[439,1745,467],{"class":466},[439,1747,470],{"class":449},[439,1749,1750,1752,1755,1757,1759,1761,1763,1765,1768],{"class":441,"line":473},[439,1751,446],{"class":445},[439,1753,1754],{"class":445}," type",[439,1756,450],{"class":449},[439,1758,1561],{"class":453},[439,1760,457],{"class":449},[439,1762,460],{"class":445},[439,1764,463],{"class":449},[439,1766,1767],{"class":466},"~\u002Fserver\u002Ftypes\u002Flog-fields",[439,1769,470],{"class":449},[439,1771,1772],{"class":441,"line":480},[439,1773,477],{"emptyLinePlaceholder":476},[439,1775,1776,1778,1780,1782,1784,1786,1788,1790,1792,1794],{"class":441,"line":494},[439,1777,580],{"class":445},[439,1779,583],{"class":445},[439,1781,587],{"class":586},[439,1783,590],{"class":453},[439,1785,593],{"class":483},[439,1787,596],{"class":449},[439,1789,600],{"class":599},[439,1791,603],{"class":449},[439,1793,606],{"class":483},[439,1795,491],{"class":449},[439,1797,1798,1800,1802,1804,1806,1808,1811,1813,1815,1817],{"class":441,"line":526},[439,1799,614],{"class":483},[439,1801,617],{"class":453},[439,1803,620],{"class":449},[439,1805,454],{"class":586},[439,1807,625],{"class":449},[439,1809,1810],{"class":487},"AuthFields",[439,1812,631],{"class":449},[439,1814,590],{"class":497},[439,1816,600],{"class":453},[439,1818,638],{"class":497},[439,1820,1821],{"class":441,"line":555},[439,1822,1823],{"class":703},"  \u002F\u002F ...\n",[439,1825,1826,1828],{"class":441,"line":566},[439,1827,888],{"class":449},[439,1829,638],{"class":453},[1539,1831,1833],{"id":1832},"keep-interfaces-focused","Keep Interfaces Focused",[394,1835,1836],{},"Include only the fields your routes actually set. The interface doesn't need to mirror your entire data model:",[429,1838,1841],{"className":431,"code":1839,"filename":1840,"language":434,"meta":435,"style":435},"\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,1842,1843,1848,1857,1866,1875,1884,1894,1898,1902,1907,1915,1939,1963],{"__ignoreMap":435},[439,1844,1845],{"class":441,"line":442},[439,1846,1847],{"class":703},"\u002F\u002F Too broad - most routes won't set all these\n",[439,1849,1850,1852,1855],{"class":441,"line":473},[439,1851,484],{"class":483},[439,1853,1854],{"class":487}," EverythingFields",[439,1856,491],{"class":449},[439,1858,1859,1861,1863],{"class":441,"line":480},[439,1860,498],{"class":497},[439,1862,427],{"class":449},[439,1864,1865],{"class":487}," FullUserProfile\n",[439,1867,1868,1870,1872],{"class":441,"line":494},[439,1869,1663],{"class":497},[439,1871,427],{"class":449},[439,1873,1874],{"class":487}," CompleteOrder\n",[439,1876,1877,1879,1881],{"class":441,"line":526},[439,1878,1697],{"class":497},[439,1880,427],{"class":449},[439,1882,1883],{"class":487}," PaymentDetails\n",[439,1885,1886,1889,1891],{"class":441,"line":555},[439,1887,1888],{"class":497},"  shipping",[439,1890,427],{"class":449},[439,1892,1893],{"class":487}," ShippingInfo\n",[439,1895,1896],{"class":441,"line":566},[439,1897,569],{"class":449},[439,1899,1900],{"class":441,"line":572},[439,1901,477],{"emptyLinePlaceholder":476},[439,1903,1904],{"class":441,"line":577},[439,1905,1906],{"class":703},"\u002F\u002F Focused - only what this route sets\n",[439,1908,1909,1911,1913],{"class":441,"line":611},[439,1910,484],{"class":483},[439,1912,488],{"class":487},[439,1914,491],{"class":449},[439,1916,1917,1919,1921,1923,1925,1927,1929,1931,1933,1935,1937],{"class":441,"line":641},[439,1918,498],{"class":497},[439,1920,427],{"class":449},[439,1922,450],{"class":449},[439,1924,505],{"class":497},[439,1926,427],{"class":449},[439,1928,510],{"class":487},[439,1930,513],{"class":449},[439,1932,516],{"class":497},[439,1934,427],{"class":449},[439,1936,510],{"class":487},[439,1938,523],{"class":449},[439,1940,1941,1943,1945,1947,1949,1951,1953,1955,1957,1959,1961],{"class":441,"line":646},[439,1942,529],{"class":497},[439,1944,427],{"class":449},[439,1946,450],{"class":449},[439,1948,536],{"class":497},[439,1950,427],{"class":449},[439,1952,541],{"class":487},[439,1954,513],{"class":449},[439,1956,546],{"class":497},[439,1958,427],{"class":449},[439,1960,541],{"class":487},[439,1962,523],{"class":449},[439,1964,1965],{"class":441,"line":707},[439,1966,569],{"class":449},[418,1968,1970],{"id":1969},"next-steps","Next Steps",[1972,1973,1974,1981,1986],"ul",{},[1975,1976,1977,1980],"li",{},[1978,1979,51],"a",{"href":52},": Design effective wide events with context layering",[1975,1982,1983,1985],{},[1978,1984,181],{"href":182},": Security guidelines for preventing sensitive data leakage",[1975,1987,1988,1990,1991,1994],{},[1978,1989,166],{"href":167},": All ",[398,1992,1993],{},"initLogger"," and middleware options",[1996,1997,1998],"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":435,"searchDepth":473,"depth":473,"links":2000},[2001,2002,2003,2004,2005,2006,2010],{"id":420,"depth":473,"text":421},{"id":896,"depth":473,"text":897},{"id":988,"depth":473,"text":989},{"id":1071,"depth":473,"text":1072},{"id":1226,"depth":473,"text":1227},{"id":1536,"depth":473,"text":1537,"children":2007},[2008,2009],{"id":1541,"depth":480,"text":1542},{"id":1832,"depth":480,"text":1833},{"id":1969,"depth":473,"text":1970},"Add compile-time type safety to your wide events with TypeScript module augmentation. Prevent typos and ensure consistent field names across your codebase.","md",[2014,2017],{"label":51,"icon":54,"to":52,"color":2015,"variant":2016},"neutral","subtle",{"label":181,"icon":124,"to":182,"color":2015,"variant":2016},{},{"icon":179},{"title":176,"description":2011},"IHvSrviCBXZy-M44EK9kDbao9VMGiJDt6y3qukEswMU",[2023,2025],{"title":171,"path":172,"stem":173,"description":2024,"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":2026,"icon":124,"children":-1},"Security guidelines, data sanitization, and production tips for evlog. Learn what not to log and how to protect sensitive data.",1777982710487]