[{"data":1,"prerenderedAt":2889},["ShallowReactive",2],{"navigation_docs":3,"-learn-redaction":529,"-learn-redaction-surround":2884},[4,29,76,122,304,436,495],{"title":5,"path":6,"stem":7,"children":8,"page":28},"Start","\u002Fstart","1.start",[9,13,18,23],{"title":10,"path":11,"stem":12},"Introduction","\u002Fstart\u002Fintroduction","1.start\u002F1.introduction",{"title":14,"path":15,"stem":16,"icon":17},"Why start with evlog","\u002Fstart\u002Fwhy-evlog","1.start\u002F2.why-evlog","i-lucide-rocket",{"title":19,"path":20,"stem":21,"icon":22},"Installation","\u002Fstart\u002Finstallation","1.start\u002F3.installation","i-lucide-download",{"title":24,"path":25,"stem":26,"icon":27},"Quick Start","\u002Fstart\u002Fquick-start","1.start\u002F4.quick-start","i-lucide-zap",false,{"title":30,"path":31,"stem":32,"children":33,"page":28},"Learn","\u002Flearn","2.learn",[34,38,43,48,53,58,62,67,72],{"title":35,"path":36,"stem":37},"Learn evlog","\u002Flearn\u002Foverview","2.learn\u002F0.overview",{"title":39,"path":40,"stem":41,"icon":42},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":44,"path":45,"stem":46,"icon":47},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":49,"path":50,"stem":51,"icon":52},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":54,"path":55,"stem":56,"icon":57},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":59,"path":60,"stem":61},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling",{"title":63,"path":64,"stem":65,"icon":66},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":68,"path":69,"stem":70,"icon":71},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":73,"path":74,"stem":75},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs",{"title":77,"path":78,"stem":79,"children":80,"page":28},"CLI","\u002Fcli","3.cli",[81,85,90,95,99,103,108,113,118],{"title":82,"path":83,"stem":84},"evlog CLI","\u002Fcli\u002Foverview","3.cli\u002F0.overview",{"title":86,"path":87,"stem":88,"icon":89},"init","\u002Fcli\u002Finit","3.cli\u002F1.init","i-lucide-wand-sparkles",{"title":91,"path":92,"stem":93,"icon":94},"map","\u002Fcli\u002Fmap","3.cli\u002F2.map","i-lucide-radar",{"title":96,"path":97,"stem":98},"Map rules","\u002Fcli\u002Frules","3.cli\u002F3.rules",{"title":100,"path":101,"stem":102},"Map scoring","\u002Fcli\u002Fscoring","3.cli\u002F4.scoring",{"title":104,"path":105,"stem":106,"icon":107},"CI","\u002Fcli\u002Fci","3.cli\u002F5.ci","i-lucide-git-pull-request",{"title":109,"path":110,"stem":111,"icon":112},"doctor","\u002Fcli\u002Fdoctor","3.cli\u002F6.doctor","i-lucide-stethoscope",{"title":114,"path":115,"stem":116,"icon":117},"telemetry","\u002Fcli\u002Ftelemetry","3.cli\u002F7.telemetry","i-lucide-bar-chart-3",{"title":119,"path":120,"stem":121},"evlog agents","\u002Fcli\u002Fagents","3.cli\u002F8.agents",{"title":123,"path":124,"stem":125,"children":126,"page":28},"Integrate","\u002Fintegrate","4.integrate",[127,132,216],{"title":128,"path":129,"stem":130,"icon":131},"Overview","\u002Fintegrate\u002Foverview","4.integrate\u002F0.overview","i-lucide-plug",{"title":133,"path":134,"stem":135,"children":136,"page":28},"Adapters","\u002Fintegrate\u002Fadapters","4.integrate\u002Fadapters",[137,141,171,196],{"title":128,"path":138,"stem":139,"icon":140},"\u002Fintegrate\u002Fadapters\u002Foverview","4.integrate\u002Fadapters\u002F01.overview","i-lucide-list",{"title":142,"path":143,"stem":144,"children":145,"page":28},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","4.integrate\u002Fadapters\u002Fcloud",[146,151,156,161,166],{"title":147,"path":148,"stem":149,"icon":150},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","4.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":152,"path":153,"stem":154,"icon":155},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","4.integrate\u002Fadapters\u002Fcloud\u002F02.posthog","i-simple-icons-posthog",{"title":157,"path":158,"stem":159,"icon":160},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","4.integrate\u002Fadapters\u002Fcloud\u002F03.sentry","i-simple-icons-sentry",{"title":162,"path":163,"stem":164,"icon":165},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","4.integrate\u002Fadapters\u002Fcloud\u002F04.better-stack","i-simple-icons-betterstack",{"title":167,"path":168,"stem":169,"icon":170},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","4.integrate\u002Fadapters\u002Fcloud\u002F05.datadog","i-simple-icons-datadog",{"title":172,"path":173,"stem":174,"children":175,"page":28},"Cloud or Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fhybrid","4.integrate\u002Fadapters\u002Fhybrid",[176,181,186,191],{"title":177,"path":178,"stem":179,"icon":180},"Grafana Loki","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Floki","4.integrate\u002Fadapters\u002Fhybrid\u002F01.loki","i-simple-icons-grafana",{"title":182,"path":183,"stem":184,"icon":185},"ClickHouse","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fclickhouse","4.integrate\u002Fadapters\u002Fhybrid\u002F02.clickhouse","i-simple-icons-clickhouse",{"title":187,"path":188,"stem":189,"icon":190},"OTLP","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fotlp","4.integrate\u002Fadapters\u002Fhybrid\u002F03.otlp","i-simple-icons-opentelemetry",{"title":192,"path":193,"stem":194,"icon":195},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fhyperdx","4.integrate\u002Fadapters\u002Fhybrid\u002F04.hyperdx","i-custom-hyperdx",{"title":197,"path":198,"stem":199,"children":200,"page":28},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","4.integrate\u002Fadapters\u002Fself-hosted",[201,206,211],{"title":202,"path":203,"stem":204,"icon":205},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","4.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":207,"path":208,"stem":209,"icon":210},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","4.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":212,"path":213,"stem":214,"icon":215},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","4.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":217,"path":218,"stem":219,"children":220,"page":28},"Frameworks","\u002Fintegrate\u002Fframeworks","4.integrate\u002Fframeworks",[221,225,230,235,240,245,250,255,260,265,270,275,280,285,289,294,299],{"title":128,"path":222,"stem":223,"icon":224},"\u002Fintegrate\u002Fframeworks\u002Foverview","4.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":226,"path":227,"stem":228,"icon":229},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","4.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":231,"path":232,"stem":233,"icon":234},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","4.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":236,"path":237,"stem":238,"icon":239},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","4.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":241,"path":242,"stem":243,"icon":244},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","4.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":246,"path":247,"stem":248,"icon":249},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","4.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":251,"path":252,"stem":253,"icon":254},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","4.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":256,"path":257,"stem":258,"icon":259},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","4.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":261,"path":262,"stem":263,"icon":264},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","4.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":266,"path":267,"stem":268,"icon":269},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","4.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":271,"path":272,"stem":273,"icon":274},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","4.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":276,"path":277,"stem":278,"icon":279},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","4.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":281,"path":282,"stem":283,"icon":284},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","4.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":286,"path":287,"stem":288,"icon":71},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","4.integrate\u002Fframeworks\u002F13.standalone",{"title":290,"path":291,"stem":292,"icon":293},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","4.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":295,"path":296,"stem":297,"icon":298},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","4.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":300,"path":301,"stem":302,"icon":303},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","4.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":305,"path":306,"stem":307,"children":308,"page":28},"Use Cases","\u002Fuse-cases","5.use-cases",[309,312,317,346,374,407,427,432],{"title":305,"path":310,"stem":311},"\u002Fuse-cases\u002Foverview","5.use-cases\u002F0.overview",{"title":313,"path":314,"stem":315,"icon":316},"Client Logging","\u002Fuse-cases\u002Fclient-logging","5.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":318,"icon":319,"path":320,"stem":321,"children":322,"page":28},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","5.use-cases\u002F2.ai-sdk",[323,326,331,336,341],{"title":128,"path":324,"stem":325,"icon":140},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","5.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":327,"path":328,"stem":329,"icon":330},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","5.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":332,"path":333,"stem":334,"icon":335},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","5.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":337,"path":338,"stem":339,"icon":340},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","5.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":342,"path":343,"stem":344,"icon":345},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","5.use-cases\u002F2.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":347,"icon":348,"path":349,"stem":350,"children":351,"page":28},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","5.use-cases\u002F3.better-auth",[352,355,360,365,369],{"title":128,"path":353,"stem":354,"icon":140},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","5.use-cases\u002F3.better-auth\u002F01.overview",{"title":356,"path":357,"stem":358,"icon":359},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","5.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":361,"path":362,"stem":363,"icon":364},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","5.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":366,"path":367,"stem":368,"icon":316},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","5.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":370,"path":371,"stem":372,"icon":373},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","5.use-cases\u002F3.better-auth\u002F05.performance","i-lucide-gauge",{"title":375,"icon":376,"path":377,"stem":378,"children":379,"page":28},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","5.use-cases\u002F4.audit",[380,383,388,393,398,402],{"title":128,"path":381,"stem":382,"icon":140},"\u002Fuse-cases\u002Faudit\u002Foverview","5.use-cases\u002F4.audit\u002F01.overview",{"title":384,"path":385,"stem":386,"icon":387},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","5.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":389,"path":390,"stem":391,"icon":392},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","5.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":394,"path":395,"stem":396,"icon":397},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","5.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":399,"path":400,"stem":401,"icon":376},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","5.use-cases\u002F4.audit\u002F05.compliance",{"title":403,"path":404,"stem":405,"icon":406},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","5.use-cases\u002F4.audit\u002F06.recipes","i-lucide-book-open",{"title":342,"icon":373,"path":408,"stem":409,"children":410,"page":28},"\u002Fuse-cases\u002Ftelemetry","5.use-cases\u002F4.telemetry",[411,414,419,423],{"title":128,"path":412,"stem":413,"icon":140},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","5.use-cases\u002F4.telemetry\u002F01.overview",{"title":415,"path":416,"stem":417,"icon":418},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","5.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":420,"path":421,"stem":422},"Telemetry Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","5.use-cases\u002F4.telemetry\u002F03.ingest",{"title":424,"path":425,"stem":426,"icon":406},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","5.use-cases\u002F4.telemetry\u002F04.reference",{"title":428,"path":429,"stem":430,"icon":431},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":433,"path":434,"stem":435},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve",{"title":437,"path":438,"stem":439,"children":440,"page":28},"Extend","\u002Fextend","6.extend",[441,445,450,455,459,464,468,472,476,481,486,491],{"title":128,"path":442,"stem":443,"icon":444},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":446,"path":447,"stem":448,"icon":449},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":451,"path":452,"stem":453,"icon":454},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":456,"path":457,"stem":458,"icon":449},"Diagnostics channel","\u002Fextend\u002Fdiagnostics-channel","6.extend\u002F11.diagnostics-channel",{"title":460,"path":461,"stem":462,"icon":463},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":403,"path":465,"stem":466,"icon":467},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":469,"path":470,"stem":471},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":473,"path":474,"stem":475,"icon":431},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"title":477,"path":478,"stem":479,"icon":480},"Tail sampling","\u002Fextend\u002Ftail-sampling","6.extend\u002F6.tail-sampling","i-lucide-filter",{"title":482,"path":483,"stem":484,"icon":485},"Identity headers","\u002Fextend\u002Fidentity-headers","6.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":487,"path":488,"stem":489,"icon":490},"Custom drains","\u002Fextend\u002Fcustom-drains","6.extend\u002F8.custom-drains","i-lucide-share-2",{"title":492,"path":493,"stem":494},"Drain Pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline",{"title":424,"path":496,"stem":497,"children":498,"page":28},"\u002Freference","7.reference",[499,504,507,512,516,521,525],{"title":500,"path":501,"stem":502,"icon":503},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":370,"path":505,"stem":506,"icon":373},"\u002Freference\u002Fperformance","7.reference\u002F2.performance",{"title":508,"path":509,"stem":510,"icon":511},"Vite Plugin","\u002Freference\u002Fvite-plugin","7.reference\u002F3.vite-plugin","i-custom-vite",{"title":513,"path":514,"stem":515,"icon":376},"Best Practices","\u002Freference\u002Fbest-practices","7.reference\u002F4.best-practices",{"title":517,"path":518,"stem":519,"icon":520},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":522,"path":523,"stem":524,"icon":431},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"title":526,"path":527,"stem":528},"Log cost","\u002Freference\u002Fcost","7.reference\u002F7.cost",{"id":530,"title":63,"body":531,"description":2873,"extension":2874,"links":2875,"meta":2880,"navigation":2881,"path":64,"seo":2882,"stem":65,"__hash__":2883},"docs\u002F2.learn\u002F6.redaction.md",{"type":532,"value":533,"toc":2856},"minimark",[534,546,557,562,565,849,856,859,863,874,1016,1029,1032,1037,1055,1165,1242,1261,1268,1272,1275,1331,1335,1341,1424,1428,1435,1438,1570,1573,1646,1659,1665,1669,1675,1767,1784,1787,1808,1812,1815,1894,1898,2044,2061,2065,2068,2113,2125,2132,2136,2139,2598,2602,2605,2719,2724,2826,2829,2833,2852],[535,536,537,538,542,543,545],"p",{},"Wide events capture comprehensive context, which makes it easy to accidentally log sensitive data. Auto-redaction scrubs PII from events ",[539,540,541],"strong",{},"before"," console output and ",[539,544,541],{}," any drain sees the data.",[535,547,548,551,552,556],{},[539,549,550],{},"Redaction is enabled by default in production"," (",[553,554,555],"code",{},"NODE_ENV === 'production'","). In development, it is off so you see full values for debugging. No configuration needed, just deploy.",[558,559,561],"h2",{"id":560},"turn-it-off-or-narrow-it","Turn it off, or narrow it",[535,563,564],{},"If you need to disable redaction in production:",[566,567,568,670,771],"code-group",{},[569,570,576],"pre",{"className":571,"code":572,"filename":573,"language":574,"meta":575,"style":575},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    redact: false,\n  },\n})\n","nuxt.config.ts","typescript","",[553,577,578,602,630,641,655,661],{"__ignoreMap":575},[579,580,583,587,590,594,598],"span",{"class":581,"line":582},"line",1,[579,584,586],{"class":585},"s7zQu","export",[579,588,589],{"class":585}," default",[579,591,593],{"class":592},"s2Zo4"," defineNuxtConfig",[579,595,597],{"class":596},"sTEyZ","(",[579,599,601],{"class":600},"sMK4o","{\n",[579,603,605,609,612,615,618,622,624,627],{"class":581,"line":604},2,[579,606,608],{"class":607},"swJcz","  modules",[579,610,611],{"class":600},":",[579,613,614],{"class":596}," [",[579,616,617],{"class":600},"'",[579,619,621],{"class":620},"sfazB","evlog\u002Fnuxt",[579,623,617],{"class":600},[579,625,626],{"class":596},"]",[579,628,629],{"class":600},",\n",[579,631,633,636,638],{"class":581,"line":632},3,[579,634,635],{"class":607},"  evlog",[579,637,611],{"class":600},[579,639,640],{"class":600}," {\n",[579,642,644,647,649,653],{"class":581,"line":643},4,[579,645,646],{"class":607},"    redact",[579,648,611],{"class":600},[579,650,652],{"class":651},"sfNiH"," false",[579,654,629],{"class":600},[579,656,658],{"class":581,"line":657},5,[579,659,660],{"class":600},"  },\n",[579,662,664,667],{"class":581,"line":663},6,[579,665,666],{"class":600},"}",[579,668,669],{"class":596},")\n",[569,671,674],{"className":571,"code":672,"filename":673,"language":574,"meta":575,"style":575},"import { createEvlog } from 'evlog\u002Fnext'\n\nexport const { withEvlog, useLogger } = createEvlog({\n  service: 'my-app',\n  redact: false,\n})\n","lib\u002Fevlog.ts (Next.js)",[553,675,676,702,708,738,754,765],{"__ignoreMap":575},[579,677,678,681,684,687,690,693,696,699],{"class":581,"line":582},[579,679,680],{"class":585},"import",[579,682,683],{"class":600}," {",[579,685,686],{"class":596}," createEvlog",[579,688,689],{"class":600}," }",[579,691,692],{"class":585}," from",[579,694,695],{"class":600}," '",[579,697,698],{"class":620},"evlog\u002Fnext",[579,700,701],{"class":600},"'\n",[579,703,704],{"class":581,"line":604},[579,705,707],{"emptyLinePlaceholder":706},true,"\n",[579,709,710,712,716,718,721,724,727,729,732,734,736],{"class":581,"line":632},[579,711,586],{"class":585},[579,713,715],{"class":714},"spNyl"," const",[579,717,683],{"class":600},[579,719,720],{"class":596}," withEvlog",[579,722,723],{"class":600},",",[579,725,726],{"class":596}," useLogger ",[579,728,666],{"class":600},[579,730,731],{"class":600}," =",[579,733,686],{"class":592},[579,735,597],{"class":596},[579,737,601],{"class":600},[579,739,740,743,745,747,750,752],{"class":581,"line":643},[579,741,742],{"class":607},"  service",[579,744,611],{"class":600},[579,746,695],{"class":600},[579,748,749],{"class":620},"my-app",[579,751,617],{"class":600},[579,753,629],{"class":600},[579,755,756,759,761,763],{"class":581,"line":657},[579,757,758],{"class":607},"  redact",[579,760,611],{"class":600},[579,762,652],{"class":651},[579,764,629],{"class":600},[579,766,767,769],{"class":581,"line":663},[579,768,666],{"class":600},[579,770,669],{"class":596},[569,772,775],{"className":571,"code":773,"filename":774,"language":574,"meta":575,"style":575},"import { initLogger } from 'evlog'\n\ninitLogger({\n  env: { service: 'my-app' },\n  redact: false,\n})\n","index.ts (Hono \u002F Express \u002F Fastify)",[553,776,777,797,801,810,833,843],{"__ignoreMap":575},[579,778,779,781,783,786,788,790,792,795],{"class":581,"line":582},[579,780,680],{"class":585},[579,782,683],{"class":600},[579,784,785],{"class":596}," initLogger",[579,787,689],{"class":600},[579,789,692],{"class":585},[579,791,695],{"class":600},[579,793,794],{"class":620},"evlog",[579,796,701],{"class":600},[579,798,799],{"class":581,"line":604},[579,800,707],{"emptyLinePlaceholder":706},[579,802,803,806,808],{"class":581,"line":632},[579,804,805],{"class":592},"initLogger",[579,807,597],{"class":596},[579,809,601],{"class":600},[579,811,812,815,817,819,822,824,826,828,830],{"class":581,"line":643},[579,813,814],{"class":607},"  env",[579,816,611],{"class":600},[579,818,683],{"class":600},[579,820,821],{"class":607}," service",[579,823,611],{"class":600},[579,825,695],{"class":600},[579,827,749],{"class":620},[579,829,617],{"class":600},[579,831,832],{"class":600}," },\n",[579,834,835,837,839,841],{"class":581,"line":657},[579,836,758],{"class":607},[579,838,611],{"class":600},[579,840,652],{"class":651},[579,842,629],{"class":600},[579,844,845,847],{"class":581,"line":663},[579,846,666],{"class":600},[579,848,669],{"class":596},[535,850,851,852,855],{},"You can also enable redaction explicitly in development with ",[553,853,854],{},"redact: true",".",[857,858],"redaction-stream",{},[558,860,862],{"id":861},"mask-enough-to-still-debug","Mask enough to still debug",[535,864,865,866,869,870,873],{},"Built-in patterns use ",[539,867,868],{},"partial masking"," instead of flat ",[553,871,872],{},"[REDACTED]",", preserving enough context for debugging while protecting the actual data.",[875,876,877,893],"table",{},[878,879,880],"thead",{},[881,882,883,887,890],"tr",{},[884,885,886],"th",{},"Pattern",[884,888,889],{},"Example Input",[884,891,892],{},"Masked Output",[894,895,896,914,931,948,965,982,999],"tbody",{},[881,897,898,904,909],{},[899,900,901],"td",{},[553,902,903],{},"creditCard",[899,905,906],{},[553,907,908],{},"4111111111111111",[899,910,911],{},[553,912,913],{},"****1111",[881,915,916,921,926],{},[899,917,918],{},[553,919,920],{},"email",[899,922,923],{},[553,924,925],{},"alice@example.com",[899,927,928],{},[553,929,930],{},"a***@***.com",[881,932,933,938,943],{},[899,934,935],{},[553,936,937],{},"ipv4",[899,939,940],{},[553,941,942],{},"192.168.1.100",[899,944,945],{},[553,946,947],{},"***.***.***.100",[881,949,950,955,960],{},[899,951,952],{},[553,953,954],{},"phone",[899,956,957],{},[553,958,959],{},"+33 6 12 34 56 78",[899,961,962],{},[553,963,964],{},"+33 ****5678",[881,966,967,972,977],{},[899,968,969],{},[553,970,971],{},"jwt",[899,973,974],{},[553,975,976],{},"eyJhbGciOiJIUzI1NiIs...",[899,978,979],{},[553,980,981],{},"eyJ***.***",[881,983,984,989,994],{},[899,985,986],{},[553,987,988],{},"bearer",[899,990,991],{},[553,992,993],{},"Bearer sk_live_abc123...",[899,995,996],{},[553,997,998],{},"Bearer ***",[881,1000,1001,1006,1011],{},[899,1002,1003],{},[553,1004,1005],{},"iban",[899,1007,1008],{},[553,1009,1010],{},"FR76 3000 6000 0112 ...189",[899,1012,1013],{},[553,1014,1015],{},"FR76****189",[1017,1018,1021,1024,1025,1028],"callout",{"color":1019,"icon":1020},"info","i-lucide-info",[553,1022,1023],{},"127.0.0.1"," and ",[553,1026,1027],{},"0.0.0.0"," are excluded from IPv4 masking since they are not real client addresses.",[558,1030,500],{"id":1031},"configuration",[1033,1034,1036],"h3",{"id":1035},"path-patterns","Path Patterns",[535,1038,1039,1040,1043,1044,1047,1048,1051,1052,611],{},"Use a single ",[553,1041,1042],{},"paths"," array with dot-notation and globs. A bare segment like ",[553,1045,1046],{},"password"," is shorthand for ",[553,1049,1050],{},"**.password",", so it redacts that key at ",[539,1053,1054],{},"any nesting depth",[569,1056,1058],{"className":571,"code":1057,"language":574,"meta":575,"style":575},"evlog: {\n  redact: {\n    paths: [\n      'password',              \u002F\u002F same as '**.password'\n      '*_token',               \u002F\u002F key-name glob at any depth\n      'headers.x-forwarded-for', \u002F\u002F exact path\n      'user.*',                \u002F\u002F everything directly under user\n    ],\n  }\n}\n",[553,1059,1060,1069,1077,1087,1102,1116,1130,1145,1153,1159],{"__ignoreMap":575},[579,1061,1062,1065,1067],{"class":581,"line":582},[579,1063,794],{"class":1064},"sBMFI",[579,1066,611],{"class":600},[579,1068,640],{"class":600},[579,1070,1071,1073,1075],{"class":581,"line":604},[579,1072,758],{"class":1064},[579,1074,611],{"class":600},[579,1076,640],{"class":600},[579,1078,1079,1082,1084],{"class":581,"line":632},[579,1080,1081],{"class":1064},"    paths",[579,1083,611],{"class":600},[579,1085,1086],{"class":607}," [\n",[579,1088,1089,1092,1094,1096,1098],{"class":581,"line":643},[579,1090,1091],{"class":600},"      '",[579,1093,1046],{"class":620},[579,1095,617],{"class":600},[579,1097,723],{"class":600},[579,1099,1101],{"class":1100},"sHwdD","              \u002F\u002F same as '**.password'\n",[579,1103,1104,1106,1109,1111,1113],{"class":581,"line":657},[579,1105,1091],{"class":600},[579,1107,1108],{"class":620},"*_token",[579,1110,617],{"class":600},[579,1112,723],{"class":600},[579,1114,1115],{"class":1100},"               \u002F\u002F key-name glob at any depth\n",[579,1117,1118,1120,1123,1125,1127],{"class":581,"line":663},[579,1119,1091],{"class":600},[579,1121,1122],{"class":620},"headers.x-forwarded-for",[579,1124,617],{"class":600},[579,1126,723],{"class":600},[579,1128,1129],{"class":1100}," \u002F\u002F exact path\n",[579,1131,1133,1135,1138,1140,1142],{"class":581,"line":1132},7,[579,1134,1091],{"class":600},[579,1136,1137],{"class":620},"user.*",[579,1139,617],{"class":600},[579,1141,723],{"class":600},[579,1143,1144],{"class":1100},"                \u002F\u002F everything directly under user\n",[579,1146,1148,1151],{"class":581,"line":1147},8,[579,1149,1150],{"class":607},"    ]",[579,1152,629],{"class":600},[579,1154,1156],{"class":581,"line":1155},9,[579,1157,1158],{"class":600},"  }\n",[579,1160,1162],{"class":581,"line":1161},10,[579,1163,1164],{"class":600},"}\n",[875,1166,1167,1176],{},[878,1168,1169],{},[881,1170,1171,1173],{},[884,1172,886],{},[884,1174,1175],{},"Matches",[894,1177,1178,1188,1202,1218,1232],{},[881,1179,1180,1185],{},[899,1181,1182],{},[553,1183,1184],{},"user.email",[899,1186,1187],{},"Exact path only",[881,1189,1190,1197],{},[899,1191,1192,1194,1195],{},[553,1193,1046],{}," or ",[553,1196,1050],{},[899,1198,1199,1201],{},[553,1200,1046],{}," key at any depth",[881,1203,1204,1208],{},[899,1205,1206],{},[553,1207,1108],{},[899,1209,1210,1211,1214,1215],{},"Key names like ",[553,1212,1213],{},"access_token",", ",[553,1216,1217],{},"refresh_token",[881,1219,1220,1224],{},[899,1221,1222],{},[553,1223,1137],{},[899,1225,1226,1214,1228,1231],{},[553,1227,1184],{},[553,1229,1230],{},"user.password",", etc.",[881,1233,1234,1239],{},[899,1235,1236],{},[553,1237,1238],{},"audit.changes.*.password",[899,1240,1241],{},"Mixed exact + wildcard segments",[535,1243,1244,1245,1248,1249,1252,1253,1256,1257,1260],{},"Path redaction replaces the ",[539,1246,1247],{},"entire value"," (including nested objects) with ",[553,1250,1251],{},"replacement",". Use ",[553,1254,1255],{},"patterns"," when you need regex on ",[539,1258,1259],{},"string values"," inside fields.",[535,1262,1263,1264,1267],{},"This matches ",[553,1265,1266],{},"auditDiff({ redactPaths: ['password'] })",", the same glob syntax, applied globally at emit time.",[1033,1269,1271],{"id":1270},"selective-built-ins","Selective Built-ins",[535,1273,1274],{},"Pick only the patterns you need:",[569,1276,1278],{"className":571,"code":1277,"language":574,"meta":575,"style":575},"evlog: {\n  redact: {\n    builtins: ['email', 'creditCard'],\n  }\n}\n",[553,1279,1280,1288,1296,1323,1327],{"__ignoreMap":575},[579,1281,1282,1284,1286],{"class":581,"line":582},[579,1283,794],{"class":1064},[579,1285,611],{"class":600},[579,1287,640],{"class":600},[579,1289,1290,1292,1294],{"class":581,"line":604},[579,1291,758],{"class":1064},[579,1293,611],{"class":600},[579,1295,640],{"class":600},[579,1297,1298,1301,1303,1305,1307,1309,1311,1313,1315,1317,1319,1321],{"class":581,"line":632},[579,1299,1300],{"class":1064},"    builtins",[579,1302,611],{"class":600},[579,1304,614],{"class":607},[579,1306,617],{"class":600},[579,1308,920],{"class":620},[579,1310,617],{"class":600},[579,1312,723],{"class":600},[579,1314,695],{"class":600},[579,1316,903],{"class":620},[579,1318,617],{"class":600},[579,1320,626],{"class":607},[579,1322,629],{"class":600},[579,1324,1325],{"class":581,"line":643},[579,1326,1158],{"class":600},[579,1328,1329],{"class":581,"line":657},[579,1330,1164],{"class":600},[1033,1332,1334],{"id":1333},"custom-patterns","Custom Patterns",[535,1336,1337,1338,1340],{},"Add your own regex patterns. These use the flat ",[553,1339,1251],{}," string, not smart masking:",[569,1342,1344],{"className":571,"code":1343,"language":574,"meta":575,"style":575},"evlog: {\n  redact: {\n    patterns: [\u002FSECRET_\\w+\u002Fg, \u002Fsk_live_\\w+\u002Fg],\n    replacement: '***',\n  }\n}\n",[553,1345,1346,1354,1362,1400,1416,1420],{"__ignoreMap":575},[579,1347,1348,1350,1352],{"class":581,"line":582},[579,1349,794],{"class":1064},[579,1351,611],{"class":600},[579,1353,640],{"class":600},[579,1355,1356,1358,1360],{"class":581,"line":604},[579,1357,758],{"class":1064},[579,1359,611],{"class":600},[579,1361,640],{"class":600},[579,1363,1364,1367,1369,1371,1374,1377,1380,1384,1386,1389,1392,1394,1396,1398],{"class":581,"line":632},[579,1365,1366],{"class":1064},"    patterns",[579,1368,611],{"class":600},[579,1370,614],{"class":607},[579,1372,1373],{"class":600},"\u002F",[579,1375,1376],{"class":620},"SECRET_\\w",[579,1378,1379],{"class":600},"+\u002F",[579,1381,1383],{"class":1382},"sbssI","g",[579,1385,723],{"class":600},[579,1387,1388],{"class":600}," \u002F",[579,1390,1391],{"class":620},"sk_live_\\w",[579,1393,1379],{"class":600},[579,1395,1383],{"class":1382},[579,1397,626],{"class":607},[579,1399,629],{"class":600},[579,1401,1402,1405,1407,1409,1412,1414],{"class":581,"line":643},[579,1403,1404],{"class":1064},"    replacement",[579,1406,611],{"class":600},[579,1408,695],{"class":600},[579,1410,1411],{"class":620},"***",[579,1413,617],{"class":600},[579,1415,629],{"class":600},[579,1417,1418],{"class":581,"line":657},[579,1419,1158],{"class":600},[579,1421,1422],{"class":581,"line":663},[579,1423,1164],{"class":600},[1033,1425,1427],{"id":1426},"computed-replacements","Computed Replacements",[535,1429,1430,1431,1434],{},"When the replacement has to be ",[539,1432,1433],{},"derived"," from the value it replaces, pass a function instead of a string. It runs at the same point as the rest of redaction: before the console write, before any drain.",[535,1436,1437],{},"The common case is keeping requests correlatable without exposing the credential that identifies them:",[569,1439,1441],{"className":571,"code":1440,"language":574,"meta":575,"style":575},"initLogger({\n  redact: {\n    patterns: [\u002F\\\u002Fpublic\\\u002Fclaim\\\u002F([A-Za-z0-9._-]{12,})\u002Fg],\n    replacement: (_match, ctx) => `\u002Fpublic\u002Fclaim\u002F[tok:${fingerprint(ctx.groups[0])}]`,\n  },\n})\n\u002F\u002F \u002Fpublic\u002Fclaim\u002FeyJhbGciOi...  →  \u002Fpublic\u002Fclaim\u002F[tok:9f3a1c]\n",[553,1442,1443,1451,1459,1497,1555,1559,1565],{"__ignoreMap":575},[579,1444,1445,1447,1449],{"class":581,"line":582},[579,1446,805],{"class":592},[579,1448,597],{"class":596},[579,1450,601],{"class":600},[579,1452,1453,1455,1457],{"class":581,"line":604},[579,1454,758],{"class":607},[579,1456,611],{"class":600},[579,1458,640],{"class":600},[579,1460,1461,1463,1465,1467,1469,1472,1475,1477,1480,1482,1485,1488,1491,1493,1495],{"class":581,"line":632},[579,1462,1366],{"class":607},[579,1464,611],{"class":600},[579,1466,614],{"class":596},[579,1468,1373],{"class":600},[579,1470,1471],{"class":596},"\\\u002F",[579,1473,1474],{"class":620},"public",[579,1476,1471],{"class":596},[579,1478,1479],{"class":620},"claim",[579,1481,1471],{"class":596},[579,1483,1484],{"class":600},"([",[579,1486,1487],{"class":620},"A-Za-z0-9._-",[579,1489,1490],{"class":600},"]{12,})\u002F",[579,1492,1383],{"class":1382},[579,1494,626],{"class":596},[579,1496,629],{"class":600},[579,1498,1499,1501,1503,1505,1509,1511,1514,1517,1520,1523,1526,1529,1532,1535,1537,1540,1543,1546,1548,1550,1553],{"class":581,"line":643},[579,1500,1404],{"class":592},[579,1502,611],{"class":600},[579,1504,551],{"class":600},[579,1506,1508],{"class":1507},"sHdIc","_match",[579,1510,723],{"class":600},[579,1512,1513],{"class":1507}," ctx",[579,1515,1516],{"class":600},")",[579,1518,1519],{"class":714}," =>",[579,1521,1522],{"class":600}," `",[579,1524,1525],{"class":620},"\u002Fpublic\u002Fclaim\u002F[tok:",[579,1527,1528],{"class":600},"${",[579,1530,1531],{"class":592},"fingerprint",[579,1533,1534],{"class":596},"(ctx",[579,1536,855],{"class":600},[579,1538,1539],{"class":596},"groups[",[579,1541,1542],{"class":1382},"0",[579,1544,1545],{"class":596},"])",[579,1547,666],{"class":600},[579,1549,626],{"class":620},[579,1551,1552],{"class":600},"`",[579,1554,629],{"class":600},[579,1556,1557],{"class":581,"line":657},[579,1558,660],{"class":600},[579,1560,1561,1563],{"class":581,"line":663},[579,1562,666],{"class":600},[579,1564,669],{"class":596},[579,1566,1567],{"class":581,"line":1132},[579,1568,1569],{"class":1100},"\u002F\u002F \u002Fpublic\u002Fclaim\u002FeyJhbGciOi...  →  \u002Fpublic\u002Fclaim\u002F[tok:9f3a1c]\n",[535,1571,1572],{},"The function receives the matched value and a context object:",[875,1574,1575,1588],{},[878,1576,1577],{},[881,1578,1579,1582,1585],{},[884,1580,1581],{},"Field",[884,1583,1584],{},"Type",[884,1586,1587],{},"Description",[894,1589,1590,1610,1626],{},[881,1591,1592,1597,1602],{},[899,1593,1594],{},[553,1595,1596],{},"path",[899,1598,1599],{},[553,1600,1601],{},"string",[899,1603,1604,1605,1214,1607,1516],{},"Dot-notation path from the event root (",[553,1606,1184],{},[553,1608,1609],{},"items.0.token",[881,1611,1612,1617,1621],{},[899,1613,1614],{},[553,1615,1616],{},"key",[899,1618,1619],{},[553,1620,1601],{},[899,1622,1623,1624,1516],{},"Leaf key of the field (",[553,1625,920],{},[881,1627,1628,1633,1638],{},[899,1629,1630],{},[553,1631,1632],{},"groups",[899,1634,1635],{},[553,1636,1637],{},"string[]",[899,1639,1640,1641,1643,1644],{},"Capture groups of the matching ",[553,1642,1255],{}," entry. Only set for ",[553,1645,1255],{},[535,1647,1648,1649,1651,1652,1655,1656,1658],{},"For ",[553,1650,1042],{},", the matched value is the ",[539,1653,1654],{},"whole field value",", of any type, since path redaction replaces entire subtrees. For ",[553,1657,1255],{},", it is the matched substring.",[535,1660,1661,1662,1664],{},"If the function throws or returns a non-string, redaction falls back to ",[553,1663,872],{}," and logs the failure. A broken policy degrades to over-redaction, never to leaking the value it was meant to scrub.",[1033,1666,1668],{"id":1667},"conditional-policies","Conditional Policies",[535,1670,1671,1672,611],{},"Some policies cannot be expressed as a list of paths: redact a field only for certain tenants, only when a sibling field has a given value, or keep an allowlist rather than a denylist. Use ",[553,1673,1674],{},"transform",[569,1676,1678],{"className":571,"code":1677,"language":574,"meta":575,"style":575},"initLogger({\n  redact: {\n    transform: (event) => {\n      if (event.tenant === 'regulated') delete event.query\n    },\n  },\n})\n",[553,1679,1680,1688,1696,1714,1752,1757,1761],{"__ignoreMap":575},[579,1681,1682,1684,1686],{"class":581,"line":582},[579,1683,805],{"class":592},[579,1685,597],{"class":596},[579,1687,601],{"class":600},[579,1689,1690,1692,1694],{"class":581,"line":604},[579,1691,758],{"class":607},[579,1693,611],{"class":600},[579,1695,640],{"class":600},[579,1697,1698,1701,1703,1705,1708,1710,1712],{"class":581,"line":632},[579,1699,1700],{"class":592},"    transform",[579,1702,611],{"class":600},[579,1704,551],{"class":600},[579,1706,1707],{"class":1507},"event",[579,1709,1516],{"class":600},[579,1711,1519],{"class":714},[579,1713,640],{"class":600},[579,1715,1716,1719,1721,1723,1725,1728,1731,1733,1736,1738,1741,1744,1747,1749],{"class":581,"line":643},[579,1717,1718],{"class":585},"      if",[579,1720,551],{"class":607},[579,1722,1707],{"class":596},[579,1724,855],{"class":600},[579,1726,1727],{"class":596},"tenant",[579,1729,1730],{"class":600}," ===",[579,1732,695],{"class":600},[579,1734,1735],{"class":620},"regulated",[579,1737,617],{"class":600},[579,1739,1740],{"class":607},") ",[579,1742,1743],{"class":600},"delete",[579,1745,1746],{"class":596}," event",[579,1748,855],{"class":600},[579,1750,1751],{"class":596},"query\n",[579,1753,1754],{"class":581,"line":657},[579,1755,1756],{"class":600},"    },\n",[579,1758,1759],{"class":581,"line":663},[579,1760,660],{"class":600},[579,1762,1763,1765],{"class":581,"line":1132},[579,1764,666],{"class":600},[579,1766,669],{"class":596},[535,1768,1769,1771,1772,1774,1775,1214,1777,1780,1781,1783],{},[553,1770,1674],{}," runs ",[539,1773,541],{}," ",[553,1776,1042],{},[553,1778,1779],{},"builtins",", and ",[553,1782,1255],{},", so it sees raw values and the declarative rules still apply to whatever it leaves behind, and a hook that misses a field is not your last line of defence. Mutate the event in place; it is already a private clone, so the object you logged is never touched.",[535,1785,1786],{},"It must be synchronous, since it runs on the emit path before the console write. Errors are caught and reported like drain failures: the declarative stages still run and the event is still logged.",[1017,1788,1791,1792,1024,1794,1796,1797,1799,1800,1803,1804,1807],{"color":1789,"icon":1790},"warning","i-lucide-triangle-alert","Function-valued ",[553,1793,1251],{},[553,1795,1674],{}," cannot be declared in ",[553,1798,573],{}," or a Nitro module's options, that config is serialized to JSON at build time, which drops functions. Declare them at runtime with ",[553,1801,1802],{},"initLogger()"," from a server plugin, or with ",[553,1805,1806],{},"createEvlog()",". The modules emit a build-time warning if you do it anyway.",[1033,1809,1811],{"id":1810},"disable-built-ins","Disable Built-ins",[535,1813,1814],{},"If you only want custom redaction:",[569,1816,1818],{"className":571,"code":1817,"language":574,"meta":575,"style":575},"evlog: {\n  redact: {\n    builtins: false,\n    paths: ['user.ssn'],\n    patterns: [\u002FINTERNAL_\\w+\u002Fg],\n  }\n}\n",[553,1819,1820,1828,1836,1846,1865,1886,1890],{"__ignoreMap":575},[579,1821,1822,1824,1826],{"class":581,"line":582},[579,1823,794],{"class":1064},[579,1825,611],{"class":600},[579,1827,640],{"class":600},[579,1829,1830,1832,1834],{"class":581,"line":604},[579,1831,758],{"class":1064},[579,1833,611],{"class":600},[579,1835,640],{"class":600},[579,1837,1838,1840,1842,1844],{"class":581,"line":632},[579,1839,1300],{"class":1064},[579,1841,611],{"class":600},[579,1843,652],{"class":651},[579,1845,629],{"class":600},[579,1847,1848,1850,1852,1854,1856,1859,1861,1863],{"class":581,"line":643},[579,1849,1081],{"class":1064},[579,1851,611],{"class":600},[579,1853,614],{"class":607},[579,1855,617],{"class":600},[579,1857,1858],{"class":620},"user.ssn",[579,1860,617],{"class":600},[579,1862,626],{"class":607},[579,1864,629],{"class":600},[579,1866,1867,1869,1871,1873,1875,1878,1880,1882,1884],{"class":581,"line":657},[579,1868,1366],{"class":1064},[579,1870,611],{"class":600},[579,1872,614],{"class":607},[579,1874,1373],{"class":600},[579,1876,1877],{"class":620},"INTERNAL_\\w",[579,1879,1379],{"class":600},[579,1881,1383],{"class":1382},[579,1883,626],{"class":607},[579,1885,629],{"class":600},[579,1887,1888],{"class":581,"line":663},[579,1889,1158],{"class":600},[579,1891,1892],{"class":581,"line":1132},[579,1893,1164],{"class":600},[558,1895,1897],{"id":1896},"configuration-reference","Configuration Reference",[875,1899,1900,1914],{},[878,1901,1902],{},[881,1903,1904,1907,1909,1912],{},[884,1905,1906],{},"Option",[884,1908,1584],{},[884,1910,1911],{},"Default",[884,1913,1587],{},[894,1915,1916,1941,1967,1988,2007,2026],{},[881,1917,1918,1923,1928,1934],{},[899,1919,1920],{},[553,1921,1922],{},"redact",[899,1924,1925],{},[553,1926,1927],{},"boolean | RedactConfig",[899,1929,1930,1933],{},[553,1931,1932],{},"true"," in production",[899,1935,1936,1937,1940],{},"Enabled by default in production. ",[553,1938,1939],{},"false"," to disable. Object for fine-grained control",[881,1942,1943,1947,1951,1956],{},[899,1944,1945],{},[553,1946,1042],{},[899,1948,1949],{},[553,1950,1637],{},[899,1952,1953],{},[553,1954,1955],{},"undefined",[899,1957,1958,1959,1214,1961,1214,1963,1214,1965,1516],{},"Dot-notation paths with globs (",[553,1960,1046],{},[553,1962,1050],{},[553,1964,1108],{},[553,1966,1137],{},[881,1968,1969,1973,1978,1982],{},[899,1970,1971],{},[553,1972,1255],{},[899,1974,1975],{},[553,1976,1977],{},"RegExp[]",[899,1979,1980],{},[553,1981,1955],{},[899,1983,1984,1985,1987],{},"Custom regex on string values. Uses flat ",[553,1986,1251],{}," string",[881,1989,1990,1994,1999,2002],{},[899,1991,1992],{},[553,1993,1779],{},[899,1995,1996],{},[553,1997,1998],{},"false | string[]",[899,2000,2001],{},"All enabled",[899,2003,2004,2006],{},[553,2005,1939],{}," disables built-ins. Array selects specific ones",[881,2008,2009,2013,2018,2023],{},[899,2010,2011],{},[553,2012,1251],{},[899,2014,2015],{},[553,2016,2017],{},"string | (matched, ctx) => string",[899,2019,2020],{},[553,2021,2022],{},"'[REDACTED]'",[899,2024,2025],{},"Replacement for paths and custom patterns. Built-ins use smart masking instead. A function computes it from the matched value",[881,2027,2028,2032,2037,2041],{},[899,2029,2030],{},[553,2031,1674],{},[899,2033,2034],{},[553,2035,2036],{},"(event) => void",[899,2038,2039],{},[553,2040,1955],{},[899,2042,2043],{},"Escape hatch for policies that are conditional, tenant-scoped, or allowlist-shaped. Runs before the declarative stages",[535,2045,2046,2047,1214,2049,1214,2051,1214,2053,1214,2055,1214,2057,1214,2059,855],{},"Available built-in names: ",[553,2048,903],{},[553,2050,920],{},[553,2052,937],{},[553,2054,954],{},[553,2056,971],{},[553,2058,988],{},[553,2060,1005],{},[558,2062,2064],{"id":2063},"where-redaction-runs-in-the-pipeline","Where redaction runs in the pipeline",[535,2066,2067],{},"Redaction runs inside the emit pipeline, after the wide event is fully built but before any output:",[2069,2070,2071,2081,2089,2095,2101,2107],"ol",{},[2072,2073,2074,2077,2078,2080],"li",{},[539,2075,2076],{},"Transform",": your ",[553,2079,1674],{}," hook, if any, sees the raw event first",[2072,2082,2083,2086,2087],{},[539,2084,2085],{},"Path redaction",": exact paths and globs replaced with ",[553,2088,872],{},[2072,2090,2091,2094],{},[539,2092,2093],{},"Smart masking",": built-in patterns scan all string values recursively with partial masking",[2072,2096,2097,2100],{},[539,2098,2099],{},"Pattern redaction",": custom regex patterns scan all string values with flat replacement",[2072,2102,2103,2106],{},[539,2104,2105],{},"Console output",": masked event printed to stdout",[2072,2108,2109,2112],{},[539,2110,2111],{},"Drain",": masked event sent to external services",[535,2114,2115,2116,2119,2120,2122,2123,855],{},"Redaction is the only stage that runs before the console write. ",[553,2117,2118],{},"enrich"," and drains run after it, so they cannot scrub what has already reached stdout. Anything that needs to happen before output belongs in ",[553,2121,1674],{}," or a function-valued ",[553,2124,1251],{},[1017,2126,2127,2128,2131],{"color":1019,"icon":27},"Redaction runs ",[539,2129,2130],{},"after"," the HTTP response is sent, so it adds zero latency to your API responses.",[558,2133,2135],{"id":2134},"a-configuration-that-ships","A configuration that ships",[535,2137,2138],{},"Redaction is already on by default in production. Combine with sampling for a typical setup:",[566,2140,2141,2327,2469],{},[569,2142,2144],{"className":571,"code":2143,"filename":573,"language":574,"meta":575,"style":575},"export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    env: { service: 'my-app' },\n  },\n  $production: {\n    evlog: {\n      sampling: {\n        rates: { info: 10, debug: 0 },\n        keep: [{ status: 400 }, { duration: 1000 }],\n      },\n    },\n  },\n})\n",[553,2145,2146,2158,2176,2184,2205,2209,2218,2227,2236,2265,2304,2310,2315,2320],{"__ignoreMap":575},[579,2147,2148,2150,2152,2154,2156],{"class":581,"line":582},[579,2149,586],{"class":585},[579,2151,589],{"class":585},[579,2153,593],{"class":592},[579,2155,597],{"class":596},[579,2157,601],{"class":600},[579,2159,2160,2162,2164,2166,2168,2170,2172,2174],{"class":581,"line":604},[579,2161,608],{"class":607},[579,2163,611],{"class":600},[579,2165,614],{"class":596},[579,2167,617],{"class":600},[579,2169,621],{"class":620},[579,2171,617],{"class":600},[579,2173,626],{"class":596},[579,2175,629],{"class":600},[579,2177,2178,2180,2182],{"class":581,"line":632},[579,2179,635],{"class":607},[579,2181,611],{"class":600},[579,2183,640],{"class":600},[579,2185,2186,2189,2191,2193,2195,2197,2199,2201,2203],{"class":581,"line":643},[579,2187,2188],{"class":607},"    env",[579,2190,611],{"class":600},[579,2192,683],{"class":600},[579,2194,821],{"class":607},[579,2196,611],{"class":600},[579,2198,695],{"class":600},[579,2200,749],{"class":620},[579,2202,617],{"class":600},[579,2204,832],{"class":600},[579,2206,2207],{"class":581,"line":657},[579,2208,660],{"class":600},[579,2210,2211,2214,2216],{"class":581,"line":663},[579,2212,2213],{"class":607},"  $production",[579,2215,611],{"class":600},[579,2217,640],{"class":600},[579,2219,2220,2223,2225],{"class":581,"line":1132},[579,2221,2222],{"class":607},"    evlog",[579,2224,611],{"class":600},[579,2226,640],{"class":600},[579,2228,2229,2232,2234],{"class":581,"line":1147},[579,2230,2231],{"class":607},"      sampling",[579,2233,611],{"class":600},[579,2235,640],{"class":600},[579,2237,2238,2241,2243,2245,2248,2250,2253,2255,2258,2260,2263],{"class":581,"line":1155},[579,2239,2240],{"class":607},"        rates",[579,2242,611],{"class":600},[579,2244,683],{"class":600},[579,2246,2247],{"class":607}," info",[579,2249,611],{"class":600},[579,2251,2252],{"class":1382}," 10",[579,2254,723],{"class":600},[579,2256,2257],{"class":607}," debug",[579,2259,611],{"class":600},[579,2261,2262],{"class":1382}," 0",[579,2264,832],{"class":600},[579,2266,2267,2270,2272,2274,2277,2280,2282,2285,2288,2290,2293,2295,2298,2300,2302],{"class":581,"line":1161},[579,2268,2269],{"class":607},"        keep",[579,2271,611],{"class":600},[579,2273,614],{"class":596},[579,2275,2276],{"class":600},"{",[579,2278,2279],{"class":607}," status",[579,2281,611],{"class":600},[579,2283,2284],{"class":1382}," 400",[579,2286,2287],{"class":600}," },",[579,2289,683],{"class":600},[579,2291,2292],{"class":607}," duration",[579,2294,611],{"class":600},[579,2296,2297],{"class":1382}," 1000",[579,2299,689],{"class":600},[579,2301,626],{"class":596},[579,2303,629],{"class":600},[579,2305,2307],{"class":581,"line":2306},11,[579,2308,2309],{"class":600},"      },\n",[579,2311,2313],{"class":581,"line":2312},12,[579,2314,1756],{"class":600},[579,2316,2318],{"class":581,"line":2317},13,[579,2319,660],{"class":600},[579,2321,2323,2325],{"class":581,"line":2322},14,[579,2324,666],{"class":600},[579,2326,669],{"class":596},[569,2328,2330],{"className":571,"code":2329,"filename":673,"language":574,"meta":575,"style":575},"import { createEvlog } from 'evlog\u002Fnext'\n\nexport const { withEvlog, useLogger } = createEvlog({\n  service: 'my-app',\n  sampling: {\n    rates: { info: 10, debug: 0 },\n    keep: [{ status: 400 }, { duration: 1000 }],\n  },\n})\n",[553,2331,2332,2350,2354,2378,2392,2401,2426,2459,2463],{"__ignoreMap":575},[579,2333,2334,2336,2338,2340,2342,2344,2346,2348],{"class":581,"line":582},[579,2335,680],{"class":585},[579,2337,683],{"class":600},[579,2339,686],{"class":596},[579,2341,689],{"class":600},[579,2343,692],{"class":585},[579,2345,695],{"class":600},[579,2347,698],{"class":620},[579,2349,701],{"class":600},[579,2351,2352],{"class":581,"line":604},[579,2353,707],{"emptyLinePlaceholder":706},[579,2355,2356,2358,2360,2362,2364,2366,2368,2370,2372,2374,2376],{"class":581,"line":632},[579,2357,586],{"class":585},[579,2359,715],{"class":714},[579,2361,683],{"class":600},[579,2363,720],{"class":596},[579,2365,723],{"class":600},[579,2367,726],{"class":596},[579,2369,666],{"class":600},[579,2371,731],{"class":600},[579,2373,686],{"class":592},[579,2375,597],{"class":596},[579,2377,601],{"class":600},[579,2379,2380,2382,2384,2386,2388,2390],{"class":581,"line":643},[579,2381,742],{"class":607},[579,2383,611],{"class":600},[579,2385,695],{"class":600},[579,2387,749],{"class":620},[579,2389,617],{"class":600},[579,2391,629],{"class":600},[579,2393,2394,2397,2399],{"class":581,"line":657},[579,2395,2396],{"class":607},"  sampling",[579,2398,611],{"class":600},[579,2400,640],{"class":600},[579,2402,2403,2406,2408,2410,2412,2414,2416,2418,2420,2422,2424],{"class":581,"line":663},[579,2404,2405],{"class":607},"    rates",[579,2407,611],{"class":600},[579,2409,683],{"class":600},[579,2411,2247],{"class":607},[579,2413,611],{"class":600},[579,2415,2252],{"class":1382},[579,2417,723],{"class":600},[579,2419,2257],{"class":607},[579,2421,611],{"class":600},[579,2423,2262],{"class":1382},[579,2425,832],{"class":600},[579,2427,2428,2431,2433,2435,2437,2439,2441,2443,2445,2447,2449,2451,2453,2455,2457],{"class":581,"line":1132},[579,2429,2430],{"class":607},"    keep",[579,2432,611],{"class":600},[579,2434,614],{"class":596},[579,2436,2276],{"class":600},[579,2438,2279],{"class":607},[579,2440,611],{"class":600},[579,2442,2284],{"class":1382},[579,2444,2287],{"class":600},[579,2446,683],{"class":600},[579,2448,2292],{"class":607},[579,2450,611],{"class":600},[579,2452,2297],{"class":1382},[579,2454,689],{"class":600},[579,2456,626],{"class":596},[579,2458,629],{"class":600},[579,2460,2461],{"class":581,"line":1147},[579,2462,660],{"class":600},[579,2464,2465,2467],{"class":581,"line":1155},[579,2466,666],{"class":600},[579,2468,669],{"class":596},[569,2470,2472],{"className":571,"code":2471,"filename":774,"language":574,"meta":575,"style":575},"import { initLogger } from 'evlog'\n\ninitLogger({\n  env: { service: 'my-app' },\n  sampling: {\n    rates: { info: 10, debug: 0 },\n    keep: [{ status: 400 }, { duration: 1000 }],\n  },\n})\n",[553,2473,2474,2492,2496,2504,2524,2532,2556,2588,2592],{"__ignoreMap":575},[579,2475,2476,2478,2480,2482,2484,2486,2488,2490],{"class":581,"line":582},[579,2477,680],{"class":585},[579,2479,683],{"class":600},[579,2481,785],{"class":596},[579,2483,689],{"class":600},[579,2485,692],{"class":585},[579,2487,695],{"class":600},[579,2489,794],{"class":620},[579,2491,701],{"class":600},[579,2493,2494],{"class":581,"line":604},[579,2495,707],{"emptyLinePlaceholder":706},[579,2497,2498,2500,2502],{"class":581,"line":632},[579,2499,805],{"class":592},[579,2501,597],{"class":596},[579,2503,601],{"class":600},[579,2505,2506,2508,2510,2512,2514,2516,2518,2520,2522],{"class":581,"line":643},[579,2507,814],{"class":607},[579,2509,611],{"class":600},[579,2511,683],{"class":600},[579,2513,821],{"class":607},[579,2515,611],{"class":600},[579,2517,695],{"class":600},[579,2519,749],{"class":620},[579,2521,617],{"class":600},[579,2523,832],{"class":600},[579,2525,2526,2528,2530],{"class":581,"line":657},[579,2527,2396],{"class":607},[579,2529,611],{"class":600},[579,2531,640],{"class":600},[579,2533,2534,2536,2538,2540,2542,2544,2546,2548,2550,2552,2554],{"class":581,"line":663},[579,2535,2405],{"class":607},[579,2537,611],{"class":600},[579,2539,683],{"class":600},[579,2541,2247],{"class":607},[579,2543,611],{"class":600},[579,2545,2252],{"class":1382},[579,2547,723],{"class":600},[579,2549,2257],{"class":607},[579,2551,611],{"class":600},[579,2553,2262],{"class":1382},[579,2555,832],{"class":600},[579,2557,2558,2560,2562,2564,2566,2568,2570,2572,2574,2576,2578,2580,2582,2584,2586],{"class":581,"line":1132},[579,2559,2430],{"class":607},[579,2561,611],{"class":600},[579,2563,614],{"class":596},[579,2565,2276],{"class":600},[579,2567,2279],{"class":607},[579,2569,611],{"class":600},[579,2571,2284],{"class":1382},[579,2573,2287],{"class":600},[579,2575,683],{"class":600},[579,2577,2292],{"class":607},[579,2579,611],{"class":600},[579,2581,2297],{"class":1382},[579,2583,689],{"class":600},[579,2585,626],{"class":596},[579,2587,629],{"class":600},[579,2589,2590],{"class":581,"line":1147},[579,2591,660],{"class":600},[579,2593,2594,2596],{"class":581,"line":1155},[579,2595,666],{"class":600},[579,2597,669],{"class":596},[558,2599,2601],{"id":2600},"see-what-a-redacted-event-looks-like","See what a redacted event looks like",[535,2603,2604],{},"Without redaction, sensitive data lands in your logs and drains:",[569,2606,2610],{"className":2607,"code":2608,"language":2609,"meta":575,"style":575},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"user\": { \"email\": \"alice@example.com\", \"ip\": \"192.168.1.42\" },\n  \"payment\": { \"card\": \"4111111111111111\" },\n  \"auth\": \"Bearer sk_live_abc123def456\"\n}\n","json",[553,2611,2612,2616,2666,2696,2715],{"__ignoreMap":575},[579,2613,2614],{"class":581,"line":582},[579,2615,601],{"class":600},[579,2617,2618,2621,2624,2627,2629,2631,2634,2636,2638,2640,2642,2644,2646,2648,2650,2653,2655,2657,2659,2662,2664],{"class":581,"line":604},[579,2619,2620],{"class":600},"  \"",[579,2622,2623],{"class":714},"user",[579,2625,2626],{"class":600},"\"",[579,2628,611],{"class":600},[579,2630,683],{"class":600},[579,2632,2633],{"class":600}," \"",[579,2635,920],{"class":1064},[579,2637,2626],{"class":600},[579,2639,611],{"class":600},[579,2641,2633],{"class":600},[579,2643,925],{"class":620},[579,2645,2626],{"class":600},[579,2647,723],{"class":600},[579,2649,2633],{"class":600},[579,2651,2652],{"class":1064},"ip",[579,2654,2626],{"class":600},[579,2656,611],{"class":600},[579,2658,2633],{"class":600},[579,2660,2661],{"class":620},"192.168.1.42",[579,2663,2626],{"class":600},[579,2665,832],{"class":600},[579,2667,2668,2670,2673,2675,2677,2679,2681,2684,2686,2688,2690,2692,2694],{"class":581,"line":632},[579,2669,2620],{"class":600},[579,2671,2672],{"class":714},"payment",[579,2674,2626],{"class":600},[579,2676,611],{"class":600},[579,2678,683],{"class":600},[579,2680,2633],{"class":600},[579,2682,2683],{"class":1064},"card",[579,2685,2626],{"class":600},[579,2687,611],{"class":600},[579,2689,2633],{"class":600},[579,2691,908],{"class":620},[579,2693,2626],{"class":600},[579,2695,832],{"class":600},[579,2697,2698,2700,2703,2705,2707,2709,2712],{"class":581,"line":643},[579,2699,2620],{"class":600},[579,2701,2702],{"class":714},"auth",[579,2704,2626],{"class":600},[579,2706,611],{"class":600},[579,2708,2633],{"class":600},[579,2710,2711],{"class":620},"Bearer sk_live_abc123def456",[579,2713,2714],{"class":600},"\"\n",[579,2716,2717],{"class":581,"line":657},[579,2718,1164],{"class":600},[535,2720,2721,2722,611],{},"With ",[553,2723,854],{},[569,2725,2727],{"className":2607,"code":2726,"language":2609,"meta":575,"style":575},"{\n  \"user\": { \"email\": \"a***@***.com\", \"ip\": \"***.***.***.42\" },\n  \"payment\": { \"card\": \"****1111\" },\n  \"auth\": \"Bearer ***\"\n}\n",[553,2728,2729,2733,2778,2806,2822],{"__ignoreMap":575},[579,2730,2731],{"class":581,"line":582},[579,2732,601],{"class":600},[579,2734,2735,2737,2739,2741,2743,2745,2747,2749,2751,2753,2755,2757,2759,2761,2763,2765,2767,2769,2771,2774,2776],{"class":581,"line":604},[579,2736,2620],{"class":600},[579,2738,2623],{"class":714},[579,2740,2626],{"class":600},[579,2742,611],{"class":600},[579,2744,683],{"class":600},[579,2746,2633],{"class":600},[579,2748,920],{"class":1064},[579,2750,2626],{"class":600},[579,2752,611],{"class":600},[579,2754,2633],{"class":600},[579,2756,930],{"class":620},[579,2758,2626],{"class":600},[579,2760,723],{"class":600},[579,2762,2633],{"class":600},[579,2764,2652],{"class":1064},[579,2766,2626],{"class":600},[579,2768,611],{"class":600},[579,2770,2633],{"class":600},[579,2772,2773],{"class":620},"***.***.***.42",[579,2775,2626],{"class":600},[579,2777,832],{"class":600},[579,2779,2780,2782,2784,2786,2788,2790,2792,2794,2796,2798,2800,2802,2804],{"class":581,"line":632},[579,2781,2620],{"class":600},[579,2783,2672],{"class":714},[579,2785,2626],{"class":600},[579,2787,611],{"class":600},[579,2789,683],{"class":600},[579,2791,2633],{"class":600},[579,2793,2683],{"class":1064},[579,2795,2626],{"class":600},[579,2797,611],{"class":600},[579,2799,2633],{"class":600},[579,2801,913],{"class":620},[579,2803,2626],{"class":600},[579,2805,832],{"class":600},[579,2807,2808,2810,2812,2814,2816,2818,2820],{"class":581,"line":643},[579,2809,2620],{"class":600},[579,2811,2702],{"class":714},[579,2813,2626],{"class":600},[579,2815,611],{"class":600},[579,2817,2633],{"class":600},[579,2819,998],{"class":620},[579,2821,2714],{"class":600},[579,2823,2824],{"class":581,"line":657},[579,2825,1164],{"class":600},[535,2827,2828],{},"Same debugging context, no PII in your Axiom\u002FDatadog\u002FSentry.",[558,2830,2832],{"id":2831},"next-steps","Next Steps",[2834,2835,2836,2842,2847],"ul",{},[2072,2837,2838,2841],{},[2839,2840,513],"a",{"href":514}," - Security guidelines and production checklist",[2072,2843,2844,2846],{},[2839,2845,59],{"href":60}," - Control log volume in production",[2072,2848,2849,2851],{},[2839,2850,500],{"href":501}," - Full configuration reference",[2853,2854,2855],"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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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);}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 .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 .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}",{"title":575,"searchDepth":604,"depth":604,"links":2857},[2858,2859,2860,2868,2869,2870,2871,2872],{"id":560,"depth":604,"text":561},{"id":861,"depth":604,"text":862},{"id":1031,"depth":604,"text":500,"children":2861},[2862,2863,2864,2865,2866,2867],{"id":1035,"depth":632,"text":1036},{"id":1270,"depth":632,"text":1271},{"id":1333,"depth":632,"text":1334},{"id":1426,"depth":632,"text":1427},{"id":1667,"depth":632,"text":1668},{"id":1810,"depth":632,"text":1811},{"id":1896,"depth":604,"text":1897},{"id":2063,"depth":604,"text":2064},{"id":2134,"depth":604,"text":2135},{"id":2600,"depth":604,"text":2601},{"id":2831,"depth":604,"text":2832},"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.","md",[2876,2879],{"label":513,"icon":376,"to":514,"color":2877,"variant":2878},"neutral","subtle",{"label":500,"icon":503,"to":501,"color":2877,"variant":2878},{},{"icon":66},{"title":63,"description":2873},"BddDysgE5EvJnZL6femnn3q9qDtIP8Ilo0sFEBXWQXI",[2885,2887],{"title":59,"path":60,"stem":61,"description":2886,"children":-1},"[object Object]",{"title":68,"path":69,"stem":70,"description":2888,"icon":71,"children":-1},"Add compile-time type safety to your wide events with TypeScript module augmentation. Prevent typos and ensure consistent field names across your codebase.",1786800770170]