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