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