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