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