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