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