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