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