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