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