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