[{"data":1,"prerenderedAt":2889},["ShallowReactive",2],{"navigation_docs":3,"-learn-redaction":528,"-learn-redaction-surround":2884},[4,29,76,122,304,435,496],{"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,431],{"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},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers",{"title":432,"path":433,"stem":434},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve",{"title":436,"path":437,"stem":438,"children":439,"page":28},"Extend","\u002Fextend","6.extend",[440,444,449,454,458,463,467,471,476,481,486,491],{"title":128,"path":441,"stem":442,"icon":443},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":445,"path":446,"stem":447,"icon":448},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":450,"path":451,"stem":452,"icon":453},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":455,"path":456,"stem":457,"icon":448},"Diagnostics channel","\u002Fextend\u002Fdiagnostics-channel","6.extend\u002F11.diagnostics-channel",{"title":459,"path":460,"stem":461,"icon":462},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":403,"path":464,"stem":465,"icon":466},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":468,"path":469,"stem":470},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":472,"path":473,"stem":474,"icon":475},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers","i-lucide-sparkles",{"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,"icon":495},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":424,"path":497,"stem":498,"children":499,"page":28},"\u002Freference","7.reference",[500,504,507,512,516,520,524],{"title":501,"path":502,"stem":503},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration",{"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},"evlog vs pino, winston, consola","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers",{"title":521,"path":522,"stem":523,"icon":475},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"title":525,"path":526,"stem":527},"Log cost","\u002Freference\u002Fcost","7.reference\u002F7.cost",{"id":529,"title":63,"body":530,"description":2872,"extension":2873,"links":2874,"meta":2880,"navigation":2881,"path":64,"seo":2882,"stem":65,"__hash__":2883},"docs\u002F2.learn\u002F6.redaction.md",{"type":531,"value":532,"toc":2855},"minimark",[533,545,556,561,564,848,855,858,862,873,1015,1028,1031,1036,1054,1164,1241,1260,1267,1271,1274,1330,1334,1340,1423,1427,1434,1437,1569,1572,1645,1658,1664,1668,1674,1766,1783,1786,1807,1811,1814,1893,1897,2043,2060,2064,2067,2112,2124,2131,2135,2138,2597,2601,2604,2718,2723,2825,2828,2832,2851],[534,535,536,537,541,542,544],"p",{},"Wide events capture comprehensive context, which makes it easy to accidentally log sensitive data. Auto-redaction scrubs PII from events ",[538,539,540],"strong",{},"before"," console output and ",[538,543,540],{}," any drain sees the data.",[534,546,547,550,551,555],{},[538,548,549],{},"Redaction is enabled by default in production"," (",[552,553,554],"code",{},"NODE_ENV === 'production'","). In development, it is off so you see full values for debugging. No configuration needed, just deploy.",[557,558,560],"h2",{"id":559},"opting-out","Opting Out",[534,562,563],{},"If you need to disable redaction in production:",[565,566,567,669,770],"code-group",{},[568,569,575],"pre",{"className":570,"code":571,"filename":572,"language":573,"meta":574,"style":574},"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","",[552,576,577,601,629,640,654,660],{"__ignoreMap":574},[578,579,582,586,589,593,597],"span",{"class":580,"line":581},"line",1,[578,583,585],{"class":584},"s7zQu","export",[578,587,588],{"class":584}," default",[578,590,592],{"class":591},"s2Zo4"," defineNuxtConfig",[578,594,596],{"class":595},"sTEyZ","(",[578,598,600],{"class":599},"sMK4o","{\n",[578,602,604,608,611,614,617,621,623,626],{"class":580,"line":603},2,[578,605,607],{"class":606},"swJcz","  modules",[578,609,610],{"class":599},":",[578,612,613],{"class":595}," [",[578,615,616],{"class":599},"'",[578,618,620],{"class":619},"sfazB","evlog\u002Fnuxt",[578,622,616],{"class":599},[578,624,625],{"class":595},"]",[578,627,628],{"class":599},",\n",[578,630,632,635,637],{"class":580,"line":631},3,[578,633,634],{"class":606},"  evlog",[578,636,610],{"class":599},[578,638,639],{"class":599}," {\n",[578,641,643,646,648,652],{"class":580,"line":642},4,[578,644,645],{"class":606},"    redact",[578,647,610],{"class":599},[578,649,651],{"class":650},"sfNiH"," false",[578,653,628],{"class":599},[578,655,657],{"class":580,"line":656},5,[578,658,659],{"class":599},"  },\n",[578,661,663,666],{"class":580,"line":662},6,[578,664,665],{"class":599},"}",[578,667,668],{"class":595},")\n",[568,670,673],{"className":570,"code":671,"filename":672,"language":573,"meta":574,"style":574},"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)",[552,674,675,701,707,737,753,764],{"__ignoreMap":574},[578,676,677,680,683,686,689,692,695,698],{"class":580,"line":581},[578,678,679],{"class":584},"import",[578,681,682],{"class":599}," {",[578,684,685],{"class":595}," createEvlog",[578,687,688],{"class":599}," }",[578,690,691],{"class":584}," from",[578,693,694],{"class":599}," '",[578,696,697],{"class":619},"evlog\u002Fnext",[578,699,700],{"class":599},"'\n",[578,702,703],{"class":580,"line":603},[578,704,706],{"emptyLinePlaceholder":705},true,"\n",[578,708,709,711,715,717,720,723,726,728,731,733,735],{"class":580,"line":631},[578,710,585],{"class":584},[578,712,714],{"class":713},"spNyl"," const",[578,716,682],{"class":599},[578,718,719],{"class":595}," withEvlog",[578,721,722],{"class":599},",",[578,724,725],{"class":595}," useLogger ",[578,727,665],{"class":599},[578,729,730],{"class":599}," =",[578,732,685],{"class":591},[578,734,596],{"class":595},[578,736,600],{"class":599},[578,738,739,742,744,746,749,751],{"class":580,"line":642},[578,740,741],{"class":606},"  service",[578,743,610],{"class":599},[578,745,694],{"class":599},[578,747,748],{"class":619},"my-app",[578,750,616],{"class":599},[578,752,628],{"class":599},[578,754,755,758,760,762],{"class":580,"line":656},[578,756,757],{"class":606},"  redact",[578,759,610],{"class":599},[578,761,651],{"class":650},[578,763,628],{"class":599},[578,765,766,768],{"class":580,"line":662},[578,767,665],{"class":599},[578,769,668],{"class":595},[568,771,774],{"className":570,"code":772,"filename":773,"language":573,"meta":574,"style":574},"import { initLogger } from 'evlog'\n\ninitLogger({\n  env: { service: 'my-app' },\n  redact: false,\n})\n","index.ts (Hono \u002F Express \u002F Fastify)",[552,775,776,796,800,809,832,842],{"__ignoreMap":574},[578,777,778,780,782,785,787,789,791,794],{"class":580,"line":581},[578,779,679],{"class":584},[578,781,682],{"class":599},[578,783,784],{"class":595}," initLogger",[578,786,688],{"class":599},[578,788,691],{"class":584},[578,790,694],{"class":599},[578,792,793],{"class":619},"evlog",[578,795,700],{"class":599},[578,797,798],{"class":580,"line":603},[578,799,706],{"emptyLinePlaceholder":705},[578,801,802,805,807],{"class":580,"line":631},[578,803,804],{"class":591},"initLogger",[578,806,596],{"class":595},[578,808,600],{"class":599},[578,810,811,814,816,818,821,823,825,827,829],{"class":580,"line":642},[578,812,813],{"class":606},"  env",[578,815,610],{"class":599},[578,817,682],{"class":599},[578,819,820],{"class":606}," service",[578,822,610],{"class":599},[578,824,694],{"class":599},[578,826,748],{"class":619},[578,828,616],{"class":599},[578,830,831],{"class":599}," },\n",[578,833,834,836,838,840],{"class":580,"line":656},[578,835,757],{"class":606},[578,837,610],{"class":599},[578,839,651],{"class":650},[578,841,628],{"class":599},[578,843,844,846],{"class":580,"line":662},[578,845,665],{"class":599},[578,847,668],{"class":595},[534,849,850,851,854],{},"You can also enable redaction explicitly in development with ",[552,852,853],{},"redact: true",".",[856,857],"redaction-stream",{},[557,859,861],{"id":860},"smart-masking","Smart Masking",[534,863,864,865,868,869,872],{},"Built-in patterns use ",[538,866,867],{},"partial masking"," instead of flat ",[552,870,871],{},"[REDACTED]",", preserving enough context for debugging while protecting the actual data.",[874,875,876,892],"table",{},[877,878,879],"thead",{},[880,881,882,886,889],"tr",{},[883,884,885],"th",{},"Pattern",[883,887,888],{},"Example Input",[883,890,891],{},"Masked Output",[893,894,895,913,930,947,964,981,998],"tbody",{},[880,896,897,903,908],{},[898,899,900],"td",{},[552,901,902],{},"creditCard",[898,904,905],{},[552,906,907],{},"4111111111111111",[898,909,910],{},[552,911,912],{},"****1111",[880,914,915,920,925],{},[898,916,917],{},[552,918,919],{},"email",[898,921,922],{},[552,923,924],{},"alice@example.com",[898,926,927],{},[552,928,929],{},"a***@***.com",[880,931,932,937,942],{},[898,933,934],{},[552,935,936],{},"ipv4",[898,938,939],{},[552,940,941],{},"192.168.1.100",[898,943,944],{},[552,945,946],{},"***.***.***.100",[880,948,949,954,959],{},[898,950,951],{},[552,952,953],{},"phone",[898,955,956],{},[552,957,958],{},"+33 6 12 34 56 78",[898,960,961],{},[552,962,963],{},"+33 ****5678",[880,965,966,971,976],{},[898,967,968],{},[552,969,970],{},"jwt",[898,972,973],{},[552,974,975],{},"eyJhbGciOiJIUzI1NiIs...",[898,977,978],{},[552,979,980],{},"eyJ***.***",[880,982,983,988,993],{},[898,984,985],{},[552,986,987],{},"bearer",[898,989,990],{},[552,991,992],{},"Bearer sk_live_abc123...",[898,994,995],{},[552,996,997],{},"Bearer ***",[880,999,1000,1005,1010],{},[898,1001,1002],{},[552,1003,1004],{},"iban",[898,1006,1007],{},[552,1008,1009],{},"FR76 3000 6000 0112 ...189",[898,1011,1012],{},[552,1013,1014],{},"FR76****189",[1016,1017,1020,1023,1024,1027],"callout",{"color":1018,"icon":1019},"info","i-lucide-info",[552,1021,1022],{},"127.0.0.1"," and ",[552,1025,1026],{},"0.0.0.0"," are excluded from IPv4 masking since they are not real client addresses.",[557,1029,501],{"id":1030},"configuration",[1032,1033,1035],"h3",{"id":1034},"path-patterns","Path Patterns",[534,1037,1038,1039,1042,1043,1046,1047,1050,1051,610],{},"Use a single ",[552,1040,1041],{},"paths"," array with dot-notation and globs. A bare segment like ",[552,1044,1045],{},"password"," is shorthand for ",[552,1048,1049],{},"**.password",", so it redacts that key at ",[538,1052,1053],{},"any nesting depth",[568,1055,1057],{"className":570,"code":1056,"language":573,"meta":574,"style":574},"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",[552,1058,1059,1068,1076,1086,1101,1115,1129,1144,1152,1158],{"__ignoreMap":574},[578,1060,1061,1064,1066],{"class":580,"line":581},[578,1062,793],{"class":1063},"sBMFI",[578,1065,610],{"class":599},[578,1067,639],{"class":599},[578,1069,1070,1072,1074],{"class":580,"line":603},[578,1071,757],{"class":1063},[578,1073,610],{"class":599},[578,1075,639],{"class":599},[578,1077,1078,1081,1083],{"class":580,"line":631},[578,1079,1080],{"class":1063},"    paths",[578,1082,610],{"class":599},[578,1084,1085],{"class":606}," [\n",[578,1087,1088,1091,1093,1095,1097],{"class":580,"line":642},[578,1089,1090],{"class":599},"      '",[578,1092,1045],{"class":619},[578,1094,616],{"class":599},[578,1096,722],{"class":599},[578,1098,1100],{"class":1099},"sHwdD","              \u002F\u002F same as '**.password'\n",[578,1102,1103,1105,1108,1110,1112],{"class":580,"line":656},[578,1104,1090],{"class":599},[578,1106,1107],{"class":619},"*_token",[578,1109,616],{"class":599},[578,1111,722],{"class":599},[578,1113,1114],{"class":1099},"               \u002F\u002F key-name glob at any depth\n",[578,1116,1117,1119,1122,1124,1126],{"class":580,"line":662},[578,1118,1090],{"class":599},[578,1120,1121],{"class":619},"headers.x-forwarded-for",[578,1123,616],{"class":599},[578,1125,722],{"class":599},[578,1127,1128],{"class":1099}," \u002F\u002F exact path\n",[578,1130,1132,1134,1137,1139,1141],{"class":580,"line":1131},7,[578,1133,1090],{"class":599},[578,1135,1136],{"class":619},"user.*",[578,1138,616],{"class":599},[578,1140,722],{"class":599},[578,1142,1143],{"class":1099},"                \u002F\u002F everything directly under user\n",[578,1145,1147,1150],{"class":580,"line":1146},8,[578,1148,1149],{"class":606},"    ]",[578,1151,628],{"class":599},[578,1153,1155],{"class":580,"line":1154},9,[578,1156,1157],{"class":599},"  }\n",[578,1159,1161],{"class":580,"line":1160},10,[578,1162,1163],{"class":599},"}\n",[874,1165,1166,1175],{},[877,1167,1168],{},[880,1169,1170,1172],{},[883,1171,885],{},[883,1173,1174],{},"Matches",[893,1176,1177,1187,1201,1217,1231],{},[880,1178,1179,1184],{},[898,1180,1181],{},[552,1182,1183],{},"user.email",[898,1185,1186],{},"Exact path only",[880,1188,1189,1196],{},[898,1190,1191,1193,1194],{},[552,1192,1045],{}," or ",[552,1195,1049],{},[898,1197,1198,1200],{},[552,1199,1045],{}," key at any depth",[880,1202,1203,1207],{},[898,1204,1205],{},[552,1206,1107],{},[898,1208,1209,1210,1213,1214],{},"Key names like ",[552,1211,1212],{},"access_token",", ",[552,1215,1216],{},"refresh_token",[880,1218,1219,1223],{},[898,1220,1221],{},[552,1222,1136],{},[898,1224,1225,1213,1227,1230],{},[552,1226,1183],{},[552,1228,1229],{},"user.password",", etc.",[880,1232,1233,1238],{},[898,1234,1235],{},[552,1236,1237],{},"audit.changes.*.password",[898,1239,1240],{},"Mixed exact + wildcard segments",[534,1242,1243,1244,1247,1248,1251,1252,1255,1256,1259],{},"Path redaction replaces the ",[538,1245,1246],{},"entire value"," (including nested objects) with ",[552,1249,1250],{},"replacement",". Use ",[552,1253,1254],{},"patterns"," when you need regex on ",[538,1257,1258],{},"string values"," inside fields.",[534,1261,1262,1263,1266],{},"This matches ",[552,1264,1265],{},"auditDiff({ redactPaths: ['password'] })",", the same glob syntax, applied globally at emit time.",[1032,1268,1270],{"id":1269},"selective-built-ins","Selective Built-ins",[534,1272,1273],{},"Pick only the patterns you need:",[568,1275,1277],{"className":570,"code":1276,"language":573,"meta":574,"style":574},"evlog: {\n  redact: {\n    builtins: ['email', 'creditCard'],\n  }\n}\n",[552,1278,1279,1287,1295,1322,1326],{"__ignoreMap":574},[578,1280,1281,1283,1285],{"class":580,"line":581},[578,1282,793],{"class":1063},[578,1284,610],{"class":599},[578,1286,639],{"class":599},[578,1288,1289,1291,1293],{"class":580,"line":603},[578,1290,757],{"class":1063},[578,1292,610],{"class":599},[578,1294,639],{"class":599},[578,1296,1297,1300,1302,1304,1306,1308,1310,1312,1314,1316,1318,1320],{"class":580,"line":631},[578,1298,1299],{"class":1063},"    builtins",[578,1301,610],{"class":599},[578,1303,613],{"class":606},[578,1305,616],{"class":599},[578,1307,919],{"class":619},[578,1309,616],{"class":599},[578,1311,722],{"class":599},[578,1313,694],{"class":599},[578,1315,902],{"class":619},[578,1317,616],{"class":599},[578,1319,625],{"class":606},[578,1321,628],{"class":599},[578,1323,1324],{"class":580,"line":642},[578,1325,1157],{"class":599},[578,1327,1328],{"class":580,"line":656},[578,1329,1163],{"class":599},[1032,1331,1333],{"id":1332},"custom-patterns","Custom Patterns",[534,1335,1336,1337,1339],{},"Add your own regex patterns. These use the flat ",[552,1338,1250],{}," string, not smart masking:",[568,1341,1343],{"className":570,"code":1342,"language":573,"meta":574,"style":574},"evlog: {\n  redact: {\n    patterns: [\u002FSECRET_\\w+\u002Fg, \u002Fsk_live_\\w+\u002Fg],\n    replacement: '***',\n  }\n}\n",[552,1344,1345,1353,1361,1399,1415,1419],{"__ignoreMap":574},[578,1346,1347,1349,1351],{"class":580,"line":581},[578,1348,793],{"class":1063},[578,1350,610],{"class":599},[578,1352,639],{"class":599},[578,1354,1355,1357,1359],{"class":580,"line":603},[578,1356,757],{"class":1063},[578,1358,610],{"class":599},[578,1360,639],{"class":599},[578,1362,1363,1366,1368,1370,1373,1376,1379,1383,1385,1388,1391,1393,1395,1397],{"class":580,"line":631},[578,1364,1365],{"class":1063},"    patterns",[578,1367,610],{"class":599},[578,1369,613],{"class":606},[578,1371,1372],{"class":599},"\u002F",[578,1374,1375],{"class":619},"SECRET_\\w",[578,1377,1378],{"class":599},"+\u002F",[578,1380,1382],{"class":1381},"sbssI","g",[578,1384,722],{"class":599},[578,1386,1387],{"class":599}," \u002F",[578,1389,1390],{"class":619},"sk_live_\\w",[578,1392,1378],{"class":599},[578,1394,1382],{"class":1381},[578,1396,625],{"class":606},[578,1398,628],{"class":599},[578,1400,1401,1404,1406,1408,1411,1413],{"class":580,"line":642},[578,1402,1403],{"class":1063},"    replacement",[578,1405,610],{"class":599},[578,1407,694],{"class":599},[578,1409,1410],{"class":619},"***",[578,1412,616],{"class":599},[578,1414,628],{"class":599},[578,1416,1417],{"class":580,"line":656},[578,1418,1157],{"class":599},[578,1420,1421],{"class":580,"line":662},[578,1422,1163],{"class":599},[1032,1424,1426],{"id":1425},"computed-replacements","Computed Replacements",[534,1428,1429,1430,1433],{},"When the replacement has to be ",[538,1431,1432],{},"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.",[534,1435,1436],{},"The common case is keeping requests correlatable without exposing the credential that identifies them:",[568,1438,1440],{"className":570,"code":1439,"language":573,"meta":574,"style":574},"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",[552,1441,1442,1450,1458,1496,1554,1558,1564],{"__ignoreMap":574},[578,1443,1444,1446,1448],{"class":580,"line":581},[578,1445,804],{"class":591},[578,1447,596],{"class":595},[578,1449,600],{"class":599},[578,1451,1452,1454,1456],{"class":580,"line":603},[578,1453,757],{"class":606},[578,1455,610],{"class":599},[578,1457,639],{"class":599},[578,1459,1460,1462,1464,1466,1468,1471,1474,1476,1479,1481,1484,1487,1490,1492,1494],{"class":580,"line":631},[578,1461,1365],{"class":606},[578,1463,610],{"class":599},[578,1465,613],{"class":595},[578,1467,1372],{"class":599},[578,1469,1470],{"class":595},"\\\u002F",[578,1472,1473],{"class":619},"public",[578,1475,1470],{"class":595},[578,1477,1478],{"class":619},"claim",[578,1480,1470],{"class":595},[578,1482,1483],{"class":599},"([",[578,1485,1486],{"class":619},"A-Za-z0-9._-",[578,1488,1489],{"class":599},"]{12,})\u002F",[578,1491,1382],{"class":1381},[578,1493,625],{"class":595},[578,1495,628],{"class":599},[578,1497,1498,1500,1502,1504,1508,1510,1513,1516,1519,1522,1525,1528,1531,1534,1536,1539,1542,1545,1547,1549,1552],{"class":580,"line":642},[578,1499,1403],{"class":591},[578,1501,610],{"class":599},[578,1503,550],{"class":599},[578,1505,1507],{"class":1506},"sHdIc","_match",[578,1509,722],{"class":599},[578,1511,1512],{"class":1506}," ctx",[578,1514,1515],{"class":599},")",[578,1517,1518],{"class":713}," =>",[578,1520,1521],{"class":599}," `",[578,1523,1524],{"class":619},"\u002Fpublic\u002Fclaim\u002F[tok:",[578,1526,1527],{"class":599},"${",[578,1529,1530],{"class":591},"fingerprint",[578,1532,1533],{"class":595},"(ctx",[578,1535,854],{"class":599},[578,1537,1538],{"class":595},"groups[",[578,1540,1541],{"class":1381},"0",[578,1543,1544],{"class":595},"])",[578,1546,665],{"class":599},[578,1548,625],{"class":619},[578,1550,1551],{"class":599},"`",[578,1553,628],{"class":599},[578,1555,1556],{"class":580,"line":656},[578,1557,659],{"class":599},[578,1559,1560,1562],{"class":580,"line":662},[578,1561,665],{"class":599},[578,1563,668],{"class":595},[578,1565,1566],{"class":580,"line":1131},[578,1567,1568],{"class":1099},"\u002F\u002F \u002Fpublic\u002Fclaim\u002FeyJhbGciOi...  →  \u002Fpublic\u002Fclaim\u002F[tok:9f3a1c]\n",[534,1570,1571],{},"The function receives the matched value and a context object:",[874,1573,1574,1587],{},[877,1575,1576],{},[880,1577,1578,1581,1584],{},[883,1579,1580],{},"Field",[883,1582,1583],{},"Type",[883,1585,1586],{},"Description",[893,1588,1589,1609,1625],{},[880,1590,1591,1596,1601],{},[898,1592,1593],{},[552,1594,1595],{},"path",[898,1597,1598],{},[552,1599,1600],{},"string",[898,1602,1603,1604,1213,1606,1515],{},"Dot-notation path from the event root (",[552,1605,1183],{},[552,1607,1608],{},"items.0.token",[880,1610,1611,1616,1620],{},[898,1612,1613],{},[552,1614,1615],{},"key",[898,1617,1618],{},[552,1619,1600],{},[898,1621,1622,1623,1515],{},"Leaf key of the field (",[552,1624,919],{},[880,1626,1627,1632,1637],{},[898,1628,1629],{},[552,1630,1631],{},"groups",[898,1633,1634],{},[552,1635,1636],{},"string[]",[898,1638,1639,1640,1642,1643],{},"Capture groups of the matching ",[552,1641,1254],{}," entry. Only set for ",[552,1644,1254],{},[534,1646,1647,1648,1650,1651,1654,1655,1657],{},"For ",[552,1649,1041],{},", the matched value is the ",[538,1652,1653],{},"whole field value",", of any type, since path redaction replaces entire subtrees. For ",[552,1656,1254],{},", it is the matched substring.",[534,1659,1660,1661,1663],{},"If the function throws or returns a non-string, redaction falls back to ",[552,1662,871],{}," and logs the failure. A broken policy degrades to over-redaction, never to leaking the value it was meant to scrub.",[1032,1665,1667],{"id":1666},"conditional-policies","Conditional Policies",[534,1669,1670,1671,610],{},"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 ",[552,1672,1673],{},"transform",[568,1675,1677],{"className":570,"code":1676,"language":573,"meta":574,"style":574},"initLogger({\n  redact: {\n    transform: (event) => {\n      if (event.tenant === 'regulated') delete event.query\n    },\n  },\n})\n",[552,1678,1679,1687,1695,1713,1751,1756,1760],{"__ignoreMap":574},[578,1680,1681,1683,1685],{"class":580,"line":581},[578,1682,804],{"class":591},[578,1684,596],{"class":595},[578,1686,600],{"class":599},[578,1688,1689,1691,1693],{"class":580,"line":603},[578,1690,757],{"class":606},[578,1692,610],{"class":599},[578,1694,639],{"class":599},[578,1696,1697,1700,1702,1704,1707,1709,1711],{"class":580,"line":631},[578,1698,1699],{"class":591},"    transform",[578,1701,610],{"class":599},[578,1703,550],{"class":599},[578,1705,1706],{"class":1506},"event",[578,1708,1515],{"class":599},[578,1710,1518],{"class":713},[578,1712,639],{"class":599},[578,1714,1715,1718,1720,1722,1724,1727,1730,1732,1735,1737,1740,1743,1746,1748],{"class":580,"line":642},[578,1716,1717],{"class":584},"      if",[578,1719,550],{"class":606},[578,1721,1706],{"class":595},[578,1723,854],{"class":599},[578,1725,1726],{"class":595},"tenant",[578,1728,1729],{"class":599}," ===",[578,1731,694],{"class":599},[578,1733,1734],{"class":619},"regulated",[578,1736,616],{"class":599},[578,1738,1739],{"class":606},") ",[578,1741,1742],{"class":599},"delete",[578,1744,1745],{"class":595}," event",[578,1747,854],{"class":599},[578,1749,1750],{"class":595},"query\n",[578,1752,1753],{"class":580,"line":656},[578,1754,1755],{"class":599},"    },\n",[578,1757,1758],{"class":580,"line":662},[578,1759,659],{"class":599},[578,1761,1762,1764],{"class":580,"line":1131},[578,1763,665],{"class":599},[578,1765,668],{"class":595},[534,1767,1768,1770,1771,1773,1774,1213,1776,1779,1780,1782],{},[552,1769,1673],{}," runs ",[538,1772,540],{}," ",[552,1775,1041],{},[552,1777,1778],{},"builtins",", and ",[552,1781,1254],{},", 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.",[534,1784,1785],{},"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.",[1016,1787,1790,1791,1023,1793,1795,1796,1798,1799,1802,1803,1806],{"color":1788,"icon":1789},"warning","i-lucide-triangle-alert","Function-valued ",[552,1792,1250],{},[552,1794,1673],{}," cannot be declared in ",[552,1797,572],{}," or a Nitro module's options, that config is serialized to JSON at build time, which drops functions. Declare them at runtime with ",[552,1800,1801],{},"initLogger()"," from a server plugin, or with ",[552,1804,1805],{},"createEvlog()",". The modules emit a build-time warning if you do it anyway.",[1032,1808,1810],{"id":1809},"disable-built-ins","Disable Built-ins",[534,1812,1813],{},"If you only want custom redaction:",[568,1815,1817],{"className":570,"code":1816,"language":573,"meta":574,"style":574},"evlog: {\n  redact: {\n    builtins: false,\n    paths: ['user.ssn'],\n    patterns: [\u002FINTERNAL_\\w+\u002Fg],\n  }\n}\n",[552,1818,1819,1827,1835,1845,1864,1885,1889],{"__ignoreMap":574},[578,1820,1821,1823,1825],{"class":580,"line":581},[578,1822,793],{"class":1063},[578,1824,610],{"class":599},[578,1826,639],{"class":599},[578,1828,1829,1831,1833],{"class":580,"line":603},[578,1830,757],{"class":1063},[578,1832,610],{"class":599},[578,1834,639],{"class":599},[578,1836,1837,1839,1841,1843],{"class":580,"line":631},[578,1838,1299],{"class":1063},[578,1840,610],{"class":599},[578,1842,651],{"class":650},[578,1844,628],{"class":599},[578,1846,1847,1849,1851,1853,1855,1858,1860,1862],{"class":580,"line":642},[578,1848,1080],{"class":1063},[578,1850,610],{"class":599},[578,1852,613],{"class":606},[578,1854,616],{"class":599},[578,1856,1857],{"class":619},"user.ssn",[578,1859,616],{"class":599},[578,1861,625],{"class":606},[578,1863,628],{"class":599},[578,1865,1866,1868,1870,1872,1874,1877,1879,1881,1883],{"class":580,"line":656},[578,1867,1365],{"class":1063},[578,1869,610],{"class":599},[578,1871,613],{"class":606},[578,1873,1372],{"class":599},[578,1875,1876],{"class":619},"INTERNAL_\\w",[578,1878,1378],{"class":599},[578,1880,1382],{"class":1381},[578,1882,625],{"class":606},[578,1884,628],{"class":599},[578,1886,1887],{"class":580,"line":662},[578,1888,1157],{"class":599},[578,1890,1891],{"class":580,"line":1131},[578,1892,1163],{"class":599},[557,1894,1896],{"id":1895},"configuration-reference","Configuration Reference",[874,1898,1899,1913],{},[877,1900,1901],{},[880,1902,1903,1906,1908,1911],{},[883,1904,1905],{},"Option",[883,1907,1583],{},[883,1909,1910],{},"Default",[883,1912,1586],{},[893,1914,1915,1940,1966,1987,2006,2025],{},[880,1916,1917,1922,1927,1933],{},[898,1918,1919],{},[552,1920,1921],{},"redact",[898,1923,1924],{},[552,1925,1926],{},"boolean | RedactConfig",[898,1928,1929,1932],{},[552,1930,1931],{},"true"," in production",[898,1934,1935,1936,1939],{},"Enabled by default in production. ",[552,1937,1938],{},"false"," to disable. Object for fine-grained control",[880,1941,1942,1946,1950,1955],{},[898,1943,1944],{},[552,1945,1041],{},[898,1947,1948],{},[552,1949,1636],{},[898,1951,1952],{},[552,1953,1954],{},"undefined",[898,1956,1957,1958,1213,1960,1213,1962,1213,1964,1515],{},"Dot-notation paths with globs (",[552,1959,1045],{},[552,1961,1049],{},[552,1963,1107],{},[552,1965,1136],{},[880,1967,1968,1972,1977,1981],{},[898,1969,1970],{},[552,1971,1254],{},[898,1973,1974],{},[552,1975,1976],{},"RegExp[]",[898,1978,1979],{},[552,1980,1954],{},[898,1982,1983,1984,1986],{},"Custom regex on string values. Uses flat ",[552,1985,1250],{}," string",[880,1988,1989,1993,1998,2001],{},[898,1990,1991],{},[552,1992,1778],{},[898,1994,1995],{},[552,1996,1997],{},"false | string[]",[898,1999,2000],{},"All enabled",[898,2002,2003,2005],{},[552,2004,1938],{}," disables built-ins. Array selects specific ones",[880,2007,2008,2012,2017,2022],{},[898,2009,2010],{},[552,2011,1250],{},[898,2013,2014],{},[552,2015,2016],{},"string | (matched, ctx) => string",[898,2018,2019],{},[552,2020,2021],{},"'[REDACTED]'",[898,2023,2024],{},"Replacement for paths and custom patterns. Built-ins use smart masking instead. A function computes it from the matched value",[880,2026,2027,2031,2036,2040],{},[898,2028,2029],{},[552,2030,1673],{},[898,2032,2033],{},[552,2034,2035],{},"(event) => void",[898,2037,2038],{},[552,2039,1954],{},[898,2041,2042],{},"Escape hatch for policies that are conditional, tenant-scoped, or allowlist-shaped. Runs before the declarative stages",[534,2044,2045,2046,1213,2048,1213,2050,1213,2052,1213,2054,1213,2056,1213,2058,854],{},"Available built-in names: ",[552,2047,902],{},[552,2049,919],{},[552,2051,936],{},[552,2053,953],{},[552,2055,970],{},[552,2057,987],{},[552,2059,1004],{},[557,2061,2063],{"id":2062},"how-it-works","How It Works",[534,2065,2066],{},"Redaction runs inside the emit pipeline, after the wide event is fully built but before any output:",[2068,2069,2070,2080,2088,2094,2100,2106],"ol",{},[2071,2072,2073,2076,2077,2079],"li",{},[538,2074,2075],{},"Transform"," — your ",[552,2078,1673],{}," hook, if any, sees the raw event first",[2071,2081,2082,2085,2086],{},[538,2083,2084],{},"Path redaction"," — exact paths and globs replaced with ",[552,2087,871],{},[2071,2089,2090,2093],{},[538,2091,2092],{},"Smart masking"," — built-in patterns scan all string values recursively with partial masking",[2071,2095,2096,2099],{},[538,2097,2098],{},"Pattern redaction"," — custom regex patterns scan all string values with flat replacement",[2071,2101,2102,2105],{},[538,2103,2104],{},"Console output"," — masked event printed to stdout",[2071,2107,2108,2111],{},[538,2109,2110],{},"Drain"," — masked event sent to external services",[534,2113,2114,2115,2118,2119,2121,2122,854],{},"Redaction is the only stage that runs before the console write. ",[552,2116,2117],{},"enrich"," and drains run after it, so they cannot scrub what has already reached stdout. Anything that needs to happen before output belongs in ",[552,2120,1673],{}," or a function-valued ",[552,2123,1250],{},[1016,2125,2126,2127,2130],{"color":1018,"icon":27},"Redaction runs ",[538,2128,2129],{},"after"," the HTTP response is sent, so it adds zero latency to your API responses.",[557,2132,2134],{"id":2133},"production-example","Production Example",[534,2136,2137],{},"Redaction is already on by default in production. Combine with sampling for a typical setup:",[565,2139,2140,2326,2468],{},[568,2141,2143],{"className":570,"code":2142,"filename":572,"language":573,"meta":574,"style":574},"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",[552,2144,2145,2157,2175,2183,2204,2208,2217,2226,2235,2264,2303,2309,2314,2319],{"__ignoreMap":574},[578,2146,2147,2149,2151,2153,2155],{"class":580,"line":581},[578,2148,585],{"class":584},[578,2150,588],{"class":584},[578,2152,592],{"class":591},[578,2154,596],{"class":595},[578,2156,600],{"class":599},[578,2158,2159,2161,2163,2165,2167,2169,2171,2173],{"class":580,"line":603},[578,2160,607],{"class":606},[578,2162,610],{"class":599},[578,2164,613],{"class":595},[578,2166,616],{"class":599},[578,2168,620],{"class":619},[578,2170,616],{"class":599},[578,2172,625],{"class":595},[578,2174,628],{"class":599},[578,2176,2177,2179,2181],{"class":580,"line":631},[578,2178,634],{"class":606},[578,2180,610],{"class":599},[578,2182,639],{"class":599},[578,2184,2185,2188,2190,2192,2194,2196,2198,2200,2202],{"class":580,"line":642},[578,2186,2187],{"class":606},"    env",[578,2189,610],{"class":599},[578,2191,682],{"class":599},[578,2193,820],{"class":606},[578,2195,610],{"class":599},[578,2197,694],{"class":599},[578,2199,748],{"class":619},[578,2201,616],{"class":599},[578,2203,831],{"class":599},[578,2205,2206],{"class":580,"line":656},[578,2207,659],{"class":599},[578,2209,2210,2213,2215],{"class":580,"line":662},[578,2211,2212],{"class":606},"  $production",[578,2214,610],{"class":599},[578,2216,639],{"class":599},[578,2218,2219,2222,2224],{"class":580,"line":1131},[578,2220,2221],{"class":606},"    evlog",[578,2223,610],{"class":599},[578,2225,639],{"class":599},[578,2227,2228,2231,2233],{"class":580,"line":1146},[578,2229,2230],{"class":606},"      sampling",[578,2232,610],{"class":599},[578,2234,639],{"class":599},[578,2236,2237,2240,2242,2244,2247,2249,2252,2254,2257,2259,2262],{"class":580,"line":1154},[578,2238,2239],{"class":606},"        rates",[578,2241,610],{"class":599},[578,2243,682],{"class":599},[578,2245,2246],{"class":606}," info",[578,2248,610],{"class":599},[578,2250,2251],{"class":1381}," 10",[578,2253,722],{"class":599},[578,2255,2256],{"class":606}," debug",[578,2258,610],{"class":599},[578,2260,2261],{"class":1381}," 0",[578,2263,831],{"class":599},[578,2265,2266,2269,2271,2273,2276,2279,2281,2284,2287,2289,2292,2294,2297,2299,2301],{"class":580,"line":1160},[578,2267,2268],{"class":606},"        keep",[578,2270,610],{"class":599},[578,2272,613],{"class":595},[578,2274,2275],{"class":599},"{",[578,2277,2278],{"class":606}," status",[578,2280,610],{"class":599},[578,2282,2283],{"class":1381}," 400",[578,2285,2286],{"class":599}," },",[578,2288,682],{"class":599},[578,2290,2291],{"class":606}," duration",[578,2293,610],{"class":599},[578,2295,2296],{"class":1381}," 1000",[578,2298,688],{"class":599},[578,2300,625],{"class":595},[578,2302,628],{"class":599},[578,2304,2306],{"class":580,"line":2305},11,[578,2307,2308],{"class":599},"      },\n",[578,2310,2312],{"class":580,"line":2311},12,[578,2313,1755],{"class":599},[578,2315,2317],{"class":580,"line":2316},13,[578,2318,659],{"class":599},[578,2320,2322,2324],{"class":580,"line":2321},14,[578,2323,665],{"class":599},[578,2325,668],{"class":595},[568,2327,2329],{"className":570,"code":2328,"filename":672,"language":573,"meta":574,"style":574},"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",[552,2330,2331,2349,2353,2377,2391,2400,2425,2458,2462],{"__ignoreMap":574},[578,2332,2333,2335,2337,2339,2341,2343,2345,2347],{"class":580,"line":581},[578,2334,679],{"class":584},[578,2336,682],{"class":599},[578,2338,685],{"class":595},[578,2340,688],{"class":599},[578,2342,691],{"class":584},[578,2344,694],{"class":599},[578,2346,697],{"class":619},[578,2348,700],{"class":599},[578,2350,2351],{"class":580,"line":603},[578,2352,706],{"emptyLinePlaceholder":705},[578,2354,2355,2357,2359,2361,2363,2365,2367,2369,2371,2373,2375],{"class":580,"line":631},[578,2356,585],{"class":584},[578,2358,714],{"class":713},[578,2360,682],{"class":599},[578,2362,719],{"class":595},[578,2364,722],{"class":599},[578,2366,725],{"class":595},[578,2368,665],{"class":599},[578,2370,730],{"class":599},[578,2372,685],{"class":591},[578,2374,596],{"class":595},[578,2376,600],{"class":599},[578,2378,2379,2381,2383,2385,2387,2389],{"class":580,"line":642},[578,2380,741],{"class":606},[578,2382,610],{"class":599},[578,2384,694],{"class":599},[578,2386,748],{"class":619},[578,2388,616],{"class":599},[578,2390,628],{"class":599},[578,2392,2393,2396,2398],{"class":580,"line":656},[578,2394,2395],{"class":606},"  sampling",[578,2397,610],{"class":599},[578,2399,639],{"class":599},[578,2401,2402,2405,2407,2409,2411,2413,2415,2417,2419,2421,2423],{"class":580,"line":662},[578,2403,2404],{"class":606},"    rates",[578,2406,610],{"class":599},[578,2408,682],{"class":599},[578,2410,2246],{"class":606},[578,2412,610],{"class":599},[578,2414,2251],{"class":1381},[578,2416,722],{"class":599},[578,2418,2256],{"class":606},[578,2420,610],{"class":599},[578,2422,2261],{"class":1381},[578,2424,831],{"class":599},[578,2426,2427,2430,2432,2434,2436,2438,2440,2442,2444,2446,2448,2450,2452,2454,2456],{"class":580,"line":1131},[578,2428,2429],{"class":606},"    keep",[578,2431,610],{"class":599},[578,2433,613],{"class":595},[578,2435,2275],{"class":599},[578,2437,2278],{"class":606},[578,2439,610],{"class":599},[578,2441,2283],{"class":1381},[578,2443,2286],{"class":599},[578,2445,682],{"class":599},[578,2447,2291],{"class":606},[578,2449,610],{"class":599},[578,2451,2296],{"class":1381},[578,2453,688],{"class":599},[578,2455,625],{"class":595},[578,2457,628],{"class":599},[578,2459,2460],{"class":580,"line":1146},[578,2461,659],{"class":599},[578,2463,2464,2466],{"class":580,"line":1154},[578,2465,665],{"class":599},[578,2467,668],{"class":595},[568,2469,2471],{"className":570,"code":2470,"filename":773,"language":573,"meta":574,"style":574},"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",[552,2472,2473,2491,2495,2503,2523,2531,2555,2587,2591],{"__ignoreMap":574},[578,2474,2475,2477,2479,2481,2483,2485,2487,2489],{"class":580,"line":581},[578,2476,679],{"class":584},[578,2478,682],{"class":599},[578,2480,784],{"class":595},[578,2482,688],{"class":599},[578,2484,691],{"class":584},[578,2486,694],{"class":599},[578,2488,793],{"class":619},[578,2490,700],{"class":599},[578,2492,2493],{"class":580,"line":603},[578,2494,706],{"emptyLinePlaceholder":705},[578,2496,2497,2499,2501],{"class":580,"line":631},[578,2498,804],{"class":591},[578,2500,596],{"class":595},[578,2502,600],{"class":599},[578,2504,2505,2507,2509,2511,2513,2515,2517,2519,2521],{"class":580,"line":642},[578,2506,813],{"class":606},[578,2508,610],{"class":599},[578,2510,682],{"class":599},[578,2512,820],{"class":606},[578,2514,610],{"class":599},[578,2516,694],{"class":599},[578,2518,748],{"class":619},[578,2520,616],{"class":599},[578,2522,831],{"class":599},[578,2524,2525,2527,2529],{"class":580,"line":656},[578,2526,2395],{"class":606},[578,2528,610],{"class":599},[578,2530,639],{"class":599},[578,2532,2533,2535,2537,2539,2541,2543,2545,2547,2549,2551,2553],{"class":580,"line":662},[578,2534,2404],{"class":606},[578,2536,610],{"class":599},[578,2538,682],{"class":599},[578,2540,2246],{"class":606},[578,2542,610],{"class":599},[578,2544,2251],{"class":1381},[578,2546,722],{"class":599},[578,2548,2256],{"class":606},[578,2550,610],{"class":599},[578,2552,2261],{"class":1381},[578,2554,831],{"class":599},[578,2556,2557,2559,2561,2563,2565,2567,2569,2571,2573,2575,2577,2579,2581,2583,2585],{"class":580,"line":1131},[578,2558,2429],{"class":606},[578,2560,610],{"class":599},[578,2562,613],{"class":595},[578,2564,2275],{"class":599},[578,2566,2278],{"class":606},[578,2568,610],{"class":599},[578,2570,2283],{"class":1381},[578,2572,2286],{"class":599},[578,2574,682],{"class":599},[578,2576,2291],{"class":606},[578,2578,610],{"class":599},[578,2580,2296],{"class":1381},[578,2582,688],{"class":599},[578,2584,625],{"class":595},[578,2586,628],{"class":599},[578,2588,2589],{"class":580,"line":1146},[578,2590,659],{"class":599},[578,2592,2593,2595],{"class":580,"line":1154},[578,2594,665],{"class":599},[578,2596,668],{"class":595},[557,2598,2600],{"id":2599},"before-after","Before \u002F After",[534,2602,2603],{},"Without redaction, sensitive data lands in your logs and drains:",[568,2605,2609],{"className":2606,"code":2607,"language":2608,"meta":574,"style":574},"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",[552,2610,2611,2615,2665,2695,2714],{"__ignoreMap":574},[578,2612,2613],{"class":580,"line":581},[578,2614,600],{"class":599},[578,2616,2617,2620,2623,2626,2628,2630,2633,2635,2637,2639,2641,2643,2645,2647,2649,2652,2654,2656,2658,2661,2663],{"class":580,"line":603},[578,2618,2619],{"class":599},"  \"",[578,2621,2622],{"class":713},"user",[578,2624,2625],{"class":599},"\"",[578,2627,610],{"class":599},[578,2629,682],{"class":599},[578,2631,2632],{"class":599}," \"",[578,2634,919],{"class":1063},[578,2636,2625],{"class":599},[578,2638,610],{"class":599},[578,2640,2632],{"class":599},[578,2642,924],{"class":619},[578,2644,2625],{"class":599},[578,2646,722],{"class":599},[578,2648,2632],{"class":599},[578,2650,2651],{"class":1063},"ip",[578,2653,2625],{"class":599},[578,2655,610],{"class":599},[578,2657,2632],{"class":599},[578,2659,2660],{"class":619},"192.168.1.42",[578,2662,2625],{"class":599},[578,2664,831],{"class":599},[578,2666,2667,2669,2672,2674,2676,2678,2680,2683,2685,2687,2689,2691,2693],{"class":580,"line":631},[578,2668,2619],{"class":599},[578,2670,2671],{"class":713},"payment",[578,2673,2625],{"class":599},[578,2675,610],{"class":599},[578,2677,682],{"class":599},[578,2679,2632],{"class":599},[578,2681,2682],{"class":1063},"card",[578,2684,2625],{"class":599},[578,2686,610],{"class":599},[578,2688,2632],{"class":599},[578,2690,907],{"class":619},[578,2692,2625],{"class":599},[578,2694,831],{"class":599},[578,2696,2697,2699,2702,2704,2706,2708,2711],{"class":580,"line":642},[578,2698,2619],{"class":599},[578,2700,2701],{"class":713},"auth",[578,2703,2625],{"class":599},[578,2705,610],{"class":599},[578,2707,2632],{"class":599},[578,2709,2710],{"class":619},"Bearer sk_live_abc123def456",[578,2712,2713],{"class":599},"\"\n",[578,2715,2716],{"class":580,"line":656},[578,2717,1163],{"class":599},[534,2719,2720,2721,610],{},"With ",[552,2722,853],{},[568,2724,2726],{"className":2606,"code":2725,"language":2608,"meta":574,"style":574},"{\n  \"user\": { \"email\": \"a***@***.com\", \"ip\": \"***.***.***.42\" },\n  \"payment\": { \"card\": \"****1111\" },\n  \"auth\": \"Bearer ***\"\n}\n",[552,2727,2728,2732,2777,2805,2821],{"__ignoreMap":574},[578,2729,2730],{"class":580,"line":581},[578,2731,600],{"class":599},[578,2733,2734,2736,2738,2740,2742,2744,2746,2748,2750,2752,2754,2756,2758,2760,2762,2764,2766,2768,2770,2773,2775],{"class":580,"line":603},[578,2735,2619],{"class":599},[578,2737,2622],{"class":713},[578,2739,2625],{"class":599},[578,2741,610],{"class":599},[578,2743,682],{"class":599},[578,2745,2632],{"class":599},[578,2747,919],{"class":1063},[578,2749,2625],{"class":599},[578,2751,610],{"class":599},[578,2753,2632],{"class":599},[578,2755,929],{"class":619},[578,2757,2625],{"class":599},[578,2759,722],{"class":599},[578,2761,2632],{"class":599},[578,2763,2651],{"class":1063},[578,2765,2625],{"class":599},[578,2767,610],{"class":599},[578,2769,2632],{"class":599},[578,2771,2772],{"class":619},"***.***.***.42",[578,2774,2625],{"class":599},[578,2776,831],{"class":599},[578,2778,2779,2781,2783,2785,2787,2789,2791,2793,2795,2797,2799,2801,2803],{"class":580,"line":631},[578,2780,2619],{"class":599},[578,2782,2671],{"class":713},[578,2784,2625],{"class":599},[578,2786,610],{"class":599},[578,2788,682],{"class":599},[578,2790,2632],{"class":599},[578,2792,2682],{"class":1063},[578,2794,2625],{"class":599},[578,2796,610],{"class":599},[578,2798,2632],{"class":599},[578,2800,912],{"class":619},[578,2802,2625],{"class":599},[578,2804,831],{"class":599},[578,2806,2807,2809,2811,2813,2815,2817,2819],{"class":580,"line":642},[578,2808,2619],{"class":599},[578,2810,2701],{"class":713},[578,2812,2625],{"class":599},[578,2814,610],{"class":599},[578,2816,2632],{"class":599},[578,2818,997],{"class":619},[578,2820,2713],{"class":599},[578,2822,2823],{"class":580,"line":656},[578,2824,1163],{"class":599},[534,2826,2827],{},"Same debugging context, no PII in your Axiom\u002FDatadog\u002FSentry.",[557,2829,2831],{"id":2830},"next-steps","Next Steps",[2833,2834,2835,2841,2846],"ul",{},[2071,2836,2837,2840],{},[2838,2839,513],"a",{"href":514}," - Security guidelines and production checklist",[2071,2842,2843,2845],{},[2838,2844,59],{"href":60}," - Control log volume in production",[2071,2847,2848,2850],{},[2838,2849,501],{"href":502}," - Full configuration reference",[2852,2853,2854],"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":574,"searchDepth":603,"depth":603,"links":2856},[2857,2858,2859,2867,2868,2869,2870,2871],{"id":559,"depth":603,"text":560},{"id":860,"depth":603,"text":861},{"id":1030,"depth":603,"text":501,"children":2860},[2861,2862,2863,2864,2865,2866],{"id":1034,"depth":631,"text":1035},{"id":1269,"depth":631,"text":1270},{"id":1332,"depth":631,"text":1333},{"id":1425,"depth":631,"text":1426},{"id":1666,"depth":631,"text":1667},{"id":1809,"depth":631,"text":1810},{"id":1895,"depth":603,"text":1896},{"id":2062,"depth":603,"text":2063},{"id":2133,"depth":603,"text":2134},{"id":2599,"depth":603,"text":2600},{"id":2830,"depth":603,"text":2831},"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",[2875,2878],{"label":513,"icon":376,"to":514,"color":2876,"variant":2877},"neutral","subtle",{"label":501,"icon":2879,"to":502,"color":2876,"variant":2877},"i-lucide-settings",{},{"icon":66},{"title":63,"description":2872},"sO-uB6OTI2YBFJ73yt7gNdmKt69mW_YaAwHHuqamZOg",[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.",1786793483078]