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