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