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