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