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