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