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