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