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